diff --git a/android/app/build.gradle b/android/app/build.gradle index 8d4ddaaec716..04dba1f580d5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -156,8 +156,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001021803 - versionName "1.2.18-3" + versionCode 1001021804 + versionName "1.2.18-4" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() if (isNewArchitectureEnabled()) { diff --git a/assets/emojis.js b/assets/emojis.js index 9ab216df6347..8add4a0dbdc5 100644 --- a/assets/emojis.js +++ b/assets/emojis.js @@ -58,6 +58,7 @@ const emojis = [ 'face', 'grin', ], + name: 'grinning', }, { code: '๐Ÿ˜', @@ -67,6 +68,7 @@ const emojis = [ 'grin', 'smile', ], + name: 'grin', }, { code: '๐Ÿ˜‚', @@ -76,6 +78,7 @@ const emojis = [ 'laugh', 'tear', ], + name: 'joy', }, { code: '๐Ÿคฃ', @@ -87,6 +90,7 @@ const emojis = [ 'rofl', 'rolling', ], + name: 'rofl', }, { code: '๐Ÿ˜ƒ', @@ -96,6 +100,7 @@ const emojis = [ 'open', 'smile', ], + name: 'smiley', }, { code: '๐Ÿ˜„', @@ -106,6 +111,7 @@ const emojis = [ 'open', 'smile', ], + name: 'smile', }, { code: '๐Ÿ˜…', @@ -116,6 +122,7 @@ const emojis = [ 'smile', 'sweat', ], + name: 'sweat_smile', }, { code: '๐Ÿ˜†', @@ -127,6 +134,7 @@ const emojis = [ 'satisfied', 'smile', ], + name: 'laughing', }, { code: '๐Ÿ˜‰', @@ -134,6 +142,7 @@ const emojis = [ 'face', 'wink', ], + name: 'wink', }, { code: '๐Ÿ˜Š', @@ -143,6 +152,7 @@ const emojis = [ 'face', 'smile', ], + name: 'blush', }, { code: '๐Ÿ˜‹', @@ -154,6 +164,7 @@ const emojis = [ 'um', 'yum', ], + name: 'yum', }, { code: '๐Ÿ˜Ž', @@ -169,6 +180,7 @@ const emojis = [ 'sunglasses', 'weather', ], + name: 'sunglasses', }, { code: '๐Ÿ˜', @@ -179,6 +191,7 @@ const emojis = [ 'love', 'smile', ], + name: 'heart_eyes', }, { code: '๐Ÿ˜˜', @@ -187,6 +200,7 @@ const emojis = [ 'heart', 'kiss', ], + name: 'kissing_heart', }, { code: '๐Ÿ˜—', @@ -194,6 +208,7 @@ const emojis = [ 'face', 'kiss', ], + name: 'kissing', }, { code: '๐Ÿ˜™', @@ -203,6 +218,7 @@ const emojis = [ 'kiss', 'smile', ], + name: 'kissing_smiling_eyes', }, { code: '๐Ÿ˜š', @@ -212,6 +228,7 @@ const emojis = [ 'face', 'kiss', ], + name: 'kissing_closed_eyes', }, { code: '๐Ÿ™‚', @@ -219,6 +236,7 @@ const emojis = [ 'face', 'smile', ], + name: 'slightly_smiling_face', }, { code: '๐Ÿค—', @@ -227,6 +245,7 @@ const emojis = [ 'hug', 'hugging', ], + name: 'hugs', }, { code: '๐Ÿค”', @@ -234,6 +253,7 @@ const emojis = [ 'face', 'thinking', ], + name: 'thinking', }, { code: '๐Ÿ˜', @@ -242,6 +262,7 @@ const emojis = [ 'face', 'neutral', ], + name: 'neutral_face', }, { code: '๐Ÿ˜‘', @@ -251,6 +272,7 @@ const emojis = [ 'inexpressive', 'unexpressive', ], + name: 'expressionless', }, { code: '๐Ÿ˜ถ', @@ -260,6 +282,7 @@ const emojis = [ 'quiet', 'silent', ], + name: 'no_mouth', }, { code: '๐Ÿ™„', @@ -268,6 +291,7 @@ const emojis = [ 'face', 'rolling', ], + name: 'roll_eyes', }, { code: '๐Ÿ˜', @@ -275,6 +299,7 @@ const emojis = [ 'face', 'smirk', ], + name: 'smirk', }, { code: '๐Ÿ˜ฃ', @@ -282,6 +307,7 @@ const emojis = [ 'face', 'persevere', ], + name: 'persevere', }, { code: '๐Ÿ˜ฅ', @@ -291,6 +317,7 @@ const emojis = [ 'relieved', 'whew', ], + name: 'disappointed_relieved', }, { code: '๐Ÿ˜ฎ', @@ -300,6 +327,7 @@ const emojis = [ 'open', 'sympathy', ], + name: 'open_mouth', }, { code: '๐Ÿค', @@ -308,6 +336,7 @@ const emojis = [ 'mouth', 'zipper', ], + name: 'zipper_mouth_face', }, { code: '๐Ÿ˜ฏ', @@ -317,6 +346,7 @@ const emojis = [ 'stunned', 'surprised', ], + name: 'hushed', }, { code: '๐Ÿ˜ช', @@ -324,6 +354,7 @@ const emojis = [ 'face', 'sleep', ], + name: 'sleepy', }, { code: '๐Ÿ˜ซ', @@ -331,6 +362,7 @@ const emojis = [ 'face', 'tired', ], + name: 'tired_face', }, { code: '๐Ÿ˜ด', @@ -339,6 +371,7 @@ const emojis = [ 'sleep', 'zzz', ], + name: 'sleeping', }, { code: '๐Ÿ˜Œ', @@ -346,6 +379,7 @@ const emojis = [ 'face', 'relieved', ], + name: 'relieved', }, { code: '๐Ÿค“', @@ -354,6 +388,7 @@ const emojis = [ 'geek', 'nerd', ], + name: 'nerd_face', }, { code: '๐Ÿ˜›', @@ -361,6 +396,7 @@ const emojis = [ 'face', 'tongue', ], + name: 'stuck_out_tongue', }, { code: '๐Ÿ˜œ', @@ -371,6 +407,7 @@ const emojis = [ 'tongue', 'wink', ], + name: 'stuck_out_tongue_winking_eye', }, { code: '๐Ÿ˜', @@ -381,6 +418,7 @@ const emojis = [ 'taste', 'tongue', ], + name: 'stuck_out_tongue_closed_eyes', }, { code: '๐Ÿคค', @@ -388,6 +426,7 @@ const emojis = [ 'drooling', 'face', ], + name: 'drooling_face', }, { code: '๐Ÿ˜’', @@ -396,6 +435,7 @@ const emojis = [ 'unamused', 'unhappy', ], + name: 'unamused', }, { code: '๐Ÿ˜“', @@ -404,6 +444,7 @@ const emojis = [ 'face', 'sweat', ], + name: 'sweat', }, { code: '๐Ÿ˜”', @@ -412,6 +453,7 @@ const emojis = [ 'face', 'pensive', ], + name: 'pensive', }, { code: '๐Ÿ˜•', @@ -419,6 +461,7 @@ const emojis = [ 'confused', 'face', ], + name: 'confused', }, { code: '๐Ÿ™ƒ', @@ -426,6 +469,7 @@ const emojis = [ 'face', 'upside-down', ], + name: 'upside_down_face', }, { code: '๐Ÿค‘', @@ -434,6 +478,7 @@ const emojis = [ 'money', 'mouth', ], + name: 'money_mouth_face', }, { code: '๐Ÿ˜ฒ', @@ -443,6 +488,7 @@ const emojis = [ 'shocked', 'totally', ], + name: 'astonished', }, { code: '๐Ÿ™', @@ -450,6 +496,7 @@ const emojis = [ 'face', 'frown', ], + name: 'slightly_frowning_face', }, { code: '๐Ÿ˜–', @@ -457,6 +504,7 @@ const emojis = [ 'confounded', 'face', ], + name: 'confounded', }, { code: '๐Ÿ˜ž', @@ -464,6 +512,7 @@ const emojis = [ 'disappointed', 'face', ], + name: 'disappointed', }, { code: '๐Ÿ˜Ÿ', @@ -471,6 +520,7 @@ const emojis = [ 'face', 'worried', ], + name: 'worried', }, { code: '๐Ÿ˜ค', @@ -479,6 +529,7 @@ const emojis = [ 'triumph', 'won', ], + name: 'triumph', }, { code: '๐Ÿ˜ข', @@ -488,6 +539,7 @@ const emojis = [ 'sad', 'tear', ], + name: 'cry', }, { code: '๐Ÿ˜ญ', @@ -498,6 +550,7 @@ const emojis = [ 'sob', 'tear', ], + name: 'sob', }, { code: '๐Ÿ˜ฆ', @@ -507,6 +560,7 @@ const emojis = [ 'mouth', 'open', ], + name: 'frowning', }, { code: '๐Ÿ˜ง', @@ -514,6 +568,7 @@ const emojis = [ 'anguished', 'face', ], + name: 'anguished', }, { code: '๐Ÿ˜จ', @@ -523,6 +578,7 @@ const emojis = [ 'fearful', 'scared', ], + name: 'fearful', }, { code: '๐Ÿ˜ฉ', @@ -531,6 +587,7 @@ const emojis = [ 'tired', 'weary', ], + name: 'weary', }, { code: '๐Ÿ˜ฌ', @@ -538,6 +595,7 @@ const emojis = [ 'face', 'grimace', ], + name: 'grimacing', }, { code: '๐Ÿ˜ฐ', @@ -550,6 +608,7 @@ const emojis = [ 'rushed', 'sweat', ], + name: 'cold_sweat', }, { code: '๐Ÿ˜ฑ', @@ -561,6 +620,7 @@ const emojis = [ 'scared', 'scream', ], + name: 'scream', }, { code: '๐Ÿ˜ณ', @@ -569,6 +629,7 @@ const emojis = [ 'face', 'flushed', ], + name: 'flushed', }, { code: '๐Ÿ˜ต', @@ -576,6 +637,7 @@ const emojis = [ 'dizzy', 'face', ], + name: 'dizzy_face', }, { code: '๐Ÿ˜ก', @@ -587,6 +649,7 @@ const emojis = [ 'rage', 'red', ], + name: 'rage', }, { code: '๐Ÿ˜ ', @@ -595,6 +658,7 @@ const emojis = [ 'face', 'mad', ], + name: 'angry', }, { code: '๐Ÿ˜‡', @@ -607,6 +671,7 @@ const emojis = [ 'innocent', 'smile', ], + name: 'innocent', }, { code: '๐Ÿค ', @@ -616,6 +681,7 @@ const emojis = [ 'face', 'hat', ], + name: 'cowboy_hat_face', }, { code: '๐Ÿคก', @@ -623,6 +689,7 @@ const emojis = [ 'clown', 'face', ], + name: 'clown_face', }, { code: '๐Ÿคฅ', @@ -631,6 +698,7 @@ const emojis = [ 'lie', 'pinocchio', ], + name: 'lying_face', }, { code: '๐Ÿ˜ท', @@ -642,6 +710,7 @@ const emojis = [ 'medicine', 'sick', ], + name: 'mask', }, { code: '๐Ÿค’', @@ -651,6 +720,7 @@ const emojis = [ 'sick', 'thermometer', ], + name: 'face_with_thermometer', }, { code: '๐Ÿค•', @@ -660,6 +730,7 @@ const emojis = [ 'hurt', 'injury', ], + name: 'face_with_head_bandage', }, { code: '๐Ÿคข', @@ -668,6 +739,7 @@ const emojis = [ 'nauseated', 'vomit', ], + name: 'nauseated_face', }, { code: '๐Ÿคง', @@ -676,6 +748,7 @@ const emojis = [ 'gesundheit', 'sneeze', ], + name: 'sneezing_face', }, { code: '๐Ÿ˜ˆ', @@ -686,6 +759,7 @@ const emojis = [ 'horns', 'smile', ], + name: 'smiling_imp', }, { code: '๐Ÿ‘ฟ', @@ -697,6 +771,7 @@ const emojis = [ 'fantasy', 'imp', ], + name: 'imp', }, { code: '๐Ÿ‘น', @@ -709,6 +784,7 @@ const emojis = [ 'monster', 'ogre', ], + name: 'japanese_ogre', }, { code: '๐Ÿ‘บ', @@ -721,6 +797,7 @@ const emojis = [ 'japanese', 'monster', ], + name: 'japanese_goblin', }, { code: '๐Ÿ’€', @@ -732,6 +809,7 @@ const emojis = [ 'monster', 'skull', ], + name: 'skull', }, { code: 'โ˜ ๏ธ', @@ -743,6 +821,7 @@ const emojis = [ 'monster', 'skull', ], + name: 'skull_and_crossbones', }, { code: '๐Ÿ‘ป', @@ -754,6 +833,7 @@ const emojis = [ 'ghost', 'monster', ], + name: 'ghost', }, { code: '๐Ÿ‘ฝ', @@ -768,6 +848,7 @@ const emojis = [ 'space', 'ufo', ], + name: 'alien', }, { code: '๐Ÿ‘พ', @@ -782,6 +863,7 @@ const emojis = [ 'space', 'ufo', ], + name: 'space_invader', }, { code: '๐Ÿค–', @@ -790,6 +872,7 @@ const emojis = [ 'monster', 'robot', ], + name: 'robot', }, { code: '๐Ÿ’ฉ', @@ -801,6 +884,7 @@ const emojis = [ 'poo', 'poop', ], + name: 'hankey', }, { code: '๐Ÿ˜บ', @@ -811,6 +895,7 @@ const emojis = [ 'open', 'smile', ], + name: 'smiley_cat', }, { code: '๐Ÿ˜ธ', @@ -821,6 +906,7 @@ const emojis = [ 'grin', 'smile', ], + name: 'smile_cat', }, { code: '๐Ÿ˜น', @@ -830,6 +916,7 @@ const emojis = [ 'joy', 'tear', ], + name: 'joy_cat', }, { code: '๐Ÿ˜ป', @@ -841,6 +928,7 @@ const emojis = [ 'love', 'smile', ], + name: 'heart_eyes_cat', }, { code: '๐Ÿ˜ผ', @@ -851,6 +939,7 @@ const emojis = [ 'smile', 'wry', ], + name: 'smirk_cat', }, { code: '๐Ÿ˜ฝ', @@ -860,6 +949,7 @@ const emojis = [ 'face', 'kiss', ], + name: 'kissing_cat', }, { code: '๐Ÿ™€', @@ -870,6 +960,7 @@ const emojis = [ 'surprised', 'weary', ], + name: 'scream_cat', }, { code: '๐Ÿ˜ฟ', @@ -880,6 +971,7 @@ const emojis = [ 'sad', 'tear', ], + name: 'crying_cat_face', }, { code: '๐Ÿ˜พ', @@ -888,6 +980,7 @@ const emojis = [ 'face', 'pouting', ], + name: 'pouting_cat', }, { code: '๐Ÿ™ˆ', @@ -902,6 +995,7 @@ const emojis = [ 'prohibited', 'see', ], + name: 'see_no_evil', }, { code: '๐Ÿ™‰', @@ -916,6 +1010,7 @@ const emojis = [ 'not', 'prohibited', ], + name: 'hear_no_evil', }, { code: '๐Ÿ™Š', @@ -930,6 +1025,7 @@ const emojis = [ 'prohibited', 'speak', ], + name: 'speak_no_evil', }, { code: '๐Ÿ‘ฆ', @@ -943,6 +1039,7 @@ const emojis = [ '๐Ÿ‘ฆ๐Ÿผ', '๐Ÿ‘ฆ๐Ÿป', ], + name: 'boy', }, { code: '๐Ÿ‘ง', @@ -960,6 +1057,7 @@ const emojis = [ '๐Ÿ‘ง๐Ÿผ', '๐Ÿ‘ง๐Ÿป', ], + name: 'girl', }, { code: '๐Ÿ‘จ', @@ -973,6 +1071,7 @@ const emojis = [ '๐Ÿ‘จ๐Ÿผ', '๐Ÿ‘จ๐Ÿป', ], + name: 'man', }, { code: '๐Ÿ‘ฉ', @@ -986,6 +1085,7 @@ const emojis = [ '๐Ÿ‘ฉ๐Ÿผ', '๐Ÿ‘ฉ๐Ÿป', ], + name: 'woman', }, { code: '๐Ÿ‘ด', @@ -1000,6 +1100,7 @@ const emojis = [ '๐Ÿ‘ด๐Ÿผ', '๐Ÿ‘ด๐Ÿป', ], + name: 'older_man', }, { code: '๐Ÿ‘ต', @@ -1014,6 +1115,7 @@ const emojis = [ '๐Ÿ‘ต๐Ÿผ', '๐Ÿ‘ต๐Ÿป', ], + name: 'older_woman', }, { code: '๐Ÿ‘ถ', @@ -1027,6 +1129,7 @@ const emojis = [ '๐Ÿ‘ถ๐Ÿผ', '๐Ÿ‘ถ๐Ÿป', ], + name: 'baby', }, { code: '๐Ÿ‘ผ', @@ -1044,6 +1147,7 @@ const emojis = [ '๐Ÿ‘ผ๐Ÿผ', '๐Ÿ‘ผ๐Ÿป', ], + name: 'angel', }, { code: '๐Ÿ‘ฑ', @@ -1057,6 +1161,7 @@ const emojis = [ '๐Ÿ‘ฑ๐Ÿผ', '๐Ÿ‘ฑ๐Ÿป', ], + name: 'blond_haired_person', }, { code: '๐Ÿ‘ฎ', @@ -1072,6 +1177,7 @@ const emojis = [ '๐Ÿ‘ฎ๐Ÿผ', '๐Ÿ‘ฎ๐Ÿป', ], + name: 'police_officer', }, { code: '๐Ÿ‘ฒ', @@ -1087,6 +1193,7 @@ const emojis = [ '๐Ÿ‘ฒ๐Ÿผ', '๐Ÿ‘ฒ๐Ÿป', ], + name: 'man_with_gua_pi_mao', }, { code: '๐Ÿ‘ณ', @@ -1101,6 +1208,7 @@ const emojis = [ '๐Ÿ‘ณ๐Ÿผ', '๐Ÿ‘ณ๐Ÿป', ], + name: 'person_with_turban', }, { code: '๐Ÿ‘ท', @@ -1116,6 +1224,7 @@ const emojis = [ '๐Ÿ‘ท๐Ÿผ', '๐Ÿ‘ท๐Ÿป', ], + name: 'construction_worker', }, { code: '๐Ÿ‘ธ', @@ -1131,6 +1240,7 @@ const emojis = [ '๐Ÿ‘ธ๐Ÿผ', '๐Ÿ‘ธ๐Ÿป', ], + name: 'princess', }, { code: '๐Ÿคด', @@ -1144,6 +1254,7 @@ const emojis = [ '๐Ÿคด๐Ÿผ', '๐Ÿคด๐Ÿป', ], + name: 'prince', }, { code: '๐Ÿ’‚', @@ -1158,6 +1269,7 @@ const emojis = [ '๐Ÿ’‚๐Ÿผ', '๐Ÿ’‚๐Ÿป', ], + name: 'guard', }, { code: '๐Ÿ•ต', @@ -1173,6 +1285,7 @@ const emojis = [ '๐Ÿ•ต๐Ÿผ', '๐Ÿ•ต๐Ÿป', ], + name: 'detective', }, { code: '๐ŸŽ…', @@ -1192,6 +1305,7 @@ const emojis = [ '๐ŸŽ…๐Ÿผ', '๐ŸŽ…๐Ÿป', ], + name: 'santa', }, { code: '๐Ÿคถ', @@ -1207,6 +1321,7 @@ const emojis = [ '๐Ÿคถ๐Ÿผ', '๐Ÿคถ๐Ÿป', ], + name: 'mrs_claus', }, { code: '๐Ÿ‘ฐ', @@ -1222,6 +1337,7 @@ const emojis = [ '๐Ÿ‘ฐ๐Ÿผ', '๐Ÿ‘ฐ๐Ÿป', ], + name: 'person_with_veil', }, { code: '๐Ÿคต', @@ -1237,6 +1353,7 @@ const emojis = [ '๐Ÿคต๐Ÿผ', '๐Ÿคต๐Ÿป', ], + name: 'person_in_tuxedo', }, { code: '๐Ÿ’†', @@ -1251,6 +1368,7 @@ const emojis = [ '๐Ÿ’†๐Ÿผ', '๐Ÿ’†๐Ÿป', ], + name: 'massage', }, { code: '๐Ÿ’‡', @@ -1267,6 +1385,7 @@ const emojis = [ '๐Ÿ’‡๐Ÿผ', '๐Ÿ’‡๐Ÿป', ], + name: 'haircut', }, { code: '๐Ÿ™', @@ -1281,6 +1400,7 @@ const emojis = [ '๐Ÿ™๐Ÿผ', '๐Ÿ™๐Ÿป', ], + name: 'frowning_person', }, { code: '๐Ÿ™Ž', @@ -1295,6 +1415,7 @@ const emojis = [ '๐Ÿ™Ž๐Ÿผ', '๐Ÿ™Ž๐Ÿป', ], + name: 'pouting_face', }, { code: '๐Ÿ™…', @@ -1313,6 +1434,7 @@ const emojis = [ '๐Ÿ™…๐Ÿผ', '๐Ÿ™…๐Ÿป', ], + name: 'no_good', }, { code: '๐Ÿ™†', @@ -1328,6 +1450,7 @@ const emojis = [ '๐Ÿ™†๐Ÿผ', '๐Ÿ™†๐Ÿป', ], + name: 'ok_person', }, { code: '๐Ÿ’', @@ -1344,6 +1467,7 @@ const emojis = [ '๐Ÿ’๐Ÿผ', '๐Ÿ’๐Ÿป', ], + name: 'tipping_hand_person', }, { code: '๐Ÿคท', @@ -1360,6 +1484,7 @@ const emojis = [ '๐Ÿคท๐Ÿผ', '๐Ÿคท๐Ÿป', ], + name: 'shrug', }, { code: '๐Ÿ™‹', @@ -1376,6 +1501,7 @@ const emojis = [ '๐Ÿ™‹๐Ÿผ', '๐Ÿ™‹๐Ÿป', ], + name: 'raising_hand', }, { code: '๐Ÿคฆ', @@ -1392,6 +1518,7 @@ const emojis = [ '๐Ÿคฆ๐Ÿผ', '๐Ÿคฆ๐Ÿป', ], + name: 'facepalm', }, { code: '๐Ÿ™‡', @@ -1408,6 +1535,7 @@ const emojis = [ '๐Ÿ™‡๐Ÿผ', '๐Ÿ™‡๐Ÿป', ], + name: 'bow', }, { code: '๐Ÿšถ', @@ -1424,6 +1552,7 @@ const emojis = [ '๐Ÿšถ๐Ÿผ', '๐Ÿšถ๐Ÿป', ], + name: 'walking', }, { code: '๐Ÿƒ', @@ -1439,6 +1568,7 @@ const emojis = [ '๐Ÿƒ๐Ÿผ', '๐Ÿƒ๐Ÿป', ], + name: 'runner', }, { code: '๐Ÿ’ƒ', @@ -1452,6 +1582,7 @@ const emojis = [ '๐Ÿ’ƒ๐Ÿผ', '๐Ÿ’ƒ๐Ÿป', ], + name: 'woman_dancing', }, { code: '๐Ÿ•บ', @@ -1466,6 +1597,7 @@ const emojis = [ '๐Ÿ•บ๐Ÿผ', '๐Ÿ•บ๐Ÿป', ], + name: 'man_dancing', }, { code: '๐Ÿคฐ', @@ -1480,6 +1612,7 @@ const emojis = [ '๐Ÿคฐ๐Ÿผ', '๐Ÿคฐ๐Ÿป', ], + name: 'pregnant_woman', }, { code: '๐Ÿ‘ฏ', @@ -1490,6 +1623,7 @@ const emojis = [ 'girl', 'woman', ], + name: 'dancers', }, { code: '๐Ÿ•ด', @@ -1498,6 +1632,7 @@ const emojis = [ 'man', 'suit', ], + name: 'business_suit_levitating', }, { code: '๐Ÿ—ฃ', @@ -1508,6 +1643,7 @@ const emojis = [ 'speak', 'speaking', ], + name: 'speaking_head', }, { code: '๐Ÿ‘ค', @@ -1515,6 +1651,7 @@ const emojis = [ 'bust', 'silhouette', ], + name: 'bust_in_silhouette', }, { code: '๐Ÿ‘ฅ', @@ -1522,6 +1659,7 @@ const emojis = [ 'bust', 'silhouette', ], + name: 'busts_in_silhouette', }, { code: '๐Ÿ‘ซ', @@ -1532,6 +1670,7 @@ const emojis = [ 'man', 'woman', ], + name: 'couple', }, { code: '๐Ÿ‘ฌ', @@ -1544,6 +1683,7 @@ const emojis = [ 'twins', 'zodiac', ], + name: 'two_men_holding_hands', }, { code: '๐Ÿ‘ญ', @@ -1553,6 +1693,7 @@ const emojis = [ 'hold', 'woman', ], + name: 'two_women_holding_hands', }, { code: '๐Ÿ’', @@ -1561,6 +1702,7 @@ const emojis = [ 'kiss', 'romance', ], + name: 'couplekiss', }, { code: '๐Ÿ’‘', @@ -1570,6 +1712,7 @@ const emojis = [ 'love', 'romance', ], + name: 'couple_with_heart', }, { code: '๐Ÿ‘ช', @@ -1579,6 +1722,7 @@ const emojis = [ 'father', 'mother', ], + name: 'family', }, { code: '๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ', @@ -1588,6 +1732,7 @@ const emojis = [ 'man', 'woman', ], + name: 'family_man_woman_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง', @@ -1597,6 +1742,7 @@ const emojis = [ 'man', 'woman', ], + name: 'family_man_woman_girl', }, { code: '๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ', @@ -1607,6 +1753,7 @@ const emojis = [ 'man', 'woman', ], + name: 'family_man_woman_girl_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ', @@ -1616,6 +1763,7 @@ const emojis = [ 'man', 'woman', ], + name: 'family_man_woman_boy_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง', @@ -1625,6 +1773,7 @@ const emojis = [ 'man', 'woman', ], + name: 'family_man_woman_girl_girl', }, { code: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ', @@ -1633,6 +1782,7 @@ const emojis = [ 'family', 'man', ], + name: 'family_man_man_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง', @@ -1641,6 +1791,7 @@ const emojis = [ 'girl', 'man', ], + name: 'family_man_man_girl', }, { code: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ', @@ -1650,6 +1801,7 @@ const emojis = [ 'girl', 'man', ], + name: 'family_man_man_girl_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ', @@ -1658,6 +1810,7 @@ const emojis = [ 'family', 'man', ], + name: 'family_man_man_boy_boy', }, { code: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง', @@ -1666,6 +1819,7 @@ const emojis = [ 'girl', 'man', ], + name: 'family_man_man_girl_girl', }, { code: '๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ', @@ -1674,6 +1828,7 @@ const emojis = [ 'family', 'woman', ], + name: 'family_woman_woman_boy', }, { code: '๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง', @@ -1682,6 +1837,7 @@ const emojis = [ 'girl', 'woman', ], + name: 'family_woman_woman_girl', }, { code: '๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ', @@ -1691,6 +1847,7 @@ const emojis = [ 'girl', 'woman', ], + name: 'family_woman_woman_girl_boy', }, { code: '๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ', @@ -1699,6 +1856,7 @@ const emojis = [ 'family', 'woman', ], + name: 'family_woman_woman_boy_boy', }, { code: '๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง', @@ -1707,6 +1865,7 @@ const emojis = [ 'girl', 'woman', ], + name: 'family_woman_woman_girl_girl', }, { code: '๐Ÿ’ช', @@ -1724,6 +1883,7 @@ const emojis = [ '๐Ÿ’ช๐Ÿผ', '๐Ÿ’ช๐Ÿป', ], + name: 'muscle', }, { code: '๐Ÿคณ', @@ -1739,6 +1899,7 @@ const emojis = [ '๐Ÿคณ๐Ÿผ', '๐Ÿคณ๐Ÿป', ], + name: 'selfie', }, { code: '๐Ÿ‘ˆ', @@ -1757,6 +1918,7 @@ const emojis = [ '๐Ÿ‘ˆ๐Ÿผ', '๐Ÿ‘ˆ๐Ÿป', ], + name: 'point_left', }, { code: '๐Ÿ‘‰', @@ -1775,6 +1937,7 @@ const emojis = [ '๐Ÿ‘‰๐Ÿผ', '๐Ÿ‘‰๐Ÿป', ], + name: 'point_right', }, { code: 'โ˜', @@ -1793,6 +1956,7 @@ const emojis = [ 'โ˜๐Ÿผ', 'โ˜๐Ÿป', ], + name: 'point_up', }, { code: '๐Ÿ‘†', @@ -1812,6 +1976,7 @@ const emojis = [ '๐Ÿ‘†๐Ÿผ', '๐Ÿ‘†๐Ÿป', ], + name: 'point_up_2', }, { code: '๐Ÿ–•', @@ -1828,6 +1993,7 @@ const emojis = [ '๐Ÿ–•๐Ÿผ', '๐Ÿ–•๐Ÿป', ], + name: 'middle_finger', }, { code: '๐Ÿ‘‡', @@ -1847,6 +2013,7 @@ const emojis = [ '๐Ÿ‘‡๐Ÿผ', '๐Ÿ‘‡๐Ÿป', ], + name: 'point_down', }, { code: 'โœŒ', @@ -1863,6 +2030,7 @@ const emojis = [ 'โœŒ๐Ÿผ', 'โœŒ๐Ÿป', ], + name: 'v', }, { code: '๐Ÿคž', @@ -1879,6 +2047,7 @@ const emojis = [ '๐Ÿคž๐Ÿผ', '๐Ÿคž๐Ÿป', ], + name: 'crossed_fingers', }, { code: '๐Ÿ––', @@ -1896,6 +2065,7 @@ const emojis = [ '๐Ÿ––๐Ÿผ', '๐Ÿ––๐Ÿป', ], + name: 'vulcan_salute', }, { code: '๐Ÿค˜', @@ -1913,6 +2083,7 @@ const emojis = [ '๐Ÿค˜๐Ÿผ', '๐Ÿค˜๐Ÿป', ], + name: 'metal', }, { code: '๐Ÿค™', @@ -1927,6 +2098,7 @@ const emojis = [ '๐Ÿค™๐Ÿผ', '๐Ÿค™๐Ÿป', ], + name: 'call_me_hand', }, { code: '๐Ÿ–', @@ -1943,6 +2115,7 @@ const emojis = [ '๐Ÿ–๐Ÿผ', '๐Ÿ–๐Ÿป', ], + name: 'raised_hand_with_fingers_splayed', }, { code: 'โœ‹', @@ -1957,6 +2130,7 @@ const emojis = [ 'โœ‹๐Ÿผ', 'โœ‹๐Ÿป', ], + name: 'hand', }, { code: '๐Ÿ‘Œ', @@ -1972,6 +2146,7 @@ const emojis = [ '๐Ÿ‘Œ๐Ÿผ', '๐Ÿ‘Œ๐Ÿป', ], + name: 'ok_hand', }, { code: '๐Ÿ‘', @@ -1990,6 +2165,7 @@ const emojis = [ '๐Ÿ‘๐Ÿผ', '๐Ÿ‘๐Ÿป', ], + name: '+1', }, { code: '๐Ÿ‘Ž', @@ -2008,6 +2184,7 @@ const emojis = [ '๐Ÿ‘Ž๐Ÿผ', '๐Ÿ‘Ž๐Ÿป', ], + name: '-1', }, { code: 'โœŠ', @@ -2025,6 +2202,7 @@ const emojis = [ 'โœŠ๐Ÿผ', 'โœŠ๐Ÿป', ], + name: 'fist_raised', }, { code: '๐Ÿ‘Š', @@ -2042,6 +2220,7 @@ const emojis = [ '๐Ÿ‘Š๐Ÿผ', '๐Ÿ‘Š๐Ÿป', ], + name: 'fist_oncoming', }, { code: '๐Ÿค›', @@ -2056,6 +2235,7 @@ const emojis = [ '๐Ÿค›๐Ÿผ', '๐Ÿค›๐Ÿป', ], + name: 'fist_left', }, { code: '๐Ÿคœ', @@ -2070,6 +2250,7 @@ const emojis = [ '๐Ÿคœ๐Ÿผ', '๐Ÿคœ๐Ÿป', ], + name: 'fist_right', }, { code: '๐Ÿคš', @@ -2084,6 +2265,7 @@ const emojis = [ '๐Ÿคš๐Ÿผ', '๐Ÿคš๐Ÿป', ], + name: 'raised_back_of_hand', }, { code: '๐Ÿ‘‹', @@ -2100,6 +2282,7 @@ const emojis = [ '๐Ÿ‘‹๐Ÿผ', '๐Ÿ‘‹๐Ÿป', ], + name: 'wave', }, { code: '๐Ÿ‘', @@ -2115,6 +2298,7 @@ const emojis = [ '๐Ÿ‘๐Ÿผ', '๐Ÿ‘๐Ÿป', ], + name: 'clap', }, { code: 'โœ', @@ -2130,6 +2314,7 @@ const emojis = [ 'โœ๐Ÿผ', 'โœ๐Ÿป', ], + name: 'writing_hand', }, { code: '๐Ÿ‘', @@ -2145,6 +2330,7 @@ const emojis = [ '๐Ÿ‘๐Ÿผ', '๐Ÿ‘๐Ÿป', ], + name: 'open_hands', }, { code: '๐Ÿ™Œ', @@ -2163,6 +2349,7 @@ const emojis = [ '๐Ÿ™Œ๐Ÿผ', '๐Ÿ™Œ๐Ÿป', ], + name: 'raised_hands', }, { code: '๐Ÿ™', @@ -2184,6 +2371,7 @@ const emojis = [ '๐Ÿ™๐Ÿผ', '๐Ÿ™๐Ÿป', ], + name: 'pray', }, { code: '๐Ÿค', @@ -2201,6 +2389,7 @@ const emojis = [ '๐Ÿค๐Ÿผ', '๐Ÿค๐Ÿป', ], + name: 'handshake', }, { code: '๐Ÿ’…', @@ -2219,6 +2408,7 @@ const emojis = [ '๐Ÿ’…๐Ÿผ', '๐Ÿ’…๐Ÿป', ], + name: 'nail_care', }, { code: '๐Ÿ‘‚', @@ -2233,6 +2423,7 @@ const emojis = [ '๐Ÿ‘‚๐Ÿผ', '๐Ÿ‘‚๐Ÿป', ], + name: 'ear', }, { code: '๐Ÿ‘ƒ', @@ -2247,6 +2438,7 @@ const emojis = [ '๐Ÿ‘ƒ๐Ÿผ', '๐Ÿ‘ƒ๐Ÿป', ], + name: 'nose', }, { code: '๐Ÿ‘ฃ', @@ -2256,6 +2448,7 @@ const emojis = [ 'footprint', 'print', ], + name: 'footprints', }, { code: '๐Ÿ‘€', @@ -2264,6 +2457,7 @@ const emojis = [ 'eye', 'face', ], + name: 'eyes', }, { code: '๐Ÿ‘', @@ -2271,6 +2465,7 @@ const emojis = [ 'body', 'eye', ], + name: 'eye', }, { code: '๐Ÿ‘โ€๐Ÿ—จ', @@ -2280,6 +2475,7 @@ const emojis = [ 'speech', 'witness', ], + name: 'eye_speech_bubble', }, { code: '๐Ÿ‘…', @@ -2287,6 +2483,7 @@ const emojis = [ 'body', 'tongue', ], + name: 'tongue', }, { code: '๐Ÿ‘„', @@ -2295,6 +2492,7 @@ const emojis = [ 'lips', 'mouth', ], + name: 'lips', }, { code: '๐Ÿ’‹', @@ -2305,6 +2503,7 @@ const emojis = [ 'mark', 'romance', ], + name: 'kiss', }, { code: '๐Ÿ’˜', @@ -2314,12 +2513,14 @@ const emojis = [ 'heart', 'romance', ], + name: 'cupid', }, { code: 'โค๏ธ', keywords: [ 'heart', ], + name: 'heart', }, { code: '๐Ÿ’“', @@ -2329,6 +2530,7 @@ const emojis = [ 'heartbeat', 'pulsating', ], + name: 'heartbeat', }, { code: '๐Ÿ’”', @@ -2337,6 +2539,7 @@ const emojis = [ 'broken', 'heart', ], + name: 'broken_heart', }, { code: '๐Ÿ’•', @@ -2344,6 +2547,7 @@ const emojis = [ 'heart', 'love', ], + name: 'two_hearts', }, { code: '๐Ÿ’–', @@ -2352,6 +2556,7 @@ const emojis = [ 'heart', 'sparkle', ], + name: 'sparkling_heart', }, { code: '๐Ÿ’—', @@ -2362,6 +2567,7 @@ const emojis = [ 'heartpulse', 'nervous', ], + name: 'heartpulse', }, { code: '๐Ÿ’™', @@ -2369,6 +2575,7 @@ const emojis = [ 'blue', 'heart', ], + name: 'blue_heart', }, { code: '๐Ÿ’š', @@ -2376,6 +2583,7 @@ const emojis = [ 'green', 'heart', ], + name: 'green_heart', }, { code: '๐Ÿ’›', @@ -2383,6 +2591,7 @@ const emojis = [ 'heart', 'yellow', ], + name: 'yellow_heart', }, { code: '๐Ÿ’œ', @@ -2390,6 +2599,7 @@ const emojis = [ 'heart', 'purple', ], + name: 'purple_heart', }, { code: '๐Ÿ–ค', @@ -2399,6 +2609,7 @@ const emojis = [ 'heart', 'wicked', ], + name: 'black_heart', }, { code: '๐Ÿ’', @@ -2407,6 +2618,7 @@ const emojis = [ 'ribbon', 'valentine', ], + name: 'gift_heart', }, { code: '๐Ÿ’ž', @@ -2414,12 +2626,14 @@ const emojis = [ 'heart', 'revolving', ], + name: 'revolving_hearts', }, { code: '๐Ÿ’Ÿ', keywords: [ 'heart', ], + name: 'heart_decoration', }, { code: 'โฃ๏ธ', @@ -2429,6 +2643,7 @@ const emojis = [ 'mark', 'punctuation', ], + name: 'heavy_heart_exclamation', }, { code: '๐Ÿ’Œ', @@ -2439,6 +2654,7 @@ const emojis = [ 'mail', 'romance', ], + name: 'love_letter', }, { code: '๐Ÿ’ค', @@ -2447,6 +2663,7 @@ const emojis = [ 'sleep', 'zzz', ], + name: 'zzz', }, { code: '๐Ÿ’ข', @@ -2455,6 +2672,7 @@ const emojis = [ 'comic', 'mad', ], + name: 'anger', }, { code: '๐Ÿ’ฃ', @@ -2462,6 +2680,7 @@ const emojis = [ 'bomb', 'comic', ], + name: 'bomb', }, { code: '๐Ÿ’ฅ', @@ -2470,6 +2689,7 @@ const emojis = [ 'collision', 'comic', ], + name: 'boom', }, { code: '๐Ÿ’ฆ', @@ -2478,6 +2698,7 @@ const emojis = [ 'splashing', 'sweat', ], + name: 'sweat_drops', }, { code: '๐Ÿ’จ', @@ -2486,6 +2707,7 @@ const emojis = [ 'dash', 'running', ], + name: 'dash', }, { code: '๐Ÿ’ซ', @@ -2494,6 +2716,7 @@ const emojis = [ 'dizzy', 'star', ], + name: 'dizzy', }, { code: '๐Ÿ’ฌ', @@ -2504,6 +2727,7 @@ const emojis = [ 'dialog', 'speech', ], + name: 'speech_balloon', }, { code: '๐Ÿ—จ', @@ -2511,6 +2735,7 @@ const emojis = [ 'dialog', 'speech', ], + name: 'left_speech_bubble', }, { code: '๐Ÿ—ฏ', @@ -2520,6 +2745,7 @@ const emojis = [ 'bubble', 'mad', ], + name: 'right_anger_bubble', }, { code: '๐Ÿ’ญ', @@ -2529,12 +2755,14 @@ const emojis = [ 'comic', 'thought', ], + name: 'thought_balloon', }, { code: '๐Ÿ•ณ', keywords: [ 'hole', ], + name: 'hole', }, { code: '๐Ÿ‘“', @@ -2545,6 +2773,7 @@ const emojis = [ 'eyewear', 'glasses', ], + name: 'eyeglasses', }, { code: '๐Ÿ•ถ', @@ -2555,6 +2784,7 @@ const emojis = [ 'glasses', 'sunglasses', ], + name: 'dark_sunglasses', }, { code: '๐Ÿ‘”', @@ -2562,6 +2792,7 @@ const emojis = [ 'clothing', 'necktie', ], + name: 'necktie', }, { code: '๐Ÿ‘•', @@ -2570,6 +2801,7 @@ const emojis = [ 'shirt', 'tshirt', ], + name: 'shirt', }, { code: '๐Ÿ‘–', @@ -2579,6 +2811,7 @@ const emojis = [ 'pants', 'trousers', ], + name: 'jeans', }, { code: '๐Ÿ‘—', @@ -2586,6 +2819,7 @@ const emojis = [ 'clothing', 'dress', ], + name: 'dress', }, { code: '๐Ÿ‘˜', @@ -2593,6 +2827,7 @@ const emojis = [ 'clothing', 'kimono', ], + name: 'kimono', }, { code: '๐Ÿ‘™', @@ -2601,6 +2836,7 @@ const emojis = [ 'clothing', 'swim', ], + name: 'bikini', }, { code: '๐Ÿ‘š', @@ -2608,6 +2844,7 @@ const emojis = [ 'clothing', 'woman', ], + name: 'womans_clothes', }, { code: '๐Ÿ‘›', @@ -2616,6 +2853,7 @@ const emojis = [ 'coin', 'purse', ], + name: 'purse', }, { code: '๐Ÿ‘œ', @@ -2624,6 +2862,7 @@ const emojis = [ 'clothing', 'handbag', ], + name: 'handbag', }, { code: '๐Ÿ‘', @@ -2632,6 +2871,7 @@ const emojis = [ 'clothing', 'pouch', ], + name: 'pouch', }, { code: '๐Ÿ›', @@ -2640,6 +2880,7 @@ const emojis = [ 'hotel', 'shopping', ], + name: 'shopping', }, { code: '๐ŸŽ’', @@ -2649,6 +2890,7 @@ const emojis = [ 'satchel', 'school', ], + name: 'school_satchel', }, { code: '๐Ÿ‘ž', @@ -2657,6 +2899,7 @@ const emojis = [ 'man', 'shoe', ], + name: 'mans_shoe', }, { code: '๐Ÿ‘Ÿ', @@ -2666,6 +2909,7 @@ const emojis = [ 'shoe', 'sneaker', ], + name: 'athletic_shoe', }, { code: '๐Ÿ‘ ', @@ -2675,6 +2919,7 @@ const emojis = [ 'shoe', 'woman', ], + name: 'high_heel', }, { code: '๐Ÿ‘ก', @@ -2684,6 +2929,7 @@ const emojis = [ 'shoe', 'woman', ], + name: 'sandal', }, { code: '๐Ÿ‘ข', @@ -2693,6 +2939,7 @@ const emojis = [ 'shoe', 'woman', ], + name: 'boot', }, { code: '๐Ÿ‘‘', @@ -2702,6 +2949,7 @@ const emojis = [ 'king', 'queen', ], + name: 'crown', }, { code: '๐Ÿ‘’', @@ -2710,6 +2958,7 @@ const emojis = [ 'hat', 'woman', ], + name: 'womans_hat', }, { code: '๐ŸŽฉ', @@ -2721,6 +2970,7 @@ const emojis = [ 'top', 'tophat', ], + name: 'tophat', }, { code: '๐ŸŽ“', @@ -2732,6 +2982,7 @@ const emojis = [ 'graduation', 'hat', ], + name: 'mortar_board', }, { code: 'โ›‘', @@ -2742,6 +2993,7 @@ const emojis = [ 'hat', 'helmet', ], + name: 'rescue_worker_helmet', }, { code: '๐Ÿ“ฟ', @@ -2752,6 +3004,7 @@ const emojis = [ 'prayer', 'religion', ], + name: 'prayer_beads', }, { code: '๐Ÿ’„', @@ -2760,6 +3013,7 @@ const emojis = [ 'lipstick', 'makeup', ], + name: 'lipstick', }, { code: '๐Ÿ’', @@ -2768,6 +3022,7 @@ const emojis = [ 'ring', 'romance', ], + name: 'ring', }, { code: '๐Ÿ’Ž', @@ -2777,6 +3032,7 @@ const emojis = [ 'jewel', 'romance', ], + name: 'gem', }, { code: 'animalsAndNature', @@ -2788,18 +3044,21 @@ const emojis = [ 'face', 'monkey', ], + name: 'monkey_face', }, { code: '๐Ÿ’', keywords: [ 'monkey', ], + name: 'monkey', }, { code: '๐Ÿฆ', keywords: [ 'gorilla', ], + name: 'gorilla', }, { code: '๐Ÿถ', @@ -2808,6 +3067,7 @@ const emojis = [ 'face', 'pet', ], + name: 'dog', }, { code: '๐Ÿ•', @@ -2815,6 +3075,7 @@ const emojis = [ 'dog', 'pet', ], + name: 'dog2', }, { code: '๐Ÿฉ', @@ -2822,6 +3083,7 @@ const emojis = [ 'dog', 'poodle', ], + name: 'poodle', }, { code: '๐Ÿบ', @@ -2829,6 +3091,7 @@ const emojis = [ 'face', 'wolf', ], + name: 'wolf', }, { code: '๐ŸฆŠ', @@ -2836,6 +3099,7 @@ const emojis = [ 'face', 'fox', ], + name: 'fox_face', }, { code: '๐Ÿฑ', @@ -2844,6 +3108,7 @@ const emojis = [ 'face', 'pet', ], + name: 'cat', }, { code: '๐Ÿˆ', @@ -2851,6 +3116,7 @@ const emojis = [ 'cat', 'pet', ], + name: 'cat2', }, { code: '๐Ÿฆ', @@ -2860,6 +3126,7 @@ const emojis = [ 'lion', 'zodiac', ], + name: 'lion', }, { code: '๐Ÿฏ', @@ -2867,18 +3134,21 @@ const emojis = [ 'face', 'tiger', ], + name: 'tiger', }, { code: '๐Ÿ…', keywords: [ 'tiger', ], + name: 'tiger2', }, { code: '๐Ÿ†', keywords: [ 'leopard', ], + name: 'leopard', }, { code: '๐Ÿด', @@ -2886,6 +3156,7 @@ const emojis = [ 'face', 'horse', ], + name: 'horse', }, { code: '๐ŸŽ', @@ -2894,12 +3165,14 @@ const emojis = [ 'racehorse', 'racing', ], + name: 'racehorse', }, { code: '๐ŸฆŒ', keywords: [ 'deer', ], + name: 'deer', }, { code: '๐Ÿฆ„', @@ -2907,6 +3180,7 @@ const emojis = [ 'face', 'unicorn', ], + name: 'unicorn', }, { code: '๐Ÿฎ', @@ -2914,6 +3188,7 @@ const emojis = [ 'cow', 'face', ], + name: 'cow', }, { code: '๐Ÿ‚', @@ -2923,6 +3198,7 @@ const emojis = [ 'taurus', 'zodiac', ], + name: 'ox', }, { code: '๐Ÿƒ', @@ -2930,12 +3206,14 @@ const emojis = [ 'buffalo', 'water', ], + name: 'water_buffalo', }, { code: '๐Ÿ„', keywords: [ 'cow', ], + name: 'cow2', }, { code: '๐Ÿท', @@ -2943,6 +3221,7 @@ const emojis = [ 'face', 'pig', ], + name: 'pig', }, { code: '๐Ÿ–', @@ -2950,6 +3229,7 @@ const emojis = [ 'pig', 'sow', ], + name: 'pig2', }, { code: '๐Ÿ—', @@ -2957,6 +3237,7 @@ const emojis = [ 'boar', 'pig', ], + name: 'boar', }, { code: '๐Ÿฝ', @@ -2965,6 +3246,7 @@ const emojis = [ 'nose', 'pig', ], + name: 'pig_nose', }, { code: '๐Ÿ', @@ -2974,6 +3256,7 @@ const emojis = [ 'sheep', 'zodiac', ], + name: 'ram', }, { code: '๐Ÿ‘', @@ -2981,6 +3264,7 @@ const emojis = [ 'ewe', 'sheep', ], + name: 'sheep', }, { code: '๐Ÿ', @@ -2989,6 +3273,7 @@ const emojis = [ 'goat', 'zodiac', ], + name: 'goat', }, { code: '๐Ÿช', @@ -2997,6 +3282,7 @@ const emojis = [ 'dromedary', 'hump', ], + name: 'dromedary_camel', }, { code: '๐Ÿซ', @@ -3005,18 +3291,21 @@ const emojis = [ 'camel', 'hump', ], + name: 'camel', }, { code: '๐Ÿ˜', keywords: [ 'elephant', ], + name: 'elephant', }, { code: '๐Ÿฆ', keywords: [ 'rhinoceros', ], + name: 'rhinoceros', }, { code: '๐Ÿญ', @@ -3024,18 +3313,21 @@ const emojis = [ 'face', 'mouse', ], + name: 'mouse', }, { code: '๐Ÿ', keywords: [ 'mouse', ], + name: 'mouse2', }, { code: '๐Ÿ€', keywords: [ 'rat', ], + name: 'rat', }, { code: '๐Ÿน', @@ -3044,6 +3336,7 @@ const emojis = [ 'hamster', 'pet', ], + name: 'hamster', }, { code: '๐Ÿฐ', @@ -3053,6 +3346,7 @@ const emojis = [ 'pet', 'rabbit', ], + name: 'rabbit', }, { code: '๐Ÿ‡', @@ -3061,12 +3355,14 @@ const emojis = [ 'pet', 'rabbit', ], + name: 'rabbit2', }, { code: '๐Ÿฟ', keywords: [ 'chipmunk', ], + name: 'chipmunk', }, { code: '๐Ÿฆ‡', @@ -3074,6 +3370,7 @@ const emojis = [ 'bat', 'vampire', ], + name: 'bat', }, { code: '๐Ÿป', @@ -3081,6 +3378,7 @@ const emojis = [ 'bear', 'face', ], + name: 'bear', }, { code: '๐Ÿจ', @@ -3088,6 +3386,7 @@ const emojis = [ 'bear', 'koala', ], + name: 'koala', }, { code: '๐Ÿผ', @@ -3095,6 +3394,7 @@ const emojis = [ 'face', 'panda', ], + name: 'panda_face', }, { code: '๐Ÿพ', @@ -3103,24 +3403,28 @@ const emojis = [ 'paw', 'print', ], + name: 'feet', }, { code: '๐Ÿฆƒ', keywords: [ 'turkey', ], + name: 'turkey', }, { code: '๐Ÿ”', keywords: [ 'chicken', ], + name: 'chicken', }, { code: '๐Ÿ“', keywords: [ 'rooster', ], + name: 'rooster', }, { code: '๐Ÿฃ', @@ -3129,6 +3433,7 @@ const emojis = [ 'chick', 'hatching', ], + name: 'hatching_chick', }, { code: '๐Ÿค', @@ -3136,6 +3441,7 @@ const emojis = [ 'baby', 'chick', ], + name: 'baby_chick', }, { code: '๐Ÿฅ', @@ -3143,18 +3449,21 @@ const emojis = [ 'baby', 'chick', ], + name: 'hatched_chick', }, { code: '๐Ÿฆ', keywords: [ 'bird', ], + name: 'bird', }, { code: '๐Ÿง', keywords: [ 'penguin', ], + name: 'penguin', }, { code: '๐Ÿ•Š', @@ -3164,6 +3473,7 @@ const emojis = [ 'fly', 'peace', ], + name: 'dove', }, { code: '๐Ÿฆ…', @@ -3171,6 +3481,7 @@ const emojis = [ 'bird', 'eagle', ], + name: 'eagle', }, { code: '๐Ÿฆ†', @@ -3178,6 +3489,7 @@ const emojis = [ 'bird', 'duck', ], + name: 'duck', }, { code: '๐Ÿฆ‰', @@ -3186,6 +3498,7 @@ const emojis = [ 'owl', 'wise', ], + name: 'owl', }, { code: '๐Ÿธ', @@ -3193,18 +3506,21 @@ const emojis = [ 'face', 'frog', ], + name: 'frog', }, { code: '๐ŸŠ', keywords: [ 'crocodile', ], + name: 'crocodile', }, { code: '๐Ÿข', keywords: [ 'turtle', ], + name: 'turtle', }, { code: '๐ŸฆŽ', @@ -3212,6 +3528,7 @@ const emojis = [ 'lizard', 'reptile', ], + name: 'lizard', }, { code: '๐Ÿ', @@ -3222,6 +3539,7 @@ const emojis = [ 'snake', 'zodiac', ], + name: 'snake', }, { code: '๐Ÿฒ', @@ -3230,6 +3548,7 @@ const emojis = [ 'face', 'fairy tale', ], + name: 'dragon_face', }, { code: '๐Ÿ‰', @@ -3237,6 +3556,7 @@ const emojis = [ 'dragon', 'fairy tale', ], + name: 'dragon', }, { code: '๐Ÿณ', @@ -3245,12 +3565,14 @@ const emojis = [ 'spouting', 'whale', ], + name: 'whale', }, { code: '๐Ÿ‹', keywords: [ 'whale', ], + name: 'whale2', }, { code: '๐Ÿฌ', @@ -3258,6 +3580,7 @@ const emojis = [ 'dolphin', 'flipper', ], + name: 'dolphin', }, { code: '๐ŸŸ', @@ -3266,6 +3589,7 @@ const emojis = [ 'pisces', 'zodiac', ], + name: 'fish', }, { code: '๐Ÿ ', @@ -3273,6 +3597,7 @@ const emojis = [ 'fish', 'tropical', ], + name: 'tropical_fish', }, { code: '๐Ÿก', @@ -3280,6 +3605,7 @@ const emojis = [ 'blowfish', 'fish', ], + name: 'blowfish', }, { code: '๐Ÿฆˆ', @@ -3287,12 +3613,14 @@ const emojis = [ 'fish', 'shark', ], + name: 'shark', }, { code: '๐Ÿ™', keywords: [ 'octopus', ], + name: 'octopus', }, { code: '๐Ÿš', @@ -3300,6 +3628,7 @@ const emojis = [ 'shell', 'spiral', ], + name: 'shell', }, { code: '๐Ÿฆ€', @@ -3308,6 +3637,7 @@ const emojis = [ 'crab', 'zodiac', ], + name: 'crab', }, { code: '๐Ÿฆ', @@ -3316,6 +3646,7 @@ const emojis = [ 'shrimp', 'small', ], + name: 'shrimp', }, { code: '๐Ÿฆ‘', @@ -3323,6 +3654,7 @@ const emojis = [ 'molusc', 'squid', ], + name: 'squid', }, { code: '๐Ÿฆ‹', @@ -3331,12 +3663,14 @@ const emojis = [ 'insect', 'pretty', ], + name: 'butterfly', }, { code: '๐ŸŒ', keywords: [ 'snail', ], + name: 'snail', }, { code: '๐Ÿ›', @@ -3344,6 +3678,7 @@ const emojis = [ 'bug', 'insect', ], + name: 'bug', }, { code: '๐Ÿœ', @@ -3351,6 +3686,7 @@ const emojis = [ 'ant', 'insect', ], + name: 'ant', }, { code: '๐Ÿ', @@ -3359,6 +3695,7 @@ const emojis = [ 'honeybee', 'insect', ], + name: 'bee', }, { code: '๐Ÿž', @@ -3369,6 +3706,7 @@ const emojis = [ 'ladybird', 'ladybug', ], + name: 'lady_beetle', }, { code: '๐Ÿ•ท', @@ -3376,6 +3714,7 @@ const emojis = [ 'insect', 'spider', ], + name: 'spider', }, { code: '๐Ÿ•ธ', @@ -3383,6 +3722,7 @@ const emojis = [ 'spider', 'web', ], + name: 'spider_web', }, { code: '๐Ÿฆ‚', @@ -3392,6 +3732,7 @@ const emojis = [ 'scorpius', 'zodiac', ], + name: 'scorpion', }, { code: '๐Ÿ’', @@ -3401,6 +3742,7 @@ const emojis = [ 'plant', 'romance', ], + name: 'bouquet', }, { code: '๐ŸŒธ', @@ -3410,12 +3752,14 @@ const emojis = [ 'flower', 'plant', ], + name: 'cherry_blossom', }, { code: '๐Ÿ’ฎ', keywords: [ 'flower', ], + name: 'white_flower', }, { code: '๐Ÿต', @@ -3423,6 +3767,7 @@ const emojis = [ 'plant', 'rosette', ], + name: 'rosette', }, { code: '๐ŸŒน', @@ -3431,6 +3776,7 @@ const emojis = [ 'plant', 'rose', ], + name: 'rose', }, { code: '๐Ÿฅ€', @@ -3438,6 +3784,7 @@ const emojis = [ 'flower', 'wilted', ], + name: 'wilted_flower', }, { code: '๐ŸŒบ', @@ -3446,6 +3793,7 @@ const emojis = [ 'hibiscus', 'plant', ], + name: 'hibiscus', }, { code: '๐ŸŒป', @@ -3455,6 +3803,7 @@ const emojis = [ 'sun', 'sunflower', ], + name: 'sunflower', }, { code: '๐ŸŒผ', @@ -3463,6 +3812,7 @@ const emojis = [ 'flower', 'plant', ], + name: 'blossom', }, { code: '๐ŸŒท', @@ -3471,6 +3821,7 @@ const emojis = [ 'plant', 'tulip', ], + name: 'tulip', }, { code: '๐ŸŒฑ', @@ -3479,6 +3830,7 @@ const emojis = [ 'seedling', 'young', ], + name: 'seedling', }, { code: '๐ŸŒฒ', @@ -3487,6 +3839,7 @@ const emojis = [ 'plant', 'tree', ], + name: 'evergreen_tree', }, { code: '๐ŸŒณ', @@ -3496,6 +3849,7 @@ const emojis = [ 'shedding', 'tree', ], + name: 'deciduous_tree', }, { code: '๐ŸŒด', @@ -3504,6 +3858,7 @@ const emojis = [ 'plant', 'tree', ], + name: 'palm_tree', }, { code: '๐ŸŒต', @@ -3511,6 +3866,7 @@ const emojis = [ 'cactus', 'plant', ], + name: 'cactus', }, { code: '๐ŸŒพ', @@ -3519,6 +3875,7 @@ const emojis = [ 'plant', 'rice', ], + name: 'ear_of_rice', }, { code: '๐ŸŒฟ', @@ -3527,6 +3884,7 @@ const emojis = [ 'leaf', 'plant', ], + name: 'herb', }, { code: 'โ˜˜๏ธ', @@ -3534,6 +3892,7 @@ const emojis = [ 'plant', 'shamrock', ], + name: 'shamrock', }, { code: '๐Ÿ€', @@ -3544,6 +3903,7 @@ const emojis = [ 'leaf', 'plant', ], + name: 'four_leaf_clover', }, { code: '๐Ÿ', @@ -3553,6 +3913,7 @@ const emojis = [ 'maple', 'plant', ], + name: 'maple_leaf', }, { code: '๐Ÿ‚', @@ -3561,6 +3922,7 @@ const emojis = [ 'leaf', 'plant', ], + name: 'fallen_leaf', }, { code: '๐Ÿƒ', @@ -3571,6 +3933,7 @@ const emojis = [ 'plant', 'wind', ], + name: 'leaves', }, { code: 'foodAndDrinks', @@ -3583,6 +3946,7 @@ const emojis = [ 'grape', 'plant', ], + name: 'grapes', }, { code: '๐Ÿˆ', @@ -3591,6 +3955,7 @@ const emojis = [ 'melon', 'plant', ], + name: 'melon', }, { code: '๐Ÿ‰', @@ -3599,6 +3964,7 @@ const emojis = [ 'plant', 'watermelon', ], + name: 'watermelon', }, { code: '๐ŸŠ', @@ -3608,6 +3974,7 @@ const emojis = [ 'plant', 'tangerine', ], + name: 'tangerine', }, { code: '๐Ÿ‹', @@ -3617,6 +3984,7 @@ const emojis = [ 'lemon', 'plant', ], + name: 'lemon', }, { code: '๐ŸŒ', @@ -3625,6 +3993,7 @@ const emojis = [ 'fruit', 'plant', ], + name: 'banana', }, { code: '๐Ÿ', @@ -3633,6 +4002,7 @@ const emojis = [ 'pineapple', 'plant', ], + name: 'pineapple', }, { code: '๐ŸŽ', @@ -3642,6 +4012,7 @@ const emojis = [ 'plant', 'red', ], + name: 'apple', }, { code: '๐Ÿ', @@ -3651,6 +4022,7 @@ const emojis = [ 'green', 'plant', ], + name: 'green_apple', }, { code: '๐Ÿ', @@ -3659,6 +4031,7 @@ const emojis = [ 'pear', 'plant', ], + name: 'pear', }, { code: '๐Ÿ‘', @@ -3667,6 +4040,7 @@ const emojis = [ 'peach', 'plant', ], + name: 'peach', }, { code: '๐Ÿ’', @@ -3675,6 +4049,7 @@ const emojis = [ 'fruit', 'plant', ], + name: 'cherries', }, { code: '๐Ÿ“', @@ -3684,6 +4059,7 @@ const emojis = [ 'plant', 'strawberry', ], + name: 'strawberry', }, { code: '๐Ÿ…', @@ -3692,6 +4068,7 @@ const emojis = [ 'tomato', 'vegetable', ], + name: 'tomato', }, { code: '๐Ÿฅ', @@ -3699,6 +4076,7 @@ const emojis = [ 'fruit', 'kiwi', ], + name: 'kiwi_fruit', }, { code: '๐Ÿฅ‘', @@ -3706,6 +4084,7 @@ const emojis = [ 'avocado', 'fruit', ], + name: 'avocado', }, { code: '๐Ÿ†', @@ -3715,6 +4094,7 @@ const emojis = [ 'plant', 'vegetable', ], + name: 'eggplant', }, { code: '๐Ÿฅ”', @@ -3722,6 +4102,7 @@ const emojis = [ 'potato', 'vegetable', ], + name: 'potato', }, { code: '๐Ÿฅ•', @@ -3729,6 +4110,7 @@ const emojis = [ 'carrot', 'vegetable', ], + name: 'carrot', }, { code: '๐ŸŒฝ', @@ -3739,6 +4121,7 @@ const emojis = [ 'maze', 'plant', ], + name: 'corn', }, { code: '๐ŸŒถ', @@ -3747,6 +4130,7 @@ const emojis = [ 'pepper', 'plant', ], + name: 'hot_pepper', }, { code: '๐Ÿฅ’', @@ -3755,6 +4139,7 @@ const emojis = [ 'pickle', 'vegetable', ], + name: 'cucumber', }, { code: '๐Ÿ„', @@ -3762,6 +4147,7 @@ const emojis = [ 'mushroom', 'plant', ], + name: 'mushroom', }, { code: '๐Ÿฅœ', @@ -3770,6 +4156,7 @@ const emojis = [ 'peanut', 'vegetable', ], + name: 'peanuts', }, { code: '๐ŸŒฐ', @@ -3777,6 +4164,7 @@ const emojis = [ 'chestnut', 'plant', ], + name: 'chestnut', }, { code: '๐Ÿž', @@ -3784,6 +4172,7 @@ const emojis = [ 'bread', 'loaf', ], + name: 'bread', }, { code: '๐Ÿฅ', @@ -3793,6 +4182,7 @@ const emojis = [ 'croissant', 'french', ], + name: 'croissant', }, { code: '๐Ÿฅ–', @@ -3801,6 +4191,7 @@ const emojis = [ 'bread', 'french', ], + name: 'baguette_bread', }, { code: '๐Ÿฅž', @@ -3809,12 +4200,14 @@ const emojis = [ 'hotcake', 'pancake', ], + name: 'pancakes', }, { code: '๐Ÿง€', keywords: [ 'cheese', ], + name: 'cheese', }, { code: '๐Ÿ–', @@ -3822,6 +4215,7 @@ const emojis = [ 'bone', 'meat', ], + name: 'meat_on_bone', }, { code: '๐Ÿ—', @@ -3831,6 +4225,7 @@ const emojis = [ 'leg', 'poultry', ], + name: 'poultry_leg', }, { code: '๐Ÿฅ“', @@ -3838,6 +4233,7 @@ const emojis = [ 'bacon', 'meat', ], + name: 'bacon', }, { code: '๐Ÿ”', @@ -3845,6 +4241,7 @@ const emojis = [ 'burger', 'hamburger', ], + name: 'hamburger', }, { code: '๐ŸŸ', @@ -3852,6 +4249,7 @@ const emojis = [ 'french', 'fries', ], + name: 'fries', }, { code: '๐Ÿ•', @@ -3860,6 +4258,7 @@ const emojis = [ 'pizza', 'slice', ], + name: 'pizza', }, { code: '๐ŸŒญ', @@ -3869,6 +4268,7 @@ const emojis = [ 'hotdog', 'sausage', ], + name: 'hotdog', }, { code: '๐ŸŒฎ', @@ -3876,6 +4276,7 @@ const emojis = [ 'mexican', 'taco', ], + name: 'taco', }, { code: '๐ŸŒฏ', @@ -3883,6 +4284,7 @@ const emojis = [ 'burrito', 'mexican', ], + name: 'burrito', }, { code: '๐Ÿฅ™', @@ -3893,12 +4295,14 @@ const emojis = [ 'kebab', 'stuffed', ], + name: 'stuffed_flatbread', }, { code: '๐Ÿฅš', keywords: [ 'egg', ], + name: 'egg', }, { code: '๐Ÿณ', @@ -3908,6 +4312,7 @@ const emojis = [ 'frying', 'pan', ], + name: 'fried_egg', }, { code: '๐Ÿฅ˜', @@ -3917,6 +4322,7 @@ const emojis = [ 'pan', 'shallow', ], + name: 'shallow_pan_of_food', }, { code: '๐Ÿฒ', @@ -3924,6 +4330,7 @@ const emojis = [ 'pot', 'stew', ], + name: 'stew', }, { code: '๐Ÿฅ—', @@ -3931,12 +4338,14 @@ const emojis = [ 'green', 'salad', ], + name: 'green_salad', }, { code: '๐Ÿฟ', keywords: [ 'popcorn', ], + name: 'popcorn', }, { code: '๐Ÿฑ', @@ -3944,6 +4353,7 @@ const emojis = [ 'bento', 'box', ], + name: 'bento', }, { code: '๐Ÿ˜', @@ -3951,6 +4361,7 @@ const emojis = [ 'cracker', 'rice', ], + name: 'rice_cracker', }, { code: '๐Ÿ™', @@ -3959,6 +4370,7 @@ const emojis = [ 'japanese', 'rice', ], + name: 'rice_ball', }, { code: '๐Ÿš', @@ -3966,6 +4378,7 @@ const emojis = [ 'cooked', 'rice', ], + name: 'rice', }, { code: '๐Ÿ›', @@ -3973,6 +4386,7 @@ const emojis = [ 'curry', 'rice', ], + name: 'curry', }, { code: '๐Ÿœ', @@ -3982,6 +4396,7 @@ const emojis = [ 'ramen', 'steaming', ], + name: 'ramen', }, { code: '๐Ÿ', @@ -3989,6 +4404,7 @@ const emojis = [ 'pasta', 'spaghetti', ], + name: 'spaghetti', }, { code: '๐Ÿ ', @@ -3997,6 +4413,7 @@ const emojis = [ 'roasted', 'sweet', ], + name: 'sweet_potato', }, { code: '๐Ÿข', @@ -4007,12 +4424,14 @@ const emojis = [ 'skewer', 'stick', ], + name: 'oden', }, { code: '๐Ÿฃ', keywords: [ 'sushi', ], + name: 'sushi', }, { code: '๐Ÿค', @@ -4022,6 +4441,7 @@ const emojis = [ 'shrimp', 'tempura', ], + name: 'fried_shrimp', }, { code: '๐Ÿฅ', @@ -4031,6 +4451,7 @@ const emojis = [ 'pastry', 'swirl', ], + name: 'fish_cake', }, { code: '๐Ÿก', @@ -4042,6 +4463,7 @@ const emojis = [ 'stick', 'sweet', ], + name: 'dango', }, { code: '๐Ÿฆ', @@ -4053,6 +4475,7 @@ const emojis = [ 'soft', 'sweet', ], + name: 'icecream', }, { code: '๐Ÿง', @@ -4062,6 +4485,7 @@ const emojis = [ 'shaved', 'sweet', ], + name: 'shaved_ice', }, { code: '๐Ÿจ', @@ -4071,6 +4495,7 @@ const emojis = [ 'ice', 'sweet', ], + name: 'ice_cream', }, { code: '๐Ÿฉ', @@ -4080,6 +4505,7 @@ const emojis = [ 'doughnut', 'sweet', ], + name: 'doughnut', }, { code: '๐Ÿช', @@ -4088,6 +4514,7 @@ const emojis = [ 'dessert', 'sweet', ], + name: 'cookie', }, { code: '๐ŸŽ‚', @@ -4099,6 +4526,7 @@ const emojis = [ 'pastry', 'sweet', ], + name: 'birthday', }, { code: '๐Ÿฐ', @@ -4110,6 +4538,7 @@ const emojis = [ 'slice', 'sweet', ], + name: 'cake', }, { code: '๐Ÿซ', @@ -4119,6 +4548,7 @@ const emojis = [ 'dessert', 'sweet', ], + name: 'chocolate_bar', }, { code: '๐Ÿฌ', @@ -4127,6 +4557,7 @@ const emojis = [ 'dessert', 'sweet', ], + name: 'candy', }, { code: '๐Ÿญ', @@ -4136,6 +4567,7 @@ const emojis = [ 'lollipop', 'sweet', ], + name: 'lollipop', }, { code: '๐Ÿฎ', @@ -4145,6 +4577,7 @@ const emojis = [ 'pudding', 'sweet', ], + name: 'custard', }, { code: '๐Ÿฏ', @@ -4154,6 +4587,7 @@ const emojis = [ 'pot', 'sweet', ], + name: 'honey_pot', }, { code: '๐Ÿผ', @@ -4163,6 +4597,7 @@ const emojis = [ 'drink', 'milk', ], + name: 'baby_bottle', }, { code: '๐Ÿฅ›', @@ -4171,6 +4606,7 @@ const emojis = [ 'glass', 'milk', ], + name: 'milk_glass', }, { code: 'โ˜•', @@ -4182,6 +4618,7 @@ const emojis = [ 'steaming', 'tea', ], + name: 'coffee', }, { code: '๐Ÿต', @@ -4192,6 +4629,7 @@ const emojis = [ 'tea', 'teacup', ], + name: 'tea', }, { code: '๐Ÿถ', @@ -4203,6 +4641,7 @@ const emojis = [ 'drink', 'sake', ], + name: 'sake', }, { code: '๐Ÿพ', @@ -4213,6 +4652,7 @@ const emojis = [ 'drink', 'popping', ], + name: 'champagne', }, { code: '๐Ÿท', @@ -4223,6 +4663,7 @@ const emojis = [ 'glass', 'wine', ], + name: 'wine_glass', }, { code: '๐Ÿธ', @@ -4232,6 +4673,7 @@ const emojis = [ 'drink', 'glass', ], + name: 'cocktail', }, { code: '๐Ÿน', @@ -4240,6 +4682,7 @@ const emojis = [ 'drink', 'tropical', ], + name: 'tropical_drink', }, { code: '๐Ÿบ', @@ -4249,6 +4692,7 @@ const emojis = [ 'drink', 'mug', ], + name: 'beer', }, { code: '๐Ÿป', @@ -4259,6 +4703,7 @@ const emojis = [ 'drink', 'mug', ], + name: 'beers', }, { code: '๐Ÿฅ‚', @@ -4268,6 +4713,7 @@ const emojis = [ 'drink', 'glass', ], + name: 'clinking_glasses', }, { code: '๐Ÿฅƒ', @@ -4278,6 +4724,7 @@ const emojis = [ 'tumbler', 'whisky', ], + name: 'tumbler_glass', }, { code: '๐Ÿฝ', @@ -4287,6 +4734,7 @@ const emojis = [ 'knife', 'plate', ], + name: 'plate_with_cutlery', }, { code: '๐Ÿด', @@ -4295,6 +4743,7 @@ const emojis = [ 'fork', 'knife', ], + name: 'fork_and_knife', }, { code: '๐Ÿฅ„', @@ -4302,6 +4751,7 @@ const emojis = [ 'spoon', 'tableware', ], + name: 'spoon', }, { code: '๐Ÿ”ช', @@ -4312,6 +4762,7 @@ const emojis = [ 'tool', 'weapon', ], + name: 'hocho', }, { code: '๐Ÿบ', @@ -4325,6 +4776,7 @@ const emojis = [ 'weapon', 'zodiac', ], + name: 'amphora', }, { code: 'travelAndPlaces', @@ -4339,6 +4791,7 @@ const emojis = [ 'globe', 'world', ], + name: 'earth_africa', }, { code: '๐ŸŒŽ', @@ -4348,6 +4801,7 @@ const emojis = [ 'globe', 'world', ], + name: 'earth_americas', }, { code: '๐ŸŒ', @@ -4358,6 +4812,7 @@ const emojis = [ 'globe', 'world', ], + name: 'earth_asia', }, { code: '๐ŸŒ', @@ -4367,6 +4822,7 @@ const emojis = [ 'meridians', 'world', ], + name: 'globe_with_meridians', }, { code: '๐Ÿ—บ', @@ -4374,6 +4830,7 @@ const emojis = [ 'map', 'world', ], + name: 'world_map', }, { code: '๐Ÿ—พ', @@ -4381,6 +4838,7 @@ const emojis = [ 'japan', 'map', ], + name: 'japan', }, { code: '๐Ÿ”', @@ -4389,12 +4847,14 @@ const emojis = [ 'mountain', 'snow', ], + name: 'mountain_snow', }, { code: 'โ›ฐ', keywords: [ 'mountain', ], + name: 'mountain', }, { code: '๐ŸŒ‹', @@ -4404,6 +4864,7 @@ const emojis = [ 'volcano', 'weather', ], + name: 'volcano', }, { code: '๐Ÿ—ป', @@ -4411,12 +4872,14 @@ const emojis = [ 'fuji', 'mountain', ], + name: 'mount_fuji', }, { code: '๐Ÿ•', keywords: [ 'camping', ], + name: 'camping', }, { code: '๐Ÿ–', @@ -4424,12 +4887,14 @@ const emojis = [ 'beach', 'umbrella', ], + name: 'beach_umbrella', }, { code: '๐Ÿœ', keywords: [ 'desert', ], + name: 'desert', }, { code: '๐Ÿ', @@ -4437,6 +4902,7 @@ const emojis = [ 'desert', 'island', ], + name: 'desert_island', }, { code: '๐Ÿž', @@ -4444,12 +4910,14 @@ const emojis = [ 'national park', 'park', ], + name: 'national_park', }, { code: '๐ŸŸ', keywords: [ 'stadium', ], + name: 'stadium', }, { code: '๐Ÿ›', @@ -4457,6 +4925,7 @@ const emojis = [ 'building', 'classical', ], + name: 'classical_building', }, { code: '๐Ÿ—', @@ -4464,6 +4933,7 @@ const emojis = [ 'building', 'construction', ], + name: 'building_construction', }, { code: '๐Ÿ˜', @@ -4471,6 +4941,7 @@ const emojis = [ 'building', 'house', ], + name: 'houses', }, { code: '๐Ÿ™', @@ -4478,6 +4949,7 @@ const emojis = [ 'building', 'city', ], + name: 'cityscape', }, { code: '๐Ÿš', @@ -4486,6 +4958,7 @@ const emojis = [ 'derelict', 'house', ], + name: 'derelict_house', }, { code: '๐Ÿ ', @@ -4494,6 +4967,7 @@ const emojis = [ 'home', 'house', ], + name: 'house', }, { code: '๐Ÿก', @@ -4503,12 +4977,14 @@ const emojis = [ 'home', 'house', ], + name: 'house_with_garden', }, { code: '๐Ÿข', keywords: [ 'building', ], + name: 'office', }, { code: '๐Ÿฃ', @@ -4517,6 +4993,7 @@ const emojis = [ 'japanese', 'post', ], + name: 'post_office', }, { code: '๐Ÿค', @@ -4525,6 +5002,7 @@ const emojis = [ 'european', 'post', ], + name: 'european_post_office', }, { code: '๐Ÿฅ', @@ -4534,6 +5012,7 @@ const emojis = [ 'hospital', 'medicine', ], + name: 'hospital', }, { code: '๐Ÿฆ', @@ -4541,6 +5020,7 @@ const emojis = [ 'bank', 'building', ], + name: 'bank', }, { code: '๐Ÿจ', @@ -4548,6 +5028,7 @@ const emojis = [ 'building', 'hotel', ], + name: 'hotel', }, { code: '๐Ÿฉ', @@ -4556,6 +5037,7 @@ const emojis = [ 'hotel', 'love', ], + name: 'love_hotel', }, { code: '๐Ÿช', @@ -4564,6 +5046,7 @@ const emojis = [ 'convenience', 'store', ], + name: 'convenience_store', }, { code: '๐Ÿซ', @@ -4571,6 +5054,7 @@ const emojis = [ 'building', 'school', ], + name: 'school', }, { code: '๐Ÿฌ', @@ -4579,6 +5063,7 @@ const emojis = [ 'department', 'store', ], + name: 'department_store', }, { code: '๐Ÿญ', @@ -4586,6 +5071,7 @@ const emojis = [ 'building', 'factory', ], + name: 'factory', }, { code: '๐Ÿฏ', @@ -4594,6 +5080,7 @@ const emojis = [ 'castle', 'japanese', ], + name: 'japanese_castle', }, { code: '๐Ÿฐ', @@ -4602,6 +5089,7 @@ const emojis = [ 'castle', 'european', ], + name: 'european_castle', }, { code: '๐Ÿ’’', @@ -4611,6 +5099,7 @@ const emojis = [ 'romance', 'wedding', ], + name: 'wedding', }, { code: '๐Ÿ—ผ', @@ -4618,6 +5107,7 @@ const emojis = [ 'tokyo', 'tower', ], + name: 'tokyo_tower', }, { code: '๐Ÿ—ฝ', @@ -4625,6 +5115,7 @@ const emojis = [ 'liberty', 'statue', ], + name: 'statue_of_liberty', }, { code: 'โ›ช', @@ -4635,6 +5126,7 @@ const emojis = [ 'cross', 'religion', ], + name: 'church', }, { code: '๐Ÿ•Œ', @@ -4644,6 +5136,7 @@ const emojis = [ 'muslim', 'religion', ], + name: 'mosque', }, { code: '๐Ÿ•', @@ -4654,6 +5147,7 @@ const emojis = [ 'synagogue', 'temple', ], + name: 'synagogue', }, { code: 'โ›ฉ', @@ -4662,6 +5156,7 @@ const emojis = [ 'shinto', 'shrine', ], + name: 'shinto_shrine', }, { code: '๐Ÿ•‹', @@ -4671,12 +5166,14 @@ const emojis = [ 'muslim', 'religion', ], + name: 'kaaba', }, { code: 'โ›ฒ', keywords: [ 'fountain', ], + name: 'fountain', }, { code: 'โ›บ', @@ -4684,6 +5181,7 @@ const emojis = [ 'camping', 'tent', ], + name: 'tent', }, { code: '๐ŸŒ', @@ -4691,6 +5189,7 @@ const emojis = [ 'fog', 'weather', ], + name: 'foggy', }, { code: '๐ŸŒƒ', @@ -4699,6 +5198,7 @@ const emojis = [ 'star', 'weather', ], + name: 'night_with_stars', }, { code: '๐ŸŒ„', @@ -4709,6 +5209,7 @@ const emojis = [ 'sunrise', 'weather', ], + name: 'sunrise_over_mountains', }, { code: '๐ŸŒ…', @@ -4718,6 +5219,7 @@ const emojis = [ 'sunrise', 'weather', ], + name: 'sunrise', }, { code: '๐ŸŒ†', @@ -4731,6 +5233,7 @@ const emojis = [ 'sunset', 'weather', ], + name: 'city_sunset', }, { code: '๐ŸŒ‡', @@ -4741,6 +5244,7 @@ const emojis = [ 'sunset', 'weather', ], + name: 'city_sunrise', }, { code: '๐ŸŒ‰', @@ -4749,6 +5253,7 @@ const emojis = [ 'night', 'weather', ], + name: 'bridge_at_night', }, { code: 'โ™จ๏ธ', @@ -4758,6 +5263,7 @@ const emojis = [ 'springs', 'steaming', ], + name: 'hotsprings', }, { code: '๐ŸŒŒ', @@ -4766,6 +5272,7 @@ const emojis = [ 'space', 'weather', ], + name: 'milky_way', }, { code: '๐ŸŽ ', @@ -4775,6 +5282,7 @@ const emojis = [ 'entertainment', 'horse', ], + name: 'carousel_horse', }, { code: '๐ŸŽก', @@ -4785,6 +5293,7 @@ const emojis = [ 'ferris', 'wheel', ], + name: 'ferris_wheel', }, { code: '๐ŸŽข', @@ -4795,6 +5304,7 @@ const emojis = [ 'entertainment', 'roller', ], + name: 'roller_coaster', }, { code: '๐Ÿ’ˆ', @@ -4803,6 +5313,7 @@ const emojis = [ 'haircut', 'pole', ], + name: 'barber', }, { code: '๐ŸŽช', @@ -4812,6 +5323,7 @@ const emojis = [ 'entertainment', 'tent', ], + name: 'circus_tent', }, { code: '๐ŸŽญ', @@ -4824,6 +5336,7 @@ const emojis = [ 'theater', 'theatre', ], + name: 'performing_arts', }, { code: '๐Ÿ–ผ', @@ -4834,6 +5347,7 @@ const emojis = [ 'painting', 'picture', ], + name: 'framed_picture', }, { code: '๐ŸŽจ', @@ -4845,6 +5359,7 @@ const emojis = [ 'painting', 'palette', ], + name: 'art', }, { code: '๐ŸŽฐ', @@ -4853,6 +5368,7 @@ const emojis = [ 'game', 'slot', ], + name: 'slot_machine', }, { code: '๐Ÿš‚', @@ -4864,6 +5380,7 @@ const emojis = [ 'train', 'vehicle', ], + name: 'steam_locomotive', }, { code: '๐Ÿšƒ', @@ -4876,6 +5393,7 @@ const emojis = [ 'trolleybus', 'vehicle', ], + name: 'railway_car', }, { code: '๐Ÿš„', @@ -4886,6 +5404,7 @@ const emojis = [ 'train', 'vehicle', ], + name: 'bullettrain_side', }, { code: '๐Ÿš…', @@ -4897,6 +5416,7 @@ const emojis = [ 'train', 'vehicle', ], + name: 'bullettrain_front', }, { code: '๐Ÿš†', @@ -4905,6 +5425,7 @@ const emojis = [ 'train', 'vehicle', ], + name: 'train2', }, { code: '๐Ÿš‡', @@ -4913,6 +5434,7 @@ const emojis = [ 'subway', 'vehicle', ], + name: 'metro', }, { code: '๐Ÿšˆ', @@ -4920,6 +5442,7 @@ const emojis = [ 'railway', 'vehicle', ], + name: 'light_rail', }, { code: '๐Ÿš‰', @@ -4929,6 +5452,7 @@ const emojis = [ 'train', 'vehicle', ], + name: 'station', }, { code: '๐ŸšŠ', @@ -4937,6 +5461,7 @@ const emojis = [ 'trolleybus', 'vehicle', ], + name: 'tram', }, { code: '๐Ÿš', @@ -4944,6 +5469,7 @@ const emojis = [ 'monorail', 'vehicle', ], + name: 'monorail', }, { code: '๐Ÿšž', @@ -4953,6 +5479,7 @@ const emojis = [ 'railway', 'vehicle', ], + name: 'mountain_railway', }, { code: '๐Ÿš‹', @@ -4962,6 +5489,7 @@ const emojis = [ 'trolleybus', 'vehicle', ], + name: 'train', }, { code: '๐ŸšŒ', @@ -4969,6 +5497,7 @@ const emojis = [ 'bus', 'vehicle', ], + name: 'bus', }, { code: '๐Ÿš', @@ -4977,6 +5506,7 @@ const emojis = [ 'oncoming', 'vehicle', ], + name: 'oncoming_bus', }, { code: '๐ŸšŽ', @@ -4987,6 +5517,7 @@ const emojis = [ 'trolleybus', 'vehicle', ], + name: 'trolleybus', }, { code: '๐Ÿš', @@ -4995,6 +5526,7 @@ const emojis = [ 'busstop', 'stop', ], + name: 'busstop', }, { code: '๐Ÿš', @@ -5003,6 +5535,7 @@ const emojis = [ 'minibus', 'vehicle', ], + name: 'minibus', }, { code: '๐Ÿš‘', @@ -5010,6 +5543,7 @@ const emojis = [ 'ambulance', 'vehicle', ], + name: 'ambulance', }, { code: '๐Ÿš’', @@ -5019,6 +5553,7 @@ const emojis = [ 'truck', 'vehicle', ], + name: 'fire_engine', }, { code: '๐Ÿš“', @@ -5028,6 +5563,7 @@ const emojis = [ 'police', 'vehicle', ], + name: 'police_car', }, { code: '๐Ÿš”', @@ -5037,6 +5573,7 @@ const emojis = [ 'police', 'vehicle', ], + name: 'oncoming_police_car', }, { code: '๐Ÿš•', @@ -5044,6 +5581,7 @@ const emojis = [ 'taxi', 'vehicle', ], + name: 'taxi', }, { code: '๐Ÿš–', @@ -5052,6 +5590,7 @@ const emojis = [ 'taxi', 'vehicle', ], + name: 'oncoming_taxi', }, { code: '๐Ÿš—', @@ -5060,6 +5599,7 @@ const emojis = [ 'car', 'vehicle', ], + name: 'car', }, { code: '๐Ÿš˜', @@ -5069,6 +5609,7 @@ const emojis = [ 'oncoming', 'vehicle', ], + name: 'oncoming_automobile', }, { code: '๐Ÿš™', @@ -5077,6 +5618,7 @@ const emojis = [ 'rv', 'vehicle', ], + name: 'blue_car', }, { code: '๐Ÿšš', @@ -5085,6 +5627,7 @@ const emojis = [ 'truck', 'vehicle', ], + name: 'truck', }, { code: '๐Ÿš›', @@ -5094,6 +5637,7 @@ const emojis = [ 'truck', 'vehicle', ], + name: 'articulated_lorry', }, { code: '๐Ÿšœ', @@ -5101,6 +5645,7 @@ const emojis = [ 'tractor', 'vehicle', ], + name: 'tractor', }, { code: '๐Ÿšฒ', @@ -5109,6 +5654,7 @@ const emojis = [ 'bike', 'vehicle', ], + name: 'bike', }, { code: 'โ›ฝ', @@ -5119,6 +5665,7 @@ const emojis = [ 'pump', 'station', ], + name: 'fuelpump', }, { code: '๐Ÿ›ฃ', @@ -5127,6 +5674,7 @@ const emojis = [ 'motorway', 'road', ], + name: 'motorway', }, { code: '๐Ÿ›ค', @@ -5134,6 +5682,7 @@ const emojis = [ 'railway', 'train', ], + name: 'railway_track', }, { code: '๐Ÿšจ', @@ -5145,6 +5694,7 @@ const emojis = [ 'revolving', 'vehicle', ], + name: 'rotating_light', }, { code: '๐Ÿšฅ', @@ -5153,6 +5703,7 @@ const emojis = [ 'signal', 'traffic', ], + name: 'traffic_light', }, { code: '๐Ÿšฆ', @@ -5161,6 +5712,7 @@ const emojis = [ 'signal', 'traffic', ], + name: 'vertical_traffic_light', }, { code: '๐Ÿšง', @@ -5168,6 +5720,7 @@ const emojis = [ 'barrier', 'construction', ], + name: 'construction', }, { code: '๐Ÿ›‘', @@ -5175,6 +5728,7 @@ const emojis = [ 'octagonal', 'stop', ], + name: 'stop_sign', }, { code: '๐Ÿ›ด', @@ -5182,6 +5736,7 @@ const emojis = [ 'kick', 'scooter', ], + name: 'kick_scooter', }, { code: '๐Ÿ›ต', @@ -5189,6 +5744,7 @@ const emojis = [ 'motor', 'scooter', ], + name: 'motor_scooter', }, { code: 'โš“', @@ -5197,6 +5753,7 @@ const emojis = [ 'ship', 'tool', ], + name: 'anchor', }, { code: 'โ›ต', @@ -5208,6 +5765,7 @@ const emojis = [ 'vehicle', 'yacht', ], + name: 'boat', }, { code: '๐Ÿšฃ', @@ -5223,6 +5781,7 @@ const emojis = [ '๐Ÿšฃ๐Ÿผ', '๐Ÿšฃ๐Ÿป', ], + name: 'rowboat', }, { code: '๐Ÿ›ถ', @@ -5230,6 +5789,7 @@ const emojis = [ 'boat', 'canoe', ], + name: 'canoe', }, { code: '๐Ÿšค', @@ -5238,6 +5798,7 @@ const emojis = [ 'speedboat', 'vehicle', ], + name: 'speedboat', }, { code: '๐Ÿ›ณ', @@ -5246,6 +5807,7 @@ const emojis = [ 'ship', 'vehicle', ], + name: 'passenger_ship', }, { code: 'โ›ด', @@ -5253,6 +5815,7 @@ const emojis = [ 'boat', 'ferry', ], + name: 'ferry', }, { code: '๐Ÿ›ฅ', @@ -5261,6 +5824,7 @@ const emojis = [ 'motorboat', 'vehicle', ], + name: 'motor_boat', }, { code: '๐Ÿšข', @@ -5268,6 +5832,7 @@ const emojis = [ 'ship', 'vehicle', ], + name: 'ship', }, { code: 'โœˆ๏ธ', @@ -5275,6 +5840,7 @@ const emojis = [ 'airplane', 'vehicle', ], + name: 'airplane', }, { code: '๐Ÿ›ฉ', @@ -5282,6 +5848,7 @@ const emojis = [ 'airplane', 'vehicle', ], + name: 'small_airplane', }, { code: '๐Ÿ›ซ', @@ -5292,6 +5859,7 @@ const emojis = [ 'departures', 'vehicle', ], + name: 'flight_departure', }, { code: '๐Ÿ›ฌ', @@ -5302,6 +5870,7 @@ const emojis = [ 'landing', 'vehicle', ], + name: 'flight_arrival', }, { code: '๐Ÿ’บ', @@ -5309,6 +5878,7 @@ const emojis = [ 'chair', 'seat', ], + name: 'seat', }, { code: '๐Ÿš', @@ -5316,6 +5886,7 @@ const emojis = [ 'helicopter', 'vehicle', ], + name: 'helicopter', }, { code: '๐ŸšŸ', @@ -5324,6 +5895,7 @@ const emojis = [ 'suspension', 'vehicle', ], + name: 'suspension_railway', }, { code: '๐Ÿš ', @@ -5333,6 +5905,7 @@ const emojis = [ 'mountain', 'vehicle', ], + name: 'mountain_cableway', }, { code: '๐Ÿšก', @@ -5345,6 +5918,7 @@ const emojis = [ 'tramway', 'vehicle', ], + name: 'aerial_tramway', }, { code: '๐Ÿš€', @@ -5353,6 +5927,7 @@ const emojis = [ 'space', 'vehicle', ], + name: 'rocket', }, { code: '๐Ÿ›ฐ', @@ -5361,6 +5936,7 @@ const emojis = [ 'space', 'vehicle', ], + name: 'artificial_satellite', }, { code: '๐Ÿ›Ž', @@ -5369,12 +5945,14 @@ const emojis = [ 'bellhop', 'hotel', ], + name: 'bellhop_bell', }, { code: '๐Ÿšช', keywords: [ 'door', ], + name: 'door', }, { code: '๐Ÿ›Œ', @@ -5382,6 +5960,7 @@ const emojis = [ 'hotel', 'sleep', ], + name: 'sleeping_bed', }, { code: '๐Ÿ›', @@ -5390,6 +5969,7 @@ const emojis = [ 'hotel', 'sleep', ], + name: 'bed', }, { code: '๐Ÿ›‹', @@ -5398,12 +5978,14 @@ const emojis = [ 'hotel', 'lamp', ], + name: 'couch_and_lamp', }, { code: '๐Ÿšฝ', keywords: [ 'toilet', ], + name: 'toilet', }, { code: '๐Ÿšฟ', @@ -5411,6 +5993,7 @@ const emojis = [ 'shower', 'water', ], + name: 'shower', }, { code: '๐Ÿ›€', @@ -5425,6 +6008,7 @@ const emojis = [ '๐Ÿ›€๐Ÿผ', '๐Ÿ›€๐Ÿป', ], + name: 'bath', }, { code: '๐Ÿ›', @@ -5432,6 +6016,7 @@ const emojis = [ 'bath', 'bathtub', ], + name: 'bathtub', }, { code: 'โŒ›', @@ -5440,6 +6025,7 @@ const emojis = [ 'sand', 'timer', ], + name: 'hourglass', }, { code: 'โณ', @@ -5448,6 +6034,7 @@ const emojis = [ 'sand', 'timer', ], + name: 'hourglass_flowing_sand', }, { code: 'โŒš', @@ -5455,6 +6042,7 @@ const emojis = [ 'clock', 'watch', ], + name: 'watch', }, { code: 'โฐ', @@ -5462,6 +6050,7 @@ const emojis = [ 'alarm', 'clock', ], + name: 'alarm_clock', }, { code: 'โฑ', @@ -5469,6 +6058,7 @@ const emojis = [ 'clock', 'stopwatch', ], + name: 'stopwatch', }, { code: 'โฒ', @@ -5476,12 +6066,14 @@ const emojis = [ 'clock', 'timer', ], + name: 'timer_clock', }, { code: '๐Ÿ•ฐ', keywords: [ 'clock', ], + name: 'mantelpiece_clock', }, { code: '๐Ÿ•›', @@ -5493,6 +6085,7 @@ const emojis = [ 'oโ€™clock', 'twelve', ], + name: 'clock12', }, { code: '๐Ÿ•ง', @@ -5504,6 +6097,7 @@ const emojis = [ 'thirty', 'twelve', ], + name: 'clock1230', }, { code: '๐Ÿ•', @@ -5515,6 +6109,7 @@ const emojis = [ 'oโ€™clock', 'one', ], + name: 'clock1', }, { code: '๐Ÿ•œ', @@ -5526,6 +6121,7 @@ const emojis = [ 'one', 'thirty', ], + name: 'clock130', }, { code: '๐Ÿ•‘', @@ -5537,6 +6133,7 @@ const emojis = [ 'oโ€™clock', 'two', ], + name: 'clock2', }, { code: '๐Ÿ•', @@ -5548,6 +6145,7 @@ const emojis = [ 'thirty', 'two', ], + name: 'clock230', }, { code: '๐Ÿ•’', @@ -5559,6 +6157,7 @@ const emojis = [ 'oโ€™clock', 'three', ], + name: 'clock3', }, { code: '๐Ÿ•ž', @@ -5570,6 +6169,7 @@ const emojis = [ 'thirty', 'three', ], + name: 'clock330', }, { code: '๐Ÿ•“', @@ -5581,6 +6181,7 @@ const emojis = [ 'four', 'oโ€™clock', ], + name: 'clock4', }, { code: '๐Ÿ•Ÿ', @@ -5592,6 +6193,7 @@ const emojis = [ 'four', 'thirty', ], + name: 'clock430', }, { code: '๐Ÿ•”', @@ -5603,6 +6205,7 @@ const emojis = [ 'five', 'oโ€™clock', ], + name: 'clock5', }, { code: '๐Ÿ• ', @@ -5614,6 +6217,7 @@ const emojis = [ 'five', 'thirty', ], + name: 'clock530', }, { code: '๐Ÿ••', @@ -5625,6 +6229,7 @@ const emojis = [ 'oโ€™clock', 'six', ], + name: 'clock6', }, { code: '๐Ÿ•ก', @@ -5636,6 +6241,7 @@ const emojis = [ 'six', 'thirty', ], + name: 'clock630', }, { code: '๐Ÿ•–', @@ -5647,6 +6253,7 @@ const emojis = [ 'oโ€™clock', 'seven', ], + name: 'clock7', }, { code: '๐Ÿ•ข', @@ -5658,6 +6265,7 @@ const emojis = [ 'seven', 'thirty', ], + name: 'clock730', }, { code: '๐Ÿ•—', @@ -5669,6 +6277,7 @@ const emojis = [ 'eight', 'oโ€™clock', ], + name: 'clock8', }, { code: '๐Ÿ•ฃ', @@ -5680,6 +6289,7 @@ const emojis = [ 'eight', 'thirty', ], + name: 'clock830', }, { code: '๐Ÿ•˜', @@ -5691,6 +6301,7 @@ const emojis = [ 'nine', 'oโ€™clock', ], + name: 'clock9', }, { code: '๐Ÿ•ค', @@ -5702,6 +6313,7 @@ const emojis = [ 'nine', 'thirty', ], + name: 'clock930', }, { code: '๐Ÿ•™', @@ -5713,6 +6325,7 @@ const emojis = [ 'oโ€™clock', 'ten', ], + name: 'clock10', }, { code: '๐Ÿ•ฅ', @@ -5724,6 +6337,7 @@ const emojis = [ 'ten', 'thirty', ], + name: 'clock1030', }, { code: '๐Ÿ•š', @@ -5735,6 +6349,7 @@ const emojis = [ 'eleven', 'oโ€™clock', ], + name: 'clock11', }, { code: '๐Ÿ•ฆ', @@ -5746,6 +6361,7 @@ const emojis = [ 'eleven', 'thirty', ], + name: 'clock1130', }, { code: '๐ŸŒ‘', @@ -5755,6 +6371,7 @@ const emojis = [ 'space', 'weather', ], + name: 'new_moon', }, { code: '๐ŸŒ’', @@ -5765,6 +6382,7 @@ const emojis = [ 'waxing', 'weather', ], + name: 'waxing_crescent_moon', }, { code: '๐ŸŒ“', @@ -5774,6 +6392,7 @@ const emojis = [ 'space', 'weather', ], + name: 'first_quarter_moon', }, { code: '๐ŸŒ”', @@ -5784,6 +6403,7 @@ const emojis = [ 'waxing', 'weather', ], + name: 'moon', }, { code: '๐ŸŒ•', @@ -5793,6 +6413,7 @@ const emojis = [ 'space', 'weather', ], + name: 'full_moon', }, { code: '๐ŸŒ–', @@ -5803,6 +6424,7 @@ const emojis = [ 'waning', 'weather', ], + name: 'waning_gibbous_moon', }, { code: '๐ŸŒ—', @@ -5812,6 +6434,7 @@ const emojis = [ 'space', 'weather', ], + name: 'last_quarter_moon', }, { code: '๐ŸŒ˜', @@ -5822,6 +6445,7 @@ const emojis = [ 'waning', 'weather', ], + name: 'waning_crescent_moon', }, { code: '๐ŸŒ™', @@ -5831,6 +6455,7 @@ const emojis = [ 'space', 'weather', ], + name: 'crescent_moon', }, { code: '๐ŸŒš', @@ -5840,6 +6465,7 @@ const emojis = [ 'space', 'weather', ], + name: 'new_moon_with_face', }, { code: '๐ŸŒ›', @@ -5850,6 +6476,7 @@ const emojis = [ 'space', 'weather', ], + name: 'first_quarter_moon_with_face', }, { code: '๐ŸŒœ', @@ -5860,6 +6487,7 @@ const emojis = [ 'space', 'weather', ], + name: 'last_quarter_moon_with_face', }, { code: '๐ŸŒก', @@ -5867,6 +6495,7 @@ const emojis = [ 'thermometer', 'weather', ], + name: 'thermometer', }, { code: 'โ˜€๏ธ', @@ -5878,6 +6507,7 @@ const emojis = [ 'sunny', 'weather', ], + name: 'sunny', }, { code: '๐ŸŒ', @@ -5889,6 +6519,7 @@ const emojis = [ 'space', 'weather', ], + name: 'full_moon_with_face', }, { code: '๐ŸŒž', @@ -5899,12 +6530,14 @@ const emojis = [ 'sun', 'weather', ], + name: 'sun_with_face', }, { code: 'โญ', keywords: [ 'star', ], + name: 'star', }, { code: '๐ŸŒŸ', @@ -5915,6 +6548,7 @@ const emojis = [ 'sparkle', 'star', ], + name: 'star2', }, { code: '๐ŸŒ ', @@ -5925,6 +6559,7 @@ const emojis = [ 'space', 'star', ], + name: 'stars', }, { code: 'โ˜๏ธ', @@ -5932,6 +6567,7 @@ const emojis = [ 'cloud', 'weather', ], + name: 'cloud', }, { code: 'โ›…', @@ -5940,6 +6576,7 @@ const emojis = [ 'sun', 'weather', ], + name: 'partly_sunny', }, { code: 'โ›ˆ', @@ -5949,6 +6586,7 @@ const emojis = [ 'thunder', 'weather', ], + name: 'cloud_with_lightning_and_rain', }, { code: '๐ŸŒค', @@ -5957,6 +6595,7 @@ const emojis = [ 'sun', 'weather', ], + name: 'sun_behind_small_cloud', }, { code: '๐ŸŒฅ', @@ -5965,6 +6604,7 @@ const emojis = [ 'sun', 'weather', ], + name: 'sun_behind_large_cloud', }, { code: '๐ŸŒฆ', @@ -5974,6 +6614,7 @@ const emojis = [ 'sun', 'weather', ], + name: 'sun_behind_rain_cloud', }, { code: '๐ŸŒง', @@ -5982,6 +6623,7 @@ const emojis = [ 'rain', 'weather', ], + name: 'cloud_with_rain', }, { code: '๐ŸŒจ', @@ -5991,6 +6633,7 @@ const emojis = [ 'snow', 'weather', ], + name: 'cloud_with_snow', }, { code: '๐ŸŒฉ', @@ -5999,6 +6642,7 @@ const emojis = [ 'lightning', 'weather', ], + name: 'cloud_with_lightning', }, { code: '๐ŸŒช', @@ -6008,6 +6652,7 @@ const emojis = [ 'weather', 'whirlwind', ], + name: 'tornado', }, { code: '๐ŸŒซ', @@ -6016,6 +6661,7 @@ const emojis = [ 'fog', 'weather', ], + name: 'fog', }, { code: '๐ŸŒฌ', @@ -6026,6 +6672,7 @@ const emojis = [ 'weather', 'wind', ], + name: 'wind_face', }, { code: '๐ŸŒ€', @@ -6036,6 +6683,7 @@ const emojis = [ 'typhoon', 'weather', ], + name: 'cyclone', }, { code: '๐ŸŒˆ', @@ -6044,6 +6692,7 @@ const emojis = [ 'rainbow', 'weather', ], + name: 'rainbow', }, { code: '๐ŸŒ‚', @@ -6053,6 +6702,7 @@ const emojis = [ 'umbrella', 'weather', ], + name: 'closed_umbrella', }, { code: 'โ˜‚๏ธ', @@ -6062,6 +6712,7 @@ const emojis = [ 'umbrella', 'weather', ], + name: 'open_umbrella', }, { code: 'โ˜”', @@ -6072,6 +6723,7 @@ const emojis = [ 'umbrella', 'weather', ], + name: 'umbrella', }, { code: 'โ›ฑ', @@ -6081,6 +6733,7 @@ const emojis = [ 'umbrella', 'weather', ], + name: 'parasol_on_ground', }, { code: 'โšก', @@ -6092,6 +6745,7 @@ const emojis = [ 'voltage', 'zap', ], + name: 'zap', }, { code: 'โ„๏ธ', @@ -6101,6 +6755,7 @@ const emojis = [ 'snowflake', 'weather', ], + name: 'snowflake', }, { code: 'โ˜ƒ๏ธ', @@ -6110,6 +6765,7 @@ const emojis = [ 'snowman', 'weather', ], + name: 'snowman_with_snow', }, { code: 'โ›„', @@ -6119,6 +6775,7 @@ const emojis = [ 'snowman', 'weather', ], + name: 'snowman', }, { code: 'โ˜„๏ธ', @@ -6126,6 +6783,7 @@ const emojis = [ 'comet', 'space', ], + name: 'comet', }, { code: '๐Ÿ”ฅ', @@ -6134,6 +6792,7 @@ const emojis = [ 'flame', 'tool', ], + name: 'fire', }, { code: '๐Ÿ’ง', @@ -6144,6 +6803,7 @@ const emojis = [ 'sweat', 'weather', ], + name: 'droplet', }, { code: '๐ŸŒŠ', @@ -6153,6 +6813,7 @@ const emojis = [ 'wave', 'weather', ], + name: 'ocean', }, { code: 'activities', @@ -6168,6 +6829,7 @@ const emojis = [ 'jack', 'lantern', ], + name: 'jack_o_lantern', }, { code: '๐ŸŽ„', @@ -6178,6 +6840,7 @@ const emojis = [ 'entertainment', 'tree', ], + name: 'christmas_tree', }, { code: '๐ŸŽ†', @@ -6187,6 +6850,7 @@ const emojis = [ 'entertainment', 'fireworks', ], + name: 'fireworks', }, { code: '๐ŸŽ‡', @@ -6197,6 +6861,7 @@ const emojis = [ 'fireworks', 'sparkle', ], + name: 'sparkler', }, { code: 'โœจ', @@ -6205,6 +6870,7 @@ const emojis = [ 'sparkle', 'star', ], + name: 'sparkles', }, { code: '๐ŸŽˆ', @@ -6214,6 +6880,7 @@ const emojis = [ 'celebration', 'entertainment', ], + name: 'balloon', }, { code: '๐ŸŽ‰', @@ -6225,6 +6892,7 @@ const emojis = [ 'popper', 'tada', ], + name: 'tada', }, { code: '๐ŸŽŠ', @@ -6235,6 +6903,7 @@ const emojis = [ 'confetti', 'entertainment', ], + name: 'confetti_ball', }, { code: '๐ŸŽ‹', @@ -6246,6 +6915,7 @@ const emojis = [ 'japanese', 'tree', ], + name: 'tanabata_tree', }, { code: '๐ŸŽ', @@ -6257,6 +6927,7 @@ const emojis = [ 'pine', 'plant', ], + name: 'bamboo', }, { code: '๐ŸŽŽ', @@ -6268,6 +6939,7 @@ const emojis = [ 'festival', 'japanese', ], + name: 'dolls', }, { code: '๐ŸŽ', @@ -6279,6 +6951,7 @@ const emojis = [ 'flag', 'streamer', ], + name: 'flags', }, { code: '๐ŸŽ', @@ -6290,6 +6963,7 @@ const emojis = [ 'entertainment', 'wind', ], + name: 'wind_chime', }, { code: '๐ŸŽ‘', @@ -6300,6 +6974,7 @@ const emojis = [ 'entertainment', 'moon', ], + name: 'rice_scene', }, { code: '๐ŸŽ€', @@ -6307,6 +6982,7 @@ const emojis = [ 'celebration', 'ribbon', ], + name: 'ribbon', }, { code: '๐ŸŽ', @@ -6318,6 +6994,7 @@ const emojis = [ 'present', 'wrapped', ], + name: 'gift', }, { code: '๐ŸŽ—', @@ -6326,6 +7003,7 @@ const emojis = [ 'reminder', 'ribbon', ], + name: 'reminder_ribbon', }, { code: '๐ŸŽŸ', @@ -6334,6 +7012,7 @@ const emojis = [ 'entertainment', 'ticket', ], + name: 'tickets', }, { code: '๐ŸŽซ', @@ -6343,6 +7022,7 @@ const emojis = [ 'entertainment', 'ticket', ], + name: 'ticket', }, { code: '๐ŸŽ–', @@ -6351,6 +7031,7 @@ const emojis = [ 'medal', 'military', ], + name: 'medal_military', }, { code: '๐Ÿ†', @@ -6358,12 +7039,14 @@ const emojis = [ 'prize', 'trophy', ], + name: 'trophy', }, { code: '๐Ÿ…', keywords: [ 'medal', ], + name: 'medal_sports', }, { code: '๐Ÿฅ‡', @@ -6372,6 +7055,7 @@ const emojis = [ 'gold', 'medal', ], + name: '1st_place_medal', }, { code: '๐Ÿฅˆ', @@ -6380,6 +7064,7 @@ const emojis = [ 'second', 'silver', ], + name: '2nd_place_medal', }, { code: '๐Ÿฅ‰', @@ -6388,6 +7073,7 @@ const emojis = [ 'medal', 'third', ], + name: '3rd_place_medal', }, { code: 'โšฝ', @@ -6395,6 +7081,7 @@ const emojis = [ 'ball', 'soccer', ], + name: 'soccer', }, { code: 'โšพ', @@ -6402,6 +7089,7 @@ const emojis = [ 'ball', 'baseball', ], + name: 'baseball', }, { code: '๐Ÿ€', @@ -6410,6 +7098,7 @@ const emojis = [ 'basketball', 'hoop', ], + name: 'basketball', }, { code: '๐Ÿ', @@ -6418,6 +7107,7 @@ const emojis = [ 'game', 'volleyball', ], + name: 'volleyball', }, { code: '๐Ÿˆ', @@ -6426,6 +7116,7 @@ const emojis = [ 'ball', 'football', ], + name: 'football', }, { code: '๐Ÿ‰', @@ -6434,6 +7125,7 @@ const emojis = [ 'football', 'rugby', ], + name: 'rugby_football', }, { code: '๐ŸŽพ', @@ -6442,6 +7134,7 @@ const emojis = [ 'racquet', 'tennis', ], + name: 'tennis', }, { code: '๐ŸŽฑ', @@ -6453,6 +7146,7 @@ const emojis = [ 'eight', 'game', ], + name: '8ball', }, { code: '๐ŸŽณ', @@ -6461,6 +7155,7 @@ const emojis = [ 'bowling', 'game', ], + name: 'bowling', }, { code: '๐Ÿ', @@ -6470,6 +7165,7 @@ const emojis = [ 'cricket', 'game', ], + name: 'cricket_game', }, { code: '๐Ÿ‘', @@ -6480,6 +7176,7 @@ const emojis = [ 'hockey', 'stick', ], + name: 'field_hockey', }, { code: '๐Ÿ’', @@ -6490,6 +7187,7 @@ const emojis = [ 'puck', 'stick', ], + name: 'ice_hockey', }, { code: '๐Ÿ“', @@ -6500,6 +7198,7 @@ const emojis = [ 'paddle', 'table tennis', ], + name: 'ping_pong', }, { code: '๐Ÿธ', @@ -6510,6 +7209,7 @@ const emojis = [ 'racquet', 'shuttlecock', ], + name: 'badminton', }, { code: '๐ŸฅŠ', @@ -6517,6 +7217,7 @@ const emojis = [ 'boxing', 'glove', ], + name: 'boxing_glove', }, { code: '๐Ÿฅ‹', @@ -6527,6 +7228,7 @@ const emojis = [ 'taekwondo', 'uniform', ], + name: 'martial_arts_uniform', }, { code: 'โ›ณ', @@ -6535,6 +7237,7 @@ const emojis = [ 'golf', 'hole', ], + name: 'golf', }, { code: '๐ŸŒ', @@ -6542,6 +7245,7 @@ const emojis = [ 'ball', 'golf', ], + name: 'golfing', }, { code: 'โ›ธ', @@ -6549,6 +7253,7 @@ const emojis = [ 'ice', 'skate', ], + name: 'ice_skate', }, { code: '๐ŸŽฃ', @@ -6557,6 +7262,7 @@ const emojis = [ 'fish', 'pole', ], + name: 'fishing_pole_and_fish', }, { code: '๐ŸŽฝ', @@ -6565,6 +7271,7 @@ const emojis = [ 'sash', 'shirt', ], + name: 'running_shirt_with_sash', }, { code: '๐ŸŽฟ', @@ -6572,6 +7279,7 @@ const emojis = [ 'ski', 'snow', ], + name: 'ski', }, { code: 'โ›ท', @@ -6579,6 +7287,7 @@ const emojis = [ 'ski', 'snow', ], + name: 'skier', }, { code: '๐Ÿ‚', @@ -6587,6 +7296,7 @@ const emojis = [ 'snow', 'snowboard', ], + name: 'snowboarder', }, { code: '๐Ÿ„', @@ -6601,6 +7311,7 @@ const emojis = [ '๐Ÿ„๐Ÿผ', '๐Ÿ„๐Ÿป', ], + name: 'surfer', }, { code: '๐Ÿ‡', @@ -6610,6 +7321,7 @@ const emojis = [ 'racehorse', 'racing', ], + name: 'horse_racing', }, { code: '๐ŸŠ', @@ -6624,6 +7336,7 @@ const emojis = [ '๐ŸŠ๐Ÿผ', '๐ŸŠ๐Ÿป', ], + name: 'swimmer', }, { code: 'โ›น', @@ -6637,6 +7350,7 @@ const emojis = [ 'โ›น๐Ÿผ', 'โ›น๐Ÿป', ], + name: 'bouncing_ball_person', }, { code: '๐Ÿ‹', @@ -6651,6 +7365,7 @@ const emojis = [ '๐Ÿ‹๐Ÿผ', '๐Ÿ‹๐Ÿป', ], + name: 'weight_lifting', }, { code: '๐Ÿšด', @@ -6667,6 +7382,7 @@ const emojis = [ '๐Ÿšด๐Ÿผ', '๐Ÿšด๐Ÿป', ], + name: 'bicyclist', }, { code: '๐Ÿšต', @@ -6684,6 +7400,7 @@ const emojis = [ '๐Ÿšต๐Ÿผ', '๐Ÿšต๐Ÿป', ], + name: 'mountain_bicyclist', }, { code: '๐ŸŽ', @@ -6691,6 +7408,7 @@ const emojis = [ 'car', 'racing', ], + name: 'racing_car', }, { code: '๐Ÿ', @@ -6698,6 +7416,7 @@ const emojis = [ 'motorcycle', 'racing', ], + name: 'motorcycle', }, { code: '๐Ÿคธ', @@ -6712,6 +7431,7 @@ const emojis = [ '๐Ÿคธ๐Ÿผ', '๐Ÿคธ๐Ÿป', ], + name: 'cartwheeling', }, { code: '๐Ÿคผ', @@ -6726,6 +7446,7 @@ const emojis = [ '๐Ÿคผ๐Ÿผ', '๐Ÿคผ๐Ÿป', ], + name: 'wrestling', }, { code: '๐Ÿคฝ', @@ -6740,6 +7461,7 @@ const emojis = [ '๐Ÿคฝ๐Ÿผ', '๐Ÿคฝ๐Ÿป', ], + name: 'water_polo', }, { code: '๐Ÿคพ', @@ -6754,6 +7476,7 @@ const emojis = [ '๐Ÿคพ๐Ÿผ', '๐Ÿคพ๐Ÿป', ], + name: 'handball_person', }, { code: '๐Ÿคบ', @@ -6762,6 +7485,7 @@ const emojis = [ 'fencing', 'sword', ], + name: 'person_fencing', }, { code: '๐Ÿฅ…', @@ -6769,6 +7493,7 @@ const emojis = [ 'goal', 'net', ], + name: 'goal_net', }, { code: '๐Ÿคน', @@ -6785,6 +7510,7 @@ const emojis = [ '๐Ÿคน๐Ÿผ', '๐Ÿคน๐Ÿป', ], + name: 'juggling_person', }, { code: '๐ŸŽฏ', @@ -6799,6 +7525,7 @@ const emojis = [ 'hit', 'target', ], + name: 'dart', }, { code: '๐ŸŽฎ', @@ -6808,6 +7535,7 @@ const emojis = [ 'game', 'video game', ], + name: 'video_game', }, { code: '๐Ÿ•น', @@ -6817,6 +7545,7 @@ const emojis = [ 'joystick', 'video game', ], + name: 'joystick', }, { code: '๐ŸŽฒ', @@ -6826,6 +7555,7 @@ const emojis = [ 'entertainment', 'game', ], + name: 'game_die', }, { code: 'โ™ ๏ธ', @@ -6835,6 +7565,7 @@ const emojis = [ 'spade', 'suit', ], + name: 'spades', }, { code: 'โ™ฅ๏ธ', @@ -6845,6 +7576,7 @@ const emojis = [ 'hearts', 'suit', ], + name: 'hearts', }, { code: 'โ™ฆ๏ธ', @@ -6855,6 +7587,7 @@ const emojis = [ 'game', 'suit', ], + name: 'diamonds', }, { code: 'โ™ฃ๏ธ', @@ -6865,6 +7598,7 @@ const emojis = [ 'game', 'suit', ], + name: 'clubs', }, { code: '๐Ÿƒ', @@ -6875,6 +7609,7 @@ const emojis = [ 'joker', 'playing', ], + name: 'black_joker', }, { code: '๐Ÿ€„', @@ -6883,6 +7618,7 @@ const emojis = [ 'mahjong', 'red', ], + name: 'mahjong', }, { code: '๐ŸŽด', @@ -6895,6 +7631,7 @@ const emojis = [ 'japanese', 'playing', ], + name: 'flower_playing_cards', }, { code: 'objects', @@ -6909,6 +7646,7 @@ const emojis = [ 'speaker', 'volume', ], + name: 'mute', }, { code: '๐Ÿ”ˆ', @@ -6916,6 +7654,7 @@ const emojis = [ 'speaker', 'volume', ], + name: 'speaker', }, { code: '๐Ÿ”‰', @@ -6925,6 +7664,7 @@ const emojis = [ 'volume', 'wave', ], + name: 'sound', }, { code: '๐Ÿ”Š', @@ -6937,6 +7677,7 @@ const emojis = [ 'three', 'volume', ], + name: 'loud_sound', }, { code: '๐Ÿ“ข', @@ -6946,6 +7687,7 @@ const emojis = [ 'loudspeaker', 'public address', ], + name: 'loudspeaker', }, { code: '๐Ÿ“ฃ', @@ -6954,6 +7696,7 @@ const emojis = [ 'communication', 'megaphone', ], + name: 'mega', }, { code: '๐Ÿ“ฏ', @@ -6964,12 +7707,14 @@ const emojis = [ 'post', 'postal', ], + name: 'postal_horn', }, { code: '๐Ÿ””', keywords: [ 'bell', ], + name: 'bell', }, { code: '๐Ÿ”•', @@ -6983,6 +7728,7 @@ const emojis = [ 'quiet', 'silent', ], + name: 'no_bell', }, { code: '๐ŸŽผ', @@ -6992,6 +7738,7 @@ const emojis = [ 'music', 'score', ], + name: 'musical_score', }, { code: '๐ŸŽต', @@ -7001,6 +7748,7 @@ const emojis = [ 'music', 'note', ], + name: 'musical_note', }, { code: '๐ŸŽถ', @@ -7011,6 +7759,7 @@ const emojis = [ 'note', 'notes', ], + name: 'notes', }, { code: '๐ŸŽ™', @@ -7020,6 +7769,7 @@ const emojis = [ 'music', 'studio', ], + name: 'studio_microphone', }, { code: '๐ŸŽš', @@ -7028,6 +7778,7 @@ const emojis = [ 'music', 'slider', ], + name: 'level_slider', }, { code: '๐ŸŽ›', @@ -7036,6 +7787,7 @@ const emojis = [ 'knobs', 'music', ], + name: 'control_knobs', }, { code: '๐ŸŽค', @@ -7046,6 +7798,7 @@ const emojis = [ 'mic', 'microphone', ], + name: 'microphone', }, { code: '๐ŸŽง', @@ -7055,6 +7808,7 @@ const emojis = [ 'entertainment', 'headphone', ], + name: 'headphones', }, { code: '๐Ÿ“ป', @@ -7063,6 +7817,7 @@ const emojis = [ 'radio', 'video', ], + name: 'radio', }, { code: '๐ŸŽท', @@ -7074,6 +7829,7 @@ const emojis = [ 'sax', 'saxophone', ], + name: 'saxophone', }, { code: '๐ŸŽธ', @@ -7084,6 +7840,7 @@ const emojis = [ 'instrument', 'music', ], + name: 'guitar', }, { code: '๐ŸŽน', @@ -7095,6 +7852,7 @@ const emojis = [ 'music', 'piano', ], + name: 'musical_keyboard', }, { code: '๐ŸŽบ', @@ -7105,6 +7863,7 @@ const emojis = [ 'music', 'trumpet', ], + name: 'trumpet', }, { code: '๐ŸŽป', @@ -7115,6 +7874,7 @@ const emojis = [ 'music', 'violin', ], + name: 'violin', }, { code: '๐Ÿฅ', @@ -7123,6 +7883,7 @@ const emojis = [ 'drumsticks', 'music', ], + name: 'drum', }, { code: '๐Ÿ“ฑ', @@ -7133,6 +7894,7 @@ const emojis = [ 'phone', 'telephone', ], + name: 'iphone', }, { code: '๐Ÿ“ฒ', @@ -7146,6 +7908,7 @@ const emojis = [ 'receive', 'telephone', ], + name: 'calling', }, { code: 'โ˜Ž', @@ -7153,6 +7916,7 @@ const emojis = [ 'phone', 'telephone', ], + name: 'phone', }, { code: '๐Ÿ“ž', @@ -7162,6 +7926,7 @@ const emojis = [ 'receiver', 'telephone', ], + name: 'telephone_receiver', }, { code: '๐Ÿ“Ÿ', @@ -7169,6 +7934,7 @@ const emojis = [ 'communication', 'pager', ], + name: 'pager', }, { code: '๐Ÿ“ ', @@ -7176,12 +7942,14 @@ const emojis = [ 'communication', 'fax', ], + name: 'fax', }, { code: '๐Ÿ”‹', keywords: [ 'battery', ], + name: 'battery', }, { code: '๐Ÿ”Œ', @@ -7190,6 +7958,7 @@ const emojis = [ 'electricity', 'plug', ], + name: 'electric_plug', }, { code: '๐Ÿ’ป', @@ -7198,6 +7967,7 @@ const emojis = [ 'pc', 'personal', ], + name: 'computer', }, { code: '๐Ÿ–ฅ', @@ -7205,6 +7975,7 @@ const emojis = [ 'computer', 'desktop', ], + name: 'desktop_computer', }, { code: '๐Ÿ–จ', @@ -7212,6 +7983,7 @@ const emojis = [ 'computer', 'printer', ], + name: 'printer', }, { code: 'โŒจ๏ธ', @@ -7219,6 +7991,7 @@ const emojis = [ 'computer', 'keyboard', ], + name: 'keyboard', }, { code: '๐Ÿ–ฑ', @@ -7229,6 +8002,7 @@ const emojis = [ 'mouse', 'three', ], + name: 'computer_mouse', }, { code: '๐Ÿ–ฒ', @@ -7236,6 +8010,7 @@ const emojis = [ 'computer', 'trackball', ], + name: 'trackball', }, { code: '๐Ÿ’ฝ', @@ -7246,6 +8021,7 @@ const emojis = [ 'minidisk', 'optical', ], + name: 'minidisc', }, { code: '๐Ÿ’พ', @@ -7254,6 +8030,7 @@ const emojis = [ 'disk', 'floppy', ], + name: 'floppy_disk', }, { code: '๐Ÿ’ฟ', @@ -7265,6 +8042,7 @@ const emojis = [ 'dvd', 'optical', ], + name: 'cd', }, { code: '๐Ÿ“€', @@ -7277,6 +8055,7 @@ const emojis = [ 'entertainment', 'optical', ], + name: 'dvd', }, { code: '๐ŸŽฅ', @@ -7287,6 +8066,7 @@ const emojis = [ 'entertainment', 'movie', ], + name: 'movie_camera', }, { code: '๐ŸŽž', @@ -7297,6 +8077,7 @@ const emojis = [ 'frames', 'movie', ], + name: 'film_strip', }, { code: '๐Ÿ“ฝ', @@ -7308,6 +8089,7 @@ const emojis = [ 'projector', 'video', ], + name: 'film_projector', }, { code: '๐ŸŽฌ', @@ -7317,6 +8099,7 @@ const emojis = [ 'entertainment', 'movie', ], + name: 'clapper', }, { code: '๐Ÿ“บ', @@ -7326,6 +8109,7 @@ const emojis = [ 'tv', 'video', ], + name: 'tv', }, { code: '๐Ÿ“ท', @@ -7334,6 +8118,7 @@ const emojis = [ 'entertainment', 'video', ], + name: 'camera', }, { code: '๐Ÿ“ธ', @@ -7342,6 +8127,7 @@ const emojis = [ 'flash', 'video', ], + name: 'camera_flash', }, { code: '๐Ÿ“น', @@ -7350,6 +8136,7 @@ const emojis = [ 'entertainment', 'video', ], + name: 'video_camera', }, { code: '๐Ÿ“ผ', @@ -7360,6 +8147,7 @@ const emojis = [ 'video', 'videocassette', ], + name: 'vhs', }, { code: '๐Ÿ”', @@ -7369,6 +8157,7 @@ const emojis = [ 'search', 'tool', ], + name: 'mag', }, { code: '๐Ÿ”Ž', @@ -7378,6 +8167,7 @@ const emojis = [ 'search', 'tool', ], + name: 'mag_right', }, { code: '๐Ÿ”ฌ', @@ -7385,6 +8175,7 @@ const emojis = [ 'microscope', 'tool', ], + name: 'microscope', }, { code: '๐Ÿ”ญ', @@ -7392,6 +8183,7 @@ const emojis = [ 'telescope', 'tool', ], + name: 'telescope', }, { code: '๐Ÿ“ก', @@ -7401,6 +8193,7 @@ const emojis = [ 'dish', 'satellite', ], + name: 'satellite', }, { code: '๐Ÿ•ฏ', @@ -7408,6 +8201,7 @@ const emojis = [ 'candle', 'light', ], + name: 'candle', }, { code: '๐Ÿ’ก', @@ -7418,6 +8212,7 @@ const emojis = [ 'idea', 'light', ], + name: 'bulb', }, { code: '๐Ÿ”ฆ', @@ -7428,6 +8223,7 @@ const emojis = [ 'tool', 'torch', ], + name: 'flashlight', }, { code: '๐Ÿฎ', @@ -7438,6 +8234,7 @@ const emojis = [ 'light', 'red', ], + name: 'izakaya_lantern', }, { code: '๐Ÿ“”', @@ -7447,6 +8244,7 @@ const emojis = [ 'decorated', 'notebook', ], + name: 'notebook_with_decorative_cover', }, { code: '๐Ÿ“•', @@ -7454,6 +8252,7 @@ const emojis = [ 'book', 'closed', ], + name: 'closed_book', }, { code: '๐Ÿ“–', @@ -7461,6 +8260,7 @@ const emojis = [ 'book', 'open', ], + name: 'book', }, { code: '๐Ÿ“—', @@ -7468,6 +8268,7 @@ const emojis = [ 'book', 'green', ], + name: 'green_book', }, { code: '๐Ÿ“˜', @@ -7475,6 +8276,7 @@ const emojis = [ 'blue', 'book', ], + name: 'blue_book', }, { code: '๐Ÿ“™', @@ -7482,6 +8284,7 @@ const emojis = [ 'book', 'orange', ], + name: 'orange_book', }, { code: '๐Ÿ“š', @@ -7489,12 +8292,14 @@ const emojis = [ 'book', 'books', ], + name: 'books', }, { code: '๐Ÿ““', keywords: [ 'notebook', ], + name: 'notebook', }, { code: '๐Ÿ“’', @@ -7502,6 +8307,7 @@ const emojis = [ 'ledger', 'notebook', ], + name: 'ledger', }, { code: '๐Ÿ“ƒ', @@ -7510,6 +8316,7 @@ const emojis = [ 'document', 'page', ], + name: 'page_with_curl', }, { code: '๐Ÿ“œ', @@ -7517,6 +8324,7 @@ const emojis = [ 'paper', 'scroll', ], + name: 'scroll', }, { code: '๐Ÿ“„', @@ -7524,6 +8332,7 @@ const emojis = [ 'document', 'page', ], + name: 'page_facing_up', }, { code: '๐Ÿ“ฐ', @@ -7533,6 +8342,7 @@ const emojis = [ 'newspaper', 'paper', ], + name: 'newspaper', }, { code: '๐Ÿ—ž', @@ -7542,6 +8352,7 @@ const emojis = [ 'paper', 'rolled', ], + name: 'newspaper_roll', }, { code: '๐Ÿ“‘', @@ -7551,6 +8362,7 @@ const emojis = [ 'marker', 'tabs', ], + name: 'bookmark_tabs', }, { code: '๐Ÿ”–', @@ -7558,12 +8370,14 @@ const emojis = [ 'bookmark', 'mark', ], + name: 'bookmark', }, { code: '๐Ÿท', keywords: [ 'label', ], + name: 'label', }, { code: '๐Ÿ’ฐ', @@ -7573,6 +8387,7 @@ const emojis = [ 'money', 'moneybag', ], + name: 'moneybag', }, { code: '๐Ÿ’ด', @@ -7585,6 +8400,7 @@ const emojis = [ 'note', 'yen', ], + name: 'yen', }, { code: '๐Ÿ’ต', @@ -7597,6 +8413,7 @@ const emojis = [ 'money', 'note', ], + name: 'dollar', }, { code: '๐Ÿ’ถ', @@ -7609,6 +8426,7 @@ const emojis = [ 'money', 'note', ], + name: 'euro', }, { code: '๐Ÿ’ท', @@ -7621,6 +8439,7 @@ const emojis = [ 'note', 'pound', ], + name: 'pound', }, { code: '๐Ÿ’ธ', @@ -7634,6 +8453,7 @@ const emojis = [ 'note', 'wings', ], + name: 'money_with_wings', }, { code: '๐Ÿ’ณ', @@ -7643,6 +8463,7 @@ const emojis = [ 'credit', 'money', ], + name: 'credit_card', }, { code: '๐Ÿ’น', @@ -7659,6 +8480,7 @@ const emojis = [ 'upward', 'yen', ], + name: 'chart', }, { code: '๐Ÿ’ฑ', @@ -7668,6 +8490,7 @@ const emojis = [ 'exchange', 'money', ], + name: 'currency_exchange', }, { code: '๐Ÿ’ฒ', @@ -7676,6 +8499,7 @@ const emojis = [ 'dollar', 'money', ], + name: 'heavy_dollar_sign', }, { code: 'โœ‰๏ธ', @@ -7684,6 +8508,7 @@ const emojis = [ 'email', 'envelope', ], + name: 'envelope', }, { code: '๐Ÿ“ง', @@ -7694,6 +8519,7 @@ const emojis = [ 'letter', 'mail', ], + name: 'email', }, { code: '๐Ÿ“จ', @@ -7707,6 +8533,7 @@ const emojis = [ 'mail', 'receive', ], + name: 'incoming_envelope', }, { code: '๐Ÿ“ฉ', @@ -7722,6 +8549,7 @@ const emojis = [ 'outgoing', 'sent', ], + name: 'envelope_with_arrow', }, { code: '๐Ÿ“ค', @@ -7734,6 +8562,7 @@ const emojis = [ 'sent', 'tray', ], + name: 'outbox_tray', }, { code: '๐Ÿ“ฅ', @@ -7746,6 +8575,7 @@ const emojis = [ 'receive', 'tray', ], + name: 'inbox_tray', }, { code: '๐Ÿ“ฆ', @@ -7755,6 +8585,7 @@ const emojis = [ 'package', 'parcel', ], + name: 'package', }, { code: '๐Ÿ“ซ', @@ -7766,6 +8597,7 @@ const emojis = [ 'mailbox', 'postbox', ], + name: 'mailbox', }, { code: '๐Ÿ“ช', @@ -7778,6 +8610,7 @@ const emojis = [ 'mailbox', 'postbox', ], + name: 'mailbox_closed', }, { code: '๐Ÿ“ฌ', @@ -7789,6 +8622,7 @@ const emojis = [ 'open', 'postbox', ], + name: 'mailbox_with_mail', }, { code: '๐Ÿ“ญ', @@ -7801,6 +8635,7 @@ const emojis = [ 'open', 'postbox', ], + name: 'mailbox_with_no_mail', }, { code: '๐Ÿ“ฎ', @@ -7810,6 +8645,7 @@ const emojis = [ 'mailbox', 'postbox', ], + name: 'postbox', }, { code: '๐Ÿ—ณ', @@ -7817,12 +8653,14 @@ const emojis = [ 'ballot', 'box', ], + name: 'ballot_box', }, { code: 'โœ', keywords: [ 'pencil', ], + name: 'pencil2', }, { code: 'โœ’๏ธ', @@ -7830,6 +8668,7 @@ const emojis = [ 'nib', 'pen', ], + name: 'black_nib', }, { code: '๐Ÿ–‹', @@ -7838,6 +8677,7 @@ const emojis = [ 'fountain', 'pen', ], + name: 'fountain_pen', }, { code: '๐Ÿ–Š', @@ -7846,6 +8686,7 @@ const emojis = [ 'communication', 'pen', ], + name: 'pen', }, { code: '๐Ÿ–Œ', @@ -7854,6 +8695,7 @@ const emojis = [ 'paintbrush', 'painting', ], + name: 'paintbrush', }, { code: '๐Ÿ–', @@ -7861,6 +8703,7 @@ const emojis = [ 'communication', 'crayon', ], + name: 'crayon', }, { code: '๐Ÿ“', @@ -7869,12 +8712,14 @@ const emojis = [ 'memo', 'pencil', ], + name: 'memo', }, { code: '๐Ÿ’ผ', keywords: [ 'briefcase', ], + name: 'briefcase', }, { code: '๐Ÿ“', @@ -7882,6 +8727,7 @@ const emojis = [ 'file', 'folder', ], + name: 'file_folder', }, { code: '๐Ÿ“‚', @@ -7890,6 +8736,7 @@ const emojis = [ 'folder', 'open', ], + name: 'open_file_folder', }, { code: '๐Ÿ—‚', @@ -7898,6 +8745,7 @@ const emojis = [ 'dividers', 'index', ], + name: 'card_index_dividers', }, { code: '๐Ÿ“…', @@ -7905,12 +8753,14 @@ const emojis = [ 'calendar', 'date', ], + name: 'date', }, { code: '๐Ÿ“†', keywords: [ 'calendar', ], + name: 'calendar', }, { code: '๐Ÿ—’', @@ -7919,6 +8769,7 @@ const emojis = [ 'pad', 'spiral', ], + name: 'spiral_notepad', }, { code: '๐Ÿ—“', @@ -7927,6 +8778,7 @@ const emojis = [ 'pad', 'spiral', ], + name: 'spiral_calendar', }, { code: '๐Ÿ“‡', @@ -7935,6 +8787,7 @@ const emojis = [ 'index', 'rolodex', ], + name: 'card_index', }, { code: '๐Ÿ“ˆ', @@ -7945,6 +8798,7 @@ const emojis = [ 'trend', 'upward', ], + name: 'chart_with_upwards_trend', }, { code: '๐Ÿ“‰', @@ -7954,6 +8808,7 @@ const emojis = [ 'graph', 'trend', ], + name: 'chart_with_downwards_trend', }, { code: '๐Ÿ“Š', @@ -7962,12 +8817,14 @@ const emojis = [ 'chart', 'graph', ], + name: 'bar_chart', }, { code: '๐Ÿ“‹', keywords: [ 'clipboard', ], + name: 'clipboard', }, { code: '๐Ÿ“Œ', @@ -7975,6 +8832,7 @@ const emojis = [ 'pin', 'pushpin', ], + name: 'pushpin', }, { code: '๐Ÿ“', @@ -7982,12 +8840,14 @@ const emojis = [ 'pin', 'pushpin', ], + name: 'round_pushpin', }, { code: '๐Ÿ“Ž', keywords: [ 'paperclip', ], + name: 'paperclip', }, { code: '๐Ÿ–‡', @@ -7996,6 +8856,7 @@ const emojis = [ 'link', 'paperclip', ], + name: 'paperclips', }, { code: '๐Ÿ“', @@ -8003,6 +8864,7 @@ const emojis = [ 'ruler', 'straight edge', ], + name: 'straight_ruler', }, { code: '๐Ÿ“', @@ -8011,6 +8873,7 @@ const emojis = [ 'set', 'triangle', ], + name: 'triangular_ruler', }, { code: 'โœ‚๏ธ', @@ -8018,6 +8881,7 @@ const emojis = [ 'scissors', 'tool', ], + name: 'scissors', }, { code: '๐Ÿ—ƒ', @@ -8026,6 +8890,7 @@ const emojis = [ 'card', 'file', ], + name: 'card_file_box', }, { code: '๐Ÿ—„', @@ -8033,12 +8898,14 @@ const emojis = [ 'cabinet', 'file', ], + name: 'file_cabinet', }, { code: '๐Ÿ—‘', keywords: [ 'wastebasket', ], + name: 'wastebasket', }, { code: '๐Ÿ”’', @@ -8046,6 +8913,7 @@ const emojis = [ 'closed', 'lock', ], + name: 'lock', }, { code: '๐Ÿ”“', @@ -8054,6 +8922,7 @@ const emojis = [ 'open', 'unlock', ], + name: 'unlock', }, { code: '๐Ÿ”', @@ -8064,6 +8933,7 @@ const emojis = [ 'pen', 'privacy', ], + name: 'lock_with_ink_pen', }, { code: '๐Ÿ”', @@ -8073,6 +8943,7 @@ const emojis = [ 'lock', 'secure', ], + name: 'closed_lock_with_key', }, { code: '๐Ÿ”‘', @@ -8081,6 +8952,7 @@ const emojis = [ 'lock', 'password', ], + name: 'key', }, { code: '๐Ÿ—', @@ -8090,6 +8962,7 @@ const emojis = [ 'lock', 'old', ], + name: 'old_key', }, { code: '๐Ÿ”จ', @@ -8097,6 +8970,7 @@ const emojis = [ 'hammer', 'tool', ], + name: 'hammer', }, { code: 'โ›', @@ -8105,6 +8979,7 @@ const emojis = [ 'pick', 'tool', ], + name: 'pick', }, { code: 'โš’๏ธ', @@ -8113,6 +8988,7 @@ const emojis = [ 'pick', 'tool', ], + name: 'hammer_and_pick', }, { code: '๐Ÿ› ', @@ -8121,6 +8997,7 @@ const emojis = [ 'tool', 'wrench', ], + name: 'hammer_and_wrench', }, { code: '๐Ÿ—ก', @@ -8129,6 +9006,7 @@ const emojis = [ 'knife', 'weapon', ], + name: 'dagger', }, { code: 'โš”๏ธ', @@ -8137,6 +9015,7 @@ const emojis = [ 'swords', 'weapon', ], + name: 'crossed_swords', }, { code: '๐Ÿ”ซ', @@ -8148,6 +9027,7 @@ const emojis = [ 'tool', 'weapon', ], + name: 'gun', }, { code: '๐Ÿน', @@ -8160,6 +9040,7 @@ const emojis = [ 'weapon', 'zodiac', ], + name: 'bow_and_arrow', }, { code: '๐Ÿ›ก', @@ -8167,6 +9048,7 @@ const emojis = [ 'shield', 'weapon', ], + name: 'shield', }, { code: '๐Ÿ”ง', @@ -8174,6 +9056,7 @@ const emojis = [ 'tool', 'wrench', ], + name: 'wrench', }, { code: '๐Ÿ”ฉ', @@ -8182,6 +9065,7 @@ const emojis = [ 'nut', 'tool', ], + name: 'nut_and_bolt', }, { code: 'โš™๏ธ', @@ -8189,6 +9073,7 @@ const emojis = [ 'gear', 'tool', ], + name: 'gear', }, { code: '๐Ÿ—œ', @@ -8197,6 +9082,7 @@ const emojis = [ 'tool', 'vice', ], + name: 'clamp', }, { code: 'โš—๏ธ', @@ -8205,6 +9091,7 @@ const emojis = [ 'chemistry', 'tool', ], + name: 'alembic', }, { code: 'โš–๏ธ', @@ -8217,18 +9104,21 @@ const emojis = [ 'weight', 'zodiac', ], + name: 'balance_scale', }, { code: '๐Ÿ”—', keywords: [ 'link', ], + name: 'link', }, { code: 'โ›“', keywords: [ 'chain', ], + name: 'chains', }, { code: '๐Ÿ’‰', @@ -8241,6 +9131,7 @@ const emojis = [ 'syringe', 'tool', ], + name: 'syringe', }, { code: '๐Ÿ’Š', @@ -8250,6 +9141,7 @@ const emojis = [ 'pill', 'sick', ], + name: 'pill', }, { code: '๐Ÿšฌ', @@ -8257,6 +9149,7 @@ const emojis = [ 'activity', 'smoking', ], + name: 'smoking', }, { code: 'โšฐ', @@ -8264,6 +9157,7 @@ const emojis = [ 'coffin', 'death', ], + name: 'coffin', }, { code: 'โšฑ', @@ -8272,6 +9166,7 @@ const emojis = [ 'funeral', 'urn', ], + name: 'funeral_urn', }, { code: '๐Ÿ—ฟ', @@ -8280,6 +9175,7 @@ const emojis = [ 'moyai', 'statue', ], + name: 'moyai', }, { code: '๐Ÿ›ข', @@ -8287,6 +9183,7 @@ const emojis = [ 'drum', 'oil', ], + name: 'oil_drum', }, { code: '๐Ÿ”ฎ', @@ -8298,6 +9195,7 @@ const emojis = [ 'fortune', 'tool', ], + name: 'crystal_ball', }, { code: '๐Ÿ›’', @@ -8306,6 +9204,7 @@ const emojis = [ 'shopping', 'trolley', ], + name: 'shopping_cart', }, { code: 'symbols', @@ -8319,6 +9218,7 @@ const emojis = [ 'bank', 'teller', ], + name: 'atm', }, { code: '๐Ÿšฎ', @@ -8326,6 +9226,7 @@ const emojis = [ 'litter', 'litterbox', ], + name: 'put_litter_in_its_place', }, { code: '๐Ÿšฐ', @@ -8334,6 +9235,7 @@ const emojis = [ 'potable', 'water', ], + name: 'potable_water', }, { code: 'โ™ฟ', @@ -8341,6 +9243,7 @@ const emojis = [ 'access', 'wheelchair', ], + name: 'wheelchair', }, { code: '๐Ÿšน', @@ -8350,6 +9253,7 @@ const emojis = [ 'restroom', 'wc', ], + name: 'mens', }, { code: '๐Ÿšบ', @@ -8359,6 +9263,7 @@ const emojis = [ 'wc', 'woman', ], + name: 'womens', }, { code: '๐Ÿšป', @@ -8367,6 +9272,7 @@ const emojis = [ 'restroom', 'wc', ], + name: 'restroom', }, { code: '๐Ÿšผ', @@ -8374,6 +9280,7 @@ const emojis = [ 'baby', 'changing', ], + name: 'baby_symbol', }, { code: '๐Ÿšพ', @@ -8384,6 +9291,7 @@ const emojis = [ 'water', 'wc', ], + name: 'wc', }, { code: '๐Ÿ›‚', @@ -8391,12 +9299,14 @@ const emojis = [ 'control', 'passport', ], + name: 'passport_control', }, { code: '๐Ÿ›ƒ', keywords: [ 'customs', ], + name: 'customs', }, { code: '๐Ÿ›„', @@ -8404,6 +9314,7 @@ const emojis = [ 'baggage', 'claim', ], + name: 'baggage_claim', }, { code: '๐Ÿ›…', @@ -8413,12 +9324,14 @@ const emojis = [ 'locker', 'luggage', ], + name: 'left_luggage', }, { code: 'โš ', keywords: [ 'warning', ], + name: 'warning', }, { code: '๐Ÿšธ', @@ -8428,6 +9341,7 @@ const emojis = [ 'pedestrian', 'traffic', ], + name: 'children_crossing', }, { code: 'โ›”', @@ -8439,6 +9353,7 @@ const emojis = [ 'prohibited', 'traffic', ], + name: 'no_entry', }, { code: '๐Ÿšซ', @@ -8449,6 +9364,7 @@ const emojis = [ 'not', 'prohibited', ], + name: 'no_entry_sign', }, { code: '๐Ÿšณ', @@ -8461,6 +9377,7 @@ const emojis = [ 'prohibited', 'vehicle', ], + name: 'no_bicycles', }, { code: '๐Ÿšญ', @@ -8471,6 +9388,7 @@ const emojis = [ 'prohibited', 'smoking', ], + name: 'no_smoking', }, { code: '๐Ÿšฏ', @@ -8481,6 +9399,7 @@ const emojis = [ 'not', 'prohibited', ], + name: 'do_not_litter', }, { code: '๐Ÿšฑ', @@ -8493,6 +9412,7 @@ const emojis = [ 'prohibited', 'water', ], + name: 'non', }, { code: '๐Ÿšท', @@ -8503,6 +9423,7 @@ const emojis = [ 'pedestrian', 'prohibited', ], + name: 'no_pedestrians', }, { code: '๐Ÿ“ต', @@ -8517,6 +9438,7 @@ const emojis = [ 'prohibited', 'telephone', ], + name: 'no_mobile_phones', }, { code: '๐Ÿ”ž', @@ -8530,18 +9452,21 @@ const emojis = [ 'prohibited', 'underage', ], + name: 'underage', }, { code: 'โ˜ข๏ธ', keywords: [ 'radioactive', ], + name: 'radioactive', }, { code: 'โ˜ฃ๏ธ', keywords: [ 'biohazard', ], + name: 'biohazard', }, { code: 'โฌ†', @@ -8551,6 +9476,7 @@ const emojis = [ 'direction', 'north', ], + name: 'arrow_up', }, { code: 'โ†—๏ธ', @@ -8560,6 +9486,7 @@ const emojis = [ 'intercardinal', 'northeast', ], + name: 'arrow_upper_right', }, { code: 'โžก', @@ -8569,6 +9496,7 @@ const emojis = [ 'direction', 'east', ], + name: 'arrow_right', }, { code: 'โ†˜๏ธ', @@ -8578,6 +9506,7 @@ const emojis = [ 'intercardinal', 'southeast', ], + name: 'arrow_lower_right', }, { code: 'โฌ‡', @@ -8588,6 +9517,7 @@ const emojis = [ 'down', 'south', ], + name: 'arrow_down', }, { code: 'โ†™๏ธ', @@ -8597,6 +9527,7 @@ const emojis = [ 'intercardinal', 'southwest', ], + name: 'arrow_lower_left', }, { code: 'โฌ…', @@ -8606,6 +9537,7 @@ const emojis = [ 'direction', 'west', ], + name: 'arrow_left', }, { code: 'โ†–๏ธ', @@ -8615,30 +9547,35 @@ const emojis = [ 'intercardinal', 'northwest', ], + name: 'arrow_upper_left', }, { code: 'โ†•๏ธ', keywords: [ 'arrow', ], + name: 'arrow_up_down', }, { code: 'โ†”๏ธ', keywords: [ 'arrow', ], + name: 'left_right_arrow', }, { code: 'โ†ฉ', keywords: [ 'arrow', ], + name: 'leftwards_arrow_with_hook', }, { code: 'โ†ช', keywords: [ 'arrow', ], + name: 'arrow_right_hook', }, { code: 'โคด๏ธ', @@ -8646,6 +9583,7 @@ const emojis = [ 'arrow', 'up', ], + name: 'arrow_heading_up', }, { code: 'โคต๏ธ', @@ -8653,6 +9591,7 @@ const emojis = [ 'arrow', 'down', ], + name: 'arrow_heading_down', }, { code: '๐Ÿ”ƒ', @@ -8661,6 +9600,7 @@ const emojis = [ 'clockwise', 'reload', ], + name: 'arrows_clockwise', }, { code: '๐Ÿ”„', @@ -8670,6 +9610,7 @@ const emojis = [ 'counterclockwise', 'withershins', ], + name: 'arrows_counterclockwise', }, { code: '๐Ÿ”™', @@ -8677,6 +9618,7 @@ const emojis = [ 'arrow', 'back', ], + name: 'back', }, { code: '๐Ÿ”š', @@ -8684,6 +9626,7 @@ const emojis = [ 'arrow', 'end', ], + name: 'end', }, { code: '๐Ÿ”›', @@ -8692,6 +9635,7 @@ const emojis = [ 'mark', 'on', ], + name: 'on', }, { code: '๐Ÿ”œ', @@ -8699,6 +9643,7 @@ const emojis = [ 'arrow', 'soon', ], + name: 'soon', }, { code: '๐Ÿ”', @@ -8707,6 +9652,7 @@ const emojis = [ 'top', 'up', ], + name: 'top', }, { code: '๐Ÿ›', @@ -8714,6 +9660,7 @@ const emojis = [ 'religion', 'worship', ], + name: 'place_of_worship', }, { code: 'โš›', @@ -8721,6 +9668,7 @@ const emojis = [ 'atheist', 'atom', ], + name: 'atom_symbol', }, { code: '๐Ÿ•‰', @@ -8729,6 +9677,7 @@ const emojis = [ 'om', 'religion', ], + name: 'om', }, { code: 'โœก๏ธ', @@ -8739,6 +9688,7 @@ const emojis = [ 'religion', 'star', ], + name: 'star_of_david', }, { code: 'โ˜ธ๏ธ', @@ -8748,6 +9698,7 @@ const emojis = [ 'religion', 'wheel', ], + name: 'wheel_of_dharma', }, { code: 'โ˜ฏ', @@ -8758,6 +9709,7 @@ const emojis = [ 'yang', 'yin', ], + name: 'yin_yang', }, { code: 'โ˜ฆ๏ธ', @@ -8766,6 +9718,7 @@ const emojis = [ 'cross', 'religion', ], + name: 'orthodox_cross', }, { code: 'โ˜ฆ', @@ -8774,6 +9727,7 @@ const emojis = [ 'cross', 'religion', ], + name: 'latin_cross', }, { code: 'โ˜ช', @@ -8782,12 +9736,14 @@ const emojis = [ 'muslim', 'religion', ], + name: 'star_and_crescent', }, { code: 'โ˜ฎ', keywords: [ 'peace', ], + name: 'peace_symbol', }, { code: '๐Ÿ•Ž', @@ -8797,6 +9753,7 @@ const emojis = [ 'menorah', 'religion', ], + name: 'menorah', }, { code: '๐Ÿ”ฏ', @@ -8804,12 +9761,14 @@ const emojis = [ 'fortune', 'star', ], + name: 'six_pointed_star', }, { code: 'โ™ป', keywords: [ 'recycle', ], + name: 'recycle', }, { code: '๐Ÿ“›', @@ -8817,12 +9776,14 @@ const emojis = [ 'badge', 'name', ], + name: 'name_badge', }, { code: 'โšœ', keywords: [ 'fleur-de-lis', ], + name: 'fleur_de_lis', }, { code: '๐Ÿ”ฐ', @@ -8835,6 +9796,7 @@ const emojis = [ 'tool', 'yellow', ], + name: 'beginner', }, { code: '๐Ÿ”ฑ', @@ -8845,6 +9807,7 @@ const emojis = [ 'tool', 'trident', ], + name: 'trident', }, { code: 'โญ•', @@ -8852,6 +9815,7 @@ const emojis = [ 'circle', 'o', ], + name: 'o', }, { code: 'โœ…', @@ -8859,6 +9823,7 @@ const emojis = [ 'check', 'mark', ], + name: 'white_check_mark', }, { code: 'โ˜‘๏ธ', @@ -8867,6 +9832,7 @@ const emojis = [ 'box', 'check', ], + name: 'ballot_box_with_check', }, { code: 'โœ”๏ธ', @@ -8874,6 +9840,7 @@ const emojis = [ 'check', 'mark', ], + name: 'heavy_check_mark', }, { code: 'โœ–๏ธ', @@ -8883,6 +9850,7 @@ const emojis = [ 'multiply', 'x', ], + name: 'heavy_multiplication_x', }, { code: 'โŒ', @@ -8893,6 +9861,7 @@ const emojis = [ 'multiply', 'x', ], + name: 'x', }, { code: 'โŽ', @@ -8900,6 +9869,7 @@ const emojis = [ 'mark', 'square', ], + name: 'negative_squared_cross_mark', }, { code: 'โž•', @@ -8907,6 +9877,7 @@ const emojis = [ 'math', 'plus', ], + name: 'heavy_plus_sign', }, { code: 'โž–', @@ -8914,6 +9885,7 @@ const emojis = [ 'math', 'minus', ], + name: 'heavy_minus_sign', }, { code: 'โž—', @@ -8921,6 +9893,7 @@ const emojis = [ 'division', 'math', ], + name: 'heavy_division_sign', }, { code: 'โžฐ', @@ -8928,6 +9901,7 @@ const emojis = [ 'curl', 'loop', ], + name: 'curly_loop', }, { code: 'โžฟ', @@ -8936,6 +9910,7 @@ const emojis = [ 'double', 'loop', ], + name: 'loop', }, { code: 'ใ€ฝ', @@ -8943,24 +9918,28 @@ const emojis = [ 'mark', 'part', ], + name: 'part_alternation_mark', }, { code: 'โœณ๏ธ', keywords: [ 'asterisk', ], + name: 'eight_spoked_asterisk', }, { code: 'โœด๏ธ', keywords: [ 'star', ], + name: 'eight_pointed_black_star', }, { code: 'โ‡๏ธ', keywords: [ 'sparkle', ], + name: 'sparkle', }, { code: 'โ€ผ', @@ -8970,6 +9949,7 @@ const emojis = [ 'mark', 'punctuation', ], + name: 'bangbang', }, { code: 'โ‰๏ธ', @@ -8980,6 +9960,7 @@ const emojis = [ 'punctuation', 'question', ], + name: 'interrobang', }, { code: 'โ“', @@ -8988,6 +9969,7 @@ const emojis = [ 'punctuation', 'question', ], + name: 'question', }, { code: 'โ”', @@ -8997,6 +9979,7 @@ const emojis = [ 'punctuation', 'question', ], + name: 'grey_question', }, { code: 'โ•', @@ -9006,6 +9989,7 @@ const emojis = [ 'outlined', 'punctuation', ], + name: 'grey_exclamation', }, { code: 'โ—', @@ -9014,6 +9998,7 @@ const emojis = [ 'mark', 'punctuation', ], + name: 'exclamation', }, { code: 'ใ€ฐ๏ธ', @@ -9022,18 +10007,21 @@ const emojis = [ 'punctuation', 'wavy', ], + name: 'wavy_dash', }, { code: 'ยฉ', keywords: [ 'copyright', ], + name: 'copyright', }, { code: 'ยฎ', keywords: [ 'registered', ], + name: 'registered', }, { code: 'โ„ข๏ธ', @@ -9042,6 +10030,7 @@ const emojis = [ 'tm', 'trademark', ], + name: 'tm', }, { code: 'โ™ˆ', @@ -9050,6 +10039,7 @@ const emojis = [ 'ram', 'zodiac', ], + name: 'aries', }, { code: 'โ™‰', @@ -9059,6 +10049,7 @@ const emojis = [ 'taurus', 'zodiac', ], + name: 'taurus', }, { code: 'โ™Š', @@ -9067,6 +10058,7 @@ const emojis = [ 'twins', 'zodiac', ], + name: 'gemini', }, { code: 'โ™‹', @@ -9075,6 +10067,7 @@ const emojis = [ 'crab', 'zodiac', ], + name: 'cancer', }, { code: 'โ™Œ', @@ -9083,6 +10076,7 @@ const emojis = [ 'lion', 'zodiac', ], + name: 'leo', }, { code: 'โ™', @@ -9092,6 +10086,7 @@ const emojis = [ 'virgo', 'zodiac', ], + name: 'virgo', }, { code: 'โ™Ž', @@ -9102,6 +10097,7 @@ const emojis = [ 'scales', 'zodiac', ], + name: 'libra', }, { code: 'โ™', @@ -9111,6 +10107,7 @@ const emojis = [ 'scorpius', 'zodiac', ], + name: 'scorpius', }, { code: 'โ™', @@ -9119,6 +10116,7 @@ const emojis = [ 'sagittarius', 'zodiac', ], + name: 'sagittarius', }, { code: 'โ™‘', @@ -9127,6 +10125,7 @@ const emojis = [ 'goat', 'zodiac', ], + name: 'capricorn', }, { code: 'โ™’', @@ -9136,6 +10135,7 @@ const emojis = [ 'water', 'zodiac', ], + name: 'aquarius', }, { code: 'โ™“', @@ -9144,6 +10144,7 @@ const emojis = [ 'pisces', 'zodiac', ], + name: 'pisces', }, { code: 'โ›Ž', @@ -9154,6 +10155,7 @@ const emojis = [ 'snake', 'zodiac', ], + name: 'ophiuchus', }, { code: '๐Ÿ”€', @@ -9161,6 +10163,7 @@ const emojis = [ 'arrow', 'crossed', ], + name: 'twisted_rightwards_arrows', }, { code: '๐Ÿ”', @@ -9169,6 +10172,7 @@ const emojis = [ 'clockwise', 'repeat', ], + name: 'repeat', }, { code: '๐Ÿ”‚', @@ -9177,6 +10181,7 @@ const emojis = [ 'clockwise', 'once', ], + name: 'repeat_one', }, { code: 'โ–ถ', @@ -9186,6 +10191,7 @@ const emojis = [ 'right', 'triangle', ], + name: 'arrow_forward', }, { code: 'โฉ', @@ -9195,6 +10201,7 @@ const emojis = [ 'fast', 'forward', ], + name: 'fast_forward', }, { code: 'โญ', @@ -9204,6 +10211,7 @@ const emojis = [ 'next track', 'triangle', ], + name: 'next_track_button', }, { code: 'โฏ', @@ -9214,6 +10222,7 @@ const emojis = [ 'right', 'triangle', ], + name: 'play_or_pause_button', }, { code: 'โ—€', @@ -9223,6 +10232,7 @@ const emojis = [ 'reverse', 'triangle', ], + name: 'arrow_backward', }, { code: 'โช', @@ -9231,6 +10241,7 @@ const emojis = [ 'double', 'rewind', ], + name: 'rewind', }, { code: 'โฎ', @@ -9240,6 +10251,7 @@ const emojis = [ 'previous track', 'triangle', ], + name: 'previous_track_button', }, { code: '๐Ÿ”ผ', @@ -9248,6 +10260,7 @@ const emojis = [ 'button', 'red', ], + name: 'arrow_up_small', }, { code: 'โซ', @@ -9255,6 +10268,7 @@ const emojis = [ 'arrow', 'double', ], + name: 'arrow_double_up', }, { code: '๐Ÿ”ฝ', @@ -9264,6 +10278,7 @@ const emojis = [ 'down', 'red', ], + name: 'arrow_down_small', }, { code: 'โฌ', @@ -9272,6 +10287,7 @@ const emojis = [ 'double', 'down', ], + name: 'arrow_double_down', }, { code: 'โธ', @@ -9281,6 +10297,7 @@ const emojis = [ 'pause', 'vertical', ], + name: 'pause_button', }, { code: 'โน', @@ -9288,6 +10305,7 @@ const emojis = [ 'square', 'stop', ], + name: 'stop_button', }, { code: 'โบ', @@ -9295,12 +10313,14 @@ const emojis = [ 'circle', 'record', ], + name: 'record_button', }, { code: 'โ', keywords: [ 'eject', ], + name: 'eject_button', }, { code: '๐ŸŽฆ', @@ -9312,6 +10332,7 @@ const emojis = [ 'film', 'movie', ], + name: 'cinema', }, { code: '๐Ÿ”…', @@ -9320,6 +10341,7 @@ const emojis = [ 'dim', 'low', ], + name: 'low_brightness', }, { code: '๐Ÿ”†', @@ -9327,6 +10349,7 @@ const emojis = [ 'bright', 'brightness', ], + name: 'high_brightness', }, { code: '๐Ÿ“ถ', @@ -9340,6 +10363,7 @@ const emojis = [ 'signal', 'telephone', ], + name: 'signal_strength', }, { code: '๐Ÿ“ณ', @@ -9352,6 +10376,7 @@ const emojis = [ 'telephone', 'vibration', ], + name: 'vibration_mode', }, { code: '๐Ÿ“ด', @@ -9363,6 +10388,7 @@ const emojis = [ 'phone', 'telephone', ], + name: 'mobile_phone_off', }, { code: '#๏ธโƒฃ', @@ -9371,6 +10397,7 @@ const emojis = [ 'keycap', 'pound', ], + name: 'hash', }, { code: '*๏ธโƒฃ', @@ -9379,6 +10406,7 @@ const emojis = [ 'keycap', 'star', ], + name: 'asterisk', }, { code: '0๏ธโƒฃ', @@ -9387,6 +10415,7 @@ const emojis = [ 'keycap', 'zero', ], + name: 'zero', }, { code: '1๏ธโƒฃ', @@ -9395,6 +10424,7 @@ const emojis = [ 'keycap', 'one', ], + name: 'one', }, { code: '2๏ธโƒฃ', @@ -9403,6 +10433,7 @@ const emojis = [ 'keycap', 'two', ], + name: 'two', }, { code: '3๏ธโƒฃ', @@ -9411,6 +10442,7 @@ const emojis = [ 'keycap', 'three', ], + name: 'three', }, { code: '4๏ธโƒฃ', @@ -9419,6 +10451,7 @@ const emojis = [ 'four', 'keycap', ], + name: 'four', }, { code: '5๏ธโƒฃ', @@ -9427,6 +10460,7 @@ const emojis = [ 'five', 'keycap', ], + name: 'five', }, { code: '6๏ธโƒฃ', @@ -9435,6 +10469,7 @@ const emojis = [ 'keycap', 'six', ], + name: 'six', }, { code: '7๏ธโƒฃ', @@ -9443,6 +10478,7 @@ const emojis = [ 'keycap', 'seven', ], + name: 'seven', }, { code: '8๏ธโƒฃ', @@ -9451,6 +10487,7 @@ const emojis = [ 'eight', 'keycap', ], + name: 'eight', }, { code: '9๏ธโƒฃ', @@ -9459,6 +10496,7 @@ const emojis = [ 'keycap', 'nine', ], + name: 'nine', }, { code: '๐Ÿ”Ÿ', @@ -9467,6 +10505,7 @@ const emojis = [ 'keycap', 'ten', ], + name: 'keycap_ten', }, { code: '๐Ÿ’ฏ', @@ -9476,6 +10515,7 @@ const emojis = [ 'hundred', 'score', ], + name: '100', }, { code: '๐Ÿ” ', @@ -9485,6 +10525,7 @@ const emojis = [ 'letters', 'uppercase', ], + name: 'capital_abcd', }, { code: '๐Ÿ”ก', @@ -9495,6 +10536,7 @@ const emojis = [ 'letters', 'lowercase', ], + name: 'abcd', }, { code: '๐Ÿ”ข', @@ -9503,12 +10545,14 @@ const emojis = [ 'input', 'numbers', ], + name: '1234', }, { code: '๐Ÿ”ฃ', keywords: [ 'input', ], + name: 'symbols', }, { code: '๐Ÿ”ค', @@ -9519,6 +10563,7 @@ const emojis = [ 'latin', 'letters', ], + name: 'abc', }, { code: '๐Ÿ…ฐ', @@ -9526,6 +10571,7 @@ const emojis = [ 'a', 'blood', ], + name: 'a', }, { code: '๐Ÿ†Ž', @@ -9533,6 +10579,7 @@ const emojis = [ 'ab', 'blood', ], + name: 'ab', }, { code: '๐Ÿ…ฑ', @@ -9540,24 +10587,28 @@ const emojis = [ 'b', 'blood', ], + name: 'b', }, { code: '๐Ÿ†‘', keywords: [ 'cl', ], + name: 'cl', }, { code: '๐Ÿ†’', keywords: [ 'cool', ], + name: 'cool', }, { code: '๐Ÿ†“', keywords: [ 'free', ], + name: 'free', }, { code: 'โ„น๏ธ', @@ -9565,6 +10616,7 @@ const emojis = [ 'i', 'information', ], + name: 'information_source', }, { code: '๐Ÿ†”', @@ -9572,6 +10624,7 @@ const emojis = [ 'id', 'identity', ], + name: 'id', }, { code: 'โ“‚', @@ -9579,18 +10632,21 @@ const emojis = [ 'circle', 'm', ], + name: 'm', }, { code: '๐Ÿ†•', keywords: [ 'new', ], + name: 'new', }, { code: '๐Ÿ†–', keywords: [ 'ng', ], + name: 'ng', }, { code: '๐Ÿ…พ', @@ -9598,18 +10654,21 @@ const emojis = [ 'blood', 'o', ], + name: 'o2', }, { code: '๐Ÿ†—', keywords: [ 'ok', ], + name: 'ok', }, { code: '๐Ÿ…ฟ', keywords: [ 'parking', ], + name: 'parking', }, { code: '๐Ÿ†˜', @@ -9617,6 +10676,7 @@ const emojis = [ 'help', 'sos', ], + name: 'sos', }, { code: '๐Ÿ†™', @@ -9624,6 +10684,7 @@ const emojis = [ 'mark', 'up', ], + name: 'up', }, { code: '๐Ÿ†š', @@ -9631,84 +10692,98 @@ const emojis = [ 'versus', 'vs', ], + name: 'vs', }, { code: '๐Ÿˆ', keywords: [ 'japanese', ], + name: 'koko', }, { code: '๐Ÿˆ‚', keywords: [ 'japanese', ], + name: 'sa', }, { code: '๐Ÿˆท', keywords: [ 'japanese', ], + name: 'u6708', }, { code: '๐Ÿˆถ', keywords: [ 'japanese', ], + name: 'u6709', }, { code: '๐Ÿˆฏ', keywords: [ 'japanese', ], + name: 'u6307', }, { code: '๐Ÿ‰', keywords: [ 'japanese', ], + name: 'ideograph_advantage', }, { code: '๐Ÿˆน', keywords: [ 'japanese', ], + name: 'u5272', }, { code: '๐Ÿˆš', keywords: [ 'japanese', ], + name: 'u7121', }, { code: '๐Ÿˆฒ', keywords: [ 'japanese', ], + name: 'u7981', }, { code: '๐Ÿ‰‘', keywords: [ 'chinese', ], + name: 'accept', }, { code: '๐Ÿˆธ', keywords: [ 'chinese', ], + name: 'u7533', }, { code: '๐Ÿˆด', keywords: [ 'chinese', ], + name: 'u5408', }, { code: '๐Ÿˆณ', keywords: [ 'chinese', ], + name: 'u7a7a', }, { code: 'ใŠ—๏ธ', @@ -9718,6 +10793,7 @@ const emojis = [ 'congratulations', 'ideograph', ], + name: 'congratulations', }, { code: 'ใŠ™๏ธ', @@ -9726,18 +10802,21 @@ const emojis = [ 'ideograph', 'secret', ], + name: 'secret', }, { code: '๐Ÿˆบ', keywords: [ 'chinese', ], + name: 'u55b6', }, { code: '๐Ÿˆต', keywords: [ 'chinese', ], + name: 'u6e80', }, { code: 'โ–ช', @@ -9745,6 +10824,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'black_small_square', }, { code: 'โ–ซ', @@ -9752,6 +10832,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'white_small_square', }, { code: 'โ—ป', @@ -9759,6 +10840,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'white_medium_square', }, { code: 'โ—ผ', @@ -9766,6 +10848,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'black_medium_square', }, { code: 'โ—ฝ', @@ -9773,6 +10856,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'white_medium_small_square', }, { code: 'โ—พ', @@ -9780,6 +10864,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'black_medium_small_square', }, { code: 'โฌ›', @@ -9787,6 +10872,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'black_large_square', }, { code: 'โฌœ', @@ -9794,6 +10880,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'white_large_square', }, { code: '๐Ÿ”ถ', @@ -9802,6 +10889,7 @@ const emojis = [ 'geometric', 'orange', ], + name: 'large_orange_diamond', }, { code: '๐Ÿ”ท', @@ -9810,6 +10898,7 @@ const emojis = [ 'diamond', 'geometric', ], + name: 'large_blue_diamond', }, { code: '๐Ÿ”ธ', @@ -9818,6 +10907,7 @@ const emojis = [ 'geometric', 'orange', ], + name: 'small_orange_diamond', }, { code: '๐Ÿ”น', @@ -9826,6 +10916,7 @@ const emojis = [ 'diamond', 'geometric', ], + name: 'small_blue_diamond', }, { code: '๐Ÿ”บ', @@ -9833,6 +10924,7 @@ const emojis = [ 'geometric', 'red', ], + name: 'small_red_triangle', }, { code: '๐Ÿ”ป', @@ -9841,6 +10933,7 @@ const emojis = [ 'geometric', 'red', ], + name: 'small_red_triangle_down', }, { code: '๐Ÿ’ ', @@ -9850,6 +10943,7 @@ const emojis = [ 'geometric', 'inside', ], + name: 'diamond_shape_with_a_dot_inside', }, { code: '๐Ÿ”˜', @@ -9858,6 +10952,7 @@ const emojis = [ 'geometric', 'radio', ], + name: 'radio_button', }, { code: '๐Ÿ”ฒ', @@ -9866,6 +10961,7 @@ const emojis = [ 'geometric', 'square', ], + name: 'black_square_button', }, { code: '๐Ÿ”ณ', @@ -9875,6 +10971,7 @@ const emojis = [ 'outlined', 'square', ], + name: 'white_square_button', }, { code: 'โšช', @@ -9882,6 +10979,7 @@ const emojis = [ 'circle', 'geometric', ], + name: 'white_circle', }, { code: 'โšซ', @@ -9889,6 +10987,7 @@ const emojis = [ 'circle', 'geometric', ], + name: 'black_circle', }, { code: '๐Ÿ”ด', @@ -9897,6 +10996,7 @@ const emojis = [ 'geometric', 'red', ], + name: 'red_circle', }, { code: '๐Ÿ”ต', @@ -9905,6 +11005,7 @@ const emojis = [ 'circle', 'geometric', ], + name: 'large_blue_circle', }, { code: 'flags', @@ -9918,6 +11019,7 @@ const emojis = [ 'flag', 'racing', ], + name: 'checkered_flag', }, { code: '๐Ÿšฉ', @@ -9925,6 +11027,7 @@ const emojis = [ 'flag', 'post', ], + name: 'triangular_flag_on_post', }, { code: '๐ŸŽŒ', @@ -9936,6 +11039,7 @@ const emojis = [ 'flag', 'japanese', ], + name: 'crossed_flags', }, { code: '๐Ÿด', @@ -9943,6 +11047,7 @@ const emojis = [ 'flag', 'waving', ], + name: 'black_flag', }, { code: '๐Ÿณ', @@ -9950,6 +11055,7 @@ const emojis = [ 'flag', 'waving', ], + name: 'white_flag', }, { code: '๐Ÿ‡ฆ๐Ÿ‡จ', @@ -9958,6 +11064,7 @@ const emojis = [ 'flag', 'island', ], + name: 'ascension_island', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฉ', @@ -9965,6 +11072,7 @@ const emojis = [ 'andorra', 'flag', ], + name: 'andorra', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ช', @@ -9974,6 +11082,7 @@ const emojis = [ 'uae', 'united', ], + name: 'united_arab_emirates', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ซ', @@ -9981,6 +11090,7 @@ const emojis = [ 'afghanistan', 'flag', ], + name: 'afghanistan', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฌ', @@ -9989,6 +11099,7 @@ const emojis = [ 'barbuda', 'flag', ], + name: 'antigua_barbuda', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฎ', @@ -9996,6 +11107,7 @@ const emojis = [ 'anguilla', 'flag', ], + name: 'anguilla', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฑ', @@ -10003,6 +11115,7 @@ const emojis = [ 'albania', 'flag', ], + name: 'albania', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฒ', @@ -10010,6 +11123,7 @@ const emojis = [ 'armenia', 'flag', ], + name: 'armenia', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ด', @@ -10017,6 +11131,7 @@ const emojis = [ 'angola', 'flag', ], + name: 'angola', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ถ', @@ -10024,6 +11139,7 @@ const emojis = [ 'antarctica', 'flag', ], + name: 'antarctica', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ท', @@ -10031,6 +11147,7 @@ const emojis = [ 'argentina', 'flag', ], + name: 'argentina', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ธ', @@ -10039,6 +11156,7 @@ const emojis = [ 'flag', 'samoa', ], + name: 'american_samoa', }, { code: '๐Ÿ‡ฆ๐Ÿ‡น', @@ -10046,6 +11164,7 @@ const emojis = [ 'austria', 'flag', ], + name: 'austria', }, { code: '๐Ÿ‡ฆ๐Ÿ‡บ', @@ -10053,6 +11172,7 @@ const emojis = [ 'australia', 'flag', ], + name: 'australia', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ผ', @@ -10060,6 +11180,7 @@ const emojis = [ 'aruba', 'flag', ], + name: 'aruba', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฝ', @@ -10067,6 +11188,7 @@ const emojis = [ 'รฅland', 'flag', ], + name: 'aland_islands', }, { code: '๐Ÿ‡ฆ๐Ÿ‡ฟ', @@ -10074,6 +11196,7 @@ const emojis = [ 'azerbaijan', 'flag', ], + name: 'azerbaijan', }, { code: '๐Ÿ‡ง๐Ÿ‡ฆ', @@ -10082,6 +11205,7 @@ const emojis = [ 'flag', 'herzegovina', ], + name: 'bosnia_herzegovina', }, { code: '๐Ÿ‡ง๐Ÿ‡ง', @@ -10089,6 +11213,7 @@ const emojis = [ 'barbados', 'flag', ], + name: 'barbados', }, { code: '๐Ÿ‡ง๐Ÿ‡ฉ', @@ -10096,6 +11221,7 @@ const emojis = [ 'bangladesh', 'flag', ], + name: 'bangladesh', }, { code: '๐Ÿ‡ง๐Ÿ‡ช', @@ -10103,6 +11229,7 @@ const emojis = [ 'belgium', 'flag', ], + name: 'belgium', }, { code: '๐Ÿ‡ง๐Ÿ‡ซ', @@ -10110,6 +11237,7 @@ const emojis = [ 'burkina faso', 'flag', ], + name: 'burkina_faso', }, { code: '๐Ÿ‡ง๐Ÿ‡ฌ', @@ -10117,6 +11245,7 @@ const emojis = [ 'bulgaria', 'flag', ], + name: 'bulgaria', }, { code: '๐Ÿ‡ง๐Ÿ‡ญ', @@ -10124,6 +11253,7 @@ const emojis = [ 'bahrain', 'flag', ], + name: 'bahrain', }, { code: '๐Ÿ‡ง๐Ÿ‡ฎ', @@ -10131,6 +11261,7 @@ const emojis = [ 'burundi', 'flag', ], + name: 'burundi', }, { code: '๐Ÿ‡ง๐Ÿ‡ฏ', @@ -10138,6 +11269,7 @@ const emojis = [ 'benin', 'flag', ], + name: 'benin', }, { code: '๐Ÿ‡ง๐Ÿ‡ฑ', @@ -10147,6 +11279,7 @@ const emojis = [ 'flag', 'saint', ], + name: 'st_barthelemy', }, { code: '๐Ÿ‡ง๐Ÿ‡ฒ', @@ -10154,6 +11287,7 @@ const emojis = [ 'bermuda', 'flag', ], + name: 'bermuda', }, { code: '๐Ÿ‡ง๐Ÿ‡ณ', @@ -10162,6 +11296,7 @@ const emojis = [ 'darussalam', 'flag', ], + name: 'brunei', }, { code: '๐Ÿ‡ง๐Ÿ‡ด', @@ -10169,6 +11304,7 @@ const emojis = [ 'bolivia', 'flag', ], + name: 'bolivia', }, { code: '๐Ÿ‡ง๐Ÿ‡ถ', @@ -10181,6 +11317,7 @@ const emojis = [ 'saba', 'sint', ], + name: 'caribbean_netherlands', }, { code: '๐Ÿ‡ง๐Ÿ‡ท', @@ -10188,6 +11325,7 @@ const emojis = [ 'brazil', 'flag', ], + name: 'brazil', }, { code: '๐Ÿ‡ง๐Ÿ‡ธ', @@ -10195,6 +11333,7 @@ const emojis = [ 'bahamas', 'flag', ], + name: 'bahamas', }, { code: '๐Ÿ‡ง๐Ÿ‡น', @@ -10202,6 +11341,7 @@ const emojis = [ 'bhutan', 'flag', ], + name: 'bhutan', }, { code: '๐Ÿ‡ง๐Ÿ‡ป', @@ -10210,6 +11350,7 @@ const emojis = [ 'flag', 'island', ], + name: 'bouvet_island', }, { code: '๐Ÿ‡ง๐Ÿ‡ผ', @@ -10217,6 +11358,7 @@ const emojis = [ 'botswana', 'flag', ], + name: 'botswana', }, { code: '๐Ÿ‡ง๐Ÿ‡พ', @@ -10224,6 +11366,7 @@ const emojis = [ 'belarus', 'flag', ], + name: 'belarus', }, { code: '๐Ÿ‡ง๐Ÿ‡ฟ', @@ -10231,6 +11374,7 @@ const emojis = [ 'belize', 'flag', ], + name: 'belize', }, { code: '๐Ÿ‡จ๐Ÿ‡ฆ', @@ -10238,6 +11382,7 @@ const emojis = [ 'canada', 'flag', ], + name: 'canada', }, { code: '๐Ÿ‡จ๐Ÿ‡จ', @@ -10247,6 +11392,7 @@ const emojis = [ 'island', 'keeling', ], + name: 'cocos_islands', }, { code: '๐Ÿ‡จ๐Ÿ‡ฉ', @@ -10259,6 +11405,7 @@ const emojis = [ 'kinshasa', 'republic', ], + name: 'congo_kinshasa', }, { code: '๐Ÿ‡จ๐Ÿ‡ซ', @@ -10267,6 +11414,7 @@ const emojis = [ 'flag', 'republic', ], + name: 'central_african_republic', }, { code: '๐Ÿ‡จ๐Ÿ‡ฌ', @@ -10279,6 +11427,7 @@ const emojis = [ 'republic', 'republic of the congo', ], + name: 'congo_brazzaville', }, { code: '๐Ÿ‡จ๐Ÿ‡ญ', @@ -10286,6 +11435,7 @@ const emojis = [ 'flag', 'switzerland', ], + name: 'switzerland', }, { code: '๐Ÿ‡จ๐Ÿ‡ฎ', @@ -10295,6 +11445,7 @@ const emojis = [ 'flag', 'ivory coast', ], + name: 'cote_divoire', }, { code: '๐Ÿ‡จ๐Ÿ‡ฐ', @@ -10303,6 +11454,7 @@ const emojis = [ 'flag', 'island', ], + name: 'cook_islands', }, { code: '๐Ÿ‡จ๐Ÿ‡ฑ', @@ -10310,6 +11462,7 @@ const emojis = [ 'chile', 'flag', ], + name: 'chile', }, { code: '๐Ÿ‡จ๐Ÿ‡ฒ', @@ -10317,6 +11470,7 @@ const emojis = [ 'cameroon', 'flag', ], + name: 'cameroon', }, { code: '๐Ÿ‡จ๐Ÿ‡ณ', @@ -10324,6 +11478,7 @@ const emojis = [ 'china', 'flag', ], + name: 'cn', }, { code: '๐Ÿ‡จ๐Ÿ‡ด', @@ -10331,6 +11486,7 @@ const emojis = [ 'colombia', 'flag', ], + name: 'colombia', }, { code: '๐Ÿ‡จ๐Ÿ‡ต', @@ -10339,6 +11495,7 @@ const emojis = [ 'flag', 'island', ], + name: 'clipperton_island', }, { code: '๐Ÿ‡จ๐Ÿ‡ท', @@ -10346,6 +11503,7 @@ const emojis = [ 'costa rica', 'flag', ], + name: 'costa_rica', }, { code: '๐Ÿ‡จ๐Ÿ‡บ', @@ -10353,6 +11511,7 @@ const emojis = [ 'cuba', 'flag', ], + name: 'cuba', }, { code: '๐Ÿ‡จ๐Ÿ‡ป', @@ -10362,6 +11521,7 @@ const emojis = [ 'flag', 'verde', ], + name: 'cape_verde', }, { code: '๐Ÿ‡จ๐Ÿ‡ผ', @@ -10371,6 +11531,7 @@ const emojis = [ 'curaรงao', 'flag', ], + name: 'curacao', }, { code: '๐Ÿ‡จ๐Ÿ‡ฝ', @@ -10379,6 +11540,7 @@ const emojis = [ 'flag', 'island', ], + name: 'christmas_island', }, { code: '๐Ÿ‡จ๐Ÿ‡พ', @@ -10386,6 +11548,7 @@ const emojis = [ 'cyprus', 'flag', ], + name: 'cyprus', }, { code: '๐Ÿ‡จ๐Ÿ‡ฟ', @@ -10393,6 +11556,7 @@ const emojis = [ 'czech republic', 'flag', ], + name: 'czech_republic', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ช', @@ -10400,6 +11564,7 @@ const emojis = [ 'flag', 'germany', ], + name: 'de', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ฌ', @@ -10407,6 +11572,7 @@ const emojis = [ 'diego garcia', 'flag', ], + name: 'diego_garcia', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ฏ', @@ -10414,6 +11580,7 @@ const emojis = [ 'djibouti', 'flag', ], + name: 'djibouti', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ฐ', @@ -10421,6 +11588,7 @@ const emojis = [ 'denmark', 'flag', ], + name: 'denmark', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ฒ', @@ -10428,6 +11596,7 @@ const emojis = [ 'dominica', 'flag', ], + name: 'dominica', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ด', @@ -10435,6 +11604,7 @@ const emojis = [ 'dominican republic', 'flag', ], + name: 'dominican_republic', }, { code: '๐Ÿ‡ฉ๐Ÿ‡ฟ', @@ -10442,6 +11612,7 @@ const emojis = [ 'algeria', 'flag', ], + name: 'algeria', }, { code: '๐Ÿ‡ช๐Ÿ‡ฆ', @@ -10450,6 +11621,7 @@ const emojis = [ 'flag', 'melilla', ], + name: 'ceuta_melilla', }, { code: '๐Ÿ‡ช๐Ÿ‡จ', @@ -10457,6 +11629,7 @@ const emojis = [ 'ecuador', 'flag', ], + name: 'ecuador', }, { code: '๐Ÿ‡ช๐Ÿ‡ช', @@ -10464,6 +11637,7 @@ const emojis = [ 'estonia', 'flag', ], + name: 'estonia', }, { code: '๐Ÿ‡ช๐Ÿ‡ฌ', @@ -10471,6 +11645,7 @@ const emojis = [ 'egypt', 'flag', ], + name: 'egypt', }, { code: '๐Ÿ‡ช๐Ÿ‡ญ', @@ -10480,6 +11655,7 @@ const emojis = [ 'west', 'western sahara', ], + name: 'western_sahara', }, { code: '๐Ÿ‡ช๐Ÿ‡ท', @@ -10487,6 +11663,7 @@ const emojis = [ 'eritrea', 'flag', ], + name: 'eritrea', }, { code: '๐Ÿ‡ช๐Ÿ‡ธ', @@ -10494,6 +11671,7 @@ const emojis = [ 'flag', 'spain', ], + name: 'es', }, { code: '๐Ÿ‡ช๐Ÿ‡น', @@ -10501,6 +11679,7 @@ const emojis = [ 'ethiopia', 'flag', ], + name: 'ethiopia', }, { code: '๐Ÿ‡ช๐Ÿ‡บ', @@ -10508,6 +11687,7 @@ const emojis = [ 'european union', 'flag', ], + name: 'eu', }, { code: '๐Ÿ‡ซ๐Ÿ‡ฎ', @@ -10515,6 +11695,7 @@ const emojis = [ 'finland', 'flag', ], + name: 'finland', }, { code: '๐Ÿ‡ซ๐Ÿ‡ฏ', @@ -10522,6 +11703,7 @@ const emojis = [ 'fiji', 'flag', ], + name: 'fiji', }, { code: '๐Ÿ‡ซ๐Ÿ‡ฐ', @@ -10533,6 +11715,7 @@ const emojis = [ 'islas', 'malvinas', ], + name: 'falkland_islands', }, { code: '๐Ÿ‡ซ๐Ÿ‡ฒ', @@ -10540,6 +11723,7 @@ const emojis = [ 'flag', 'micronesia', ], + name: 'micronesia', }, { code: '๐Ÿ‡ซ๐Ÿ‡ด', @@ -10548,6 +11732,7 @@ const emojis = [ 'flag', 'island', ], + name: 'faroe_islands', }, { code: '๐Ÿ‡ซ๐Ÿ‡ท', @@ -10555,6 +11740,7 @@ const emojis = [ 'flag', 'france', ], + name: 'fr', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฆ', @@ -10562,6 +11748,7 @@ const emojis = [ 'flag', 'gabon', ], + name: 'gabon', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ง', @@ -10581,6 +11768,7 @@ const emojis = [ 'united kingdom', 'wales', ], + name: 'gb', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฉ', @@ -10588,6 +11776,7 @@ const emojis = [ 'flag', 'grenada', ], + name: 'grenada', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ช', @@ -10595,6 +11784,7 @@ const emojis = [ 'flag', 'georgia', ], + name: 'georgia', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ซ', @@ -10603,6 +11793,7 @@ const emojis = [ 'french', 'guiana', ], + name: 'french_guiana', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฌ', @@ -10610,6 +11801,7 @@ const emojis = [ 'flag', 'guernsey', ], + name: 'guernsey', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ญ', @@ -10617,6 +11809,7 @@ const emojis = [ 'flag', 'ghana', ], + name: 'ghana', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฎ', @@ -10624,6 +11817,7 @@ const emojis = [ 'flag', 'gibraltar', ], + name: 'gibraltar', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฑ', @@ -10631,6 +11825,7 @@ const emojis = [ 'flag', 'greenland', ], + name: 'greenland', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ฒ', @@ -10638,6 +11833,7 @@ const emojis = [ 'flag', 'gambia', ], + name: 'gambia', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ณ', @@ -10645,6 +11841,7 @@ const emojis = [ 'flag', 'guinea', ], + name: 'guinea', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ต', @@ -10652,6 +11849,7 @@ const emojis = [ 'flag', 'guadeloupe', ], + name: 'guadeloupe', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ถ', @@ -10660,6 +11858,7 @@ const emojis = [ 'flag', 'guinea', ], + name: 'equatorial_guinea', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ท', @@ -10667,6 +11866,7 @@ const emojis = [ 'flag', 'greece', ], + name: 'greece', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ธ', @@ -10678,6 +11878,7 @@ const emojis = [ 'south georgia', 'south sandwich', ], + name: 'south_georgia_south_sandwich_islands', }, { code: '๐Ÿ‡ฌ๐Ÿ‡น', @@ -10685,6 +11886,7 @@ const emojis = [ 'flag', 'guatemala', ], + name: 'guatemala', }, { code: '๐Ÿ‡ฌ๐Ÿ‡บ', @@ -10692,6 +11894,7 @@ const emojis = [ 'flag', 'guam', ], + name: 'guam', }, { code: '๐Ÿ‡ฌ๐Ÿ‡ผ', @@ -10700,6 +11903,7 @@ const emojis = [ 'flag', 'guinea', ], + name: 'guinea_bissau', }, { code: '๐Ÿ‡ฌ๐Ÿ‡พ', @@ -10707,6 +11911,7 @@ const emojis = [ 'flag', 'guyana', ], + name: 'guyana', }, { code: '๐Ÿ‡ญ๐Ÿ‡ฐ', @@ -10715,6 +11920,7 @@ const emojis = [ 'flag', 'hong kong', ], + name: 'hong_kong', }, { code: '๐Ÿ‡ญ๐Ÿ‡ฒ', @@ -10724,6 +11930,7 @@ const emojis = [ 'island', 'mcdonald', ], + name: 'heard_mcdonald_islands', }, { code: '๐Ÿ‡ญ๐Ÿ‡ณ', @@ -10731,6 +11938,7 @@ const emojis = [ 'flag', 'honduras', ], + name: 'honduras', }, { code: '๐Ÿ‡ญ๐Ÿ‡ท', @@ -10738,6 +11946,7 @@ const emojis = [ 'croatia', 'flag', ], + name: 'croatia', }, { code: '๐Ÿ‡ญ๐Ÿ‡น', @@ -10745,6 +11954,7 @@ const emojis = [ 'flag', 'haiti', ], + name: 'haiti', }, { code: '๐Ÿ‡ญ๐Ÿ‡บ', @@ -10752,6 +11962,7 @@ const emojis = [ 'flag', 'hungary', ], + name: 'hungary', }, { code: '๐Ÿ‡ฎ๐Ÿ‡จ', @@ -10760,6 +11971,7 @@ const emojis = [ 'flag', 'island', ], + name: 'canary_islands', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ฉ', @@ -10767,6 +11979,7 @@ const emojis = [ 'flag', 'indonesia', ], + name: 'indonesia', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ช', @@ -10774,6 +11987,7 @@ const emojis = [ 'flag', 'ireland', ], + name: 'ireland', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ฑ', @@ -10781,6 +11995,7 @@ const emojis = [ 'flag', 'israel', ], + name: 'israel', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ฒ', @@ -10788,6 +12003,7 @@ const emojis = [ 'flag', 'isle of man', ], + name: 'isle_of_man', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ณ', @@ -10795,6 +12011,7 @@ const emojis = [ 'flag', 'india', ], + name: 'india', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ด', @@ -10805,6 +12022,7 @@ const emojis = [ 'indian ocean', 'island', ], + name: 'british_indian_ocean_territory', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ถ', @@ -10812,6 +12030,7 @@ const emojis = [ 'flag', 'iraq', ], + name: 'iraq', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ท', @@ -10819,6 +12038,7 @@ const emojis = [ 'flag', 'iran', ], + name: 'iran', }, { code: '๐Ÿ‡ฎ๐Ÿ‡ธ', @@ -10826,6 +12046,7 @@ const emojis = [ 'flag', 'iceland', ], + name: 'iceland', }, { code: '๐Ÿ‡ฎ๐Ÿ‡น', @@ -10833,6 +12054,7 @@ const emojis = [ 'flag', 'italy', ], + name: 'it', }, { code: '๐Ÿ‡ฏ๐Ÿ‡ช', @@ -10840,6 +12062,7 @@ const emojis = [ 'flag', 'jersey', ], + name: 'jersey', }, { code: '๐Ÿ‡ฏ๐Ÿ‡ฒ', @@ -10847,6 +12070,7 @@ const emojis = [ 'flag', 'jamaica', ], + name: 'jamaica', }, { code: '๐Ÿ‡ฏ๐Ÿ‡ด', @@ -10854,6 +12078,7 @@ const emojis = [ 'flag', 'jordan', ], + name: 'jordan', }, { code: '๐Ÿ‡ฏ๐Ÿ‡ต', @@ -10861,6 +12086,7 @@ const emojis = [ 'flag', 'japan', ], + name: 'jp', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ช', @@ -10868,6 +12094,7 @@ const emojis = [ 'flag', 'kenya', ], + name: 'kenya', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ฌ', @@ -10875,6 +12102,7 @@ const emojis = [ 'flag', 'kyrgyzstan', ], + name: 'kyrgyzstan', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ญ', @@ -10882,6 +12110,7 @@ const emojis = [ 'cambodia', 'flag', ], + name: 'cambodia', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ฎ', @@ -10889,6 +12118,7 @@ const emojis = [ 'flag', 'kiribati', ], + name: 'kiribati', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ฒ', @@ -10896,6 +12126,7 @@ const emojis = [ 'comoros', 'flag', ], + name: 'comoros', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ณ', @@ -10905,6 +12136,7 @@ const emojis = [ 'nevis', 'saint', ], + name: 'st_kitts_nevis', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ต', @@ -10914,6 +12146,7 @@ const emojis = [ 'north', 'north korea', ], + name: 'north_korea', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ท', @@ -10923,6 +12156,7 @@ const emojis = [ 'south', 'south korea', ], + name: 'kr', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ผ', @@ -10930,6 +12164,7 @@ const emojis = [ 'flag', 'kuwait', ], + name: 'kuwait', }, { code: '๐Ÿ‡ฐ๐Ÿ‡พ', @@ -10938,6 +12173,7 @@ const emojis = [ 'flag', 'island', ], + name: 'cayman_islands', }, { code: '๐Ÿ‡ฐ๐Ÿ‡ฟ', @@ -10945,6 +12181,7 @@ const emojis = [ 'flag', 'kazakhstan', ], + name: 'kazakhstan', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ฆ', @@ -10952,6 +12189,7 @@ const emojis = [ 'flag', 'laos', ], + name: 'laos', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ง', @@ -10959,6 +12197,7 @@ const emojis = [ 'flag', 'lebanon', ], + name: 'lebanon', }, { code: '๐Ÿ‡ฑ๐Ÿ‡จ', @@ -10967,6 +12206,7 @@ const emojis = [ 'lucia', 'saint', ], + name: 'st_lucia', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ฎ', @@ -10974,6 +12214,7 @@ const emojis = [ 'flag', 'liechtenstein', ], + name: 'liechtenstein', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ฐ', @@ -10981,6 +12222,7 @@ const emojis = [ 'flag', 'sri lanka', ], + name: 'sri_lanka', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ท', @@ -10988,6 +12230,7 @@ const emojis = [ 'flag', 'liberia', ], + name: 'liberia', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ธ', @@ -10995,6 +12238,7 @@ const emojis = [ 'flag', 'lesotho', ], + name: 'lesotho', }, { code: '๐Ÿ‡ฑ๐Ÿ‡น', @@ -11002,6 +12246,7 @@ const emojis = [ 'flag', 'lithuania', ], + name: 'lithuania', }, { code: '๐Ÿ‡ฑ๐Ÿ‡บ', @@ -11009,6 +12254,7 @@ const emojis = [ 'flag', 'luxembourg', ], + name: 'luxembourg', }, { code: '๐Ÿ‡ฑ๐Ÿ‡ป', @@ -11016,6 +12262,7 @@ const emojis = [ 'flag', 'latvia', ], + name: 'latvia', }, { code: '๐Ÿ‡ฑ๐Ÿ‡พ', @@ -11023,6 +12270,7 @@ const emojis = [ 'flag', 'libya', ], + name: 'libya', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฆ', @@ -11030,6 +12278,7 @@ const emojis = [ 'flag', 'morocco', ], + name: 'morocco', }, { code: '๐Ÿ‡ฒ๐Ÿ‡จ', @@ -11037,6 +12286,7 @@ const emojis = [ 'flag', 'monaco', ], + name: 'monaco', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฉ', @@ -11044,6 +12294,7 @@ const emojis = [ 'flag', 'moldova', ], + name: 'moldova', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ช', @@ -11051,6 +12302,7 @@ const emojis = [ 'flag', 'montenegro', ], + name: 'montenegro', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ซ', @@ -11060,6 +12312,7 @@ const emojis = [ 'martin', 'saint', ], + name: 'st_martin', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฌ', @@ -11067,6 +12320,7 @@ const emojis = [ 'flag', 'madagascar', ], + name: 'madagascar', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ญ', @@ -11075,6 +12329,7 @@ const emojis = [ 'island', 'marshall', ], + name: 'marshall_islands', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฐ', @@ -11082,6 +12337,7 @@ const emojis = [ 'flag', 'macedonia', ], + name: 'macedonia', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฑ', @@ -11089,6 +12345,7 @@ const emojis = [ 'flag', 'mali', ], + name: 'mali', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฒ', @@ -11097,6 +12354,7 @@ const emojis = [ 'flag', 'myanmar', ], + name: 'myanmar', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ณ', @@ -11104,6 +12362,7 @@ const emojis = [ 'flag', 'mongolia', ], + name: 'mongolia', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ด', @@ -11113,6 +12372,7 @@ const emojis = [ 'macao', 'macau', ], + name: 'macau', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ต', @@ -11123,6 +12383,7 @@ const emojis = [ 'north', 'northern mariana', ], + name: 'northern_mariana_islands', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ถ', @@ -11130,6 +12391,7 @@ const emojis = [ 'flag', 'martinique', ], + name: 'martinique', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ท', @@ -11137,6 +12399,7 @@ const emojis = [ 'flag', 'mauritania', ], + name: 'mauritania', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ธ', @@ -11144,6 +12407,7 @@ const emojis = [ 'flag', 'montserrat', ], + name: 'montserrat', }, { code: '๐Ÿ‡ฒ๐Ÿ‡น', @@ -11151,6 +12415,7 @@ const emojis = [ 'flag', 'malta', ], + name: 'malta', }, { code: '๐Ÿ‡ฒ๐Ÿ‡บ', @@ -11158,6 +12423,7 @@ const emojis = [ 'flag', 'mauritius', ], + name: 'mauritius', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ป', @@ -11165,6 +12431,7 @@ const emojis = [ 'flag', 'maldives', ], + name: 'maldives', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ผ', @@ -11172,6 +12439,7 @@ const emojis = [ 'flag', 'malawi', ], + name: 'malawi', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฝ', @@ -11179,6 +12447,7 @@ const emojis = [ 'flag', 'mexico', ], + name: 'mexico', }, { code: '๐Ÿ‡ฒ๐Ÿ‡พ', @@ -11186,6 +12455,7 @@ const emojis = [ 'flag', 'malaysia', ], + name: 'malaysia', }, { code: '๐Ÿ‡ฒ๐Ÿ‡ฟ', @@ -11193,6 +12463,7 @@ const emojis = [ 'flag', 'mozambique', ], + name: 'mozambique', }, { code: '๐Ÿ‡ณ๐Ÿ‡ฆ', @@ -11200,6 +12471,7 @@ const emojis = [ 'flag', 'namibia', ], + name: 'namibia', }, { code: '๐Ÿ‡ณ๐Ÿ‡จ', @@ -11208,6 +12480,7 @@ const emojis = [ 'new', 'new caledonia', ], + name: 'new_caledonia', }, { code: '๐Ÿ‡ณ๐Ÿ‡ช', @@ -11215,6 +12488,7 @@ const emojis = [ 'flag', 'niger', ], + name: 'niger', }, { code: '๐Ÿ‡ณ๐Ÿ‡ซ', @@ -11223,6 +12497,7 @@ const emojis = [ 'island', 'norfolk', ], + name: 'norfolk_island', }, { code: '๐Ÿ‡ณ๐Ÿ‡ฌ', @@ -11230,6 +12505,7 @@ const emojis = [ 'flag', 'nigeria', ], + name: 'nigeria', }, { code: '๐Ÿ‡ณ๐Ÿ‡ฎ', @@ -11237,6 +12513,7 @@ const emojis = [ 'flag', 'nicaragua', ], + name: 'nicaragua', }, { code: '๐Ÿ‡ณ๐Ÿ‡ฑ', @@ -11244,6 +12521,7 @@ const emojis = [ 'flag', 'netherlands', ], + name: 'netherlands', }, { code: '๐Ÿ‡ณ๐Ÿ‡ด', @@ -11251,6 +12529,7 @@ const emojis = [ 'flag', 'norway', ], + name: 'norway', }, { code: '๐Ÿ‡ณ๐Ÿ‡ต', @@ -11258,6 +12537,7 @@ const emojis = [ 'flag', 'nepal', ], + name: 'nepal', }, { code: '๐Ÿ‡ณ๐Ÿ‡ท', @@ -11265,6 +12545,7 @@ const emojis = [ 'flag', 'nauru', ], + name: 'nauru', }, { code: '๐Ÿ‡ณ๐Ÿ‡บ', @@ -11272,6 +12553,7 @@ const emojis = [ 'flag', 'niue', ], + name: 'niue', }, { code: '๐Ÿ‡ณ๐Ÿ‡ฟ', @@ -11280,6 +12562,7 @@ const emojis = [ 'new', 'new zealand', ], + name: 'new_zealand', }, { code: '๐Ÿ‡ด๐Ÿ‡ฒ', @@ -11287,6 +12570,7 @@ const emojis = [ 'flag', 'oman', ], + name: 'oman', }, { code: '๐Ÿ‡ต๐Ÿ‡ฆ', @@ -11294,6 +12578,7 @@ const emojis = [ 'flag', 'panama', ], + name: 'panama', }, { code: '๐Ÿ‡ต๐Ÿ‡ช', @@ -11301,6 +12586,7 @@ const emojis = [ 'flag', 'peru', ], + name: 'peru', }, { code: '๐Ÿ‡ต๐Ÿ‡ซ', @@ -11309,6 +12595,7 @@ const emojis = [ 'french', 'polynesia', ], + name: 'french_polynesia', }, { code: '๐Ÿ‡ต๐Ÿ‡ฌ', @@ -11318,6 +12605,7 @@ const emojis = [ 'new', 'papua new guinea', ], + name: 'papua_new_guinea', }, { code: '๐Ÿ‡ต๐Ÿ‡ญ', @@ -11325,6 +12613,7 @@ const emojis = [ 'flag', 'philippines', ], + name: 'philippines', }, { code: '๐Ÿ‡ต๐Ÿ‡ฐ', @@ -11332,6 +12621,7 @@ const emojis = [ 'flag', 'pakistan', ], + name: 'pakistan', }, { code: '๐Ÿ‡ต๐Ÿ‡ฑ', @@ -11339,6 +12629,7 @@ const emojis = [ 'flag', 'poland', ], + name: 'poland', }, { code: '๐Ÿ‡ต๐Ÿ‡ฒ', @@ -11348,6 +12639,7 @@ const emojis = [ 'pierre', 'saint', ], + name: 'st_pierre_miquelon', }, { code: '๐Ÿ‡ต๐Ÿ‡ณ', @@ -11356,6 +12648,7 @@ const emojis = [ 'island', 'pitcairn', ], + name: 'pitcairn_islands', }, { code: '๐Ÿ‡ต๐Ÿ‡ท', @@ -11363,6 +12656,7 @@ const emojis = [ 'flag', 'puerto rico', ], + name: 'puerto_rico', }, { code: '๐Ÿ‡ต๐Ÿ‡ธ', @@ -11370,6 +12664,7 @@ const emojis = [ 'flag', 'palestine', ], + name: 'palestinian_territories', }, { code: '๐Ÿ‡ต๐Ÿ‡น', @@ -11377,6 +12672,7 @@ const emojis = [ 'flag', 'portugal', ], + name: 'portugal', }, { code: '๐Ÿ‡ต๐Ÿ‡ผ', @@ -11384,6 +12680,7 @@ const emojis = [ 'flag', 'palau', ], + name: 'palau', }, { code: '๐Ÿ‡ต๐Ÿ‡พ', @@ -11391,6 +12688,7 @@ const emojis = [ 'flag', 'paraguay', ], + name: 'paraguay', }, { code: '๐Ÿ‡ถ๐Ÿ‡ฆ', @@ -11398,6 +12696,7 @@ const emojis = [ 'flag', 'qatar', ], + name: 'qatar', }, { code: '๐Ÿ‡ท๐Ÿ‡ช', @@ -11406,6 +12705,7 @@ const emojis = [ 'reunion', 'rรฉunion', ], + name: 'reunion', }, { code: '๐Ÿ‡ท๐Ÿ‡ด', @@ -11413,6 +12713,7 @@ const emojis = [ 'flag', 'romania', ], + name: 'romania', }, { code: '๐Ÿ‡ท๐Ÿ‡ธ', @@ -11420,6 +12721,7 @@ const emojis = [ 'flag', 'serbia', ], + name: 'serbia', }, { code: '๐Ÿ‡ท๐Ÿ‡บ', @@ -11427,6 +12729,7 @@ const emojis = [ 'flag', 'russia', ], + name: 'ru', }, { code: '๐Ÿ‡ท๐Ÿ‡ผ', @@ -11434,6 +12737,7 @@ const emojis = [ 'flag', 'rwanda', ], + name: 'rwanda', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฆ', @@ -11441,6 +12745,7 @@ const emojis = [ 'flag', 'saudi arabia', ], + name: 'saudi_arabia', }, { code: '๐Ÿ‡ธ๐Ÿ‡ง', @@ -11449,6 +12754,7 @@ const emojis = [ 'island', 'solomon', ], + name: 'solomon_islands', }, { code: '๐Ÿ‡ธ๐Ÿ‡จ', @@ -11456,6 +12762,7 @@ const emojis = [ 'flag', 'seychelles', ], + name: 'seychelles', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฉ', @@ -11463,6 +12770,7 @@ const emojis = [ 'flag', 'sudan', ], + name: 'sudan', }, { code: '๐Ÿ‡ธ๐Ÿ‡ช', @@ -11470,6 +12778,7 @@ const emojis = [ 'flag', 'sweden', ], + name: 'sweden', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฌ', @@ -11477,6 +12786,7 @@ const emojis = [ 'flag', 'singapore', ], + name: 'singapore', }, { code: '๐Ÿ‡ธ๐Ÿ‡ญ', @@ -11485,6 +12795,7 @@ const emojis = [ 'helena', 'saint', ], + name: 'st_helena', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฎ', @@ -11492,6 +12803,7 @@ const emojis = [ 'flag', 'slovenia', ], + name: 'slovenia', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฏ', @@ -11500,6 +12812,7 @@ const emojis = [ 'jan mayen', 'svalbard', ], + name: 'svalbard_jan_mayen', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฐ', @@ -11507,6 +12820,7 @@ const emojis = [ 'flag', 'slovakia', ], + name: 'slovakia', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฑ', @@ -11514,6 +12828,7 @@ const emojis = [ 'flag', 'sierra leone', ], + name: 'sierra_leone', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฒ', @@ -11521,6 +12836,7 @@ const emojis = [ 'flag', 'san marino', ], + name: 'san_marino', }, { code: '๐Ÿ‡ธ๐Ÿ‡ณ', @@ -11528,6 +12844,7 @@ const emojis = [ 'flag', 'senegal', ], + name: 'senegal', }, { code: '๐Ÿ‡ธ๐Ÿ‡ด', @@ -11535,6 +12852,7 @@ const emojis = [ 'flag', 'somalia', ], + name: 'somalia', }, { code: '๐Ÿ‡ธ๐Ÿ‡ท', @@ -11542,6 +12860,7 @@ const emojis = [ 'flag', 'suriname', ], + name: 'suriname', }, { code: '๐Ÿ‡ธ๐Ÿ‡ธ', @@ -11551,6 +12870,7 @@ const emojis = [ 'south sudan', 'sudan', ], + name: 'south_sudan', }, { code: '๐Ÿ‡ธ๐Ÿ‡น', @@ -11561,6 +12881,7 @@ const emojis = [ 'sao tome', 'sรฃo tomรฉ', ], + name: 'sao_tome_principe', }, { code: '๐Ÿ‡ธ๐Ÿ‡ป', @@ -11568,6 +12889,7 @@ const emojis = [ 'el salvador', 'flag', ], + name: 'el_salvador', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฝ', @@ -11576,6 +12898,7 @@ const emojis = [ 'maarten', 'sint', ], + name: 'sint_maarten', }, { code: '๐Ÿ‡ธ๐Ÿ‡พ', @@ -11583,6 +12906,7 @@ const emojis = [ 'flag', 'syria', ], + name: 'syria', }, { code: '๐Ÿ‡ธ๐Ÿ‡ฟ', @@ -11590,6 +12914,7 @@ const emojis = [ 'flag', 'swaziland', ], + name: 'swaziland', }, { code: '๐Ÿ‡น๐Ÿ‡ฆ', @@ -11597,6 +12922,7 @@ const emojis = [ 'flag', 'tristan da cunha', ], + name: 'tristan_da_cunha', }, { code: '๐Ÿ‡น๐Ÿ‡จ', @@ -11606,6 +12932,7 @@ const emojis = [ 'island', 'turks', ], + name: 'turks_caicos_islands', }, { code: '๐Ÿ‡น๐Ÿ‡ฉ', @@ -11613,6 +12940,7 @@ const emojis = [ 'chad', 'flag', ], + name: 'chad', }, { code: '๐Ÿ‡น๐Ÿ‡ซ', @@ -11621,6 +12949,7 @@ const emojis = [ 'flag', 'french', ], + name: 'french_southern_territories', }, { code: '๐Ÿ‡น๐Ÿ‡ฌ', @@ -11628,6 +12957,7 @@ const emojis = [ 'flag', 'togo', ], + name: 'togo', }, { code: '๐Ÿ‡น๐Ÿ‡ญ', @@ -11635,6 +12965,7 @@ const emojis = [ 'flag', 'thailand', ], + name: 'thailand', }, { code: '๐Ÿ‡น๐Ÿ‡ฏ', @@ -11642,6 +12973,7 @@ const emojis = [ 'flag', 'tajikistan', ], + name: 'tajikistan', }, { code: '๐Ÿ‡น๐Ÿ‡ฐ', @@ -11649,6 +12981,7 @@ const emojis = [ 'flag', 'tokelau', ], + name: 'tokelau', }, { code: '๐Ÿ‡น๐Ÿ‡ฑ', @@ -11658,6 +12991,7 @@ const emojis = [ 'flag', 'timor-leste', ], + name: 'timor_leste', }, { code: '๐Ÿ‡น๐Ÿ‡ฒ', @@ -11665,6 +12999,7 @@ const emojis = [ 'flag', 'turkmenistan', ], + name: 'turkmenistan', }, { code: '๐Ÿ‡น๐Ÿ‡ณ', @@ -11672,6 +13007,7 @@ const emojis = [ 'flag', 'tunisia', ], + name: 'tunisia', }, { code: '๐Ÿ‡น๐Ÿ‡ด', @@ -11679,6 +13015,7 @@ const emojis = [ 'flag', 'tonga', ], + name: 'tonga', }, { code: '๐Ÿ‡น๐Ÿ‡ท', @@ -11686,6 +13023,7 @@ const emojis = [ 'flag', 'turkey', ], + name: 'tr', }, { code: '๐Ÿ‡น๐Ÿ‡น', @@ -11694,6 +13032,7 @@ const emojis = [ 'tobago', 'trinidad', ], + name: 'trinidad_tobago', }, { code: '๐Ÿ‡น๐Ÿ‡ป', @@ -11701,6 +13040,7 @@ const emojis = [ 'flag', 'tuvalu', ], + name: 'tuvalu', }, { code: '๐Ÿ‡น๐Ÿ‡ผ', @@ -11709,6 +13049,7 @@ const emojis = [ 'flag', 'taiwan', ], + name: 'taiwan', }, { code: '๐Ÿ‡น๐Ÿ‡ฟ', @@ -11716,6 +13057,7 @@ const emojis = [ 'flag', 'tanzania', ], + name: 'tanzania', }, { code: '๐Ÿ‡บ๐Ÿ‡ฆ', @@ -11723,6 +13065,7 @@ const emojis = [ 'flag', 'ukraine', ], + name: 'ukraine', }, { code: '๐Ÿ‡บ๐Ÿ‡ฌ', @@ -11730,6 +13073,7 @@ const emojis = [ 'flag', 'uganda', ], + name: 'uganda', }, { code: '๐Ÿ‡บ๐Ÿ‡ฒ', @@ -11743,6 +13087,7 @@ const emojis = [ 'us', 'usa', ], + name: 'us_outlying_islands', }, { code: '๐Ÿ‡บ๐Ÿ‡ธ', @@ -11753,6 +13098,7 @@ const emojis = [ 'united', 'united states', ], + name: 'us', }, { code: '๐Ÿ‡บ๐Ÿ‡พ', @@ -11760,6 +13106,7 @@ const emojis = [ 'flag', 'uruguay', ], + name: 'uruguay', }, { code: '๐Ÿ‡บ๐Ÿ‡ฟ', @@ -11767,6 +13114,7 @@ const emojis = [ 'flag', 'uzbekistan', ], + name: 'uzbekistan', }, { code: '๐Ÿ‡ป๐Ÿ‡ฆ', @@ -11774,6 +13122,7 @@ const emojis = [ 'flag', 'vatican', ], + name: 'vatican_city', }, { code: '๐Ÿ‡ป๐Ÿ‡จ', @@ -11783,6 +13132,7 @@ const emojis = [ 'saint', 'vincent', ], + name: 'st_vincent_grenadines', }, { code: '๐Ÿ‡ป๐Ÿ‡ช', @@ -11790,6 +13140,7 @@ const emojis = [ 'flag', 'venezuela', ], + name: 'venezuela', }, { code: '๐Ÿ‡ป๐Ÿ‡ฌ', @@ -11799,6 +13150,7 @@ const emojis = [ 'island', 'virgin', ], + name: 'british_virgin_islands', }, { code: '๐Ÿ‡ป๐Ÿ‡ฎ', @@ -11813,6 +13165,7 @@ const emojis = [ 'usa', 'virgin', ], + name: 'us_virgin_islands', }, { code: '๐Ÿ‡ป๐Ÿ‡ณ', @@ -11821,6 +13174,7 @@ const emojis = [ 'viet nam', 'vietnam', ], + name: 'vietnam', }, { code: '๐Ÿ‡ป๐Ÿ‡บ', @@ -11828,6 +13182,7 @@ const emojis = [ 'flag', 'vanuatu', ], + name: 'vanuatu', }, { code: '๐Ÿ‡ผ๐Ÿ‡ซ', @@ -11836,6 +13191,7 @@ const emojis = [ 'futuna', 'wallis', ], + name: 'wallis_futuna', }, { code: '๐Ÿ‡ผ๐Ÿ‡ธ', @@ -11843,6 +13199,7 @@ const emojis = [ 'flag', 'samoa', ], + name: 'samoa', }, { code: '๐Ÿ‡ฝ๐Ÿ‡ฐ', @@ -11850,6 +13207,7 @@ const emojis = [ 'flag', 'kosovo', ], + name: 'kosovo', }, { code: '๐Ÿ‡พ๐Ÿ‡ช', @@ -11857,6 +13215,7 @@ const emojis = [ 'flag', 'yemen', ], + name: 'yemen', }, { code: '๐Ÿ‡พ๐Ÿ‡น', @@ -11864,6 +13223,7 @@ const emojis = [ 'flag', 'mayotte', ], + name: 'mayotte', }, { code: '๐Ÿ‡ฟ๐Ÿ‡ฆ', @@ -11872,6 +13232,7 @@ const emojis = [ 'south', 'south africa', ], + name: 'south_africa', }, { code: '๐Ÿ‡ฟ๐Ÿ‡ฒ', @@ -11879,6 +13240,7 @@ const emojis = [ 'flag', 'zambia', ], + name: 'zambia', }, { code: '๐Ÿ‡ฟ๐Ÿ‡ผ', @@ -11886,6 +13248,7 @@ const emojis = [ 'flag', 'zimbabwe', ], + name: 'zimbabwe', }, ]; diff --git a/contributingGuides/FORMS.md b/contributingGuides/FORMS.md index b1dcf2dd675b..78eae93b696c 100644 --- a/contributingGuides/FORMS.md +++ b/contributingGuides/FORMS.md @@ -198,6 +198,38 @@ function onSubmit(values) { ``` +`Form.js` also works with inputs nested in a custom component, e.g. [AddressForm](https://github.com/Expensify/App/blob/86579225ff30b21dea507347735259637a2df461/src/pages/ReimbursementAccount/AddressForm.js). The only exception is that the nested component shouldn't be wrapped around any HoC. + +```jsx +const BankAccountForm = () => ( + <> + + + + + +); + +// ... +
+ + +``` + ### Props provided to Form inputs The following prop is available to form inputs: diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 5d2160fb41a3..3b59b633fbb4 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 1.2.18.3 + 1.2.18.4 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index bbfc0448c762..8317aaa4f4df 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.2.18.3 + 1.2.18.4 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c54a14feeaf9..3005af991390 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -17,14 +17,14 @@ PODS: - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.70.4) - - FBReactNativeSpec (0.70.4): + - FBLazyVector (0.70.5) + - FBReactNativeSpec (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.4) - - RCTTypeSafety (= 0.70.4) - - React-Core (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) + - RCTRequired (= 0.70.5) + - RCTTypeSafety (= 0.70.5) + - React-Core (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) - Firebase/Analytics (8.8.0): - Firebase/Core - Firebase/Core (8.8.0): @@ -249,214 +249,214 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.70.4) - - RCTTypeSafety (0.70.4): - - FBLazyVector (= 0.70.4) - - RCTRequired (= 0.70.4) - - React-Core (= 0.70.4) - - React (0.70.4): - - React-Core (= 0.70.4) - - React-Core/DevSupport (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-RCTActionSheet (= 0.70.4) - - React-RCTAnimation (= 0.70.4) - - React-RCTBlob (= 0.70.4) - - React-RCTImage (= 0.70.4) - - React-RCTLinking (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - React-RCTSettings (= 0.70.4) - - React-RCTText (= 0.70.4) - - React-RCTVibration (= 0.70.4) - - React-bridging (0.70.4): + - RCTRequired (0.70.5) + - RCTTypeSafety (0.70.5): + - FBLazyVector (= 0.70.5) + - RCTRequired (= 0.70.5) + - React-Core (= 0.70.5) + - React (0.70.5): + - React-Core (= 0.70.5) + - React-Core/DevSupport (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-RCTActionSheet (= 0.70.5) + - React-RCTAnimation (= 0.70.5) + - React-RCTBlob (= 0.70.5) + - React-RCTImage (= 0.70.5) + - React-RCTLinking (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - React-RCTSettings (= 0.70.5) + - React-RCTText (= 0.70.5) + - React-RCTVibration (= 0.70.5) + - React-bridging (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.4) - - React-callinvoker (0.70.4) - - React-Codegen (0.70.4): - - FBReactNativeSpec (= 0.70.4) + - React-jsi (= 0.70.5) + - React-callinvoker (0.70.5) + - React-Codegen (0.70.5): + - FBReactNativeSpec (= 0.70.5) - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.4) - - RCTTypeSafety (= 0.70.4) - - React-Core (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-Core (0.70.4): + - RCTRequired (= 0.70.5) + - RCTTypeSafety (= 0.70.5) + - React-Core (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-Core (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-Core/Default (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/CoreModulesHeaders (0.70.4): + - React-Core/CoreModulesHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/Default (0.70.4): + - React-Core/Default (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/DevSupport (0.70.4): + - React-Core/DevSupport (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-Core/Default (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.4): + - React-Core/RCTActionSheetHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTAnimationHeaders (0.70.4): + - React-Core/RCTAnimationHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTBlobHeaders (0.70.4): + - React-Core/RCTBlobHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTImageHeaders (0.70.4): + - React-Core/RCTImageHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTLinkingHeaders (0.70.4): + - React-Core/RCTLinkingHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTNetworkHeaders (0.70.4): + - React-Core/RCTNetworkHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTSettingsHeaders (0.70.4): + - React-Core/RCTSettingsHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTTextHeaders (0.70.4): + - React-Core/RCTTextHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTVibrationHeaders (0.70.4): + - React-Core/RCTVibrationHeaders (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-Core/RCTWebSocket (0.70.4): + - React-Core/RCTWebSocket (0.70.5): - glog - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-Core/Default (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-perflogger (= 0.70.5) - Yoga - - React-CoreModules (0.70.4): + - React-CoreModules (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/CoreModulesHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTImage (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-cxxreact (0.70.4): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/CoreModulesHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTImage (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-cxxreact (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-logger (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-runtimeexecutor (= 0.70.4) - - React-hermes (0.70.4): + - React-callinvoker (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-logger (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-runtimeexecutor (= 0.70.5) + - React-hermes (0.70.5): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-jsi (0.70.4): + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-jsiexecutor (= 0.70.5) + - React-jsinspector (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-jsi (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.4) - - React-jsi/Default (0.70.4): + - React-jsi/Default (= 0.70.5) + - React-jsi/Default (0.70.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.4): + - React-jsiexecutor (0.70.5): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-jsinspector (0.70.4) - - React-logger (0.70.4): + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-perflogger (= 0.70.5) + - React-jsinspector (0.70.5) + - React-logger (0.70.5): - glog - react-native-blob-util (0.16.2): - React-Core @@ -495,72 +495,72 @@ PODS: - ReactCommon/turbomodule/core - react-native-webview (11.23.0): - React-Core - - React-perflogger (0.70.4) - - React-RCTActionSheet (0.70.4): - - React-Core/RCTActionSheetHeaders (= 0.70.4) - - React-RCTAnimation (0.70.4): + - React-perflogger (0.70.5) + - React-RCTActionSheet (0.70.5): + - React-Core/RCTActionSheetHeaders (= 0.70.5) + - React-RCTAnimation (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTAnimationHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTBlob (0.70.4): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTAnimationHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTBlob (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.4) - - React-Core/RCTBlobHeaders (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTImage (0.70.4): + - React-Codegen (= 0.70.5) + - React-Core/RCTBlobHeaders (= 0.70.5) + - React-Core/RCTWebSocket (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTImage (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTImageHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTLinking (0.70.4): - - React-Codegen (= 0.70.4) - - React-Core/RCTLinkingHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTNetwork (0.70.4): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTImageHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - React-RCTNetwork (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTLinking (0.70.5): + - React-Codegen (= 0.70.5) + - React-Core/RCTLinkingHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTNetwork (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTNetworkHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTSettings (0.70.4): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTNetworkHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTSettings (0.70.5): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTSettingsHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTText (0.70.4): - - React-Core/RCTTextHeaders (= 0.70.4) - - React-RCTVibration (0.70.4): + - RCTTypeSafety (= 0.70.5) + - React-Codegen (= 0.70.5) + - React-Core/RCTSettingsHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-RCTText (0.70.5): + - React-Core/RCTTextHeaders (= 0.70.5) + - React-RCTVibration (0.70.5): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.4) - - React-Core/RCTVibrationHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-runtimeexecutor (0.70.4): - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (0.70.4): + - React-Codegen (= 0.70.5) + - React-Core/RCTVibrationHeaders (= 0.70.5) + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (= 0.70.5) + - React-runtimeexecutor (0.70.5): + - React-jsi (= 0.70.5) + - ReactCommon/turbomodule/core (0.70.5): - DoubleConversion - glog - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.4) - - React-callinvoker (= 0.70.4) - - React-Core (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-logger (= 0.70.4) - - React-perflogger (= 0.70.4) + - React-bridging (= 0.70.5) + - React-callinvoker (= 0.70.5) + - React-Core (= 0.70.5) + - React-cxxreact (= 0.70.5) + - React-jsi (= 0.70.5) + - React-logger (= 0.70.5) + - React-perflogger (= 0.70.5) - RNCAsyncStorage (1.17.10): - React-Core - RNCClipboard (1.5.1): @@ -920,9 +920,9 @@ SPEC CHECKSUMS: Airship: 4657c3d5118441240e04674d9445cbd6e363c956 boost: a7c83b31436843459a1961bfd74b96033dc77234 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 - FBLazyVector: 8a28262f61fbe40c04ce8677b8d835d97c18f1b3 - FBReactNativeSpec: b475991eb2d8da6a4ec32d09a8df31b0247fa87d + DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + FBLazyVector: affa4ba1bfdaac110a789192f4d452b053a86624 + FBReactNativeSpec: fe8b5f1429cfe83a8d72dc8ed61dc7704cac8745 Firebase: 629510f1a9ddb235f3a7c5c8ceb23ba887f0f814 FirebaseABTesting: 10cbce8db9985ae2e3847ea44e9947dd18f94e10 FirebaseAnalytics: 5506ea8b867d8423485a84b4cd612d279f7b0b8a @@ -942,7 +942,7 @@ SPEC CHECKSUMS: Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 5337263514dd6f09803962437687240c5dc39aa4 + glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b GoogleAppMeasurement: 5ba1164e3c844ba84272555e916d0a6d3d977e91 GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 @@ -960,20 +960,20 @@ SPEC CHECKSUMS: Plaid: 6beadc0828cfd5396c5905931b9503493bbc139a PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: 49a2c4d4215580d8b24ed538ae01b6de20b43a76 - RCTTypeSafety: 55d538399fe8b51e5cd862e2ec2f9b135b07e783 - React: 413fd7d791365c2c5742b60493d3ab450ca1a210 - React-bridging: 8e577e404677d57daa0310db63e6a27328a57207 - React-callinvoker: d0ae2f0ea66bcf29a3e42a895428d2f01473d2ea - React-Codegen: 273200ed3b02d35fd1755aebe0eb3319b037d950 - React-Core: f42a10403076c1114f8c50f063ddafc9eea92fff - React-CoreModules: 1ed78c63dad96f40b123d4d4ca455e09ccd8aaed - React-cxxreact: 7d30af80adb5fe6a97646a06540c19e61736aa15 - React-hermes: 185ce251487bcb812c34ce33b1ab6412419b43a3 - React-jsi: 9b2b4ac1642b72bffcd74550f0caa0926b3f8a4d - React-jsiexecutor: 4a893fc8f683b91befcaf56c44ad8be4506b6828 - React-jsinspector: 1d5a9e84e419a57cabc23249aec3d837d1b03a80 - React-logger: f8071ad48248781d5afdb8a07f778758529d3019 + RCTRequired: 21229f84411088e5d8538f21212de49e46cc83e2 + RCTTypeSafety: 62eed57a32924b09edaaf170a548d1fc96223086 + React: f0254ccddeeef1defe66c6b1bb9133a4f040792b + React-bridging: e46911666b7ec19538a620a221d6396cd293d687 + React-callinvoker: 66b62e2c34546546b2f21ab0b7670346410a2b53 + React-Codegen: b6999435966df3bdf82afa3f319ba0d6f9a8532a + React-Core: dabbc9d1fe0a11d884e6ee1599789cf8eb1058a5 + React-CoreModules: 5b6b7668f156f73a56420df9ec68ca2ec8f2e818 + React-cxxreact: c7ca2baee46db22a30fce9e639277add3c3f6ad1 + React-hermes: c93e1d759ad5560dfea54d233013d7d2c725c286 + React-jsi: a565dcb49130ed20877a9bb1105ffeecbb93d02d + React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b + React-jsinspector: badd81696361249893a80477983e697aab3c1a34 + React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c react-native-blob-util: c3b0faecd2919db568e9d552084396f3e50b57c7 react-native-cameraroll: 2957f2bce63ae896a848fbe0d5352c1bd4d20866 react-native-config: 7cd105e71d903104e8919261480858940a6b9c0e @@ -989,18 +989,18 @@ SPEC CHECKSUMS: react-native-render-html: 96c979fe7452a0a41559685d2f83b12b93edac8c react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a react-native-webview: e771bc375f789ebfa02a26939a57dbc6fa897336 - React-perflogger: 5e41b01b35d97cc1b0ea177181eb33b5c77623b6 - React-RCTActionSheet: 48949f30b24200c82f3dd27847513be34e06a3ae - React-RCTAnimation: 96af42c97966fcd53ed9c31bee6f969c770312b6 - React-RCTBlob: 22aa326a2b34eea3299a2274ce93e102f8383ed9 - React-RCTImage: 1df0dbdb53609778f68830ccdd07ff3b40812837 - React-RCTLinking: eef4732d9102a10174115a727588d199711e376c - React-RCTNetwork: 18716f00568ec203df2192d35f4a74d1d9b00675 - React-RCTSettings: 1dc8a5e5272cea1bad2f8d9b4e6bac91b846749b - React-RCTText: 17652c6294903677fb3d754b5955ac293347782c - React-RCTVibration: 0e247407238d3bd6b29d922d7b5de0404359431b - React-runtimeexecutor: 5407e26b5aaafa9b01a08e33653255f8247e7c31 - ReactCommon: abf3605a56f98b91671d0d1327addc4ffb87af77 + React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931 + React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247 + React-RCTAnimation: 578eebac706428e68466118e84aeacf3a282b4da + React-RCTBlob: f47a0aa61e7d1fb1a0e13da832b0da934939d71a + React-RCTImage: 60f54b66eed65d86b6dffaf4733d09161d44929d + React-RCTLinking: 91073205aeec4b29450ca79b709277319368ac9e + React-RCTNetwork: ca91f2c9465a7e335c8a5fae731fd7f10572213b + React-RCTSettings: 1a9a5d01337d55c18168c1abe0f4a589167d134a + React-RCTText: c591e8bd9347a294d8416357ca12d779afec01d5 + React-RCTVibration: 8e5c8c5d17af641f306d7380d8d0fe9b3c142c48 + React-runtimeexecutor: 7401c4a40f8728fd89df4a56104541b760876117 + ReactCommon: c9246996e73bf75a2c6c3ff15f1e16707cdc2da9 RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNCPicker: 0b65be85fe7954fbb2062ef079e3d1cde252d888 @@ -1020,7 +1020,7 @@ SPEC CHECKSUMS: SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 urbanairship-react-native: 7e2e9a84c541b1d04798e51f7f390a2d5806eac0 - Yoga: 1f02ef4ce4469aefc36167138441b27d988282b1 + Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: 5745ec909229219e7469609dba23118be023f564 diff --git a/package-lock.json b/package-lock.json index 821195655b59..d4990bd0597c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.2.18-3", + "version": "1.2.18-4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.2.18-3", + "version": "1.2.18-4", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -56,7 +56,7 @@ "react-collapse": "^5.1.0", "react-content-loader": "^6.1.0", "react-dom": "18.1.0", - "react-native": "npm:@expensify/react-native@0.70.4", + "react-native": "npm:@expensify/react-native@0.70.5", "react-native-blob-util": "^0.16.2", "react-native-collapsible": "^1.6.0", "react-native-config": "^1.4.5", @@ -35421,9 +35421,9 @@ }, "node_modules/react-native": { "name": "@expensify/react-native", - "version": "0.70.4", - "resolved": "https://registry.npmjs.org/@expensify/react-native/-/react-native-0.70.4.tgz", - "integrity": "sha512-j4lyTmvFHv9bDp7hVx8pQrp05eUiVUgnOmYdeaSObtLbFdImYOdnJMhPWejuRKl/E5D5sBz9hOAtYp1/i6GBOA==", + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/@expensify/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-C4Y0XVMSW2tmgnENoT31L/aBaPz2CmAsn8NJE0IPjBWE0xkcMaUh0u4Mx2v+relQ6bDvknB96/am0TsqMak1Kg==", "dependencies": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "^9.0.0", @@ -70120,9 +70120,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-native": { - "version": "npm:@expensify/react-native@0.70.4", - "resolved": "https://registry.npmjs.org/@expensify/react-native/-/react-native-0.70.4.tgz", - "integrity": "sha512-j4lyTmvFHv9bDp7hVx8pQrp05eUiVUgnOmYdeaSObtLbFdImYOdnJMhPWejuRKl/E5D5sBz9hOAtYp1/i6GBOA==", + "version": "npm:@expensify/react-native@0.70.5", + "resolved": "https://registry.npmjs.org/@expensify/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-C4Y0XVMSW2tmgnENoT31L/aBaPz2CmAsn8NJE0IPjBWE0xkcMaUh0u4Mx2v+relQ6bDvknB96/am0TsqMak1Kg==", "requires": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "^9.0.0", diff --git a/package.json b/package.json index fd84147bfb86..d6c63c40cc87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.2.18-3", + "version": "1.2.18-4", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", @@ -84,7 +84,7 @@ "react-collapse": "^5.1.0", "react-content-loader": "^6.1.0", "react-dom": "18.1.0", - "react-native": "npm:@expensify/react-native@0.70.4", + "react-native": "npm:@expensify/react-native@0.70.5", "react-native-blob-util": "^0.16.2", "react-native-collapsible": "^1.6.0", "react-native-config": "^1.4.5", diff --git a/src/CONST.js b/src/CONST.js index e43686b0f445..26c0a255f248 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -357,6 +357,7 @@ const CONST = { REPORT_ACTION_ITEM_LAYOUT_DEBOUNCE_TIME: 1500, TOOLTIP_SENSE: 1000, SPINNER_TIMEOUT: 15 * 1000, + TRIE_INITIALIZATION: 'trie_initialization', }, PRIORITY_MODE: { GSD: 'gsd', @@ -735,13 +736,16 @@ const CONST = { // eslint-disable-next-line max-len HYPERLINK: /^(?:(?:(?:https?|ftp):\/\/)?)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i, - // eslint-disable-next-line max-len, no-misleading-character-class - EMOJIS: /(?:\uD83D(?:\uDC41\u200D\uD83D\uDDE8|\uDC68\u200D\uD83D[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC69\u200D\uD83D\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g, TAX_ID: /^\d{9}$/, NON_NUMERIC: /\D/g, // Extract attachment's source from the data's html string ATTACHMENT_DATA: /(data-expensify-source|data-name)="([^"]+)"/g, + + // eslint-disable-next-line max-len, no-misleading-character-class + EMOJIS: /(?:\uD83D(?:\uDC41\u200D\uD83D\uDDE8|\uDC68\u200D\uD83D[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC69\u200D\uD83D\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g, + EMOJI_NAME: /:[\w+-]+:/g, + EMOJI_SUGGESTIONS: /:[a-zA-Z]{1,20}(\s[a-zA-Z]{0,20})?$/, }, PRONOUNS: { diff --git a/src/ONYXKEYS.js b/src/ONYXKEYS.js index 0b1f45006fc2..b4d3998db100 100755 --- a/src/ONYXKEYS.js +++ b/src/ONYXKEYS.js @@ -155,9 +155,6 @@ export default { // Is report data loading? IS_LOADING_REPORT_DATA: 'isLoadingReportData', - // Is policy data loading? - IS_LOADING_POLICY_DATA: 'isLoadingPolicyData', - // Is Keyboard shortcuts modal open? IS_SHORTCUTS_MODAL_OPEN: 'isShortcutsModalOpen', @@ -175,6 +172,7 @@ export default { ADD_DEBIT_CARD_FORM: 'addDebitCardForm', REQUEST_CALL_FORM: 'requestCallForm', REIMBURSEMENT_ACCOUNT_FORM: 'reimbursementAccount', + WORKSPACE_SETTINGS_FORM: 'workspaceSettingsForm', }, // Whether we should show the compose input or not diff --git a/src/components/ExceededCommentLength.js b/src/components/ExceededCommentLength.js index 51c6af6d6d9c..33f557c66d99 100644 --- a/src/components/ExceededCommentLength.js +++ b/src/components/ExceededCommentLength.js @@ -15,7 +15,7 @@ const ExceededCommentLength = (props) => { } return ( - + {`${props.commentLength}/${CONST.MAX_COMMENT_LENGTH}`} ); diff --git a/src/components/Form.js b/src/components/Form.js index fca7277e1920..b7b5f72edbd5 100644 --- a/src/components/Form.js +++ b/src/components/Form.js @@ -1,3 +1,4 @@ +import lodashGet from 'lodash/get'; import React from 'react'; import {ScrollView, View} from 'react-native'; import PropTypes from 'prop-types'; @@ -148,6 +149,19 @@ class Form extends React.Component { }); } + // Look for any inputs nested in a custom component, e.g AddressForm or IdentityForm + if (_.isFunction(child.type)) { + const nestedChildren = new child.type(child.props); + + if (!React.isValidElement(nestedChildren) || !lodashGet(nestedChildren, 'props.children')) { + return child; + } + + return React.cloneElement(nestedChildren, { + children: this.childrenWrapperWithProps(lodashGet(nestedChildren, 'props.children')), + }); + } + // We check if the child has the inputID prop. // We don't want to pass form props to non form components, e.g. View, Text, etc if (!child.props.inputID) { diff --git a/src/components/LHNOptionsList/OptionRowLHN.js b/src/components/LHNOptionsList/OptionRowLHN.js index 4091d88ee0d7..e3a0ca30c783 100644 --- a/src/components/LHNOptionsList/OptionRowLHN.js +++ b/src/components/LHNOptionsList/OptionRowLHN.js @@ -193,9 +193,15 @@ const OptionRowLHN = (props) => { )} - + {optionItem.hasDraftComment && ( - + )} @@ -203,7 +209,10 @@ const OptionRowLHN = (props) => { )} {optionItem.isPinned && ( - + )} diff --git a/src/components/OptionRow.js b/src/components/OptionRow.js index 0a6a9f7b7a83..89f526a445f4 100644 --- a/src/components/OptionRow.js +++ b/src/components/OptionRow.js @@ -233,9 +233,15 @@ const OptionRow = (props) => { {!props.hideAdditionalOptionStates && ( - + {props.option.hasDraftComment && ( - + )} @@ -243,7 +249,10 @@ const OptionRow = (props) => { )} {props.option.isPinned && ( - + )} diff --git a/src/components/ReportWelcomeText.js b/src/components/ReportWelcomeText.js index 0cb559128768..8ee9718ab1d1 100644 --- a/src/components/ReportWelcomeText.js +++ b/src/components/ReportWelcomeText.js @@ -108,7 +108,7 @@ const ReportWelcomeText = (props) => { displayName, pronouns, tooltip, }, index) => ( - + Navigation.navigate(ROUTES.getDetailsRoute(participants[index]))}> {displayName} diff --git a/src/languages/en.js b/src/languages/en.js index 844f1b090c81..944aafaf2ef7 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -235,6 +235,8 @@ export default { buttonSearch: 'Search', buttonMySettings: 'My settings', fabNewChat: 'New chat(Floating Action)', + chatPinned: 'Chat pinned', + draftedMessage: 'Drafted message', }, iou: { amount: 'Amount', @@ -412,7 +414,7 @@ export default { notOwnerOfFund: 'There was an error setting this card as your default payment method.', setDefaultFailure: 'Something went wrong. Please chat with Concierge for further assistance.', }, - addBankAccountFailure: 'And unexpected error occurred while trying to add your bank account. Please try again.', + addBankAccountFailure: 'An unexpected error occurred while trying to add your bank account. Please try again.', }, transferAmountPage: { transfer: ({amount}) => `Transfer${amount ? ` ${amount}` : ''}`, diff --git a/src/languages/es.js b/src/languages/es.js index 66d8ceb364c1..f0d9950a2e60 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -210,7 +210,7 @@ export default { beginningOfChatHistory: 'Aquรญ comienza tu historial de conversaciones con ', beginningOfChatHistoryPolicyExpenseChatPartOne: 'ยกLa colaboraciรณn entre ', beginningOfChatHistoryPolicyExpenseChatPartTwo: ' y ', - beginningOfChatHistoryPolicyExpenseChatPartThree: ' empieza aquรญ! :tada: Este es el lugar donde chatear, pedir dinero y pagar.', + beginningOfChatHistoryPolicyExpenseChatPartThree: ' empieza aquรญ! ๐ŸŽ‰ Este es el lugar donde chatear, pedir dinero y pagar.', chatWithAccountManager: 'Chatea con tu gestor de cuenta aquรญ', }, newMessages: 'Mensajes nuevos', @@ -235,6 +235,8 @@ export default { buttonSearch: 'Buscar', buttonMySettings: 'Mi configuraciรณn', fabNewChat: 'Nuevo chat', + chatPinned: 'Chat fijado', + draftedMessage: 'Mensaje borrador', }, iou: { amount: 'Importe', @@ -412,7 +414,7 @@ export default { notOwnerOfFund: 'Ha ocurrido un error al establecer esta tarjeta de crรฉdito como tu mรฉtodo de pago predeterminado.', setDefaultFailure: 'No se pudo configurar el mรฉtodo de pago.', }, - addBankAccountFailure: 'Y ocurriรณ un error inesperado al intentar agregar su cuenta bancaria. Intรฉntalo de nuevo.', + addBankAccountFailure: 'Ocurriรณ un error inesperado al intentar agregar su cuenta bancaria. Intรฉntalo de nuevo.', }, transferAmountPage: { transfer: ({amount}) => `Transferir${amount ? ` ${amount}` : ''}`, diff --git a/src/libs/EmojiTrie.js b/src/libs/EmojiTrie.js new file mode 100644 index 000000000000..5d7a15dbf885 --- /dev/null +++ b/src/libs/EmojiTrie.js @@ -0,0 +1,35 @@ +import emojis from '../../assets/emojis'; +import Trie from './Trie'; +import Timing from './actions/Timing'; +import CONST from '../CONST'; + +Timing.start(CONST.TIMING.TRIE_INITIALIZATION); + +const emojisTrie = new Trie(); + +// Inserting all emojis into the Trie object +for (let i = 0; i < emojis.length; i++) { + if (emojis[i].name) { + const node = emojisTrie.search(emojis[i].name); + if (!node) { + emojisTrie.add(emojis[i].name, {code: emojis[i].code, suggestions: []}); + } else { + emojisTrie.update(emojis[i].name, {code: emojis[i].code, suggestions: node.metaData.suggestions}); + } + + if (emojis[i].keywords) { + for (let j = 0; j < emojis[i].keywords.length; j++) { + const keywordNode = emojisTrie.search(emojis[i].keywords[j]); + if (!keywordNode) { + emojisTrie.add(emojis[i].keywords[j], {suggestions: [{code: emojis[i].code, name: emojis[i].name}]}); + } else { + emojisTrie.update(emojis[i].keywords[j], + {...keywordNode.metaData, suggestions: [...keywordNode.metaData.suggestions, {code: emojis[i].code, name: emojis[i].name}]}); + } + } + } + } +} +Timing.end(CONST.TIMING.TRIE_INITIALIZATION); + +export default emojisTrie; diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 133e21d1ba18..3c2fe3fb8f2c 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -4,6 +4,7 @@ import moment from 'moment'; import Str from 'expensify-common/lib/str'; import CONST from '../CONST'; import * as User from './actions/User'; +import emojisTrie from './EmojiTrie'; /** * Get the unicode code of an emoji in base 16. @@ -199,10 +200,65 @@ function addToFrequentlyUsedEmojis(frequentlyUsedEmojis, newEmoji) { User.updateFrequentlyUsedEmojis(frequentEmojiList); } +/** + * Replace any emoji name in a text with the emoji icon + * @param {String} text + * @returns {String} + */ +function replaceEmojis(text) { + let newText = text; + const emojiData = text.match(CONST.REGEX.EMOJI_NAME); + if (!emojiData || emojiData.length === 0) { + return text; + } + for (let i = 0; i < emojiData.length; i++) { + const checkEmoji = emojisTrie.search(emojiData[i].slice(1, -1)); + if (checkEmoji && checkEmoji.metaData.code) { + newText = newText.replace(emojiData[i], checkEmoji.metaData.code); + } + } + return newText; +} + +/** + * Suggest emojis when typing emojis prefix after colon + * @param {String} text + * @param {Number} [limit] - matching emojis limit + * @returns {Array} + */ +function suggestEmojis(text, limit = 5) { + const emojiData = text.match(CONST.REGEX.EMOJI_SUGGESTIONS); + if (emojiData) { + const matching = []; + const nodes = emojisTrie.getAllMatchingWords(emojiData[0].toLowerCase().slice(1)); + for (let j = 0; j < nodes.length; j++) { + if (nodes[j].metaData.code && !_.find(matching, obj => obj.name === nodes[j].name)) { + if (matching.length === limit) { + return matching; + } + matching.unshift({code: nodes[j].metaData.code, name: nodes[j].name}); + } + const suggestions = nodes[j].metaData.suggestions; + for (let i = 0; i < suggestions.length; i++) { + if (matching.length === limit) { + return matching; + } + if (!_.find(matching, obj => obj.name === suggestions[i].name)) { + matching.unshift(suggestions[i]); + } + } + } + return matching; + } + return []; +} + export { isSingleEmoji, getDynamicHeaderIndices, mergeEmojisWithFrequentlyUsedEmojis, addToFrequentlyUsedEmojis, containsOnlyEmojis, + replaceEmojis, + suggestEmojis, }; diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 15095f980246..d6847c096def 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -58,6 +58,13 @@ Onyx.connect({ }, }); +let allReports; +Onyx.connect({ + key: ONYXKEYS.COLLECTION.REPORT, + waitForCollectionCallback: true, + callback: val => allReports = val, +}); + /** * Returns the concatenated title for the PrimaryLogins of a report * @@ -941,7 +948,7 @@ function shouldReportBeInOptionList(report, reportIDFromRoute, isInGSDMode, curr } // Include default rooms unless you're on the default room beta, unless you have an assigned guide - if (isDefaultRoom(report) && !Permissions.canUseDefaultRooms(betas) && !this.hasExpensifyGuidesEmails(lodashGet(report, ['participants'], []))) { + if (isDefaultRoom(report) && !Permissions.canUseDefaultRooms(betas) && !hasExpensifyGuidesEmails(lodashGet(report, ['participants'], []))) { return false; } @@ -958,6 +965,22 @@ function shouldReportBeInOptionList(report, reportIDFromRoute, isInGSDMode, curr return true; } +/** + * Attempts to find a report in onyx with the provided list of participants + * @param {Array} newParticipantList + * @returns {Array|undefined} + */ +function getChatByParticipants(newParticipantList) { + newParticipantList.sort(); + return _.find(allReports, (report) => { + // If the report has been deleted, or there are no participants (like an empty #admins room) then skip it + if (!report || !report.participants) { + return false; + } + return _.isEqual(newParticipantList, report.participants.sort()); + }); +} + export { getReportParticipantsTitle, isReportMessageAttachment, @@ -998,4 +1021,5 @@ export { buildOptimisticIOUReportAction, buildOptimisticReportAction, shouldReportBeInOptionList, + getChatByParticipants, }; diff --git a/src/libs/Trie/TrieNode.js b/src/libs/Trie/TrieNode.js new file mode 100644 index 000000000000..27597f861620 --- /dev/null +++ b/src/libs/Trie/TrieNode.js @@ -0,0 +1,9 @@ +class TrieNode { + constructor() { + this.children = {}; + this.isEndOfWord = false; + this.metaData = {}; + } +} + +export default TrieNode; diff --git a/src/libs/Trie/index.js b/src/libs/Trie/index.js new file mode 100644 index 000000000000..0d6c84415877 --- /dev/null +++ b/src/libs/Trie/index.js @@ -0,0 +1,115 @@ +import _ from 'underscore'; +import TrieNode from './TrieNode'; + +class Trie { + constructor() { + this.root = new TrieNode(); + } + + /** + * Add a word to the Trie + * @param {String} word + * @param {Object} [metaData] - attach additional data to the word + * @param {TrieNode} [node] + * @param {Boolean} [allowEmptyWords] - empty word doesn't have any char, you shouldn't pass a true value for it because we are disallowing adding an empty word + */ + add(word, metaData = {}, node = this.root, allowEmptyWords = false) { + const newWord = word.toLowerCase(); + const newNode = node; + if (newWord.length === 0 && !allowEmptyWords) { + throw new Error('Cannot insert empty word into Trie'); + } + if (newWord.length === 0) { + newNode.isEndOfWord = true; + newNode.metaData = metaData; + return; + } + if (!newNode.children[newWord[0]]) { + newNode.children[newWord[0]] = new TrieNode(); + this.add(newWord.substring(1), metaData, newNode.children[newWord[0]], true); + } + this.add(newWord.substring(1), metaData, newNode.children[newWord[0]], true); + } + + /** + * Search for a word in the Trie. + * @param {String} word + * @returns {Object|null} โ€“ the node for the word if it's found, or null if it's not found + */ + search(word) { + let newWord = word.toLowerCase(); + let node = this.root; + while (newWord.length > 1) { + if (!node.children[newWord[0]]) { + return null; + } + node = node.children[newWord[0]]; + + newWord = newWord.substring(1); + } + return node.children[newWord] && node.children[newWord].isEndOfWord ? node.children[newWord] : null; + } + + /** + * Update a word data in the Trie. + * @param {String} word + * @param {Object} metaData + */ + update(word, metaData) { + let newWord = word.toLowerCase(); + let node = this.root; + while (newWord.length > 1) { + if (!node.children[newWord[0]]) { + throw new Error('Word does not exist in the Trie'); + } + node = node.children[newWord[0]]; + newWord = newWord.substring(1); + } + node.children[newWord].metaData = metaData; + } + + /** + * Find all leaf nodes starting with a substring. + * @param {String} substr + * @param {Number} [limit] - matching words limit + * @returns {Array} + */ + getAllMatchingWords(substr, limit = 5) { + const newSubstr = substr.toLowerCase(); + let node = this.root; + let prefix = ''; + for (let i = 0; i < newSubstr.length; i++) { + prefix += newSubstr[i]; + if (!node.children[newSubstr[i]]) { + return []; + } + node = node.children[newSubstr[i]]; + } + return this.getChildMatching(node, prefix, limit, []); + } + + /** + * Find all leaf nodes that are descendants of a given child node. + * @param {TrieNode} node + * @param {String} prefix + * @param {Number} limit + * @param {Array} [words] + * @returns {Array} + */ + getChildMatching(node, prefix, limit, words = []) { + const matching = words; + if (matching.length >= limit) { + return matching; + } + if (node.isEndOfWord) { + matching.unshift({name: prefix, metaData: node.metaData}); + } + const children = _.keys(node.children); + for (let i = 0; i < children.length; i++) { + this.getChildMatching(node.children[children[i]], prefix + children[i], limit, matching); + } + return matching; + } +} + +export default Trie; diff --git a/src/libs/actions/BankAccounts.js b/src/libs/actions/BankAccounts.js index 53fe6511b5d1..9f6f808e8cbc 100644 --- a/src/libs/actions/BankAccounts.js +++ b/src/libs/actions/BankAccounts.js @@ -310,17 +310,31 @@ function connectBankAccountManually(bankAccountID, accountNumber, routingNumber, }, getVBBADataForOnyx()); } +/** + * Verify the user's identity via Onfido + * + * @param {Number} bankAccountID + * @param {Object} onfidoData + */ +function verifyIdentityForBankAccount(bankAccountID, onfidoData) { + API.write('VerifyIdentityForBankAccount', { + bankAccountID, + onfidoData: JSON.stringify(onfidoData), + }, getVBBADataForOnyx()); +} + export { addPersonalBankAccount, connectBankAccountManually, - deletePaymentBankAccount, clearPersonalBankAccount, clearPlaid, clearOnfidoToken, - updatePersonalInformationForBankAccount, - validateBankAccount, - updateCompanyInformationForBankAccount, - updateBeneficialOwnersForBankAccount, connectBankAccountWithPlaid, + deletePaymentBankAccount, + updateBeneficialOwnersForBankAccount, + updateCompanyInformationForBankAccount, + updatePersonalInformationForBankAccount, updatePlaidData, + validateBankAccount, + verifyIdentityForBankAccount, }; diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js index b51666f0e86f..1df9a904ea20 100644 --- a/src/libs/actions/Policy.js +++ b/src/libs/actions/Policy.js @@ -99,26 +99,6 @@ function updateLastAccessedWorkspace(policyID) { Onyx.set(ONYXKEYS.LAST_ACCESSED_WORKSPACE_POLICY_ID, policyID); } -/** - * Used to update ALL of the policies at once. If a policy is present locally, but not in the policies object passed here it will be removed. - * @param {Object} policyCollection - object of policy key and partial policy object - */ -function updateAllPolicies(policyCollection) { - // Clear out locally cached policies that have been deleted (i.e. they exist locally but not in our new policy collection object) - _.each(allPolicies, (policy, key) => { - if (policyCollection[key]) { - return; - } - - Onyx.set(key, null); - }); - - // Set all the policies - _.each(policyCollection, (policyData, key) => { - Onyx.merge(key, {...policyData, alertMessage: '', errors: null}); - }); -} - /** * Delete the workspace * @@ -168,40 +148,6 @@ function deleteWorkspace(policyID, reports) { } } -/** - * Fetches policy list from the API and saves a simplified version in Onyx, optionally creating a new policy first. - * - * More specifically, this action will: - * 1. Optionally create a new policy. - * 2. Fetch policy summaries. - * 3. Optionally navigate to the new policy. - * 4. Then fetch full policies. - * - * This way, we ensure that there's no race condition between creating the new policy and fetching existing ones, - * and we also don't have to wait for full policies to load before navigating to the new policy. - */ -function getPolicyList() { - Onyx.set(ONYXKEYS.IS_LOADING_POLICY_DATA, true); - DeprecatedAPI.GetPolicySummaryList() - .then((data) => { - if (data.jsonCode !== 200) { - Onyx.set(ONYXKEYS.IS_LOADING_POLICY_DATA, false); - return; - } - - const policyCollection = _.reduce(data.policySummaryList, (memo, policy) => ({ - ...memo, - [`${ONYXKEYS.COLLECTION.POLICY}${policy.id}`]: getSimplifiedPolicyObject(policy, false), - }), {}); - - if (!_.isEmpty(policyCollection)) { - updateAllPolicies(policyCollection); - } - - Onyx.set(ONYXKEYS.IS_LOADING_POLICY_DATA, false); - }); -} - /** * @param {String} policyID */ @@ -978,7 +924,6 @@ function openWorkspaceInvitePage(policyID, clientMemberEmails) { } export { - getPolicyList, loadFullPolicy, removeMembers, addMembersToWorkspace, diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index fc9b2e5a8518..2732f24ac3a8 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -689,39 +689,67 @@ function addComment(reportID, text) { /** * Gets the latest page of report actions and updates the last read message + * If a chat with the passed reportID is not found, we will create a chat based on the passed participantList * * @param {String} reportID + * @param {Array} participantList The list of users that are included in a new chat, not including the user creating it + * @param {Object} newReportObject The optimistic report object created when making a new chat, saved as optimistic data */ -function openReport(reportID) { +function openReport(reportID, participantList = [], newReportObject = {}) { + const onyxData = { + optimisticData: [{ + onyxMethod: CONST.ONYX.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, + value: { + isLoadingReportActions: true, + lastVisitedTimestamp: Date.now(), + lastReadSequenceNumber: getMaxSequenceNumber(reportID), + }, + }], + successData: [{ + onyxMethod: CONST.ONYX.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, + value: { + isLoadingReportActions: false, + pendingFields: { + createChat: null, + }, + errorFields: { + createChat: null, + }, + isOptimisticReport: false, + }, + }], + }; + + // If we are creating a new report, we need to add the optimistic report data and a report action + if (!_.isEmpty(newReportObject)) { + onyxData.optimisticData[0].value = { + ...onyxData.optimisticData[0].value, + ...newReportObject, + pendingFields: { + createChat: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + isOptimisticReport: true, + }; + + // Change the method to set for new reports because it doesn't exist yet, is faster, + // and we need the data to be available when we navigate to the chat page + onyxData.optimisticData[0].onyxMethod = CONST.ONYX.METHOD.SET; + + // Also create a report action so that the page isn't endlessly loading + onyxData.optimisticData[1] = { + onyxMethod: CONST.ONYX.METHOD.SET, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, + value: ReportUtils.buildOptimisticCreatedReportAction(newReportObject.ownerEmail), + }; + } API.write('OpenReport', { reportID, + emailList: participantList ? participantList.join(',') : '', }, - { - optimisticData: [{ - onyxMethod: CONST.ONYX.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, - value: { - isLoadingReportActions: true, - lastVisitedTimestamp: Date.now(), - lastReadSequenceNumber: getMaxSequenceNumber(reportID), - }, - }], - successData: [{ - onyxMethod: CONST.ONYX.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, - value: { - isLoadingReportActions: false, - }, - }], - failureData: [{ - onyxMethod: CONST.ONYX.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`, - value: { - isLoadingReportActions: false, - }, - }], - }); + onyxData); } /** @@ -1271,7 +1299,7 @@ function addPolicyReport(policy, reportName, visibility) { /** * @param {String} reportID The reportID of the policy report (workspace room) */ -function navigateToConciergeChatAndDeletePolicyReport(reportID) { +function navigateToConciergeChatAndDeleteReport(reportID) { navigateToConciergeChat(); Onyx.set(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, null); Onyx.set(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, null); @@ -1483,7 +1511,7 @@ export { navigateToConciergeChat, setReportWithDraft, addPolicyReport, - navigateToConciergeChatAndDeletePolicyReport, + navigateToConciergeChatAndDeleteReport, setIsComposerFullSize, markCommentAsUnread, readNewestAction, diff --git a/src/libs/actions/Welcome.js b/src/libs/actions/Welcome.js index 41c559093941..d1130b9450b2 100644 --- a/src/libs/actions/Welcome.js +++ b/src/libs/actions/Welcome.js @@ -17,7 +17,6 @@ let isReadyPromise = new Promise((resolve) => { let isFirstTimeNewExpensifyUser; let isLoadingReportData = true; -let isLoadingPolicyData = true; let email = ''; /** @@ -28,7 +27,7 @@ let email = ''; * - Whether we have loaded all reports the server knows about */ function checkOnReady() { - if (!_.isBoolean(isFirstTimeNewExpensifyUser) || isLoadingPolicyData || isLoadingReportData) { + if (!_.isBoolean(isFirstTimeNewExpensifyUser) || isLoadingReportData) { return; } @@ -53,15 +52,6 @@ Onyx.connect({ }, }); -Onyx.connect({ - key: ONYXKEYS.IS_LOADING_POLICY_DATA, - initWithStoredValues: false, - callback: (val) => { - isLoadingPolicyData = val; - checkOnReady(); - }, -}); - const allReports = {}; Onyx.connect({ key: ONYXKEYS.COLLECTION.REPORT, @@ -77,7 +67,7 @@ Onyx.connect({ const allPolicies = {}; Onyx.connect({ - key: ONYXKEYS.COLLECTION.REPORT, + key: ONYXKEYS.COLLECTION.POLICY, callback: (val, key) => { if (!val || !key) { return; diff --git a/src/pages/AddPersonalBankAccountPage.js b/src/pages/AddPersonalBankAccountPage.js index f6a747623647..bbd1087893b1 100644 --- a/src/pages/AddPersonalBankAccountPage.js +++ b/src/pages/AddPersonalBankAccountPage.js @@ -103,7 +103,7 @@ class AddPersonalBankAccountPage extends React.Component { diff --git a/src/pages/DetailsPage.js b/src/pages/DetailsPage.js index 24cb7370a48a..dd94fca3f6ee 100755 --- a/src/pages/DetailsPage.js +++ b/src/pages/DetailsPage.js @@ -40,7 +40,7 @@ const propTypes = { /* Onyx Props */ /** The personal details of the person who is logged in */ - personalDetails: personalDetailsPropType.isRequired, + personalDetails: personalDetailsPropType, /** Route params */ route: matchType.isRequired, @@ -48,6 +48,11 @@ const propTypes = { ...withLocalizePropTypes, }; +const defaultProps = { + // When opening someone else's profile (via deep link) before login, this is empty + personalDetails: {}, +}; + /** * Gets the phone number to display for SMS logins * @@ -77,7 +82,7 @@ class DetailsPage extends React.PureComponent { } render() { - const details = this.props.personalDetails[lodashGet(this.props.route.params, 'login')]; + const details = lodashGet(this.props.personalDetails, lodashGet(this.props.route.params, 'login')); if (!details) { // Personal details have not loaded yet return ; @@ -202,6 +207,7 @@ class DetailsPage extends React.PureComponent { } DetailsPage.propTypes = propTypes; +DetailsPage.defaultProps = defaultProps; export default compose( withLocalize, diff --git a/src/pages/EnablePayments/AdditionalDetailsStep.js b/src/pages/EnablePayments/AdditionalDetailsStep.js index 8c2acb783ec1..6dc289234917 100644 --- a/src/pages/EnablePayments/AdditionalDetailsStep.js +++ b/src/pages/EnablePayments/AdditionalDetailsStep.js @@ -92,18 +92,6 @@ class AdditionalDetailsStep extends React.Component { this.activateWallet = this.activateWallet.bind(this); - this.requiredFields = [ - 'legalFirstName', - 'legalLastName', - 'addressStreet', - 'addressCity', - 'addressState', - 'addressZip', - 'phoneNumber', - 'dob', - 'ssn', - ]; - this.errorTranslationKeys = { legalFirstName: 'bankAccount.error.firstName', legalLastName: 'bankAccount.error.lastName', @@ -130,6 +118,16 @@ class AdditionalDetailsStep extends React.Component { }); } + getFirstName() { + const {firstName} = PersonalDetails.extractFirstAndLastNameFromAvailableDetails(this.props.currentUserPersonalDetails); + return this.props.walletAdditionalDetailsDraft.legalFirstName || firstName; + } + + getLastName() { + const {lastName} = PersonalDetails.extractFirstAndLastNameFromAvailableDetails(this.props.currentUserPersonalDetails); + return this.props.walletAdditionalDetailsDraft.legalLastName || lastName; + } + /** * @returns {Object} */ @@ -165,6 +163,14 @@ class AdditionalDetailsStep extends React.Component { const errors = {}; + if (!this.getFirstName()) { + errors.legalFirstName = true; + } + + if (!this.getLastName()) { + errors.legalLastName = true; + } + if (!ValidationUtils.isValidPastDate(this.props.walletAdditionalDetailsDraft.dob)) { errors.dob = true; } @@ -177,6 +183,14 @@ class AdditionalDetailsStep extends React.Component { errors.addressStreet = true; } + if (_.isEmpty(this.props.walletAdditionalDetailsDraft.addressCity)) { + errors.addressCity = true; + } + + if (_.isEmpty(this.props.walletAdditionalDetailsDraft.addressState)) { + errors.addressState = true; + } + if (!ValidationUtils.isValidZipCode(this.props.walletAdditionalDetailsDraft.addressZip)) { errors.addressZip = true; } @@ -193,14 +207,6 @@ class AdditionalDetailsStep extends React.Component { errors.ssn = true; } - _.each(this.requiredFields, (requiredField) => { - if (ValidationUtils.isRequiredFulfilled(this.props.walletAdditionalDetailsDraft[requiredField])) { - return; - } - - errors[requiredField] = true; - }); - Wallet.setAdditionalDetailsErrors(errors); return _.size(errors) === 0; } @@ -212,6 +218,8 @@ class AdditionalDetailsStep extends React.Component { const personalDetails = { ...this.props.walletAdditionalDetailsDraft, phoneNumber: LoginUtils.getPhoneNumberWithoutUSCountryCodeAndSpecialChars(this.props.walletAdditionalDetailsDraft.phoneNumber), + legalFirstName: this.getFirstName(), + legalLastName: this.getLastName(), }; Wallet.updatePersonalDetails(personalDetails); } @@ -266,7 +274,6 @@ class AdditionalDetailsStep extends React.Component { const errorMessage = ErrorUtils.getLatestErrorMessage(this.props.walletAdditionalDetails) || ''; const isErrorVisible = _.size(this.getErrors()) > 0 || Boolean(errorMessage); const shouldAskForFullSSN = this.props.walletAdditionalDetails.errorCode === CONST.WALLET.ERROR.SSN; - const {firstName, lastName} = PersonalDetails.extractFirstAndLastNameFromAvailableDetails(this.props.currentUserPersonalDetails); return ( <> @@ -291,17 +298,18 @@ class AdditionalDetailsStep extends React.Component { containerStyles={[styles.mt4]} label={this.props.translate(this.fieldNameTranslationKeys.legalFirstName)} onChangeText={val => this.clearErrorAndSetValue('legalFirstName', val)} - value={this.props.walletAdditionalDetailsDraft.legalFirstName || firstName} + value={this.getFirstName()} errorText={this.getErrorText('legalFirstName')} /> this.clearErrorAndSetValue('legalLastName', val)} - value={this.props.walletAdditionalDetailsDraft.legalLastName || lastName} + value={this.getLastName()} errorText={this.getErrorText('legalLastName')} /> OptionsListUtils.addSMSDomainIfPhoneNumber(login).toLowerCase()); + let newChat = {}; + const chat = ReportUtils.getChatByParticipants(formattedUserLogins); + if (!chat) { + newChat = ReportUtils.buildOptimisticChatReport(formattedUserLogins); + } + const reportID = chat ? chat.reportID : newChat.reportID; + Report.openReport(reportID, newChat.participants, newChat); + Navigation.navigate(ROUTES.getReportRoute(reportID)); + } + /** * Removes a selected option from list if already selected. If not already selected add this option to the list. * @param {Object} option @@ -179,10 +198,7 @@ class NewChatPage extends Component { * @param {Object} option */ createChat(option) { - Report.fetchOrCreateChatReport([ - this.props.session.email, - option.login, - ]); + this.getOrCreateChatReport([option.login]); } /** @@ -194,8 +210,7 @@ class NewChatPage extends Component { if (userLogins.length < 1) { return; } - - Report.fetchOrCreateChatReport([this.props.session.email, ...userLogins]); + this.getOrCreateChatReport(userLogins); } render() { diff --git a/src/pages/ReimbursementAccount/AddressForm.js b/src/pages/ReimbursementAccount/AddressForm.js index 41c8fa40c5eb..9e734a70d403 100644 --- a/src/pages/ReimbursementAccount/AddressForm.js +++ b/src/pages/ReimbursementAccount/AddressForm.js @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import TextInput from '../../components/TextInput'; import AddressSearch from '../../components/AddressSearch'; import styles from '../../styles/styles'; -import withLocalize, {withLocalizePropTypes} from '../../components/withLocalize'; import CONST from '../../CONST'; import StatePicker from '../../components/StatePicker'; @@ -14,7 +13,7 @@ const propTypes = { streetTranslationKey: PropTypes.string.isRequired, /** Callback fired when a field changes. Passes args as {[fieldName]: val} */ - onFieldChange: PropTypes.func.isRequired, + onFieldChange: PropTypes.func, /** Form values */ values: PropTypes.shape({ @@ -34,32 +33,59 @@ const propTypes = { /** Any errors that can arise from form validation */ errors: PropTypes.objectOf(PropTypes.bool), - ...withLocalizePropTypes, + /** The map for inputID of the inputs */ + inputKeys: PropTypes.shape({ + street: PropTypes.string, + city: PropTypes.string, + state: PropTypes.string, + zipCode: PropTypes.string, + }), + + /** Saves a draft of the input value when used in a form */ + shouldSaveDraft: PropTypes.bool, + + /** Returns translated string for given locale and phrase */ + translate: PropTypes.func.isRequired, }; const defaultProps = { values: { + street: undefined, + city: undefined, + state: undefined, + zipCode: undefined, + }, + errors: {}, + inputKeys: { street: '', city: '', state: '', zipCode: '', }, - errors: {}, + shouldSaveDraft: false, + onFieldChange: () => {}, }; const AddressForm = props => ( <> - + + + props.onFieldChange({city: value})} @@ -68,6 +94,8 @@ const AddressForm = props => ( props.onFieldChange({state: value})} errorText={props.errors.state ? props.translate('bankAccount.error.addressState') : ''} @@ -75,6 +103,8 @@ const AddressForm = props => ( ( AddressForm.propTypes = propTypes; AddressForm.defaultProps = defaultProps; AddressForm.displayName = 'AddressForm'; -export default withLocalize(AddressForm); +export default AddressForm; diff --git a/src/pages/ReimbursementAccount/BankAccountStep.js b/src/pages/ReimbursementAccount/BankAccountStep.js index 59c94c7688a6..048f38fe3fd0 100644 --- a/src/pages/ReimbursementAccount/BankAccountStep.js +++ b/src/pages/ReimbursementAccount/BankAccountStep.js @@ -26,6 +26,7 @@ import CONFIG from '../../CONFIG'; import ROUTES from '../../ROUTES'; import Button from '../../components/Button'; import plaidDataPropTypes from './plaidDataPropTypes'; +import reimbursementAccountPropTypes from './reimbursementAccountPropTypes'; const propTypes = { /** Contains plaid data */ @@ -37,6 +38,10 @@ const propTypes = { /** During the OAuth flow we need to use the plaidLink token that we initially connected with */ plaidLinkOAuthToken: PropTypes.string, + /** The bank account currently in setup */ + /* eslint-disable-next-line react/no-unused-prop-types */ + reimbursementAccount: reimbursementAccountPropTypes, + /** Object with various information about the user */ user: PropTypes.shape({ /** Is the user account validated? */ @@ -52,6 +57,7 @@ const defaultProps = { plaidData: { isPlaidDisabled: false, }, + reimbursementAccount: {}, user: {}, }; diff --git a/src/pages/ReimbursementAccount/CompanyStep.js b/src/pages/ReimbursementAccount/CompanyStep.js index ec3aef995f6b..281e3f3b9430 100644 --- a/src/pages/ReimbursementAccount/CompanyStep.js +++ b/src/pages/ReimbursementAccount/CompanyStep.js @@ -26,8 +26,18 @@ import AddressForm from './AddressForm'; import ReimbursementAccountForm from './ReimbursementAccountForm'; import * as ReimbursementAccount from '../../libs/actions/ReimbursementAccount'; import * as ReimbursementAccountUtils from '../../libs/ReimbursementAccountUtils'; +import reimbursementAccountPropTypes from './reimbursementAccountPropTypes'; +import reimbursementAccountDraftPropTypes from './ReimbursementAccountDraftPropTypes'; const propTypes = { + /** The bank account currently in setup */ + /* eslint-disable-next-line react/no-unused-prop-types */ + reimbursementAccount: reimbursementAccountPropTypes.isRequired, + + /** The draft values of the bank account being setup */ + /* eslint-disable-next-line react/no-unused-prop-types */ + reimbursementAccountDraft: reimbursementAccountDraftPropTypes.isRequired, + ...withLocalizePropTypes, }; @@ -198,6 +208,7 @@ class CompanyStep extends React.Component { errorText={this.getErrorText('companyName')} /> { maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.SSN} /> + { + // We're taking the user back to the company step. They will need to come back to the requestor step to make the Onfido flow appear again. + BankAccounts.goToWithdrawalAccountSetupStep(CONST.BANK_ACCOUNT.STEP.COMPANY); + }} + onError={() => { + // In case of any unexpected error we log it to the server, show a growl, and return the user back to the company step so they can try again. + Growl.error(this.props.translate('onfidoStep.genericError'), 10000); + BankAccounts.goToWithdrawalAccountSetupStep(CONST.BANK_ACCOUNT.STEP.COMPANY); + }} + onSuccess={(onfidoData) => { + this.submit(onfidoData); + }} + /> + + ); + } +} + +RequestorOnfidoStep.propTypes = propTypes; +RequestorOnfidoStep.defaultProps = defaultProps; + +export default compose( + withLocalize, + withOnyx({ + reimbursementAccount: { + key: ONYXKEYS.REIMBURSEMENT_ACCOUNT, + }, + onfidoToken: { + key: ONYXKEYS.ONFIDO_TOKEN, + }, + reimbursementAccountDraft: { + key: ONYXKEYS.REIMBURSEMENT_ACCOUNT_DRAFT, + }, + }), +)(RequestorOnfidoStep); diff --git a/src/pages/ReimbursementAccount/RequestorStep.js b/src/pages/ReimbursementAccount/RequestorStep.js index 6be190673464..70e00a46b96e 100644 --- a/src/pages/ReimbursementAccount/RequestorStep.js +++ b/src/pages/ReimbursementAccount/RequestorStep.js @@ -1,6 +1,6 @@ import React from 'react'; import lodashGet from 'lodash/get'; -import {ScrollView, View} from 'react-native'; +import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import moment from 'moment'; @@ -16,19 +16,26 @@ import Text from '../../components/Text'; import * as BankAccounts from '../../libs/actions/BankAccounts'; import IdentityForm from './IdentityForm'; import * as ValidationUtils from '../../libs/ValidationUtils'; -import Onfido from '../../components/Onfido'; import compose from '../../libs/compose'; import ONYXKEYS from '../../ONYXKEYS'; import * as ReimbursementAccountUtils from '../../libs/ReimbursementAccountUtils'; -import Growl from '../../libs/Growl'; import reimbursementAccountPropTypes from './reimbursementAccountPropTypes'; +import reimbursementAccountDraftPropTypes from './ReimbursementAccountDraftPropTypes'; import ReimbursementAccountForm from './ReimbursementAccountForm'; import * as Link from '../../libs/actions/Link'; +import RequestorOnfidoStep from './RequestorOnfidoStep'; const propTypes = { - /** Bank account currently in setup */ + /** The bank account currently in setup */ reimbursementAccount: reimbursementAccountPropTypes.isRequired, + + /** The draft values of the bank account being setup */ + /* eslint-disable-next-line react/no-unused-prop-types */ + reimbursementAccountDraft: reimbursementAccountDraftPropTypes.isRequired, + + /** The token required to initialize the Onfido SDK */ onfidoToken: PropTypes.string, + ...withLocalizePropTypes, }; @@ -42,6 +49,7 @@ class RequestorStep extends React.Component { this.submit = this.submit.bind(this); this.clearErrorsAndSetValues = this.clearErrorsAndSetValues.bind(this); + this.setOnfidoAsComplete = this.setOnfidoAsComplete.bind(this); this.state = { firstName: ReimbursementAccountUtils.getDefaultStateForField(props, 'firstName'), @@ -53,7 +61,6 @@ class RequestorStep extends React.Component { dob: ReimbursementAccountUtils.getDefaultStateForField(props, 'dob'), ssnLast4: ReimbursementAccountUtils.getDefaultStateForField(props, 'ssnLast4'), isControllingOfficer: ReimbursementAccountUtils.getDefaultStateForField(props, 'isControllingOfficer', false), - onfidoData: lodashGet(props, ['reimbursementAccount', 'achData', 'onfidoData'], ''), isOnfidoSetupComplete: lodashGet(props, ['achData', 'isOnfidoSetupComplete'], false), }; @@ -74,6 +81,13 @@ class RequestorStep extends React.Component { this.getErrors = () => ReimbursementAccountUtils.getErrors(this.props); } + /** + * Update state to indicate that the user has completed the Onfido verification process + */ + setOnfidoAsComplete() { + this.setState({isOnfidoSetupComplete: true}); + } + /** * Clear the errors associated to keys in values if found and store the new values in the state. * @@ -147,20 +161,6 @@ class RequestorStep extends React.Component { BankAccounts.updatePersonalInformationForBankAccount(payload); } - submitOnfidoVerification() { - if (!this.validate()) { - return; - } - - const payload = { - bankAccountID: ReimbursementAccountUtils.getDefaultStateForField(this.props, 'bankAccountID', 0), - ...this.state, - dob: moment(this.state.dob).format(CONST.DATE.MOMENT_FORMAT_STRING), - }; - - BankAccounts.setupWithdrawalAccount(payload); - } - render() { const achData = this.props.reimbursementAccount.achData; const shouldShowOnfido = achData.useOnfido && this.props.onfidoToken && !this.state.isOnfidoSetupComplete; @@ -183,26 +183,9 @@ class RequestorStep extends React.Component { onCloseButtonPress={Navigation.dismissModal} /> {shouldShowOnfido ? ( - - { - // We're taking the user back to the company step. They will need to come back to the requestor step to make the Onfido flow appear again. - BankAccounts.goToWithdrawalAccountSetupStep(CONST.BANK_ACCOUNT.STEP.COMPANY); - }} - onError={() => { - // In case of any unexpected error we log it to the server, show a growl, and return the user back to the company step so they can try again. - Growl.error(this.props.translate('onfidoStep.genericError'), 10000); - BankAccounts.goToWithdrawalAccountSetupStep(CONST.BANK_ACCOUNT.STEP.COMPANY); - }} - onSuccess={(onfidoData) => { - this.setState({ - onfidoData, - isOnfidoSetupComplete: true, - }, this.submitOnfidoVerification); - }} - /> - + ) : ( { const icons = ReportUtils.getIcons(props.report, props.personalDetails, props.policies); return ( Report.navigateToConciergeChatAndDeletePolicyReport(props.report.reportID)} + onClose={() => Report.navigateToConciergeChatAndDeleteReport(props.report.reportID)} > action.actionName === CONST.REPORT.ACTIONS.TYPE.CLOSED); } - const hideComposer = isArchivedRoom || !_.isEmpty(this.props.addWorkspaceRoomErrors); + const hideComposer = isArchivedRoom || !_.isEmpty(this.props.errors); return ( <> {(isArchivedRoom || hideComposer) && ( @@ -89,7 +89,7 @@ class ReportFooter extends React.Component { diff --git a/src/pages/home/report/ReportTypingIndicator.js b/src/pages/home/report/ReportTypingIndicator.js index 552e126b9c5c..8c8e39c46c40 100755 --- a/src/pages/home/report/ReportTypingIndicator.js +++ b/src/pages/home/report/ReportTypingIndicator.js @@ -67,7 +67,7 @@ class ReportTypingIndicator extends React.Component { leadingText={PersonalDetails.getDisplayName(this.state.usersTyping[0])} trailingText={` ${this.props.translate('reportTypingIndicator.isTyping')}`} textStyle={[styles.chatItemComposeSecondaryRowSubText]} - wrapperStyle={[styles.chatItemComposeSecondaryRow]} + wrapperStyle={[styles.chatItemComposeSecondaryRow, styles.flex1]} leadingTextParentStyle={styles.chatItemComposeSecondaryRowOffset} /> ); diff --git a/src/pages/workspace/WorkspacePageWithSections.js b/src/pages/workspace/WorkspacePageWithSections.js index e9e3fce75e91..973a414b6ac3 100644 --- a/src/pages/workspace/WorkspacePageWithSections.js +++ b/src/pages/workspace/WorkspacePageWithSections.js @@ -56,6 +56,9 @@ const propTypes = { name: PropTypes.string, }).isRequired, + /** Option to use the default scroll view */ + shouldUseScrollView: PropTypes.bool, + ...withLocalizePropTypes, }; @@ -65,6 +68,7 @@ const defaultProps = { reimbursementAccount: {}, footer: null, guidesCallTaskID: '', + shouldUseScrollView: false, }; class WorkspacePageWithSections extends React.Component { @@ -103,16 +107,20 @@ class WorkspacePageWithSections extends React.Component { onBackButtonPress={() => Navigation.navigate(ROUTES.getWorkspaceInitialRoute(policyID))} onCloseButtonPress={() => Navigation.dismissModal()} /> - - - - {this.props.children(hasVBA, policyID, isUsingECard)} - - - + {this.props.shouldUseScrollView + ? ( + + + + {this.props.children(hasVBA, policyID, isUsingECard)} + + + + ) + : this.props.children(hasVBA, policyID, isUsingECard)} {this.props.footer} ); diff --git a/src/pages/workspace/WorkspaceSettingsPage.js b/src/pages/workspace/WorkspaceSettingsPage.js index 40c370abb92b..e778ecf89339 100644 --- a/src/pages/workspace/WorkspaceSettingsPage.js +++ b/src/pages/workspace/WorkspaceSettingsPage.js @@ -1,12 +1,11 @@ import React from 'react'; -import {View} from 'react-native'; +import {Keyboard, View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import lodashGet from 'lodash/get'; import ONYXKEYS from '../../ONYXKEYS'; import withLocalize, {withLocalizePropTypes} from '../../components/withLocalize'; import styles from '../../styles/styles'; -import Button from '../../components/Button'; import Text from '../../components/Text'; import compose from '../../libs/compose'; import * as Policy from '../../libs/actions/Policy'; @@ -17,12 +16,12 @@ import defaultTheme from '../../styles/themes/default'; import CONST from '../../CONST'; import Picker from '../../components/Picker'; import TextInput from '../../components/TextInput'; -import FixedFooter from '../../components/FixedFooter'; import WorkspacePageWithSections from './WorkspacePageWithSections'; import withPolicy, {policyPropTypes, policyDefaultProps} from './withPolicy'; import {withNetwork} from '../../components/OnyxProvider'; import OfflineWithFeedback from '../../components/OfflineWithFeedback'; import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView'; +import Form from '../../components/Form'; const propTypes = { ...policyPropTypes, @@ -37,11 +36,6 @@ class WorkspaceSettingsPage extends React.Component { constructor(props) { super(props); - this.state = { - name: props.policy.name, - currency: props.policy.outputCurrency, - }; - this.submit = this.submit.bind(this); this.getCurrencyItems = this.getCurrencyItems.bind(this); this.validate = this.validate.bind(this); @@ -58,21 +52,22 @@ class WorkspaceSettingsPage extends React.Component { })); } - submit() { - if (this.props.policy.isPolicyUpdating || !this.validate()) { + submit(values) { + if (this.props.policy.isPolicyUpdating) { return; } - const name = this.state.name.trim(); - const outputCurrency = this.state.currency; + const name = values.name.trim(); + const outputCurrency = values.currency; Policy.updateGeneralSettings(this.props.policy.id, name, outputCurrency); + Keyboard.dismiss(); } - validate() { + validate(values) { const errors = {}; - if (!this.state.name.trim().length) { - errors.nameError = true; + if (!values.name || !values.name.trim().length) { + errors.name = this.props.translate('workspace.editor.nameIsRequiredError'); } - return _.size(errors) === 0; + return errors; } render() { @@ -82,25 +77,15 @@ class WorkspaceSettingsPage extends React.Component { headerText={this.props.translate('workspace.common.settings')} route={this.props.route} guidesCallTaskID={CONST.GUIDES_CALL_TASK_IDS.WORKSPACE_SETTINGS} - footer={( - - Policy.clearWorkspaceGeneralSettingsErrors(this.props.policy.id)} - > -