Fork of the emoji-button package to remove FontAwesome.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
1.7 KiB

const { writeFileSync } = require('fs');
const rawData = require('emoji-datasource');
function getEmoji(unified) {
const chars = unified.split('-');
const codePoints = chars.map(char => parseInt(char, 16));
return String.fromCodePoint(...codePoints);
}
const categoryKeys = {
'Smileys & Emotion': 'smileys',
'People & Body': 'smileys',
'Animals & Nature': 'animals',
'Food & Drink': 'food',
Activities: 'activities',
'Travel & Places': 'travel',
Objects: 'objects',
Symbols: 'symbols',
Flags: 'flags',
'Skin Tones': 'skinTones'
};
const smileysCount = rawData.filter(e => e.category === 'Smileys & Emotion').length;
rawData.filter(e => e.category === 'People & Body').forEach(e => e.sort_order += smileysCount);
const categories = [];
rawData.sort((e1, e2) => e1.sort_order - e2.sort_order);
const newEmojiData = rawData.map(emojiItem => {
let categoryIndex = categories.indexOf(emojiItem.category);
if (categoryIndex < 0) {
categories.push(emojiItem.category);
categoryIndex = categories.length - 1;
}
const newData = {
n: emojiItem.short_names,
e: getEmoji(emojiItem.unified),
c: categoryIndex,
ver: emojiItem.added_in
};
if (emojiItem.skin_variations) {
newData.v = {};
Object.keys(emojiItem.skin_variations).forEach(variation => {
newData.v[variation] = {
k: `${emojiItem.short_names[0]}-${variation}`,
n: emojiItem.short_names[0],
e: getEmoji(emojiItem.skin_variations[variation].unified)
};
});
}
return newData;
});
writeFileSync(
'src/data/emoji.js',
`export default { categories: ${JSON.stringify(categories.map(category => categoryKeys[category]))}, emojiData: ${JSON.stringify(newEmojiData)}}`
);