about summary refs log tree commit diff
path: root/app/javascript/mastodon/emojione_light.js
blob: 2296497b08aec8c78ea2833f20f33449bb2b1efe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// @preval
// http://www.unicode.org/Public/emoji/5.0/emoji-test.txt

const emojis         = require('./emoji_map.json');
const { emojiIndex } = require('emoji-mart');
const excluded       = ['®', '©', '™'];
const skins          = ['🏻', '🏼', '🏽', '🏾', '🏿'];
const shortcodeMap   = {};

Object.keys(emojiIndex.emojis).forEach(key => {
  shortcodeMap[emojiIndex.emojis[key].native] = emojiIndex.emojis[key].id;
});

const stripModifiers = unicode => {
  skins.forEach(tone => {
    unicode = unicode.replace(tone, '');
  });

  return unicode;
};

Object.keys(emojis).forEach(key => {
  if (excluded.includes(key)) {
    delete emojis[key];
    return;
  }

  const normalizedKey = stripModifiers(key);
  let shortcode       = shortcodeMap[normalizedKey];

  if (!shortcode) {
    shortcode = shortcodeMap[normalizedKey + '\uFE0F'];
  }

  emojis[key] = [emojis[key], shortcode];
});

module.exports.unicodeMapping = emojis;