emoji-picker-element
Version:
Lightweight emoji picker distributed as a web component
55 lines (48 loc) • 1.49 kB
JavaScript
const requiredKeys = [
'annotation',
'emoji',
'group',
'order',
'version'
];
function assertEmojiData (emojiData) {
if (!emojiData ||
!Array.isArray(emojiData) ||
!emojiData[0] ||
(typeof emojiData[0] !== 'object') ||
requiredKeys.some(key => (!(key in emojiData[0])))) {
throw new Error('Emoji data is in the wrong format')
}
}
const optionalKeys = ['skins', 'emoticon', 'shortcodes', 'tags'];
const allKeys = [...requiredKeys, ...optionalKeys];
const allSkinsKeys = ['tone', 'emoji', 'version'];
function trimEmojiData (emojiData) {
console.warn('trimEmojiData() is deprecated and may be removed eventually. ' +
'If you use emoji-picker-element-data instead of emojibase-data, there is no need for trimEmojiData(). ' +
'For details, see: ' +
'https://github.com/nolanlawson/emoji-picker-element/blob/master/README.md#trimming-the-emoji-data-deprecated'
);
assertEmojiData(emojiData);
return emojiData.map(emoji => {
const res = {};
for (const key of allKeys) {
if (key in emoji) {
if (key === 'skins') { // trim skins even further
res[key] = emoji[key].map(skin => {
const skinRes = {};
for (const skinKey of allSkinsKeys) {
skinRes[skinKey] = skin[skinKey];
}
return skinRes
});
} else {
res[key] = emoji[key];
}
}
}
return res
})
}
module.exports = trimEmojiData;
;