|
|
@@ -3,24 +3,28 @@ import data from 'emoji-mart/data/apple.json';
|
|
|
|
|
|
const DEFAULT_EMOJI_SIZE = 24;
|
|
|
|
|
|
+
|
|
|
+type EmojiMap = {
|
|
|
+ [key: string]: string,
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
* Get native emoji with skin tone
|
|
|
- * @param emoji Emoji object
|
|
|
* @param skin number
|
|
|
* @returns emoji data with skin tone
|
|
|
*/
|
|
|
-const getEmojiSkinTone = async(emoji) => {
|
|
|
+const getEmojiSkinTone = (emojiName: string): EmojiMap => {
|
|
|
const emojiData = {};
|
|
|
[...Array(6).keys()].forEach((index) => {
|
|
|
if (index > 0) {
|
|
|
const elem = Emoji({
|
|
|
- emoji,
|
|
|
+ emoji: emojiName,
|
|
|
skin: index + 1,
|
|
|
size: DEFAULT_EMOJI_SIZE,
|
|
|
});
|
|
|
if (elem) {
|
|
|
- emojiData[`${emoji}::skin-tone-${index + 1}`] = elem.props['aria-label'].split(',')[0];
|
|
|
+ emojiData[`${emojiName}::skin-tone-${index + 1}`] = elem.props['aria-label'].split(',')[0];
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
@@ -29,27 +33,29 @@ const getEmojiSkinTone = async(emoji) => {
|
|
|
|
|
|
/**
|
|
|
* Get native emoji from emoji array
|
|
|
- * @param emojis array of emoji
|
|
|
* @returns emoji data
|
|
|
*/
|
|
|
|
|
|
-const getNativeEmoji = async(emojis) => {
|
|
|
+const getNativeEmoji = (): EmojiMap => {
|
|
|
const emojiData = {};
|
|
|
- emojis.forEach(async(emoji) => {
|
|
|
+ Object.entries(data.emojis).forEach((emoji) => {
|
|
|
const emojiName = emoji[0];
|
|
|
- const hasSkinVariation = emoji[1].skin_variations;
|
|
|
+ const hasSkinVariation = 'skin_variations' in emoji[1];
|
|
|
+
|
|
|
const elem = Emoji({
|
|
|
emoji: emojiName,
|
|
|
size: DEFAULT_EMOJI_SIZE,
|
|
|
});
|
|
|
+
|
|
|
if (elem != null) {
|
|
|
emojiData[emojiName] = elem.props['aria-label'].split(',')[0];
|
|
|
if (hasSkinVariation) {
|
|
|
- const emojiWithSkinTone = await getEmojiSkinTone(emojiName);
|
|
|
+ const emojiWithSkinTone = getEmojiSkinTone(emojiName);
|
|
|
Object.assign(emojiData, emojiWithSkinTone);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
return emojiData;
|
|
|
};
|
|
|
|
|
|
@@ -57,10 +63,4 @@ const getNativeEmoji = async(emojis) => {
|
|
|
* Get native emoji mart data
|
|
|
* @returns native emoji mart data
|
|
|
*/
|
|
|
-
|
|
|
-export const emojiMartData = () => {
|
|
|
- const emojis = Object.entries(data.emojis).map((emoji) => {
|
|
|
- return emoji;
|
|
|
- });
|
|
|
- return getNativeEmoji(emojis);
|
|
|
-};
|
|
|
+export const emojiMartData = getNativeEmoji();
|