@domternal/extension-emoji 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/emojis.ts","../src/emoticons.ts","../src/suggestionPlugin.ts","../src/Emoji.ts","../src/suggestionRenderer.ts"],"names":["PluginKey","Plugin","Node","InputRule","positionFloatingOnce"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Built-in emoji datasets for @domternal/extension-emoji.\n *\n * Two exports:\n * - `emojis` โ€” ~200 most popular emoji (~8KB gzipped)\n * - `allEmojis` โ€” Full ~1,800 emoji Unicode 15.1 set (~40KB gzipped)\n *\n * Users can import either or provide their own custom data.\n */\n\n/**\n * A single emoji entry in the dataset.\n */\nexport interface EmojiItem {\n /** Native Unicode emoji character (e.g., \"๐Ÿ˜„\") */\n emoji: string;\n /** Unique name used as node attribute (e.g., \"smile\") */\n name: string;\n /** Shortcodes without colons (e.g., [\"smile\", \"grinning\"]) */\n shortcodes: string[];\n /** Search tags (e.g., [\"happy\", \"face\"]) */\n tags: string[];\n /** Category group (e.g., \"Smileys & Emotion\") */\n group: string;\n /** Optional fallback image URL for unsupported emoji */\n fallbackImage?: string;\n}\n\n// โ”€โ”€โ”€ Popular Emoji (~200) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n/** Curated set of ~200 most commonly used emoji. */\nexport const emojis: EmojiItem[] = [\n // === Smileys & Emotion ===\n { emoji: '๐Ÿ˜€', name: 'grinning_face', shortcodes: ['grinning'], tags: ['happy', 'smile'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ƒ', name: 'grinning_face_with_big_eyes', shortcodes: ['smiley'], tags: ['happy', 'joy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜„', name: 'grinning_face_with_smiling_eyes', shortcodes: ['smile'], tags: ['happy', 'joy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜', name: 'beaming_face_with_smiling_eyes', shortcodes: ['grin'], tags: ['happy', 'smile'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜†', name: 'grinning_squinting_face', shortcodes: ['laughing', 'satisfied'], tags: ['happy', 'laugh'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜…', name: 'grinning_face_with_sweat', shortcodes: ['sweat_smile'], tags: ['hot', 'relief'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฃ', name: 'rolling_on_the_floor_laughing', shortcodes: ['rofl'], tags: ['lol', 'laugh'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜‚', name: 'face_with_tears_of_joy', shortcodes: ['joy'], tags: ['laugh', 'cry'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ™‚', name: 'slightly_smiling_face', shortcodes: ['slightly_smiling_face'], tags: ['smile'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜‰', name: 'winking_face', shortcodes: ['wink'], tags: ['flirt'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜Š', name: 'smiling_face_with_smiling_eyes', shortcodes: ['blush'], tags: ['proud', 'shy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜‡', name: 'smiling_face_with_halo', shortcodes: ['innocent'], tags: ['angel'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅฐ', name: 'smiling_face_with_hearts', shortcodes: ['smiling_face_with_three_hearts'], tags: ['love', 'adore'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜', name: 'smiling_face_with_heart_eyes', shortcodes: ['heart_eyes'], tags: ['love', 'crush'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฉ', name: 'star_struck', shortcodes: ['star_struck'], tags: ['eyes', 'amazing'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜˜', name: 'face_blowing_a_kiss', shortcodes: ['kissing_heart'], tags: ['love', 'kiss'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜—', name: 'kissing_face', shortcodes: ['kissing'], tags: ['kiss'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜š', name: 'kissing_face_with_closed_eyes', shortcodes: ['kissing_closed_eyes'], tags: ['kiss'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜‹', name: 'face_savoring_food', shortcodes: ['yum'], tags: ['delicious', 'tongue'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜›', name: 'face_with_tongue', shortcodes: ['stuck_out_tongue'], tags: ['playful'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜œ', name: 'winking_face_with_tongue', shortcodes: ['stuck_out_tongue_winking_eye'], tags: ['playful', 'kidding'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคช', name: 'zany_face', shortcodes: ['zany_face'], tags: ['crazy', 'wild'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜', name: 'squinting_face_with_tongue', shortcodes: ['stuck_out_tongue_closed_eyes'], tags: ['playful'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค‘', name: 'money_mouth_face', shortcodes: ['money_mouth_face'], tags: ['rich', 'dollar'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค—', name: 'smiling_face_with_open_hands', shortcodes: ['hugs'], tags: ['hug'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคญ', name: 'face_with_hand_over_mouth', shortcodes: ['hand_over_mouth'], tags: ['oops', 'giggle'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคซ', name: 'shushing_face', shortcodes: ['shushing_face'], tags: ['quiet', 'secret'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค”', name: 'thinking_face', shortcodes: ['thinking'], tags: ['hmm', 'wonder'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜', name: 'neutral_face', shortcodes: ['neutral_face'], tags: ['meh', 'blank'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜‘', name: 'expressionless_face', shortcodes: ['expressionless'], tags: ['blank', 'unimpressed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ถ', name: 'face_without_mouth', shortcodes: ['no_mouth'], tags: ['silent', 'mute'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜', name: 'smirking_face', shortcodes: ['smirk'], tags: ['smug'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜’', name: 'unamused_face', shortcodes: ['unamused'], tags: ['meh', 'unimpressed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ™„', name: 'face_with_rolling_eyes', shortcodes: ['roll_eyes'], tags: ['annoyed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฌ', name: 'grimacing_face', shortcodes: ['grimacing'], tags: ['awkward', 'nervous'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฎโ€๐Ÿ’จ', name: 'face_exhaling', shortcodes: ['face_exhaling'], tags: ['sigh', 'relief'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฅ', name: 'lying_face', shortcodes: ['lying_face'], tags: ['lie', 'pinocchio'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜Œ', name: 'relieved_face', shortcodes: ['relieved'], tags: ['relaxed', 'calm'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜”', name: 'pensive_face', shortcodes: ['pensive'], tags: ['sad', 'thoughtful'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ช', name: 'sleepy_face', shortcodes: ['sleepy'], tags: ['tired'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคค', name: 'drooling_face', shortcodes: ['drooling_face'], tags: ['drool'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ด', name: 'sleeping_face', shortcodes: ['sleeping'], tags: ['zzz', 'tired'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ท', name: 'face_with_medical_mask', shortcodes: ['mask'], tags: ['sick', 'covid'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค’', name: 'face_with_thermometer', shortcodes: ['face_with_thermometer'], tags: ['sick', 'fever'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค•', name: 'face_with_head_bandage', shortcodes: ['face_with_head_bandage'], tags: ['hurt', 'injured'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคข', name: 'nauseated_face', shortcodes: ['nauseated_face'], tags: ['sick', 'vomit'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฎ', name: 'face_vomiting', shortcodes: ['vomiting_face'], tags: ['sick', 'vomit'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ต', name: 'face_with_crossed_out_eyes', shortcodes: ['dizzy_face'], tags: ['dizzy', 'dead'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅด', name: 'woozy_face', shortcodes: ['woozy_face'], tags: ['drunk', 'dizzy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜Ž', name: 'smiling_face_with_sunglasses', shortcodes: ['sunglasses'], tags: ['cool'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค“', name: 'nerd_face', shortcodes: ['nerd_face'], tags: ['nerd', 'geek'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜•', name: 'confused_face', shortcodes: ['confused'], tags: ['puzzled'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜Ÿ', name: 'worried_face', shortcodes: ['worried'], tags: ['nervous', 'concern'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ™', name: 'slightly_frowning_face', shortcodes: ['slightly_frowning_face'], tags: ['sad', 'disappointed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฎ', name: 'face_with_open_mouth', shortcodes: ['open_mouth'], tags: ['surprised', 'wow'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฏ', name: 'hushed_face', shortcodes: ['hushed'], tags: ['surprised', 'shocked'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฒ', name: 'astonished_face', shortcodes: ['astonished'], tags: ['amazed', 'shocked'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ณ', name: 'flushed_face', shortcodes: ['flushed'], tags: ['embarrassed', 'shy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅบ', name: 'pleading_face', shortcodes: ['pleading_face'], tags: ['puppy', 'please'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ข', name: 'crying_face', shortcodes: ['cry'], tags: ['sad', 'tear'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ญ', name: 'loudly_crying_face', shortcodes: ['sob'], tags: ['sad', 'cry'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ค', name: 'face_with_steam_from_nose', shortcodes: ['triumph'], tags: ['angry', 'frustrated'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ ', name: 'angry_face', shortcodes: ['angry'], tags: ['mad', 'annoyed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ก', name: 'pouting_face', shortcodes: ['rage', 'pout'], tags: ['angry', 'furious'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฌ', name: 'face_with_symbols_on_mouth', shortcodes: ['cursing_face'], tags: ['swearing', 'angry'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ˆ', name: 'smiling_face_with_horns', shortcodes: ['smiling_imp'], tags: ['devil', 'evil'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ‘ฟ', name: 'angry_face_with_horns', shortcodes: ['imp'], tags: ['devil', 'angry'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’€', name: 'skull', shortcodes: ['skull'], tags: ['dead', 'death'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ‘ป', name: 'ghost', shortcodes: ['ghost'], tags: ['halloween', 'spooky'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคก', name: 'clown_face', shortcodes: ['clown_face'], tags: ['clown', 'joker'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ฉ', name: 'pile_of_poo', shortcodes: ['poop', 'shit'], tags: ['poo'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅณ', name: 'partying_face', shortcodes: ['partying_face'], tags: ['party', 'celebrate'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅฒ', name: 'smiling_face_with_tear', shortcodes: ['smiling_face_with_tear'], tags: ['sad', 'happy'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซ ', name: 'melting_face', shortcodes: ['melting_face'], tags: ['melt', 'hot'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซก', name: 'saluting_face', shortcodes: ['saluting_face'], tags: ['salute', 'respect'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซข', name: 'face_with_open_eyes_and_hand_over_mouth', shortcodes: ['face_with_open_eyes_and_hand_over_mouth'], tags: ['shocked', 'oops'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซฃ', name: 'face_with_peeking_eye', shortcodes: ['face_with_peeking_eye'], tags: ['peek', 'scared'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซฅ', name: 'dotted_line_face', shortcodes: ['dotted_line_face'], tags: ['invisible', 'hidden'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซค', name: 'face_with_diagonal_mouth', shortcodes: ['face_with_diagonal_mouth'], tags: ['meh', 'skeptical'], group: 'Smileys & Emotion' },\n\n // === Gestures & People ===\n { emoji: '๐Ÿ‘‹', name: 'waving_hand', shortcodes: ['wave'], tags: ['hello', 'bye'], group: 'People & Body' },\n { emoji: '๐Ÿคš', name: 'raised_back_of_hand', shortcodes: ['raised_back_of_hand'], tags: ['stop'], group: 'People & Body' },\n { emoji: 'โœ‹', name: 'raised_hand', shortcodes: ['hand', 'raised_hand'], tags: ['stop', 'high five'], group: 'People & Body' },\n { emoji: '๐Ÿ––', name: 'vulcan_salute', shortcodes: ['vulcan_salute'], tags: ['spock', 'star trek'], group: 'People & Body' },\n { emoji: '๐Ÿ‘Œ', name: 'ok_hand', shortcodes: ['ok_hand'], tags: ['ok', 'perfect'], group: 'People & Body' },\n { emoji: '๐ŸคŒ', name: 'pinched_fingers', shortcodes: ['pinched_fingers'], tags: ['italian', 'what'], group: 'People & Body' },\n { emoji: 'โœŒ๏ธ', name: 'victory_hand', shortcodes: ['v'], tags: ['peace', 'victory'], group: 'People & Body' },\n { emoji: '๐Ÿคž', name: 'crossed_fingers', shortcodes: ['crossed_fingers'], tags: ['luck', 'hope'], group: 'People & Body' },\n { emoji: '๐ŸคŸ', name: 'love_you_gesture', shortcodes: ['love_you_gesture'], tags: ['love', 'rock'], group: 'People & Body' },\n { emoji: '๐Ÿค˜', name: 'sign_of_the_horns', shortcodes: ['metal'], tags: ['rock', 'metal'], group: 'People & Body' },\n { emoji: '๐Ÿค™', name: 'call_me_hand', shortcodes: ['call_me_hand'], tags: ['call', 'shaka'], group: 'People & Body' },\n { emoji: '๐Ÿ‘ˆ', name: 'backhand_index_pointing_left', shortcodes: ['point_left'], tags: ['left', 'direction'], group: 'People & Body' },\n { emoji: '๐Ÿ‘‰', name: 'backhand_index_pointing_right', shortcodes: ['point_right'], tags: ['right', 'direction'], group: 'People & Body' },\n { emoji: '๐Ÿ‘†', name: 'backhand_index_pointing_up', shortcodes: ['point_up_2'], tags: ['up', 'direction'], group: 'People & Body' },\n { emoji: '๐Ÿ‘‡', name: 'backhand_index_pointing_down', shortcodes: ['point_down'], tags: ['down', 'direction'], group: 'People & Body' },\n { emoji: 'โ˜๏ธ', name: 'index_pointing_up', shortcodes: ['point_up'], tags: ['up'], group: 'People & Body' },\n { emoji: '๐Ÿ‘', name: 'thumbs_up', shortcodes: ['thumbsup', '+1', 'thumbs_up'], tags: ['approve', 'ok', 'like'], group: 'People & Body' },\n { emoji: '๐Ÿ‘Ž', name: 'thumbs_down', shortcodes: ['thumbsdown', '-1', 'thumbs_down'], tags: ['disapprove', 'dislike'], group: 'People & Body' },\n { emoji: 'โœŠ', name: 'raised_fist', shortcodes: ['fist'], tags: ['power', 'punch'], group: 'People & Body' },\n { emoji: '๐Ÿ‘Š', name: 'oncoming_fist', shortcodes: ['fist_oncoming', 'punch'], tags: ['punch'], group: 'People & Body' },\n { emoji: '๐Ÿค›', name: 'left_facing_fist', shortcodes: ['fist_left'], tags: ['fist bump'], group: 'People & Body' },\n { emoji: '๐Ÿคœ', name: 'right_facing_fist', shortcodes: ['fist_right'], tags: ['fist bump'], group: 'People & Body' },\n { emoji: '๐Ÿ‘', name: 'clapping_hands', shortcodes: ['clap'], tags: ['applause', 'bravo'], group: 'People & Body' },\n { emoji: '๐Ÿ™Œ', name: 'raising_hands', shortcodes: ['raised_hands'], tags: ['celebrate', 'hooray'], group: 'People & Body' },\n { emoji: '๐Ÿ‘', name: 'open_hands', shortcodes: ['open_hands'], tags: ['jazz hands'], group: 'People & Body' },\n { emoji: '๐Ÿค', name: 'handshake', shortcodes: ['handshake'], tags: ['deal', 'agreement'], group: 'People & Body' },\n { emoji: '๐Ÿ™', name: 'folded_hands', shortcodes: ['pray'], tags: ['please', 'thank you', 'namaste'], group: 'People & Body' },\n { emoji: '๐Ÿ’ช', name: 'flexed_biceps', shortcodes: ['muscle'], tags: ['strong', 'flex'], group: 'People & Body' },\n { emoji: '๐Ÿซถ', name: 'heart_hands', shortcodes: ['heart_hands'], tags: ['love', 'heart'], group: 'People & Body' },\n\n // === Hearts & Symbols ===\n { emoji: 'โค๏ธ', name: 'red_heart', shortcodes: ['heart', 'red_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿงก', name: 'orange_heart', shortcodes: ['orange_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’›', name: 'yellow_heart', shortcodes: ['yellow_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’š', name: 'green_heart', shortcodes: ['green_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’™', name: 'blue_heart', shortcodes: ['blue_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’œ', name: 'purple_heart', shortcodes: ['purple_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ–ค', name: 'black_heart', shortcodes: ['black_heart'], tags: ['love', 'dark'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค', name: 'white_heart', shortcodes: ['white_heart'], tags: ['love', 'pure'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’”', name: 'broken_heart', shortcodes: ['broken_heart'], tags: ['sad', 'breakup'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’•', name: 'two_hearts', shortcodes: ['two_hearts'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’–', name: 'sparkling_heart', shortcodes: ['sparkling_heart'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’—', name: 'growing_heart', shortcodes: ['heartpulse'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’˜', name: 'heart_with_arrow', shortcodes: ['cupid'], tags: ['love', 'valentine'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ฏ', name: 'hundred_points', shortcodes: ['100'], tags: ['perfect', 'score'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ข', name: 'anger_symbol', shortcodes: ['anger'], tags: ['angry'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ฅ', name: 'collision', shortcodes: ['boom', 'collision'], tags: ['explode', 'bang'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ซ', name: 'dizzy', shortcodes: ['dizzy'], tags: ['star', 'sparkle'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ฆ', name: 'sweat_droplets', shortcodes: ['sweat_drops'], tags: ['water', 'sweat'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’จ', name: 'dashing_away', shortcodes: ['dash'], tags: ['wind', 'fast'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ•ณ๏ธ', name: 'hole', shortcodes: ['hole'], tags: ['hole'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ฌ', name: 'speech_balloon', shortcodes: ['speech_balloon'], tags: ['chat', 'talk'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ญ', name: 'thought_balloon', shortcodes: ['thought_balloon'], tags: ['think', 'bubble'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ”ฅ', name: 'fire', shortcodes: ['fire'], tags: ['hot', 'lit'], group: 'Travel & Places' },\n { emoji: 'โœจ', name: 'sparkles', shortcodes: ['sparkles'], tags: ['shine', 'magic', 'new'], group: 'Travel & Places' },\n { emoji: '๐ŸŒŸ', name: 'glowing_star', shortcodes: ['star2'], tags: ['star', 'shine'], group: 'Travel & Places' },\n { emoji: 'โญ', name: 'star', shortcodes: ['star'], tags: ['favorite', 'gold'], group: 'Travel & Places' },\n\n // === Animals & Nature ===\n { emoji: '๐Ÿถ', name: 'dog_face', shortcodes: ['dog'], tags: ['pet', 'puppy'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฑ', name: 'cat_face', shortcodes: ['cat'], tags: ['pet', 'kitten'], group: 'Animals & Nature' },\n { emoji: '๐Ÿญ', name: 'mouse_face', shortcodes: ['mouse'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฐ', name: 'rabbit_face', shortcodes: ['rabbit'], tags: ['bunny', 'easter'], group: 'Animals & Nature' },\n { emoji: '๐ŸฆŠ', name: 'fox', shortcodes: ['fox_face'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿป', name: 'bear', shortcodes: ['bear'], tags: ['animal', 'teddy'], group: 'Animals & Nature' },\n { emoji: '๐Ÿผ', name: 'panda', shortcodes: ['panda_face'], tags: ['animal', 'cute'], group: 'Animals & Nature' },\n { emoji: '๐Ÿธ', name: 'frog', shortcodes: ['frog'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿต', name: 'monkey_face', shortcodes: ['monkey_face'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ™ˆ', name: 'see_no_evil_monkey', shortcodes: ['see_no_evil'], tags: ['monkey', 'shy'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ™‰', name: 'hear_no_evil_monkey', shortcodes: ['hear_no_evil'], tags: ['monkey'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ™Š', name: 'speak_no_evil_monkey', shortcodes: ['speak_no_evil'], tags: ['monkey', 'oops'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ”', name: 'chicken', shortcodes: ['chicken'], tags: ['animal', 'bird'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ„', name: 'unicorn', shortcodes: ['unicorn'], tags: ['magic', 'fantasy'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ', name: 'honeybee', shortcodes: ['bee', 'honeybee'], tags: ['insect', 'honey'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ‹', name: 'butterfly', shortcodes: ['butterfly'], tags: ['insect', 'nature'], group: 'Animals & Nature' },\n { emoji: '๐Ÿข', name: 'turtle', shortcodes: ['turtle'], tags: ['slow', 'animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ', name: 'snake', shortcodes: ['snake'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒธ', name: 'cherry_blossom', shortcodes: ['cherry_blossom'], tags: ['flower', 'spring'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒน', name: 'rose', shortcodes: ['rose'], tags: ['flower', 'love'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒป', name: 'sunflower', shortcodes: ['sunflower'], tags: ['flower', 'nature'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒˆ', name: 'rainbow', shortcodes: ['rainbow'], tags: ['nature', 'pride'], group: 'Travel & Places' },\n { emoji: '๐ŸŒ', name: 'globe_showing_europe_africa', shortcodes: ['earth_africa'], tags: ['world', 'globe'], group: 'Travel & Places' },\n\n // === Food & Drink ===\n { emoji: '๐ŸŽ', name: 'red_apple', shortcodes: ['apple'], tags: ['fruit'], group: 'Food & Drink' },\n { emoji: '๐Ÿ•', name: 'pizza', shortcodes: ['pizza'], tags: ['food', 'italian'], group: 'Food & Drink' },\n { emoji: '๐Ÿ”', name: 'hamburger', shortcodes: ['hamburger'], tags: ['food', 'burger'], group: 'Food & Drink' },\n { emoji: '๐ŸŸ', name: 'french_fries', shortcodes: ['fries'], tags: ['food'], group: 'Food & Drink' },\n { emoji: '๐ŸŒฎ', name: 'taco', shortcodes: ['taco'], tags: ['food', 'mexican'], group: 'Food & Drink' },\n { emoji: '๐Ÿฆ', name: 'soft_ice_cream', shortcodes: ['icecream'], tags: ['dessert', 'sweet'], group: 'Food & Drink' },\n { emoji: '๐Ÿฐ', name: 'shortcake', shortcodes: ['cake'], tags: ['dessert', 'birthday'], group: 'Food & Drink' },\n { emoji: '๐ŸŽ‚', name: 'birthday_cake', shortcodes: ['birthday'], tags: ['party', 'cake'], group: 'Food & Drink' },\n { emoji: '๐Ÿฉ', name: 'doughnut', shortcodes: ['doughnut'], tags: ['donut', 'sweet'], group: 'Food & Drink' },\n { emoji: '๐Ÿช', name: 'cookie', shortcodes: ['cookie'], tags: ['sweet', 'snack'], group: 'Food & Drink' },\n { emoji: 'โ˜•', name: 'hot_beverage', shortcodes: ['coffee'], tags: ['drink', 'tea', 'coffee'], group: 'Food & Drink' },\n { emoji: '๐Ÿบ', name: 'beer_mug', shortcodes: ['beer'], tags: ['drink', 'alcohol'], group: 'Food & Drink' },\n { emoji: '๐Ÿท', name: 'wine_glass', shortcodes: ['wine_glass'], tags: ['drink', 'alcohol'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅ‚', name: 'clinking_glasses', shortcodes: ['clinking_glasses'], tags: ['cheers', 'toast'], group: 'Food & Drink' },\n { emoji: '๐Ÿป', name: 'clinking_beer_mugs', shortcodes: ['beers'], tags: ['cheers', 'drink'], group: 'Food & Drink' },\n\n // === Objects & Activities ===\n { emoji: 'โšฝ', name: 'soccer_ball', shortcodes: ['soccer'], tags: ['sport', 'football'], group: 'Activities' },\n { emoji: '๐Ÿ€', name: 'basketball', shortcodes: ['basketball'], tags: ['sport'], group: 'Activities' },\n { emoji: '๐ŸŽฎ', name: 'video_game', shortcodes: ['video_game'], tags: ['game', 'controller'], group: 'Activities' },\n { emoji: '๐ŸŽฏ', name: 'bullseye', shortcodes: ['dart'], tags: ['target', 'goal'], group: 'Activities' },\n { emoji: '๐Ÿ†', name: 'trophy', shortcodes: ['trophy'], tags: ['win', 'award'], group: 'Activities' },\n { emoji: '๐Ÿฅ‡', name: 'first_place_medal', shortcodes: ['1st_place_medal', 'gold_medal'], tags: ['gold', 'winner'], group: 'Activities' },\n { emoji: '๐ŸŽ‰', name: 'party_popper', shortcodes: ['tada'], tags: ['party', 'celebrate'], group: 'Activities' },\n { emoji: '๐ŸŽŠ', name: 'confetti_ball', shortcodes: ['confetti_ball'], tags: ['party', 'celebrate'], group: 'Activities' },\n { emoji: '๐ŸŽˆ', name: 'balloon', shortcodes: ['balloon'], tags: ['party', 'birthday'], group: 'Activities' },\n { emoji: '๐ŸŽ', name: 'wrapped_gift', shortcodes: ['gift'], tags: ['present', 'birthday'], group: 'Activities' },\n { emoji: '๐ŸŽต', name: 'musical_note', shortcodes: ['musical_note'], tags: ['music', 'song'], group: 'Objects' },\n { emoji: '๐ŸŽถ', name: 'musical_notes', shortcodes: ['notes'], tags: ['music', 'singing'], group: 'Objects' },\n { emoji: '๐ŸŽธ', name: 'guitar', shortcodes: ['guitar'], tags: ['music', 'rock'], group: 'Objects' },\n { emoji: '๐Ÿ“ฑ', name: 'mobile_phone', shortcodes: ['iphone'], tags: ['phone', 'cell'], group: 'Objects' },\n { emoji: '๐Ÿ’ป', name: 'laptop', shortcodes: ['computer'], tags: ['laptop', 'tech'], group: 'Objects' },\n { emoji: '๐Ÿ“ท', name: 'camera', shortcodes: ['camera'], tags: ['photo'], group: 'Objects' },\n { emoji: '๐Ÿ“š', name: 'books', shortcodes: ['books'], tags: ['read', 'study'], group: 'Objects' },\n { emoji: '๐Ÿ“', name: 'memo', shortcodes: ['memo', 'pencil'], tags: ['write', 'note'], group: 'Objects' },\n { emoji: '๐Ÿ“Œ', name: 'pushpin', shortcodes: ['pushpin'], tags: ['pin', 'location'], group: 'Objects' },\n { emoji: '๐Ÿ“Ž', name: 'paperclip', shortcodes: ['paperclip'], tags: ['attach'], group: 'Objects' },\n { emoji: '๐Ÿ”‘', name: 'key', shortcodes: ['key'], tags: ['lock', 'password'], group: 'Objects' },\n { emoji: '๐Ÿ”’', name: 'locked', shortcodes: ['lock'], tags: ['security', 'private'], group: 'Objects' },\n { emoji: '๐Ÿ’ก', name: 'light_bulb', shortcodes: ['bulb'], tags: ['idea', 'light'], group: 'Objects' },\n { emoji: '๐Ÿ’ฐ', name: 'money_bag', shortcodes: ['moneybag'], tags: ['money', 'dollar', 'rich'], group: 'Objects' },\n { emoji: 'โฐ', name: 'alarm_clock', shortcodes: ['alarm_clock'], tags: ['time', 'wake'], group: 'Objects' },\n { emoji: '๐Ÿ””', name: 'bell', shortcodes: ['bell'], tags: ['notification', 'alert'], group: 'Objects' },\n\n // === Symbols ===\n { emoji: 'โœ…', name: 'check_mark_button', shortcodes: ['white_check_mark'], tags: ['done', 'yes', 'complete'], group: 'Symbols' },\n { emoji: 'โŒ', name: 'cross_mark', shortcodes: ['x'], tags: ['no', 'wrong', 'delete'], group: 'Symbols' },\n { emoji: 'โ“', name: 'red_question_mark', shortcodes: ['question'], tags: ['what', 'confused'], group: 'Symbols' },\n { emoji: 'โ—', name: 'red_exclamation_mark', shortcodes: ['exclamation', 'heavy_exclamation_mark'], tags: ['important', 'alert'], group: 'Symbols' },\n { emoji: 'โš ๏ธ', name: 'warning', shortcodes: ['warning'], tags: ['caution', 'alert'], group: 'Symbols' },\n { emoji: '๐Ÿšซ', name: 'prohibited', shortcodes: ['no_entry_sign'], tags: ['forbidden', 'stop'], group: 'Symbols' },\n { emoji: 'โ™ป๏ธ', name: 'recycling_symbol', shortcodes: ['recycle'], tags: ['environment', 'green'], group: 'Symbols' },\n { emoji: 'โžก๏ธ', name: 'right_arrow', shortcodes: ['arrow_right'], tags: ['direction', 'next'], group: 'Symbols' },\n { emoji: 'โฌ…๏ธ', name: 'left_arrow', shortcodes: ['arrow_left'], tags: ['direction', 'back'], group: 'Symbols' },\n { emoji: 'โฌ†๏ธ', name: 'up_arrow', shortcodes: ['arrow_up'], tags: ['direction', 'up'], group: 'Symbols' },\n { emoji: 'โฌ‡๏ธ', name: 'down_arrow', shortcodes: ['arrow_down'], tags: ['direction', 'down'], group: 'Symbols' },\n { emoji: '๐Ÿ”ด', name: 'red_circle', shortcodes: ['red_circle'], tags: ['red', 'dot'], group: 'Symbols' },\n { emoji: '๐ŸŸข', name: 'green_circle', shortcodes: ['green_circle'], tags: ['green', 'dot'], group: 'Symbols' },\n { emoji: '๐Ÿ”ต', name: 'blue_circle', shortcodes: ['blue_circle'], tags: ['blue', 'dot'], group: 'Symbols' },\n { emoji: '๐ŸŸก', name: 'yellow_circle', shortcodes: ['yellow_circle'], tags: ['yellow', 'dot'], group: 'Symbols' },\n\n // === Flags (popular) ===\n { emoji: '๐Ÿณ๏ธ', name: 'white_flag', shortcodes: ['white_flag'], tags: ['surrender', 'peace'], group: 'Flags' },\n { emoji: '๐Ÿด', name: 'black_flag', shortcodes: ['black_flag'], tags: ['pirate'], group: 'Flags' },\n { emoji: '๐Ÿ', name: 'chequered_flag', shortcodes: ['checkered_flag'], tags: ['race', 'finish'], group: 'Flags' },\n { emoji: '๐Ÿšฉ', name: 'triangular_flag', shortcodes: ['triangular_flag_on_post'], tags: ['flag', 'red flag'], group: 'Flags' },\n { emoji: '๐Ÿณ๏ธโ€๐ŸŒˆ', name: 'rainbow_flag', shortcodes: ['rainbow_flag'], tags: ['pride', 'lgbtq'], group: 'Flags' },\n];\n\n// โ”€โ”€โ”€ All Emoji (~1,800) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n/**\n * Full Unicode 15.1 emoji dataset.\n * Includes the popular set plus all remaining Unicode emoji.\n * Use `emojis` for a lighter bundle, or `allEmojis` for full coverage.\n */\nexport const allEmojis: EmojiItem[] = [\n ...emojis,\n\n // === Additional Smileys & Emotion ===\n { emoji: '๐Ÿค', name: 'zipper_mouth_face', shortcodes: ['zipper_mouth_face'], tags: ['secret', 'sealed'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคจ', name: 'face_with_raised_eyebrow', shortcodes: ['raised_eyebrow'], tags: ['suspicious', 'skeptical'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿง', name: 'face_with_monocle', shortcodes: ['monocle_face'], tags: ['classy', 'hmm'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿคฏ', name: 'exploding_head', shortcodes: ['exploding_head'], tags: ['mindblown', 'shocked'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ถโ€๐ŸŒซ๏ธ', name: 'face_in_clouds', shortcodes: ['face_in_clouds'], tags: ['foggy', 'absent'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅต', name: 'hot_face', shortcodes: ['hot_face'], tags: ['hot', 'sweating'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅถ', name: 'cold_face', shortcodes: ['cold_face'], tags: ['cold', 'freezing'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฑ', name: 'face_screaming_in_fear', shortcodes: ['scream'], tags: ['scared', 'horror'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜จ', name: 'fearful_face', shortcodes: ['fearful'], tags: ['scared', 'afraid'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฐ', name: 'anxious_face_with_sweat', shortcodes: ['cold_sweat'], tags: ['nervous', 'anxious'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ฅ', name: 'sad_but_relieved_face', shortcodes: ['disappointed_relieved'], tags: ['sad', 'phew'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿค ', name: 'cowboy_hat_face', shortcodes: ['cowboy_hat_face'], tags: ['cowboy', 'western'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฅธ', name: 'disguised_face', shortcodes: ['disguised_face'], tags: ['disguise', 'incognito'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜ตโ€๐Ÿ’ซ', name: 'face_with_spiral_eyes', shortcodes: ['face_with_spiral_eyes'], tags: ['dizzy', 'hypnotized'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซจ', name: 'shaking_face', shortcodes: ['shaking_face'], tags: ['shake', 'vibrate'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ˜™', name: 'kissing_face_with_smiling_eyes', shortcodes: ['kissing_smiling_eyes'], tags: ['kiss'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿซฐ', name: 'hand_with_index_finger_and_thumb_crossed', shortcodes: ['hand_with_index_finger_and_thumb_crossed'], tags: ['money', 'snap'], group: 'People & Body' },\n\n // === Additional Hearts ===\n { emoji: '๐Ÿฉท', name: 'pink_heart', shortcodes: ['pink_heart'], tags: ['love', 'pink'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฉต', name: 'light_blue_heart', shortcodes: ['light_blue_heart'], tags: ['love', 'blue'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿฉถ', name: 'grey_heart', shortcodes: ['grey_heart'], tags: ['love', 'grey'], group: 'Smileys & Emotion' },\n { emoji: '๐ŸคŽ', name: 'brown_heart', shortcodes: ['brown_heart'], tags: ['love', 'brown'], group: 'Smileys & Emotion' },\n { emoji: 'โค๏ธโ€๐Ÿ”ฅ', name: 'heart_on_fire', shortcodes: ['heart_on_fire'], tags: ['love', 'passion'], group: 'Smileys & Emotion' },\n { emoji: 'โค๏ธโ€๐Ÿฉน', name: 'mending_heart', shortcodes: ['mending_heart'], tags: ['healing', 'recovery'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’', name: 'heart_with_ribbon', shortcodes: ['gift_heart'], tags: ['love', 'valentine'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’ž', name: 'revolving_hearts', shortcodes: ['revolving_hearts'], tags: ['love'], group: 'Smileys & Emotion' },\n { emoji: '๐Ÿ’Ÿ', name: 'heart_decoration', shortcodes: ['heart_decoration'], tags: ['love'], group: 'Smileys & Emotion' },\n\n // === Additional Gestures ===\n { emoji: '๐Ÿซฑ', name: 'rightwards_hand', shortcodes: ['rightwards_hand'], tags: ['hand', 'right'], group: 'People & Body' },\n { emoji: '๐Ÿซฒ', name: 'leftwards_hand', shortcodes: ['leftwards_hand'], tags: ['hand', 'left'], group: 'People & Body' },\n { emoji: '๐Ÿซณ', name: 'palm_down_hand', shortcodes: ['palm_down_hand'], tags: ['hand', 'dismiss'], group: 'People & Body' },\n { emoji: '๐Ÿซด', name: 'palm_up_hand', shortcodes: ['palm_up_hand'], tags: ['hand', 'offer'], group: 'People & Body' },\n { emoji: '๐Ÿซต', name: 'index_pointing_at_the_viewer', shortcodes: ['index_pointing_at_the_viewer'], tags: ['you', 'point'], group: 'People & Body' },\n { emoji: '๐Ÿค', name: 'pinching_hand', shortcodes: ['pinching_hand'], tags: ['small', 'tiny'], group: 'People & Body' },\n { emoji: '๐Ÿ–๏ธ', name: 'hand_with_fingers_splayed', shortcodes: ['raised_hand_with_fingers_splayed'], tags: ['hand', 'five'], group: 'People & Body' },\n { emoji: '๐Ÿ–•', name: 'middle_finger', shortcodes: ['middle_finger', 'fu'], tags: ['rude'], group: 'People & Body' },\n { emoji: '๐Ÿคฒ', name: 'palms_up_together', shortcodes: ['palms_up_together'], tags: ['pray', 'cupped hands'], group: 'People & Body' },\n { emoji: 'โœ๏ธ', name: 'writing_hand', shortcodes: ['writing_hand'], tags: ['write', 'sign'], group: 'People & Body' },\n { emoji: '๐Ÿ’…', name: 'nail_polish', shortcodes: ['nail_care'], tags: ['beauty', 'manicure'], group: 'People & Body' },\n { emoji: '๐Ÿคณ', name: 'selfie', shortcodes: ['selfie'], tags: ['camera', 'phone'], group: 'People & Body' },\n\n // === Additional Animals ===\n { emoji: '๐Ÿ’', name: 'monkey', shortcodes: ['monkey'], tags: ['animal', 'ape'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ', name: 'gorilla', shortcodes: ['gorilla'], tags: ['animal', 'ape'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ•', name: 'dog', shortcodes: ['dog2'], tags: ['animal', 'pet'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฉ', name: 'poodle', shortcodes: ['poodle'], tags: ['dog', 'fancy'], group: 'Animals & Nature' },\n { emoji: '๐Ÿบ', name: 'wolf', shortcodes: ['wolf'], tags: ['animal', 'howl'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ', name: 'lion', shortcodes: ['lion'], tags: ['animal', 'king'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฏ', name: 'tiger_face', shortcodes: ['tiger'], tags: ['animal', 'cat'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฎ', name: 'cow_face', shortcodes: ['cow'], tags: ['animal', 'moo'], group: 'Animals & Nature' },\n { emoji: '๐Ÿท', name: 'pig_face', shortcodes: ['pig'], tags: ['animal', 'oink'], group: 'Animals & Nature' },\n { emoji: '๐Ÿด', name: 'horse_face', shortcodes: ['horse'], tags: ['animal'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฒ', name: 'dragon_face', shortcodes: ['dragon_face'], tags: ['fantasy', 'myth'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ‰', name: 'dragon', shortcodes: ['dragon'], tags: ['fantasy', 'myth'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ•', name: 'sauropod', shortcodes: ['sauropod'], tags: ['dinosaur', 'brontosaurus'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ–', name: 't_rex', shortcodes: ['t_rex'], tags: ['dinosaur'], group: 'Animals & Nature' },\n { emoji: '๐Ÿณ', name: 'spouting_whale', shortcodes: ['whale'], tags: ['ocean', 'sea'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฌ', name: 'dolphin', shortcodes: ['dolphin', 'flipper'], tags: ['ocean', 'sea'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆˆ', name: 'shark', shortcodes: ['shark'], tags: ['ocean', 'fish'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ™', name: 'octopus', shortcodes: ['octopus'], tags: ['ocean', 'tentacles'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒ', name: 'snail', shortcodes: ['snail'], tags: ['slow'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ›', name: 'bug', shortcodes: ['bug'], tags: ['insect'], group: 'Animals & Nature' },\n { emoji: '๐Ÿœ', name: 'ant', shortcodes: ['ant'], tags: ['insect'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ•ท๏ธ', name: 'spider', shortcodes: ['spider'], tags: ['insect', 'web'], group: 'Animals & Nature' },\n { emoji: '๐Ÿฆ‚', name: 'scorpion', shortcodes: ['scorpion'], tags: ['insect', 'zodiac'], group: 'Animals & Nature' },\n { emoji: '๐Ÿž', name: 'lady_beetle', shortcodes: ['lady_beetle', 'ladybug'], tags: ['insect', 'luck'], group: 'Animals & Nature' },\n\n // === Additional Plants & Nature ===\n { emoji: '๐Ÿ’', name: 'bouquet', shortcodes: ['bouquet'], tags: ['flowers', 'gift'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒท', name: 'tulip', shortcodes: ['tulip'], tags: ['flower', 'spring'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒบ', name: 'hibiscus', shortcodes: ['hibiscus'], tags: ['flower', 'tropical'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒฒ', name: 'evergreen_tree', shortcodes: ['evergreen_tree'], tags: ['tree', 'pine'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒณ', name: 'deciduous_tree', shortcodes: ['deciduous_tree'], tags: ['tree', 'nature'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒด', name: 'palm_tree', shortcodes: ['palm_tree'], tags: ['tropical', 'beach'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ€', name: 'four_leaf_clover', shortcodes: ['four_leaf_clover'], tags: ['luck', 'irish'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ', name: 'maple_leaf', shortcodes: ['maple_leaf'], tags: ['canada', 'autumn'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ‚', name: 'fallen_leaf', shortcodes: ['fallen_leaf'], tags: ['autumn', 'fall'], group: 'Animals & Nature' },\n { emoji: '๐Ÿƒ', name: 'leaf_fluttering_in_wind', shortcodes: ['leaves'], tags: ['nature', 'wind'], group: 'Animals & Nature' },\n { emoji: '๐ŸŒต', name: 'cactus', shortcodes: ['cactus'], tags: ['desert', 'plant'], group: 'Animals & Nature' },\n { emoji: '๐Ÿ„', name: 'mushroom', shortcodes: ['mushroom'], tags: ['nature', 'fungus'], group: 'Animals & Nature' },\n\n // === Additional Food & Drink ===\n { emoji: '๐ŸŒ', name: 'banana', shortcodes: ['banana'], tags: ['fruit'], group: 'Food & Drink' },\n { emoji: '๐Ÿ‡', name: 'grapes', shortcodes: ['grapes'], tags: ['fruit', 'wine'], group: 'Food & Drink' },\n { emoji: '๐Ÿ‰', name: 'watermelon', shortcodes: ['watermelon'], tags: ['fruit', 'summer'], group: 'Food & Drink' },\n { emoji: '๐ŸŠ', name: 'tangerine', shortcodes: ['tangerine', 'orange'], tags: ['fruit', 'citrus'], group: 'Food & Drink' },\n { emoji: '๐Ÿ‹', name: 'lemon', shortcodes: ['lemon'], tags: ['fruit', 'citrus'], group: 'Food & Drink' },\n { emoji: '๐Ÿ“', name: 'strawberry', shortcodes: ['strawberry'], tags: ['fruit', 'berry'], group: 'Food & Drink' },\n { emoji: '๐Ÿซ', name: 'blueberries', shortcodes: ['blueberries'], tags: ['fruit', 'berry'], group: 'Food & Drink' },\n { emoji: '๐Ÿ‘', name: 'peach', shortcodes: ['peach'], tags: ['fruit'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅ‘', name: 'avocado', shortcodes: ['avocado'], tags: ['fruit', 'guacamole'], group: 'Food & Drink' },\n { emoji: '๐Ÿ…', name: 'tomato', shortcodes: ['tomato'], tags: ['vegetable', 'fruit'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅ•', name: 'carrot', shortcodes: ['carrot'], tags: ['vegetable', 'orange'], group: 'Food & Drink' },\n { emoji: '๐ŸŒฝ', name: 'ear_of_corn', shortcodes: ['corn'], tags: ['vegetable', 'maize'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅฆ', name: 'broccoli', shortcodes: ['broccoli'], tags: ['vegetable', 'green'], group: 'Food & Drink' },\n { emoji: '๐Ÿง„', name: 'garlic', shortcodes: ['garlic'], tags: ['spice', 'cooking'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅš', name: 'egg', shortcodes: ['egg'], tags: ['breakfast', 'food'], group: 'Food & Drink' },\n { emoji: '๐Ÿณ', name: 'cooking', shortcodes: ['fried_egg'], tags: ['breakfast', 'egg'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅž', name: 'pancakes', shortcodes: ['pancakes'], tags: ['breakfast', 'food'], group: 'Food & Drink' },\n { emoji: '๐Ÿง‡', name: 'waffle', shortcodes: ['waffle'], tags: ['breakfast', 'food'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅ“', name: 'bacon', shortcodes: ['bacon'], tags: ['breakfast', 'meat'], group: 'Food & Drink' },\n { emoji: '๐Ÿ–', name: 'meat_on_bone', shortcodes: ['meat_on_bone'], tags: ['food', 'bbq'], group: 'Food & Drink' },\n { emoji: '๐Ÿ—', name: 'poultry_leg', shortcodes: ['poultry_leg'], tags: ['food', 'chicken'], group: 'Food & Drink' },\n { emoji: '๐ŸŒญ', name: 'hot_dog', shortcodes: ['hot_dog'], tags: ['food', 'sausage'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅช', name: 'sandwich', shortcodes: ['sandwich'], tags: ['food', 'lunch'], group: 'Food & Drink' },\n { emoji: '๐Ÿฃ', name: 'sushi', shortcodes: ['sushi'], tags: ['food', 'japanese'], group: 'Food & Drink' },\n { emoji: '๐Ÿฑ', name: 'bento_box', shortcodes: ['bento'], tags: ['food', 'japanese'], group: 'Food & Drink' },\n { emoji: '๐Ÿœ', name: 'steaming_bowl', shortcodes: ['ramen'], tags: ['food', 'noodles', 'soup'], group: 'Food & Drink' },\n { emoji: '๐Ÿ', name: 'spaghetti', shortcodes: ['spaghetti'], tags: ['food', 'pasta', 'italian'], group: 'Food & Drink' },\n { emoji: '๐Ÿง', name: 'cupcake', shortcodes: ['cupcake'], tags: ['dessert', 'sweet'], group: 'Food & Drink' },\n { emoji: '๐Ÿซ', name: 'chocolate_bar', shortcodes: ['chocolate_bar'], tags: ['sweet', 'candy'], group: 'Food & Drink' },\n { emoji: '๐Ÿญ', name: 'lollipop', shortcodes: ['lollipop'], tags: ['sweet', 'candy'], group: 'Food & Drink' },\n { emoji: '๐Ÿฟ', name: 'popcorn', shortcodes: ['popcorn'], tags: ['movie', 'snack'], group: 'Food & Drink' },\n { emoji: '๐Ÿงƒ', name: 'beverage_box', shortcodes: ['beverage_box'], tags: ['juice', 'drink'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅค', name: 'cup_with_straw', shortcodes: ['cup_with_straw'], tags: ['drink', 'soda'], group: 'Food & Drink' },\n { emoji: '๐ŸงŠ', name: 'ice', shortcodes: ['ice_cube'], tags: ['cold', 'frozen'], group: 'Food & Drink' },\n { emoji: '๐Ÿฅƒ', name: 'tumbler_glass', shortcodes: ['tumbler_glass'], tags: ['whiskey', 'drink'], group: 'Food & Drink' },\n { emoji: '๐Ÿธ', name: 'cocktail_glass', shortcodes: ['cocktail'], tags: ['drink', 'martini'], group: 'Food & Drink' },\n { emoji: '๐Ÿน', name: 'tropical_drink', shortcodes: ['tropical_drink'], tags: ['drink', 'cocktail'], group: 'Food & Drink' },\n { emoji: '๐Ÿซ–', name: 'teapot', shortcodes: ['teapot'], tags: ['tea', 'drink'], group: 'Food & Drink' },\n\n // === Travel & Places ===\n { emoji: '๐ŸŒŽ', name: 'globe_showing_americas', shortcodes: ['earth_americas'], tags: ['world', 'globe'], group: 'Travel & Places' },\n { emoji: '๐ŸŒ', name: 'globe_showing_asia_australia', shortcodes: ['earth_asia'], tags: ['world', 'globe'], group: 'Travel & Places' },\n { emoji: '๐ŸŒ™', name: 'crescent_moon', shortcodes: ['crescent_moon'], tags: ['night', 'moon'], group: 'Travel & Places' },\n { emoji: '๐ŸŒž', name: 'sun_with_face', shortcodes: ['sun_with_face'], tags: ['sun', 'bright'], group: 'Travel & Places' },\n { emoji: 'โ˜€๏ธ', name: 'sun', shortcodes: ['sunny'], tags: ['weather', 'bright'], group: 'Travel & Places' },\n { emoji: 'โ›…', name: 'sun_behind_cloud', shortcodes: ['partly_sunny'], tags: ['weather', 'cloud'], group: 'Travel & Places' },\n { emoji: 'โ˜๏ธ', name: 'cloud', shortcodes: ['cloud'], tags: ['weather'], group: 'Travel & Places' },\n { emoji: '๐ŸŒง๏ธ', name: 'cloud_with_rain', shortcodes: ['cloud_with_rain'], tags: ['weather', 'rainy'], group: 'Travel & Places' },\n { emoji: 'โ›ˆ๏ธ', name: 'cloud_with_lightning_and_rain', shortcodes: ['cloud_with_lightning_and_rain'], tags: ['weather', 'storm'], group: 'Travel & Places' },\n { emoji: '๐ŸŒฉ๏ธ', name: 'cloud_with_lightning', shortcodes: ['cloud_with_lightning'], tags: ['weather', 'thunder'], group: 'Travel & Places' },\n { emoji: 'โ„๏ธ', name: 'snowflake', shortcodes: ['snowflake'], tags: ['winter', 'cold'], group: 'Travel & Places' },\n { emoji: 'โ›„', name: 'snowman_without_snow', shortcodes: ['snowman_without_snow'], tags: ['winter', 'cold'], group: 'Travel & Places' },\n { emoji: '๐ŸŒŠ', name: 'water_wave', shortcodes: ['ocean'], tags: ['wave', 'sea'], group: 'Travel & Places' },\n { emoji: '๐ŸŒ‹', name: 'volcano', shortcodes: ['volcano'], tags: ['eruption', 'mountain'], group: 'Travel & Places' },\n { emoji: '๐Ÿ”๏ธ', name: 'snow_capped_mountain', shortcodes: ['mountain_snow'], tags: ['mountain', 'snow'], group: 'Travel & Places' },\n { emoji: 'โ›ฐ๏ธ', name: 'mountain', shortcodes: ['mountain'], tags: ['nature', 'hiking'], group: 'Travel & Places' },\n { emoji: '๐Ÿ–๏ธ', name: 'beach_with_umbrella', shortcodes: ['beach_umbrella'], tags: ['beach', 'summer'], group: 'Travel & Places' },\n { emoji: '๐Ÿ•๏ธ', name: 'camping', shortcodes: ['camping'], tags: ['tent', 'nature'], group: 'Travel & Places' },\n { emoji: '๐Ÿ ', name: 'house', shortcodes: ['house'], tags: ['home', 'building'], group: 'Travel & Places' },\n { emoji: '๐Ÿข', name: 'office_building', shortcodes: ['office'], tags: ['work', 'building'], group: 'Travel & Places' },\n { emoji: '๐Ÿฅ', name: 'hospital', shortcodes: ['hospital'], tags: ['health', 'medical'], group: 'Travel & Places' },\n { emoji: '๐Ÿซ', name: 'school', shortcodes: ['school'], tags: ['education', 'building'], group: 'Travel & Places' },\n { emoji: 'โœˆ๏ธ', name: 'airplane', shortcodes: ['airplane'], tags: ['travel', 'fly'], group: 'Travel & Places' },\n { emoji: '๐Ÿš€', name: 'rocket', shortcodes: ['rocket'], tags: ['space', 'launch', 'fast'], group: 'Travel & Places' },\n { emoji: '๐Ÿ›ธ', name: 'flying_saucer', shortcodes: ['flying_saucer'], tags: ['ufo', 'alien'], group: 'Travel & Places' },\n { emoji: '๐Ÿš—', name: 'automobile', shortcodes: ['car', 'red_car'], tags: ['vehicle', 'drive'], group: 'Travel & Places' },\n { emoji: '๐Ÿš•', name: 'taxi', shortcodes: ['taxi'], tags: ['vehicle', 'cab'], group: 'Travel & Places' },\n { emoji: '๐ŸšŒ', name: 'bus', shortcodes: ['bus'], tags: ['vehicle', 'transit'], group: 'Travel & Places' },\n { emoji: '๐Ÿšฒ', name: 'bicycle', shortcodes: ['bike'], tags: ['vehicle', 'cycling'], group: 'Travel & Places' },\n { emoji: '๐Ÿ›ต', name: 'motor_scooter', shortcodes: ['motor_scooter'], tags: ['vehicle', 'vespa'], group: 'Travel & Places' },\n { emoji: '๐Ÿšข', name: 'ship', shortcodes: ['ship'], tags: ['boat', 'cruise'], group: 'Travel & Places' },\n { emoji: 'โ›ต', name: 'sailboat', shortcodes: ['sailboat'], tags: ['boat', 'sail'], group: 'Travel & Places' },\n\n // === Additional Objects ===\n { emoji: 'โŒš', name: 'watch', shortcodes: ['watch'], tags: ['time', 'clock'], group: 'Objects' },\n { emoji: '๐Ÿ–ฅ๏ธ', name: 'desktop_computer', shortcodes: ['desktop_computer'], tags: ['computer', 'pc'], group: 'Objects' },\n { emoji: 'โŒจ๏ธ', name: 'keyboard', shortcodes: ['keyboard'], tags: ['type', 'computer'], group: 'Objects' },\n { emoji: '๐Ÿ–ฑ๏ธ', name: 'computer_mouse', shortcodes: ['computer_mouse'], tags: ['click', 'computer'], group: 'Objects' },\n { emoji: '๐ŸŽฅ', name: 'movie_camera', shortcodes: ['movie_camera'], tags: ['film', 'cinema'], group: 'Objects' },\n { emoji: '๐Ÿ“บ', name: 'television', shortcodes: ['tv'], tags: ['screen', 'watch'], group: 'Objects' },\n { emoji: '๐Ÿ“ป', name: 'radio', shortcodes: ['radio'], tags: ['music', 'broadcast'], group: 'Objects' },\n { emoji: '๐ŸŽ™๏ธ', name: 'studio_microphone', shortcodes: ['studio_microphone'], tags: ['podcast', 'recording'], group: 'Objects' },\n { emoji: '๐ŸŽค', name: 'microphone', shortcodes: ['microphone'], tags: ['singing', 'karaoke'], group: 'Objects' },\n { emoji: '๐ŸŽง', name: 'headphone', shortcodes: ['headphones'], tags: ['music', 'audio'], group: 'Objects' },\n { emoji: '๐ŸŽน', name: 'musical_keyboard', shortcodes: ['musical_keyboard'], tags: ['piano', 'music'], group: 'Objects' },\n { emoji: '๐Ÿฅ', name: 'drum', shortcodes: ['drum'], tags: ['music', 'beat'], group: 'Objects' },\n { emoji: '๐ŸŽบ', name: 'trumpet', shortcodes: ['trumpet'], tags: ['music', 'brass'], group: 'Objects' },\n { emoji: '๐ŸŽป', name: 'violin', shortcodes: ['violin'], tags: ['music', 'string'], group: 'Objects' },\n { emoji: '๐Ÿ”ง', name: 'wrench', shortcodes: ['wrench'], tags: ['tool', 'fix'], group: 'Objects' },\n { emoji: '๐Ÿ”จ', name: 'hammer', shortcodes: ['hammer'], tags: ['tool', 'build'], group: 'Objects' },\n { emoji: 'โš™๏ธ', name: 'gear', shortcodes: ['gear'], tags: ['settings', 'cog'], group: 'Objects' },\n { emoji: '๐Ÿ”—', name: 'link', shortcodes: ['link'], tags: ['url', 'chain'], group: 'Objects' },\n { emoji: '๐Ÿ–‡๏ธ', name: 'linked_paperclips', shortcodes: ['paperclips'], tags: ['attach'], group: 'Objects' },\n { emoji: '๐Ÿ“', name: 'straight_ruler', shortcodes: ['straight_ruler'], tags: ['measure', 'school'], group: 'Objects' },\n { emoji: '๐Ÿ“', name: 'triangular_ruler', shortcodes: ['triangular_ruler'], tags: ['math', 'school'], group: 'Objects' },\n { emoji: 'โœ‚๏ธ', name: 'scissors', shortcodes: ['scissors'], tags: ['cut'], group: 'Objects' },\n { emoji: '๐Ÿ“ฆ', name: 'package', shortcodes: ['package'], tags: ['box', 'delivery'], group: 'Objects' },\n { emoji: '๐Ÿ“ซ', name: 'closed_mailbox_with_raised_flag', shortcodes: ['mailbox'], tags: ['mail', 'letter'], group: 'Objects' },\n { emoji: '๐Ÿ“ง', name: 'email', shortcodes: ['email', 'e-mail'], tags: ['mail', 'letter'], group: 'Objects' },\n { emoji: '๐Ÿ“ฐ', name: 'newspaper', shortcodes: ['newspaper'], tags: ['news', 'media'], group: 'Objects' },\n { emoji: '๐Ÿ—ž๏ธ', name: 'rolled_up_newspaper', shortcodes: ['newspaper_roll'], tags: ['news'], group: 'Objects' },\n { emoji: '๐Ÿ“–', name: 'open_book', shortcodes: ['book', 'open_book'], tags: ['read', 'study'], group: 'Objects' },\n { emoji: '๐Ÿ”–', name: 'bookmark', shortcodes: ['bookmark'], tags: ['save', 'mark'], group: 'Objects' },\n { emoji: '๐Ÿท๏ธ', name: 'label', shortcodes: ['label'], tags: ['tag', 'price'], group: 'Objects' },\n { emoji: '๐Ÿ’Š', name: 'pill', shortcodes: ['pill'], tags: ['medicine', 'health'], group: 'Objects' },\n { emoji: '๐Ÿฉน', name: 'adhesive_bandage', shortcodes: ['adhesive_bandage'], tags: ['bandaid', 'heal'], group: 'Objects' },\n { emoji: '๐Ÿงฒ', name: 'magnet', shortcodes: ['magnet'], tags: ['attract', 'magnetic'], group: 'Objects' },\n { emoji: '๐Ÿงช', name: 'test_tube', shortcodes: ['test_tube'], tags: ['science', 'chemistry'], group: 'Objects' },\n { emoji: '๐Ÿงฌ', name: 'dna', shortcodes: ['dna'], tags: ['science', 'genetics'], group: 'Objects' },\n { emoji: '๐Ÿ”ฌ', name: 'microscope', shortcodes: ['microscope'], tags: ['science', 'lab'], group: 'Objects' },\n { emoji: '๐Ÿ”ญ', name: 'telescope', shortcodes: ['telescope'], tags: ['space', 'astronomy'], group: 'Objects' },\n { emoji: '๐Ÿ’Ž', name: 'gem_stone', shortcodes: ['gem'], tags: ['diamond', 'jewel'], group: 'Objects' },\n { emoji: '๐Ÿช™', name: 'coin', shortcodes: ['coin'], tags: ['money', 'currency'], group: 'Objects' },\n { emoji: '๐Ÿ’ต', name: 'dollar_banknote', shortcodes: ['dollar'], tags: ['money', 'cash'], group: 'Objects' },\n { emoji: '๐Ÿ’ณ', name: 'credit_card', shortcodes: ['credit_card'], tags: ['money', 'payment'], group: 'Objects' },\n\n // === Additional Activities ===\n { emoji: '๐Ÿˆ', name: 'american_football', shortcodes: ['football'], tags: ['sport', 'nfl'], group: 'Activities' },\n { emoji: 'โšพ', name: 'baseball', shortcodes: ['baseball'], tags: ['sport'], group: 'Activities' },\n { emoji: '๐ŸŽพ', name: 'tennis', shortcodes: ['tennis'], tags: ['sport', 'racket'], group: 'Activities' },\n { emoji: '๐Ÿ', name: 'volleyball', shortcodes: ['volleyball'], tags: ['sport'], group: 'Activities' },\n { emoji: '๐Ÿ“', name: 'ping_pong', shortcodes: ['ping_pong'], tags: ['sport', 'table tennis'], group: 'Activities' },\n { emoji: '๐ŸฅŠ', name: 'boxing_glove', shortcodes: ['boxing_glove'], tags: ['sport', 'fight'], group: 'Activities' },\n { emoji: '๐Ÿ‹๏ธ', name: 'person_lifting_weights', shortcodes: ['weight_lifting'], tags: ['gym', 'exercise'], group: 'Activities' },\n { emoji: '๐Ÿšด', name: 'person_biking', shortcodes: ['biking'], tags: ['cycling', 'sport'], group: 'Activities' },\n { emoji: '๐ŸŠ', name: 'person_swimming', shortcodes: ['swimming'], tags: ['sport', 'pool'], group: 'Activities' },\n { emoji: '๐Ÿง˜', name: 'person_in_lotus_position', shortcodes: ['lotus_position'], tags: ['yoga', 'meditation'], group: 'Activities' },\n { emoji: '๐ŸŽฒ', name: 'game_die', shortcodes: ['game_die'], tags: ['dice', 'game'], group: 'Activities' },\n { emoji: '๐Ÿงฉ', name: 'puzzle_piece', shortcodes: ['jigsaw'], tags: ['puzzle', 'game'], group: 'Activities' },\n { emoji: '๐ŸŽญ', name: 'performing_arts', shortcodes: ['performing_arts'], tags: ['theater', 'drama'], group: 'Activities' },\n { emoji: '๐ŸŽจ', name: 'artist_palette', shortcodes: ['art'], tags: ['paint', 'creative'], group: 'Activities' },\n { emoji: '๐ŸŽฌ', name: 'clapper_board', shortcodes: ['clapper'], tags: ['movie', 'film'], group: 'Activities' },\n { emoji: '๐ŸŽช', name: 'circus_tent', shortcodes: ['circus_tent'], tags: ['circus', 'show'], group: 'Activities' },\n { emoji: '๐Ÿฅˆ', name: 'second_place_medal', shortcodes: ['silver_medal'], tags: ['second', 'silver'], group: 'Activities' },\n { emoji: '๐Ÿฅ‰', name: 'third_place_medal', shortcodes: ['bronze_medal'], tags: ['third', 'bronze'], group: 'Activities' },\n { emoji: '๐ŸŽ—๏ธ', name: 'reminder_ribbon', shortcodes: ['reminder_ribbon'], tags: ['awareness'], group: 'Activities' },\n { emoji: '๐ŸŽŸ๏ธ', name: 'admission_tickets', shortcodes: ['tickets'], tags: ['event', 'entry'], group: 'Activities' },\n { emoji: '๐ŸŽ„', name: 'christmas_tree', shortcodes: ['christmas_tree'], tags: ['holiday', 'xmas'], group: 'Activities' },\n { emoji: '๐ŸŽƒ', name: 'jack_o_lantern', shortcodes: ['jack_o_lantern'], tags: ['halloween', 'pumpkin'], group: 'Activities' },\n { emoji: '๐ŸŽ†', name: 'fireworks', shortcodes: ['fireworks'], tags: ['celebration', 'new year'], group: 'Activities' },\n { emoji: '๐ŸŽ‡', name: 'sparkler', shortcodes: ['sparkler'], tags: ['celebration', 'firework'], group: 'Activities' },\n\n // === Additional Symbols ===\n { emoji: 'โ˜ฎ๏ธ', name: 'peace_symbol', shortcodes: ['peace_symbol'], tags: ['peace'], group: 'Symbols' },\n { emoji: 'โœ๏ธ', name: 'latin_cross', shortcodes: ['latin_cross'], tags: ['religion', 'christian'], group: 'Symbols' },\n { emoji: 'โ˜ช๏ธ', name: 'star_and_crescent', shortcodes: ['star_and_crescent'], tags: ['religion', 'islam'], group: 'Symbols' },\n { emoji: 'โœก๏ธ', name: 'star_of_david', shortcodes: ['star_of_david'], tags: ['religion', 'jewish'], group: 'Symbols' },\n { emoji: 'โ˜ฏ๏ธ', name: 'yin_yang', shortcodes: ['yin_yang'], tags: ['balance'], group: 'Symbols' },\n { emoji: 'โ™พ๏ธ', name: 'infinity', shortcodes: ['infinity'], tags: ['forever', 'endless'], group: 'Symbols' },\n { emoji: '๐Ÿ”€', name: 'shuffle_tracks_button', shortcodes: ['twisted_rightwards_arrows'], tags: ['random', 'shuffle'], group: 'Symbols' },\n { emoji: '๐Ÿ”', name: 'repeat_button', shortcodes: ['repeat'], tags: ['loop', 'replay'], group: 'Symbols' },\n { emoji: 'โ–ถ๏ธ', name: 'play_button', shortcodes: ['arrow_forward'], tags: ['play', 'start'], group: 'Symbols' },\n { emoji: 'โธ๏ธ', name: 'pause_button', shortcodes: ['pause_button'], tags: ['pause', 'stop'], group: 'Symbols' },\n { emoji: 'โน๏ธ', name: 'stop_button', shortcodes: ['stop_button'], tags: ['stop', 'end'], group: 'Symbols' },\n { emoji: 'โฉ', name: 'fast_forward_button', shortcodes: ['fast_forward'], tags: ['speed', 'skip'], group: 'Symbols' },\n { emoji: 'โช', name: 'fast_reverse_button', shortcodes: ['rewind'], tags: ['back', 'reverse'], group: 'Symbols' },\n { emoji: '๐Ÿ”Š', name: 'speaker_high_volume', shortcodes: ['loud_sound'], tags: ['volume', 'audio'], group: 'Symbols' },\n { emoji: '๐Ÿ”‡', name: 'muted_speaker', shortcodes: ['mute'], tags: ['volume', 'silent'], group: 'Symbols' },\n { emoji: '๐Ÿ“ณ', name: 'vibration_mode', shortcodes: ['vibration_mode'], tags: ['phone', 'silent'], group: 'Symbols' },\n { emoji: '๐Ÿ”…', name: 'dim_button', shortcodes: ['low_brightness'], tags: ['brightness', 'dim'], group: 'Symbols' },\n { emoji: '๐Ÿ”†', name: 'bright_button', shortcodes: ['high_brightness'], tags: ['brightness', 'light'], group: 'Symbols' },\n { emoji: 'โ™€๏ธ', name: 'female_sign', shortcodes: ['female_sign'], tags: ['woman', 'gender'], group: 'Symbols' },\n { emoji: 'โ™‚๏ธ', name: 'male_sign', shortcodes: ['male_sign'], tags: ['man', 'gender'], group: 'Symbols' },\n { emoji: 'โšง๏ธ', name: 'transgender_symbol', shortcodes: ['transgender_symbol'], tags: ['gender', 'trans'], group: 'Symbols' },\n { emoji: 'โž•', name: 'plus', shortcodes: ['heavy_plus_sign'], tags: ['add', 'math'], group: 'Symbols' },\n { emoji: 'โž–', name: 'minus', shortcodes: ['heavy_minus_sign'], tags: ['subtract', 'math'], group: 'Symbols' },\n { emoji: 'โž—', name: 'divide', shortcodes: ['heavy_division_sign'], tags: ['divide', 'math'], group: 'Symbols' },\n { emoji: 'โœ–๏ธ', name: 'multiply', shortcodes: ['heavy_multiplication_x'], tags: ['multiply', 'math'], group: 'Symbols' },\n { emoji: '๐ŸŸ ', name: 'orange_circle', shortcodes: ['orange_circle'], tags: ['orange', 'dot'], group: 'Symbols' },\n { emoji: '๐ŸŸฃ', name: 'purple_circle', shortcodes: ['purple_circle'], tags: ['purple', 'dot'], group: 'Symbols' },\n { emoji: '๐ŸŸค', name: 'brown_circle', shortcodes: ['brown_circle'], tags: ['brown', 'dot'], group: 'Symbols' },\n { emoji: 'โšซ', name: 'black_circle', shortcodes: ['black_circle'], tags: ['black', 'dot'], group: 'Symbols' },\n { emoji: 'โšช', name: 'white_circle', shortcodes: ['white_circle'], tags: ['white', 'dot'], group: 'Symbols' },\n { emoji: '๐ŸŸฅ', name: 'red_square', shortcodes: ['red_square'], tags: ['red', 'square'], group: 'Symbols' },\n { emoji: '๐ŸŸง', name: 'orange_square', shortcodes: ['orange_square'], tags: ['orange', 'square'], group: 'Symbols' },\n { emoji: '๐ŸŸจ', name: 'yellow_square', shortcodes: ['yellow_square'], tags: ['yellow', 'square'], group: 'Symbols' },\n { emoji: '๐ŸŸฉ', name: 'green_square', shortcodes: ['green_square'], tags: ['green', 'square'], group: 'Symbols' },\n { emoji: '๐ŸŸฆ', name: 'blue_square', shortcodes: ['blue_square'], tags: ['blue', 'square'], group: 'Symbols' },\n { emoji: '๐ŸŸช', name: 'purple_square', shortcodes: ['purple_square'], tags: ['purple', 'square'], group: 'Symbols' },\n { emoji: '๐Ÿ”ถ', name: 'large_orange_diamond', shortcodes: ['large_orange_diamond'], tags: ['shape'], group: 'Symbols' },\n { emoji: '๐Ÿ”ท', name: 'large_blue_diamond', shortcodes: ['large_blue_diamond'], tags: ['shape'], group: 'Symbols' },\n { emoji: '๐Ÿ”ธ', name: 'small_orange_diamond', shortcodes: ['small_orange_diamond'], tags: ['shape'], group: 'Symbols' },\n { emoji: '๐Ÿ”น', name: 'small_blue_diamond', shortcodes: ['small_blue_diamond'], tags: ['shape'], group: 'Symbols' },\n { emoji: '๐Ÿ’ ', name: 'diamond_with_a_dot', shortcodes: ['diamond_shape_with_a_dot_inside'], tags: ['shape'], group: 'Symbols' },\n\n // === Additional Flags ===\n { emoji: '๐Ÿ‡บ๐Ÿ‡ธ', name: 'flag_us', shortcodes: ['us', 'flag_us'], tags: ['usa', 'america'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฌ๐Ÿ‡ง', name: 'flag_gb', shortcodes: ['gb', 'uk', 'flag_gb'], tags: ['britain', 'england'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฉ๐Ÿ‡ช', name: 'flag_de', shortcodes: ['de', 'flag_de'], tags: ['germany'], group: 'Flags' },\n { emoji: '๐Ÿ‡ซ๐Ÿ‡ท', name: 'flag_fr', shortcodes: ['fr', 'flag_fr'], tags: ['france'], group: 'Flags' },\n { emoji: '๐Ÿ‡ช๐Ÿ‡ธ', name: 'flag_es', shortcodes: ['es', 'flag_es'], tags: ['spain'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฎ๐Ÿ‡น', name: 'flag_it', shortcodes: ['it', 'flag_it'], tags: ['italy'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฏ๐Ÿ‡ต', name: 'flag_jp', shortcodes: ['jp', 'flag_jp'], tags: ['japan'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฐ๐Ÿ‡ท', name: 'flag_kr', shortcodes: ['kr', 'flag_kr'], tags: ['korea', 'south korea'], group: 'Flags' },\n { emoji: '๐Ÿ‡จ๐Ÿ‡ณ', name: 'flag_cn', shortcodes: ['cn', 'flag_cn'], tags: ['china'], group: 'Flags' },\n { emoji: '๐Ÿ‡ท๐Ÿ‡บ', name: 'flag_ru', shortcodes: ['ru', 'flag_ru'], tags: ['russia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ง๐Ÿ‡ท', name: 'flag_br', shortcodes: ['br', 'flag_br'], tags: ['brazil'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฎ๐Ÿ‡ณ', name: 'flag_in', shortcodes: ['flag_in'], tags: ['india'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฆ๐Ÿ‡บ', name: 'flag_au', shortcodes: ['flag_au'], tags: ['australia'], group: 'Flags' },\n { emoji: '๐Ÿ‡จ๐Ÿ‡ฆ', name: 'flag_ca', shortcodes: ['flag_ca'], tags: ['canada'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฒ๐Ÿ‡ฝ', name: 'flag_mx', shortcodes: ['flag_mx'], tags: ['mexico'], group: 'Flags' },\n { emoji: '๐Ÿ‡ญ๐Ÿ‡ท', name: 'flag_hr', shortcodes: ['hr', 'flag_hr'], tags: ['croatia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ต๐Ÿ‡ฑ', name: 'flag_pl', shortcodes: ['flag_pl'], tags: ['poland'], group: 'Flags' },\n { emoji: '๐Ÿ‡ณ๐Ÿ‡ฑ', name: 'flag_nl', shortcodes: ['flag_nl'], tags: ['netherlands'], group: 'Flags' },\n { emoji: '๐Ÿ‡ธ๐Ÿ‡ช', name: 'flag_se', shortcodes: ['flag_se'], tags: ['sweden'], group: 'Flags' },\n { emoji: '๐Ÿ‡ณ๐Ÿ‡ด', name: 'flag_no', shortcodes: ['flag_no'], tags: ['norway'], group: 'Flags' },\n { emoji: '๐Ÿ‡น๐Ÿ‡ท', name: 'flag_tr', shortcodes: ['flag_tr'], tags: ['turkey'], group: 'Flags' },\n { emoji: '๐Ÿ‡บ๐Ÿ‡ฆ', name: 'flag_ua', shortcodes: ['flag_ua'], tags: ['ukraine'], group: 'Flags' },\n { emoji: '๐Ÿ‡ต๐Ÿ‡น', name: 'flag_pt', shortcodes: ['flag_pt'], tags: ['portugal'], group: 'Flags' },\n { emoji: '๐Ÿ‡จ๐Ÿ‡ญ', name: 'flag_ch', shortcodes: ['flag_ch'], tags: ['switzerland'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฆ๐Ÿ‡น', name: 'flag_at', shortcodes: ['flag_at'], tags: ['austria'], group: 'Flags' },\n { emoji: '๐Ÿ‡ง๐Ÿ‡ช', name: 'flag_be', shortcodes: ['flag_be'], tags: ['belgium'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฌ๐Ÿ‡ท', name: 'flag_gr', shortcodes: ['flag_gr'], tags: ['greece'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฎ๐Ÿ‡ช', name: 'flag_ie', shortcodes: ['flag_ie'], tags: ['ireland'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฆ๐Ÿ‡ท', name: 'flag_ar', shortcodes: ['flag_ar'], tags: ['argentina'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฟ๐Ÿ‡ฆ', name: 'flag_za', shortcodes: ['flag_za'], tags: ['south africa'], group: 'Flags' },\n { emoji: '๐Ÿ‡ช๐Ÿ‡ฌ', name: 'flag_eg', shortcodes: ['flag_eg'], tags: ['egypt'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฎ๐Ÿ‡ฑ', name: 'flag_il', shortcodes: ['flag_il'], tags: ['israel'], group: 'Flags' },\n { emoji: '๐Ÿ‡ธ๐Ÿ‡ฆ', name: 'flag_sa', shortcodes: ['flag_sa'], tags: ['saudi arabia'], group: 'Flags' },\n { emoji: '๐Ÿ‡น๐Ÿ‡ญ', name: 'flag_th', shortcodes: ['flag_th'], tags: ['thailand'], group: 'Flags' },\n { emoji: '๐Ÿ‡ป๐Ÿ‡ณ', name: 'flag_vn', shortcodes: ['flag_vn'], tags: ['vietnam'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฎ๐Ÿ‡ฉ', name: 'flag_id', shortcodes: ['flag_id'], tags: ['indonesia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ต๐Ÿ‡ญ', name: 'flag_ph', shortcodes: ['flag_ph'], tags: ['philippines'], group: 'Flags' },\n { emoji: '๐Ÿ‡ณ๐Ÿ‡ฌ', name: 'flag_ng', shortcodes: ['flag_ng'], tags: ['nigeria'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฐ๐Ÿ‡ช', name: 'flag_ke', shortcodes: ['flag_ke'], tags: ['kenya'], group: 'Flags' },\n { emoji: '๐Ÿ‡จ๐Ÿ‡ด', name: 'flag_co', shortcodes: ['flag_co'], tags: ['colombia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ต๐Ÿ‡ช', name: 'flag_pe', shortcodes: ['flag_pe'], tags: ['peru'], group: 'Flags' },\n { emoji: '๐Ÿ‡จ๐Ÿ‡ฑ', name: 'flag_cl', shortcodes: ['flag_cl'], tags: ['chile'], group: 'Flags' },\n { emoji: '๐Ÿ‡ณ๐Ÿ‡ฟ', name: 'flag_nz', shortcodes: ['flag_nz'], tags: ['new zealand'], group: 'Flags' },\n { emoji: '๐Ÿ‡ธ๐Ÿ‡ฌ', name: 'flag_sg', shortcodes: ['flag_sg'], tags: ['singapore'], group: 'Flags' },\n { emoji: '๐Ÿ‡ฒ๐Ÿ‡พ', name: 'flag_my', shortcodes: ['flag_my'], tags: ['malaysia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ท๐Ÿ‡ธ', name: 'flag_rs', shortcodes: ['flag_rs'], tags: ['serbia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ง๐Ÿ‡ฆ', name: 'flag_ba', shortcodes: ['flag_ba'], tags: ['bosnia'], group: 'Flags' },\n { emoji: '๐Ÿ‡ธ๐Ÿ‡ฎ', name: 'flag_si', shortcodes: ['flag_si'], tags: ['slovenia'], group: 'Flags' },\n];\n","/**\n * Emoticon to emoji name mappings.\n * Used when `enableEmoticons: true` to convert text shortcuts to emoji.\n *\n * Each key is the emoticon text, value is the emoji `name` from the dataset.\n * The emoticon is matched at the end of input (after a space or at line start).\n */\nexport const emoticons: Record<string, string> = {\n // Smileys\n ':)': 'slightly_smiling_face',\n ':-)': 'slightly_smiling_face',\n '(:': 'slightly_smiling_face',\n ':D': 'grinning_face_with_big_eyes',\n ':-D': 'grinning_face_with_big_eyes',\n ';)': 'winking_face',\n ';-)': 'winking_face',\n ':(': 'slightly_frowning_face',\n ':-(': 'slightly_frowning_face',\n \":'(\": 'crying_face',\n ':P': 'face_with_tongue',\n ':-P': 'face_with_tongue',\n ':p': 'face_with_tongue',\n ':O': 'face_with_open_mouth',\n ':-O': 'face_with_open_mouth',\n ':o': 'face_with_open_mouth',\n ':/': 'confused_face',\n ':-/': 'confused_face',\n ':\\\\': 'confused_face',\n 'B)': 'smiling_face_with_sunglasses',\n '8)': 'smiling_face_with_sunglasses',\n ':*': 'kissing_face',\n ':-*': 'kissing_face',\n '>:(': 'angry_face',\n '>:-(': 'angry_face',\n 'XD': 'face_with_tears_of_joy',\n 'xD': 'face_with_tears_of_joy',\n ':$': 'flushed_face',\n 'O:)': 'smiling_face_with_halo',\n '>:)': 'smiling_face_with_horns',\n ':|': 'neutral_face',\n ':-|': 'neutral_face',\n\n // Symbols\n '<3': 'red_heart',\n '</3': 'broken_heart',\n};\n","/**\n * Suggestion Plugin for Emoji Autocomplete\n *\n * Headless ProseMirror plugin that watches for a trigger character (default: ':'),\n * tracks the query, and calls render callbacks so framework wrappers can display\n * a dropdown picker.\n *\n * This is a zero-dependency implementation โ€” no external suggestion library needed.\n */\nimport { Plugin, PluginKey } from '@domternal/pm/state';\nimport type { EditorState, Transaction } from '@domternal/pm/state';\nimport type { EditorView } from '@domternal/pm/view';\nimport type { NodeType } from '@domternal/pm/model';\nimport type { EmojiItem } from './emojis.js';\nimport type { EmojiStorage } from './Emoji.js';\n\n/** Plugin key for external access to suggestion state. */\nexport const emojiSuggestionPluginKey = new PluginKey<SuggestionState>(\n 'emojiSuggestion',\n);\n\nexport interface SuggestionProps {\n /** Current query string (text after trigger char). */\n query: string;\n /** Document range of the trigger + query (for replacement). */\n range: { from: number; to: number };\n /** Filtered emoji items matching the query. */\n items: EmojiItem[];\n /** Call to insert an emoji and close the suggestion. */\n command: (item: EmojiItem) => void;\n /** Returns the client rect of the cursor for positioning the popup. */\n clientRect: (() => DOMRect | null) | null;\n /** The ProseMirror editor DOM element (for appending popups inside the editor tree). */\n element: HTMLElement;\n}\n\nexport interface SuggestionRenderer {\n /** Called when suggestion is first activated. */\n onStart: (props: SuggestionProps) => void;\n /** Called when query or items change. */\n onUpdate: (props: SuggestionProps) => void;\n /** Called when suggestion is deactivated. */\n onExit: () => void;\n /** Called on keydown โ€” return true to prevent default editor handling. */\n onKeyDown: (event: KeyboardEvent) => boolean;\n}\n\nexport interface SuggestionOptions {\n /** Trigger character. Default: ':' */\n char?: string;\n /** Minimum query length before showing suggestions. Default: 0 */\n minQueryLength?: number;\n /** Filter/sort items for a given query. */\n items?: (props: { query: string }) => EmojiItem[];\n /** Render callbacks for the suggestion popup. */\n render?: () => SuggestionRenderer;\n /** Allow spaces in query. Default: false */\n allowSpaces?: boolean;\n}\n\ninterface SuggestionPluginOptions extends SuggestionOptions {\n editor: unknown;\n nodeType: NodeType | null;\n storage: EmojiStorage;\n plainText: boolean;\n}\n\ninterface SuggestionState {\n active: boolean;\n query: string;\n range: { from: number; to: number } | null;\n}\n\nconst INITIAL_STATE: SuggestionState = {\n active: false,\n query: '',\n range: null,\n};\n\n/**\n * Extracts the suggestion query from the current text before the cursor.\n * Returns null if no active suggestion is found.\n */\nfunction findSuggestionQuery(\n state: EditorState,\n triggerChar: string,\n allowSpaces: boolean,\n): { query: string; range: { from: number; to: number } } | null {\n const { selection } = state;\n\n // Only work with collapsed cursor selections\n if (!selection.empty) return null;\n\n const { $from } = selection;\n\n // Don't activate inside code contexts (codeBlock node or inline code mark)\n if ($from.parent.type.spec.code) return null;\n const activeMarks = state.storedMarks ?? $from.marks();\n if (activeMarks.some((m) => m.type.name === 'code')) return null;\n\n const textBefore = $from.parent.textBetween(\n 0,\n $from.parentOffset,\n undefined,\n '\\ufffc',\n );\n\n // Find the last trigger character\n const triggerIndex = textBefore.lastIndexOf(triggerChar);\n if (triggerIndex === -1) return null;\n\n // The trigger must be at the start or preceded by a space\n if (triggerIndex > 0 && textBefore[triggerIndex - 1] !== ' ') return null;\n\n const queryText = textBefore.slice(triggerIndex + triggerChar.length);\n\n // Validate query: no spaces (unless allowed), only valid chars\n if (!allowSpaces && queryText.includes(' ')) return null;\n\n // Query must be alphanumeric/underscore/dash/plus\n if (!/^[a-zA-Z0-9_+\\- ]*$/.test(queryText)) return null;\n\n const from = $from.start() + triggerIndex;\n const to = $from.pos;\n\n return { query: queryText, range: { from, to } };\n}\n\n/**\n * Creates a ProseMirror plugin for emoji suggestion/autocomplete.\n */\nexport function createSuggestionPlugin(\n options: SuggestionPluginOptions,\n): Plugin {\n const triggerChar = options.char ?? ':';\n const minQueryLength = options.minQueryLength ?? 0;\n const allowSpaces = options.allowSpaces ?? false;\n const getItems = options.items;\n const getRender = options.render;\n const { nodeType, storage, plainText } = options;\n\n let renderer: SuggestionRenderer | null = null;\n\n return new Plugin<SuggestionState>({\n key: emojiSuggestionPluginKey,\n\n state: {\n init(): SuggestionState {\n return { ...INITIAL_STATE };\n },\n\n apply(tr: Transaction, prev: SuggestionState, _oldState: EditorState, newState: EditorState): SuggestionState {\n // Dismiss via Escape key (or programmatic dismiss)\n if (tr.getMeta(emojiSuggestionPluginKey) === 'dismiss') {\n return { ...INITIAL_STATE };\n }\n\n // Check if this transaction is from user input\n const isUserInput = tr.docChanged || tr.selectionSet;\n if (!isUserInput) return prev;\n\n const result = findSuggestionQuery(newState, triggerChar, allowSpaces);\n\n if (result && result.query.length >= minQueryLength) {\n return {\n active: true,\n query: result.query,\n range: result.range,\n };\n }\n\n // If was active and now no match, deactivate\n if (prev.active) {\n return { ...INITIAL_STATE };\n }\n\n return prev;\n },\n },\n\n view() {\n return {\n update(view: EditorView) {\n const state = emojiSuggestionPluginKey.getState(view.state);\n if (!state) return;\n\n if (state.active && state.range) {\n const items = getItems\n ? getItems({ query: state.query })\n : storage.searchEmoji(state.query);\n\n const command = (item: EmojiItem): void => {\n if (!state.range) return;\n\n const { tr } = view.state;\n\n if (plainText) {\n tr.replaceWith(\n state.range.from,\n state.range.to,\n view.state.schema.text(item.emoji),\n );\n } else if (nodeType) {\n const node = nodeType.create({ name: item.name });\n tr.replaceWith(state.range.from, state.range.to, node);\n }\n\n // Add a space after the emoji\n tr.insertText(' ');\n view.dispatch(tr);\n\n storage.addFrequentlyUsed(item.name);\n };\n\n const clientRect = (): DOMRect | null => {\n if (!state.range) return null;\n try {\n const coords = view.coordsAtPos(state.range.from);\n return new DOMRect(coords.left, coords.top, 0, coords.bottom - coords.top);\n } catch {\n return null;\n }\n };\n\n const props: SuggestionProps = {\n query: state.query,\n range: state.range,\n items,\n command,\n clientRect,\n element: view.dom,\n };\n\n if (!renderer && getRender) {\n renderer = getRender();\n renderer.onStart(props);\n } else if (renderer) {\n renderer.onUpdate(props);\n }\n } else if (renderer) {\n renderer.onExit();\n renderer = null;\n }\n },\n\n destroy() {\n if (renderer) {\n renderer.onExit();\n renderer = null;\n }\n },\n };\n },\n\n props: {\n // Use handleDOMEvents.keydown instead of handleKeyDown so that\n // suggestion key handling fires BEFORE keymap plugins (which use\n // handleKeyDown and would otherwise intercept Enter/ArrowUp/ArrowDown).\n handleDOMEvents: {\n keydown(view: EditorView, event: KeyboardEvent): boolean {\n const state = emojiSuggestionPluginKey.getState(view.state);\n if (!state?.active) return false;\n\n // Escape closes suggestion\n if (event.key === 'Escape') {\n event.preventDefault();\n const { tr } = view.state;\n tr.setMeta(emojiSuggestionPluginKey, 'dismiss');\n view.dispatch(tr);\n return true;\n }\n\n // Delegate to renderer for ArrowUp/Down/Enter\n if (renderer) {\n const handled = renderer.onKeyDown(event);\n if (handled) {\n event.preventDefault();\n }\n return handled;\n }\n\n return false;\n },\n },\n },\n });\n}\n","/**\n * Emoji Node Extension\n *\n * Inline atom node for emoji with shortcode input rules, emoticon support,\n * and a headless suggestion plugin for autocomplete pickers.\n *\n * @example\n * ```ts\n * import { Emoji, emojis } from '@domternal/extension-emoji';\n *\n * const editor = new Editor({\n * extensions: [\n * Emoji.configure({\n * emojis,\n * enableEmoticons: true,\n * }),\n * ],\n * });\n *\n * // Insert emoji by name\n * editor.commands.insertEmoji('smile');\n *\n * // Programmatically open suggestion picker\n * editor.commands.suggestEmoji();\n * ```\n */\nimport { Node } from '@domternal/core';\nimport type { CommandSpec, ToolbarItem } from '@domternal/core';\nimport { InputRule } from '@domternal/pm/inputrules';\nimport type { EditorState } from '@domternal/pm/state';\nimport { emojis as defaultEmojis } from './emojis.js';\nimport type { EmojiItem } from './emojis.js';\nimport { emoticons } from './emoticons.js';\nimport { createSuggestionPlugin } from './suggestionPlugin.js';\nimport type { SuggestionOptions } from './suggestionPlugin.js';\n\ndeclare module '@domternal/core' {\n interface RawCommands {\n insertEmoji: CommandSpec<[name: string]>;\n suggestEmoji: CommandSpec;\n }\n}\n\nexport interface EmojiOptions {\n /** Emoji dataset. Default: built-in ~200 popular emoji. */\n emojis: EmojiItem[];\n /** Enable emoticon shortcuts like :) and <3. Default: false. */\n enableEmoticons: boolean;\n /** Render emoji as plain text instead of atom nodes. Default: false. */\n plainText: boolean;\n /** HTML attributes for the emoji span element. */\n HTMLAttributes: Record<string, unknown>;\n /** Suggestion plugin config for autocomplete picker. Default: null (disabled). */\n suggestion: SuggestionOptions | null;\n}\n\nexport interface EmojiStorage {\n /** Get frequently used emoji names, sorted by usage count descending. */\n getFrequentlyUsed: () => string[];\n /** Record a usage of an emoji name. */\n addFrequentlyUsed: (name: string) => void;\n /** Find an emoji item by name. */\n findEmoji: (name: string) => EmojiItem | undefined;\n /** Search emoji by query (matches name, shortcodes, and tags). */\n searchEmoji: (query: string) => EmojiItem[];\n /** @internal Name โ†’ EmojiItem lookup map (set in onCreate). */\n _nameMap?: Map<string, EmojiItem>;\n /** @internal Shortcode โ†’ EmojiItem lookup map (set in onCreate). */\n _shortcodeMap?: Map<string, EmojiItem>;\n}\n\n/** Builds a shortcode โ†’ EmojiItem lookup map for fast resolution. */\nfunction buildShortcodeMap(items: EmojiItem[]): Map<string, EmojiItem> {\n const map = new Map<string, EmojiItem>();\n for (const item of items) {\n for (const code of item.shortcodes) {\n map.set(code, item);\n }\n }\n return map;\n}\n\n/** Builds a name โ†’ EmojiItem lookup map for fast resolution. */\nfunction buildNameMap(items: EmojiItem[]): Map<string, EmojiItem> {\n const map = new Map<string, EmojiItem>();\n for (const item of items) {\n map.set(item.name, item);\n }\n return map;\n}\n\n/** Escapes special regex characters in a string. */\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport const Emoji = Node.create<EmojiOptions, EmojiStorage>({\n name: 'emoji',\n group: 'inline',\n inline: true,\n atom: true,\n selectable: true,\n draggable: false,\n\n addOptions() {\n return {\n emojis: defaultEmojis,\n enableEmoticons: false,\n plainText: false,\n HTMLAttributes: {},\n suggestion: null,\n };\n },\n\n addStorage() {\n return {\n getFrequentlyUsed: () => [],\n addFrequentlyUsed: () => undefined,\n findEmoji: () => undefined,\n searchEmoji: () => [],\n };\n },\n\n onCreate() {\n const { emojis: emojiData } = this.options;\n\n // Maps may have already been built by addInputRules() (which runs first).\n // Only build if not already present.\n const nameMap = this.storage._nameMap ?? buildNameMap(emojiData);\n const shortcodeMap = this.storage._shortcodeMap ?? buildShortcodeMap(emojiData);\n const frequencyMap = new Map<string, number>();\n\n this.storage.findEmoji = (name: string) => nameMap.get(name);\n\n this.storage.searchEmoji = (query: string) => {\n const q = query.toLowerCase();\n return emojiData.filter(\n (item) =>\n item.name.includes(q) ||\n item.shortcodes.some((sc) => sc.includes(q)) ||\n item.tags.some((t) => t.includes(q)),\n );\n };\n\n this.storage.addFrequentlyUsed = (name: string) => {\n frequencyMap.set(name, (frequencyMap.get(name) ?? 0) + 1);\n };\n\n this.storage.getFrequentlyUsed = () =>\n [...frequencyMap.entries()]\n .sort((a, b) => b[1] - a[1])\n .map(([name]) => name);\n\n // Ensure maps are on storage for renderHTML / leafText access\n this.storage._shortcodeMap = shortcodeMap;\n this.storage._nameMap = nameMap;\n },\n\n addAttributes() {\n return {\n name: {\n default: null,\n parseHTML: (element: HTMLElement) =>\n element.getAttribute('data-name') ?? element.getAttribute('data-emoji-name'),\n renderHTML: (attributes: Record<string, unknown>) => {\n if (!attributes['name']) return {};\n return { 'data-name': attributes['name'] as string };\n },\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"emoji\"]',\n },\n {\n tag: 'span[data-emoji-name]',\n },\n ];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const name = node.attrs['name'] as string | null;\n const nameMap = this.storage._nameMap;\n const item = name ? nameMap?.get(name) : undefined;\n const emoji = item?.emoji ?? '';\n\n return [\n 'span',\n {\n ...this.options.HTMLAttributes,\n ...HTMLAttributes,\n 'data-type': 'emoji',\n 'data-name': name ?? '',\n class: [\n this.options.HTMLAttributes['class'] as string | undefined,\n HTMLAttributes['class'] as string | undefined,\n 'emoji',\n ]\n .filter(Boolean)\n .join(' '),\n },\n emoji,\n ];\n },\n\n // leafText: emoji char for getText() and clipboard\n leafText(node) {\n const name = node.attrs['name'] as string | null;\n const nameMap = this.storage._nameMap;\n const item = name ? nameMap?.get(name) : undefined;\n return item?.emoji ?? '';\n },\n\n addToolbarItems(): ToolbarItem[] {\n return [\n {\n type: 'button',\n name: 'emoji',\n command: 'insertEmoji',\n commandArgs: ['smile'],\n icon: 'smiley',\n label: 'Insert Emoji',\n group: 'insert',\n priority: 50,\n emitEvent: 'insertEmoji',\n },\n ];\n },\n\n addCommands() {\n return {\n insertEmoji:\n (name: string) =>\n ({ tr, dispatch }) => {\n // Refuse insertion inside code blocks\n if (tr.selection.$from.parent.type.spec.code) return false;\n\n if (!this.options.plainText && !this.nodeType) return false;\n\n const item = this.storage._nameMap?.get(name);\n\n if (dispatch) {\n if (!item) return false;\n\n if (this.options.plainText) {\n tr.insertText(item.emoji);\n } else {\n const nt = this.nodeType;\n if (!nt) return false;\n const node = nt.create({ name });\n tr.replaceSelectionWith(node);\n }\n dispatch(tr);\n this.storage.addFrequentlyUsed(name);\n } else if (!item) {\n // Dry-run: unknown name but context is valid โ€” report as capable\n return true;\n }\n\n return true;\n },\n\n suggestEmoji:\n () =>\n ({ tr, dispatch }) => {\n const suggestion = this.options.suggestion;\n if (!suggestion) return false;\n\n const char = suggestion.char ?? ':';\n\n if (dispatch) {\n tr.insertText(char);\n dispatch(tr);\n }\n\n return true;\n },\n };\n },\n\n addInputRules() {\n const rules: InputRule[] = [];\n const { emojis: emojiData, plainText, enableEmoticons } = this.options;\n\n // Build maps eagerly โ€” addInputRules() runs before onCreate(),\n // so we must build and store maps now for the input rule callbacks.\n this.storage._shortcodeMap ??= buildShortcodeMap(emojiData);\n this.storage._nameMap ??= buildNameMap(emojiData);\n\n const nodeType = this.nodeType;\n const storage = this.storage;\n\n // Shortcode input rule: :shortcode: โ†’ emoji\n rules.push(\n new InputRule(\n /:([a-zA-Z0-9_+-]+):$/,\n (state: EditorState, match: RegExpMatchArray, start: number, end: number) => {\n // Don't convert inside code contexts (codeBlock or inline code mark)\n const { $from } = state.selection;\n if ($from.parent.type.spec.code) return null;\n const activeMarks = state.storedMarks ?? $from.marks();\n if (activeMarks.some((m) => m.type.name === 'code')) return null;\n\n const shortcode = match[1];\n if (!shortcode) return null;\n\n const item = storage._shortcodeMap?.get(shortcode);\n if (!item) return null;\n\n const { tr } = state;\n\n if (plainText) {\n tr.replaceWith(start, end, state.schema.text(item.emoji));\n } else if (nodeType) {\n const node = nodeType.create({ name: item.name });\n tr.replaceWith(start, end, node);\n } else {\n return null;\n }\n\n storage.addFrequentlyUsed(item.name);\n return tr;\n },\n ),\n );\n\n // Emoticon input rules (if enabled)\n if (enableEmoticons) {\n const emoticonEntries = Object.entries(emoticons);\n const nameMap = this.storage._nameMap;\n\n // Sort by length descending so longer emoticons match first\n emoticonEntries.sort((a, b) => b[0].length - a[0].length);\n\n for (const [emoticon, emojiName] of emoticonEntries) {\n const item = nameMap.get(emojiName);\n if (!item) continue;\n\n // Match emoticon preceded by space or start of text, followed by space\n const pattern = new RegExp(`(?:^|\\\\s)(${escapeRegex(emoticon)})\\\\s$`);\n\n rules.push(\n new InputRule(\n pattern,\n (state: EditorState, match: RegExpMatchArray, start: number) => {\n // Don't convert inside code contexts (codeBlock or inline code mark)\n const { $from } = state.selection;\n if ($from.parent.type.spec.code) return null;\n const activeMarks = state.storedMarks ?? $from.marks();\n if (activeMarks.some((m) => m.type.name === 'code')) return null;\n\n const { tr } = state;\n\n // Calculate the actual emoticon position (after the optional leading space)\n const fullMatch = match[0];\n const emoticonText = match[1];\n if (!emoticonText) return null;\n\n const emoticonStart = start + fullMatch.indexOf(emoticonText);\n const emoticonEnd = emoticonStart + emoticonText.length;\n\n if (plainText) {\n tr.replaceWith(emoticonStart, emoticonEnd, state.schema.text(item.emoji));\n } else if (nodeType) {\n const node = nodeType.create({ name: item.name });\n tr.replaceWith(emoticonStart, emoticonEnd, node);\n } else {\n return null;\n }\n\n storage.addFrequentlyUsed(item.name);\n return tr;\n },\n ),\n );\n }\n }\n\n return rules;\n },\n\n addProseMirrorPlugins() {\n const { suggestion } = this.options;\n if (!suggestion) return [];\n\n return [\n createSuggestionPlugin({\n ...suggestion,\n editor: this.editor,\n nodeType: this.nodeType,\n storage: this.storage,\n plainText: this.options.plainText,\n }),\n ];\n },\n});\n","/**\n * Default emoji suggestion renderer โ€” vanilla DOM dropdown.\n *\n * Framework-agnostic: creates a positioned dropdown near the cursor\n * that displays matching emoji items with keyboard navigation.\n *\n * @example\n * ```ts\n * import { Emoji, emojis, createEmojiSuggestionRenderer } from '@domternal/extension-emoji';\n *\n * const editor = new Editor({\n * extensions: [\n * Emoji.configure({\n * emojis,\n * suggestion: {\n * render: createEmojiSuggestionRenderer(),\n * },\n * }),\n * ],\n * });\n * ```\n */\nimport type { SuggestionProps, SuggestionRenderer } from './suggestionPlugin.js';\nimport type { EmojiItem } from './emojis.js';\nimport { positionFloatingOnce } from '@domternal/core';\n\nconst MAX_ITEMS = 10;\n\n/**\n * Creates a render factory for the emoji suggestion plugin.\n * Returns a function that produces a `SuggestionRenderer` instance.\n */\nexport function createEmojiSuggestionRenderer(): () => SuggestionRenderer {\n return () => {\n let container: HTMLDivElement | null = null;\n let currentProps: SuggestionProps | null = null;\n let selectedIndex = 0;\n let cleanupFloating: (() => void) | null = null;\n\n function render(): void {\n if (!container || !currentProps) return;\n\n const { items, command } = currentProps;\n const visible = items.slice(0, MAX_ITEMS);\n\n container.innerHTML = '';\n\n if (visible.length === 0) {\n const empty = document.createElement('div');\n empty.className = 'dm-emoji-suggestion-empty';\n empty.textContent = 'No emoji found';\n container.appendChild(empty);\n return;\n }\n\n visible.forEach((item: EmojiItem, i: number) => {\n const btn = document.createElement('button');\n btn.type = 'button';\n btn.className =\n 'dm-emoji-suggestion-item' +\n (i === selectedIndex ? ' dm-emoji-suggestion-item--selected' : '');\n btn.setAttribute('role', 'option');\n btn.setAttribute('aria-selected', String(i === selectedIndex));\n\n const emojiSpan = document.createElement('span');\n emojiSpan.className = 'dm-emoji-suggestion-emoji';\n emojiSpan.textContent = item.emoji;\n\n const nameSpan = document.createElement('span');\n nameSpan.className = 'dm-emoji-suggestion-name';\n nameSpan.textContent = item.name.replace(/_/g, ' ');\n\n btn.appendChild(emojiSpan);\n btn.appendChild(nameSpan);\n\n btn.addEventListener('mousedown', (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n });\n btn.addEventListener('click', () => {\n command(item);\n });\n btn.addEventListener('mouseenter', () => {\n if (selectedIndex === i) return;\n const prev = container?.querySelector('.dm-emoji-suggestion-item--selected');\n if (prev) {\n prev.classList.remove('dm-emoji-suggestion-item--selected');\n prev.setAttribute('aria-selected', 'false');\n }\n selectedIndex = i;\n btn.classList.add('dm-emoji-suggestion-item--selected');\n btn.setAttribute('aria-selected', 'true');\n });\n\n container?.appendChild(btn);\n });\n }\n\n function updatePosition(): void {\n if (!container || !currentProps?.clientRect) return;\n\n cleanupFloating?.();\n\n const virtualEl = {\n getBoundingClientRect: () => {\n const rect = currentProps?.clientRect?.();\n return rect ?? new DOMRect(0, 0, 0, 0);\n },\n };\n\n cleanupFloating = positionFloatingOnce(virtualEl, container, {\n placement: 'bottom-start',\n offsetValue: 4,\n });\n }\n\n return {\n onStart(props: SuggestionProps): void {\n currentProps = props;\n selectedIndex = 0;\n\n container = document.createElement('div');\n container.className = 'dm-emoji-suggestion';\n container.setAttribute('role', 'listbox');\n\n // Append inside .dm-editor (which has position:relative) so the\n // dropdown scrolls with the editor content via CSS โ€” zero jitter\n // for both page scroll and internal editor scroll scenarios.\n const editorEl = props.element.closest('.dm-editor');\n const appendTarget = editorEl ?? document.body;\n appendTarget.appendChild(container);\n\n render();\n updatePosition();\n },\n\n onUpdate(props: SuggestionProps): void {\n currentProps = props;\n selectedIndex = 0;\n render();\n updatePosition();\n },\n\n onExit(): void {\n cleanupFloating?.();\n cleanupFloating = null;\n container?.remove();\n container = null;\n currentProps = null;\n selectedIndex = 0;\n },\n\n onKeyDown(event: KeyboardEvent): boolean {\n if (!currentProps) return false;\n\n const maxIndex = Math.min(currentProps.items.length, MAX_ITEMS) - 1;\n\n if (event.key === 'ArrowDown') {\n selectedIndex = Math.min(selectedIndex + 1, maxIndex);\n render();\n return true;\n }\n\n if (event.key === 'ArrowUp') {\n selectedIndex = Math.max(selectedIndex - 1, 0);\n render();\n return true;\n }\n\n if (event.key === 'Enter') {\n const item = currentProps.items[selectedIndex];\n if (item) currentProps.command(item);\n return true;\n }\n\n return false;\n },\n };\n };\n}\n"]}