Private
Public Access
Typing ":name" now shows a matching-shortcode dropdown (same join/leave/arrow-key UX as the existing @mention and #room autocompletes), selecting one inserts the actual glyph immediately rather than leaving literal ":name:" text. A bare ":" with nothing typed yet suggests recently-used emoji instead of an arbitrary slice of the ~950 known shortcodes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
980 lines
23 KiB
TypeScript
980 lines
23 KiB
TypeScript
// Shortcode -> emoji lookup for :name: conversion in chat messages,
|
||
// generated once from emojibase-data (MIT licensed,
|
||
// https://github.com/milesj/emojibase -- en/shortcodes/github.json), matched
|
||
// against the emoji actually used in emoji.ts. Not a runtime dependency:
|
||
// emojibase-data was only ever a dev-time tool to produce this static
|
||
// lookup, never added to package.json. Uses GitHub's shortcode set (the
|
||
// most broadly recognized convention) rather than Slack/CLDR/JoyPixels
|
||
// variants. If emoji.ts ever adds a new entry, this needs regenerating to
|
||
// match.
|
||
export const EMOJI_SHORTCODES: Record<string, string> = {
|
||
'+1': '👍',
|
||
'-1': '👎',
|
||
'100': '💯',
|
||
'1234': '🔢',
|
||
'1st_place_medal': '🥇',
|
||
'2nd_place_medal': '🥈',
|
||
'3rd_place_medal': '🥉',
|
||
'8ball': '🎱',
|
||
'a': '🅰️',
|
||
'ab': '🆎',
|
||
'abc': '🔤',
|
||
'adhesive_bandage': '🩹',
|
||
'adult': '🧑',
|
||
'airplane': '✈️',
|
||
'alarm_clock': '⏰',
|
||
'alembic': '⚗️',
|
||
'alien': '👽',
|
||
'ambulance': '🚑',
|
||
'anatomical_heart': '🫀',
|
||
'anchor': '⚓',
|
||
'anger': '💢',
|
||
'angry': '😠',
|
||
'anguished': '😧',
|
||
'ant': '🐜',
|
||
'apple': '🍎',
|
||
'art': '🎨',
|
||
'astonished': '😲',
|
||
'australia': '🇦🇺',
|
||
'avocado': '🥑',
|
||
'axe': '🪓',
|
||
'b': '🅱️',
|
||
'baby': '👶',
|
||
'baby_bottle': '🍼',
|
||
'baby_chick': '🐤',
|
||
'bacon': '🥓',
|
||
'badger': '🦡',
|
||
'badminton': '🏸',
|
||
'bagel': '🥯',
|
||
'baguette_bread': '🥖',
|
||
'balance_scale': '⚖️',
|
||
'balloon': '🎈',
|
||
'ballot_box_with_check': '☑️',
|
||
'bamboo': '🎍',
|
||
'banana': '🍌',
|
||
'bangbang': '‼️',
|
||
'bank': '🏦',
|
||
'baseball': '⚾',
|
||
'basket': '🧺',
|
||
'basketball': '🏀',
|
||
'bat': '🦇',
|
||
'bathtub': '🛁',
|
||
'battery': '🔋',
|
||
'beach_umbrella': '🏖️',
|
||
'bear': '🐻',
|
||
'bed': '🛏️',
|
||
'bee': '🐝',
|
||
'beer': '🍺',
|
||
'beers': '🍻',
|
||
'beginner': '🔰',
|
||
'bell': '🔔',
|
||
'bell_pepper': '🫑',
|
||
'bellhop_bell': '🛎️',
|
||
'bento': '🍱',
|
||
'beverage_box': '🧃',
|
||
'bicyclist': '🚴',
|
||
'bike': '🚲',
|
||
'biohazard': '☣️',
|
||
'bird': '🐦',
|
||
'birthday': '🎂',
|
||
'black_circle': '⚫',
|
||
'black_flag': '🏴',
|
||
'black_heart': '🖤',
|
||
'black_joker': '🃏',
|
||
'black_large_square': '⬛',
|
||
'black_medium_square': '◼️',
|
||
'blond_haired_person': '👱',
|
||
'blossom': '🌼',
|
||
'blowfish': '🐡',
|
||
'blue_book': '📘',
|
||
'blue_car': '🚙',
|
||
'blue_heart': '💙',
|
||
'blue_square': '🟦',
|
||
'blueberries': '🫐',
|
||
'blush': '😊',
|
||
'boar': '🐗',
|
||
'boat': '⛵',
|
||
'bomb': '💣',
|
||
'bone': '🦴',
|
||
'book': '📖',
|
||
'bookmark': '🔖',
|
||
'books': '📚',
|
||
'boom': '💥',
|
||
'bouncing_ball_person': '⛹️',
|
||
'bouquet': '💐',
|
||
'bow': '🙇',
|
||
'bow_and_arrow': '🏹',
|
||
'bowl_with_spoon': '🥣',
|
||
'bowling': '🎳',
|
||
'boxing_glove': '🥊',
|
||
'boy': '👦',
|
||
'brain': '🧠',
|
||
'brazil': '🇧🇷',
|
||
'bread': '🍞',
|
||
'bricks': '🧱',
|
||
'bridge_at_night': '🌉',
|
||
'broccoli': '🥦',
|
||
'broken_heart': '💔',
|
||
'broom': '🧹',
|
||
'brown_circle': '🟤',
|
||
'brown_heart': '🤎',
|
||
'brown_square': '🟫',
|
||
'bubble_tea': '🧋',
|
||
'bucket': '🪣',
|
||
'bug': '🐛',
|
||
'building_construction': '🏗️',
|
||
'bulb': '💡',
|
||
'burrito': '🌯',
|
||
'bus': '🚌',
|
||
'bust_in_silhouette': '👤',
|
||
'busts_in_silhouette': '👥',
|
||
'butter': '🧈',
|
||
'butterfly': '🦋',
|
||
'cactus': '🌵',
|
||
'cake': '🍰',
|
||
'calendar': '📆',
|
||
'call_me_hand': '🤙',
|
||
'camel': '🐫',
|
||
'camera': '📷',
|
||
'camera_flash': '📸',
|
||
'camping': '🏕️',
|
||
'canada': '🇨🇦',
|
||
'candle': '🕯️',
|
||
'candy': '🍬',
|
||
'canned_food': '🥫',
|
||
'canoe': '🛶',
|
||
'car': '🚗',
|
||
'card_file_box': '🗃️',
|
||
'card_index': '📇',
|
||
'carousel_horse': '🎠',
|
||
'carrot': '🥕',
|
||
'cartwheeling': '🤸',
|
||
'cat': '🐱',
|
||
'cat2': '🐈',
|
||
'cd': '💿',
|
||
'chains': '⛓️',
|
||
'chair': '🪑',
|
||
'champagne': '🍾',
|
||
'checkered_flag': '🏁',
|
||
'cheese': '🧀',
|
||
'cherries': '🍒',
|
||
'cherry_blossom': '🌸',
|
||
'chess_pawn': '♟️',
|
||
'chestnut': '🌰',
|
||
'chicken': '🐔',
|
||
'child': '🧒',
|
||
'chipmunk': '🐿️',
|
||
'chocolate_bar': '🍫',
|
||
'chopsticks': '🥢',
|
||
'christmas_tree': '🎄',
|
||
'church': '⛪',
|
||
'circus_tent': '🎪',
|
||
'city_sunrise': '🌇',
|
||
'city_sunset': '🌆',
|
||
'cityscape': '🏙️',
|
||
'clap': '👏',
|
||
'clapper': '🎬',
|
||
'classical_building': '🏛️',
|
||
'climbing': '🧗',
|
||
'clinking_glasses': '🥂',
|
||
'clipboard': '📋',
|
||
'closed_book': '📕',
|
||
'closed_lock_with_key': '🔐',
|
||
'cloud': '☁️',
|
||
'cloud_with_lightning_and_rain': '⛈️',
|
||
'cloud_with_rain': '🌧️',
|
||
'clown_face': '🤡',
|
||
'cn': '🇨🇳',
|
||
'cocktail': '🍸',
|
||
'coconut': '🥥',
|
||
'coffee': '☕',
|
||
'coffin': '⚰️',
|
||
'cold_face': '🥶',
|
||
'cold_sweat': '😰',
|
||
'collision': '💥',
|
||
'comet': '☄️',
|
||
'compass': '🧭',
|
||
'computer': '💻',
|
||
'computer_mouse': '🖱️',
|
||
'confetti_ball': '🎊',
|
||
'confounded': '😖',
|
||
'confused': '😕',
|
||
'construction': '🚧',
|
||
'cookie': '🍪',
|
||
'cool': '🆒',
|
||
'corn': '🌽',
|
||
'couch_and_lamp': '🛋️',
|
||
'cow': '🐮',
|
||
'cow2': '🐄',
|
||
'cowboy_hat_face': '🤠',
|
||
'crab': '🦀',
|
||
'crayon': '🖍️',
|
||
'credit_card': '💳',
|
||
'crescent_moon': '🌙',
|
||
'cricket_game': '🏏',
|
||
'crocodile': '🐊',
|
||
'croissant': '🥐',
|
||
'crossed_fingers': '🤞',
|
||
'crossed_flags': '🎌',
|
||
'crossed_swords': '⚔️',
|
||
'cry': '😢',
|
||
'crying_cat_face': '😿',
|
||
'cucumber': '🥒',
|
||
'cup_with_straw': '🥤',
|
||
'cupcake': '🧁',
|
||
'cupid': '💘',
|
||
'currency_exchange': '💱',
|
||
'curry': '🍛',
|
||
'cursing_face': '🤬',
|
||
'custard': '🍮',
|
||
'cut_of_meat': '🥩',
|
||
'cyclone': '🌀',
|
||
'dagger': '🗡️',
|
||
'dango': '🍡',
|
||
'dart': '🎯',
|
||
'dash': '💨',
|
||
'date': '📅',
|
||
'de': '🇩🇪',
|
||
'deaf_person': '🧏',
|
||
'deciduous_tree': '🌳',
|
||
'deer': '🦌',
|
||
'department_store': '🏬',
|
||
'desert': '🏜️',
|
||
'desert_island': '🏝️',
|
||
'desktop_computer': '🖥️',
|
||
'diamond_shape_with_a_dot_inside': '💠',
|
||
'disappointed': '😞',
|
||
'disappointed_relieved': '😥',
|
||
'disguised_face': '🥸',
|
||
'diya_lamp': '🪔',
|
||
'dizzy': '💫',
|
||
'dizzy_face': '😵',
|
||
'dog': '🐶',
|
||
'dog2': '🐕',
|
||
'dollar': '💵',
|
||
'dolphin': '🐬',
|
||
'door': '🚪',
|
||
'dotted_line_face': '🫥',
|
||
'doughnut': '🍩',
|
||
'dove': '🕊️',
|
||
'dragon': '🐉',
|
||
'dromedary_camel': '🐪',
|
||
'drooling_face': '🤤',
|
||
'drop_of_blood': '🩸',
|
||
'droplet': '💧',
|
||
'drum': '🥁',
|
||
'duck': '🦆',
|
||
'dumpling': '🥟',
|
||
'dvd': '📀',
|
||
'e-mail': '📧',
|
||
'eagle': '🦅',
|
||
'ear': '👂',
|
||
'ear_of_rice': '🌾',
|
||
'ear_with_hearing_aid': '🦻',
|
||
'earth_africa': '🌍',
|
||
'earth_americas': '🌎',
|
||
'earth_asia': '🌏',
|
||
'egg': '🥚',
|
||
'eggplant': '🍆',
|
||
'eight_pointed_black_star': '✴️',
|
||
'eight_spoked_asterisk': '✳️',
|
||
'electric_plug': '🔌',
|
||
'elephant': '🐘',
|
||
'email': '📧',
|
||
'envelope_with_arrow': '📩',
|
||
'es': '🇪🇸',
|
||
'euro': '💶',
|
||
'european_castle': '🏰',
|
||
'evergreen_tree': '🌲',
|
||
'exclamation': '❗',
|
||
'exploding_head': '🤯',
|
||
'expressionless': '😑',
|
||
'eye': '👁️',
|
||
'eye_speech_bubble': '👁️🗨️',
|
||
'eyes': '👀',
|
||
'face_holding_back_tears': '🥹',
|
||
'face_with_diagonal_mouth': '🫤',
|
||
'face_with_head_bandage': '🤕',
|
||
'face_with_open_eyes_and_hand_over_mouth': '🫢',
|
||
'face_with_peeking_eye': '🫣',
|
||
'face_with_thermometer': '🤒',
|
||
'facepalm': '🤦',
|
||
'facepunch': '👊',
|
||
'factory': '🏭',
|
||
'falafel': '🧆',
|
||
'fallen_leaf': '🍂',
|
||
'fearful': '😨',
|
||
'feet': '🐾',
|
||
'ferris_wheel': '🎡',
|
||
'field_hockey': '🏑',
|
||
'file_cabinet': '🗄️',
|
||
'file_folder': '📁',
|
||
'fire': '🔥',
|
||
'fire_engine': '🚒',
|
||
'fire_extinguisher': '🧯',
|
||
'firecracker': '🧨',
|
||
'fireworks': '🎆',
|
||
'first_quarter_moon': '🌓',
|
||
'first_quarter_moon_with_face': '🌛',
|
||
'fish': '🐟',
|
||
'fish_cake': '🍥',
|
||
'fishing_pole_and_fish': '🎣',
|
||
'fist': '✊',
|
||
'fist_left': '🤛',
|
||
'fist_oncoming': '👊',
|
||
'fist_raised': '✊',
|
||
'fist_right': '🤜',
|
||
'flamingo': '🦩',
|
||
'flashlight': '🔦',
|
||
'fleur_de_lis': '⚜️',
|
||
'flight_arrival': '🛬',
|
||
'flight_departure': '🛫',
|
||
'flipper': '🐬',
|
||
'floppy_disk': '💾',
|
||
'flower_playing_cards': '🎴',
|
||
'flushed': '😳',
|
||
'flying_disc': '🥏',
|
||
'flying_saucer': '🛸',
|
||
'foggy': '🌁',
|
||
'foot': '🦶',
|
||
'football': '🏈',
|
||
'fork_and_knife': '🍴',
|
||
'fortune_cookie': '🥠',
|
||
'fountain': '⛲',
|
||
'fountain_pen': '🖋️',
|
||
'four_leaf_clover': '🍀',
|
||
'fox_face': '🦊',
|
||
'fr': '🇫🇷',
|
||
'free': '🆓',
|
||
'fried_egg': '🍳',
|
||
'fried_shrimp': '🍤',
|
||
'fries': '🍟',
|
||
'frog': '🐸',
|
||
'frowning': '😦',
|
||
'frowning_face': '☹️',
|
||
'fu': '🖕',
|
||
'full_moon': '🌕',
|
||
'full_moon_with_face': '🌝',
|
||
'game_die': '🎲',
|
||
'garlic': '🧄',
|
||
'gb': '🇬🇧',
|
||
'gear': '⚙️',
|
||
'gem': '💎',
|
||
'ghost': '👻',
|
||
'gift': '🎁',
|
||
'gift_heart': '💝',
|
||
'giraffe': '🦒',
|
||
'girl': '👧',
|
||
'goal_net': '🥅',
|
||
'goat': '🐐',
|
||
'golf': '⛳',
|
||
'gorilla': '🦍',
|
||
'grapes': '🍇',
|
||
'green_apple': '🍏',
|
||
'green_book': '📗',
|
||
'green_circle': '🟢',
|
||
'green_heart': '💚',
|
||
'green_salad': '🥗',
|
||
'green_square': '🟩',
|
||
'grey_exclamation': '❕',
|
||
'grey_question': '❔',
|
||
'grimacing': '😬',
|
||
'grin': '😁',
|
||
'grinning': '😀',
|
||
'guitar': '🎸',
|
||
'gun': '🔫',
|
||
'hamburger': '🍔',
|
||
'hammer': '🔨',
|
||
'hammer_and_pick': '⚒️',
|
||
'hammer_and_wrench': '🛠️',
|
||
'hamster': '🐹',
|
||
'hand': '✋',
|
||
'hand_over_mouth': '🤭',
|
||
'hand_with_index_finger_and_thumb_crossed': '🫰',
|
||
'handball_person': '🤾',
|
||
'handshake': '🤝',
|
||
'hankey': '💩',
|
||
'hatched_chick': '🐥',
|
||
'headphones': '🎧',
|
||
'headstone': '🪦',
|
||
'hear_no_evil': '🙉',
|
||
'heart': '❤️',
|
||
'heart_decoration': '💟',
|
||
'heart_eyes': '😍',
|
||
'heart_eyes_cat': '😻',
|
||
'heart_hands': '🫶',
|
||
'heart_on_fire': '❤️🔥',
|
||
'heartbeat': '💓',
|
||
'heartpulse': '💗',
|
||
'hearts': '♥️',
|
||
'heavy_check_mark': '✔️',
|
||
'heavy_division_sign': '➗',
|
||
'heavy_dollar_sign': '💲',
|
||
'heavy_exclamation_mark': '❗',
|
||
'heavy_minus_sign': '➖',
|
||
'heavy_multiplication_x': '✖️',
|
||
'heavy_plus_sign': '➕',
|
||
'hedgehog': '🦔',
|
||
'helicopter': '🚁',
|
||
'herb': '🌿',
|
||
'hibiscus': '🌺',
|
||
'hindu_temple': '🛕',
|
||
'hippopotamus': '🦛',
|
||
'hocho': '🔪',
|
||
'honey_pot': '🍯',
|
||
'honeybee': '🐝',
|
||
'horse': '🐴',
|
||
'horse_racing': '🏇',
|
||
'hospital': '🏥',
|
||
'hot_face': '🥵',
|
||
'hot_pepper': '🌶️',
|
||
'hotdog': '🌭',
|
||
'hotel': '🏨',
|
||
'hourglass': '⌛',
|
||
'hourglass_flowing_sand': '⏳',
|
||
'house': '🏠',
|
||
'house_with_garden': '🏡',
|
||
'hugs': '🤗',
|
||
'hushed': '😯',
|
||
'ice_cream': '🍨',
|
||
'ice_cube': '🧊',
|
||
'ice_hockey': '🏒',
|
||
'ice_skate': '⛸️',
|
||
'icecream': '🍦',
|
||
'imp': '👿',
|
||
'inbox_tray': '📥',
|
||
'incoming_envelope': '📨',
|
||
'india': '🇮🇳',
|
||
'infinity': '♾️',
|
||
'information_desk_person': '💁',
|
||
'innocent': '😇',
|
||
'interrobang': '⁉️',
|
||
'iphone': '📱',
|
||
'ireland': '🇮🇪',
|
||
'it': '🇮🇹',
|
||
'japanese_goblin': '👺',
|
||
'japanese_ogre': '👹',
|
||
'jigsaw': '🧩',
|
||
'joy': '😂',
|
||
'joy_cat': '😹',
|
||
'jp': '🇯🇵',
|
||
'juggling_person': '🤹',
|
||
'kangaroo': '🦘',
|
||
'key': '🔑',
|
||
'keyboard': '⌨️',
|
||
'keycap_ten': '🔟',
|
||
'kick_scooter': '🛴',
|
||
'kiss': '💋',
|
||
'kissing': '😗',
|
||
'kissing_cat': '😽',
|
||
'kissing_closed_eyes': '😚',
|
||
'kissing_heart': '😘',
|
||
'kissing_smiling_eyes': '😙',
|
||
'kite': '🪁',
|
||
'kiwi_fruit': '🥝',
|
||
'knife': '🔪',
|
||
'koala': '🐨',
|
||
'kr': '🇰🇷',
|
||
'lacrosse': '🥍',
|
||
'lady_beetle': '🐞',
|
||
'large_blue_circle': '🔵',
|
||
'large_blue_diamond': '🔷',
|
||
'large_orange_diamond': '🔶',
|
||
'last_quarter_moon': '🌗',
|
||
'last_quarter_moon_with_face': '🌜',
|
||
'laughing': '😆',
|
||
'leafy_green': '🥬',
|
||
'leaves': '🍃',
|
||
'ledger': '📒',
|
||
'leg': '🦵',
|
||
'lemon': '🍋',
|
||
'leopard': '🐆',
|
||
'lion': '🦁',
|
||
'lips': '👄',
|
||
'lizard': '🦎',
|
||
'llama': '🦙',
|
||
'lobster': '🦞',
|
||
'lock': '🔒',
|
||
'lock_with_ink_pen': '🔏',
|
||
'lollipop': '🍭',
|
||
'lotion_bottle': '🧴',
|
||
'lotus_position': '🧘',
|
||
'loud_sound': '🔊',
|
||
'loudspeaker': '📢',
|
||
'love_letter': '💌',
|
||
'love_you_gesture': '🤟',
|
||
'luggage': '🧳',
|
||
'lungs': '🫁',
|
||
'lying_face': '🤥',
|
||
'magic_wand': '🪄',
|
||
'magnet': '🧲',
|
||
'mahjong': '🀄',
|
||
'mailbox': '📫',
|
||
'mailbox_closed': '📪',
|
||
'mailbox_with_mail': '📬',
|
||
'mailbox_with_no_mail': '📭',
|
||
'man': '👨',
|
||
'mandarin': '🍊',
|
||
'mango': '🥭',
|
||
'mantelpiece_clock': '🕰️',
|
||
'maple_leaf': '🍁',
|
||
'martial_arts_uniform': '🥋',
|
||
'mask': '😷',
|
||
'mate': '🧉',
|
||
'meat_on_bone': '🍖',
|
||
'mechanical_arm': '🦾',
|
||
'mechanical_leg': '🦿',
|
||
'medal_military': '🎖️',
|
||
'medal_sports': '🏅',
|
||
'medical_symbol': '⚕️',
|
||
'mega': '📣',
|
||
'melon': '🍈',
|
||
'melting_face': '🫠',
|
||
'memo': '📝',
|
||
'metal': '🤘',
|
||
'metro': '🚇',
|
||
'mexico': '🇲🇽',
|
||
'microphone': '🎤',
|
||
'microscope': '🔬',
|
||
'middle_finger': '🖕',
|
||
'milk_glass': '🥛',
|
||
'minidisc': '💽',
|
||
'mirror': '🪞',
|
||
'money_mouth_face': '🤑',
|
||
'money_with_wings': '💸',
|
||
'moneybag': '💰',
|
||
'monkey_face': '🐵',
|
||
'monocle_face': '🧐',
|
||
'moon': '🌔',
|
||
'moon_cake': '🥮',
|
||
'mosque': '🕌',
|
||
'motor_scooter': '🛵',
|
||
'motorcycle': '🏍️',
|
||
'mountain': '⛰️',
|
||
'mountain_bicyclist': '🚵',
|
||
'mountain_snow': '🏔️',
|
||
'mouse': '🐭',
|
||
'mouse2': '🐁',
|
||
'movie_camera': '🎥',
|
||
'moyai': '🗿',
|
||
'muscle': '💪',
|
||
'mushroom': '🍄',
|
||
'musical_keyboard': '🎹',
|
||
'musical_score': '🎼',
|
||
'mute': '🔇',
|
||
'nail_care': '💅',
|
||
'name_badge': '📛',
|
||
'nauseated_face': '🤢',
|
||
'negative_squared_cross_mark': '❎',
|
||
'nerd_face': '🤓',
|
||
'netherlands': '🇳🇱',
|
||
'neutral_face': '😐',
|
||
'new': '🆕',
|
||
'new_moon': '🌑',
|
||
'new_moon_with_face': '🌚',
|
||
'newspaper': '📰',
|
||
'night_with_stars': '🌃',
|
||
'no_bell': '🔕',
|
||
'no_entry': '⛔',
|
||
'no_entry_sign': '🚫',
|
||
'no_good': '🙅',
|
||
'no_mobile_phones': '📵',
|
||
'no_mouth': '😶',
|
||
'norway': '🇳🇴',
|
||
'nose': '👃',
|
||
'notebook': '📓',
|
||
'notebook_with_decorative_cover': '📔',
|
||
'nut_and_bolt': '🔩',
|
||
'o': '⭕',
|
||
'o2': '🅾️',
|
||
'octopus': '🐙',
|
||
'oden': '🍢',
|
||
'office': '🏢',
|
||
'oil_drum': '🛢️',
|
||
'ok': '🆗',
|
||
'ok_hand': '👌',
|
||
'ok_person': '🙆',
|
||
'old_key': '🗝️',
|
||
'older_adult': '🧓',
|
||
'older_man': '👴',
|
||
'older_woman': '👵',
|
||
'olive': '🫒',
|
||
'onion': '🧅',
|
||
'open_book': '📖',
|
||
'open_file_folder': '📂',
|
||
'open_hands': '👐',
|
||
'open_mouth': '😮',
|
||
'orange': '🍊',
|
||
'orange_book': '📙',
|
||
'orange_circle': '🟠',
|
||
'orange_heart': '🧡',
|
||
'orange_square': '🟧',
|
||
'otter': '🦦',
|
||
'outbox_tray': '📤',
|
||
'owl': '🦉',
|
||
'ox': '🐂',
|
||
'oyster': '🦪',
|
||
'package': '📦',
|
||
'page_facing_up': '📄',
|
||
'page_with_curl': '📃',
|
||
'pager': '📟',
|
||
'paintbrush': '🖌️',
|
||
'palm_tree': '🌴',
|
||
'palms_up_together': '🤲',
|
||
'pancakes': '🥞',
|
||
'panda_face': '🐼',
|
||
'paperclip': '📎',
|
||
'parrot': '🦜',
|
||
'partly_sunny': '⛅',
|
||
'partying_face': '🥳',
|
||
'paw_prints': '🐾',
|
||
'peach': '🍑',
|
||
'peacock': '🦚',
|
||
'peanuts': '🥜',
|
||
'pear': '🍐',
|
||
'pen': '🖊️',
|
||
'pencil': '📝',
|
||
'pencil2': '✏️',
|
||
'penguin': '🐧',
|
||
'pensive': '😔',
|
||
'people_hugging': '🫂',
|
||
'performing_arts': '🎭',
|
||
'persevere': '😣',
|
||
'person_fencing': '🤺',
|
||
'phone': '☎️',
|
||
'pick': '⛏️',
|
||
'pie': '🥧',
|
||
'pig': '🐷',
|
||
'pig2': '🐖',
|
||
'pig_nose': '🐽',
|
||
'pill': '💊',
|
||
'pinata': '🪅',
|
||
'pinched_fingers': '🤌',
|
||
'pinching_hand': '🤏',
|
||
'pineapple': '🍍',
|
||
'ping_pong': '🏓',
|
||
'pirate_flag': '🏴☠️',
|
||
'pizza': '🍕',
|
||
'plate_with_cutlery': '🍽️',
|
||
'pleading_face': '🥺',
|
||
'point_down': '👇',
|
||
'point_left': '👈',
|
||
'point_right': '👉',
|
||
'point_up': '☝️',
|
||
'point_up_2': '👆',
|
||
'police_car': '🚓',
|
||
'poodle': '🐩',
|
||
'poop': '💩',
|
||
'popcorn': '🍿',
|
||
'portugal': '🇵🇹',
|
||
'postal_horn': '📯',
|
||
'postbox': '📮',
|
||
'potato': '🥔',
|
||
'potted_plant': '🪴',
|
||
'poultry_leg': '🍗',
|
||
'pound': '💷',
|
||
'pout': '😡',
|
||
'pouting_cat': '😾',
|
||
'pray': '🙏',
|
||
'pretzel': '🥨',
|
||
'printer': '🖨️',
|
||
'punch': '👊',
|
||
'purple_circle': '🟣',
|
||
'purple_heart': '💜',
|
||
'purple_square': '🟪',
|
||
'pushpin': '📌',
|
||
'question': '❓',
|
||
'rabbit': '🐰',
|
||
'rabbit2': '🐇',
|
||
'raccoon': '🦝',
|
||
'racehorse': '🐎',
|
||
'racing_car': '🏎️',
|
||
'radio': '📻',
|
||
'radioactive': '☢️',
|
||
'rage': '😡',
|
||
'rainbow': '🌈',
|
||
'rainbow_flag': '🏳️🌈',
|
||
'raised_back_of_hand': '🤚',
|
||
'raised_eyebrow': '🤨',
|
||
'raised_hand': '✋',
|
||
'raised_hand_with_fingers_splayed': '🖐️',
|
||
'raised_hands': '🙌',
|
||
'raising_hand': '🙋',
|
||
'ramen': '🍜',
|
||
'rat': '🐀',
|
||
'razor': '🪒',
|
||
'receipt': '🧾',
|
||
'recycle': '♻️',
|
||
'red_car': '🚗',
|
||
'red_circle': '🔴',
|
||
'red_square': '🟥',
|
||
'relieved': '😌',
|
||
'reminder_ribbon': '🎗️',
|
||
'revolving_hearts': '💞',
|
||
'rhinoceros': '🦏',
|
||
'ribbon': '🎀',
|
||
'rice': '🍚',
|
||
'rice_ball': '🍙',
|
||
'rice_cracker': '🍘',
|
||
'right_anger_bubble': '🗯️',
|
||
'ringed_planet': '🪐',
|
||
'robot': '🤖',
|
||
'rocket': '🚀',
|
||
'rofl': '🤣',
|
||
'roll_eyes': '🙄',
|
||
'roll_of_paper': '🧻',
|
||
'roller_coaster': '🎢',
|
||
'roller_skate': '🛼',
|
||
'rooster': '🐓',
|
||
'rose': '🌹',
|
||
'rowboat': '🚣',
|
||
'ru': '🇷🇺',
|
||
'rugby_football': '🏉',
|
||
'running_shirt_with_sash': '🎽',
|
||
'safety_pin': '🧷',
|
||
'sailboat': '⛵',
|
||
'sake': '🍶',
|
||
'salt': '🧂',
|
||
'saluting_face': '🫡',
|
||
'sandwich': '🥪',
|
||
'satellite': '📡',
|
||
'satisfied': '😆',
|
||
'sauropod': '🦕',
|
||
'saxophone': '🎷',
|
||
'school': '🏫',
|
||
'scissors': '✂️',
|
||
'scorpion': '🦂',
|
||
'scream': '😱',
|
||
'scream_cat': '🙀',
|
||
'scroll': '📜',
|
||
'see_no_evil': '🙈',
|
||
'seedling': '🌱',
|
||
'selfie': '🤳',
|
||
'shallow_pan_of_food': '🥘',
|
||
'shamrock': '☘️',
|
||
'shark': '🦈',
|
||
'shaved_ice': '🍧',
|
||
'sheep': '🐑',
|
||
'shell': '🐚',
|
||
'shield': '🛡️',
|
||
'shinto_shrine': '⛩️',
|
||
'ship': '🚢',
|
||
'shit': '💩',
|
||
'shopping_cart': '🛒',
|
||
'shower': '🚿',
|
||
'shrimp': '🦐',
|
||
'shrug': '🤷',
|
||
'shushing_face': '🤫',
|
||
'skateboard': '🛹',
|
||
'ski': '🎿',
|
||
'skier': '⛷️',
|
||
'skull': '💀',
|
||
'skull_and_crossbones': '☠️',
|
||
'skunk': '🦨',
|
||
'sled': '🛷',
|
||
'sleeping': '😴',
|
||
'sleepy': '😪',
|
||
'slightly_frowning_face': '🙁',
|
||
'slightly_smiling_face': '🙂',
|
||
'slot_machine': '🎰',
|
||
'sloth': '🦥',
|
||
'small_blue_diamond': '🔹',
|
||
'small_orange_diamond': '🔸',
|
||
'small_red_triangle': '🔺',
|
||
'small_red_triangle_down': '🔻',
|
||
'smile': '😄',
|
||
'smile_cat': '😸',
|
||
'smiley': '😃',
|
||
'smiley_cat': '😺',
|
||
'smiling_face_with_tear': '🥲',
|
||
'smiling_face_with_three_hearts': '🥰',
|
||
'smiling_imp': '😈',
|
||
'smirk': '😏',
|
||
'smirk_cat': '😼',
|
||
'smoking': '🚬',
|
||
'snail': '🐌',
|
||
'snake': '🐍',
|
||
'sneezing_face': '🤧',
|
||
'snowboarder': '🏂',
|
||
'snowflake': '❄️',
|
||
'snowman': '⛄',
|
||
'snowman_with_snow': '☃️',
|
||
'soap': '🧼',
|
||
'sob': '😭',
|
||
'soccer': '⚽',
|
||
'softball': '🥎',
|
||
'sound': '🔉',
|
||
'space_invader': '👾',
|
||
'spaghetti': '🍝',
|
||
'sparkle': '❇️',
|
||
'sparkler': '🎇',
|
||
'sparkles': '✨',
|
||
'sparkling_heart': '💖',
|
||
'speak_no_evil': '🙊',
|
||
'speaker': '🔈',
|
||
'speaking_head': '🗣️',
|
||
'speech_balloon': '💬',
|
||
'spider': '🕷️',
|
||
'sponge': '🧽',
|
||
'spoon': '🥄',
|
||
'squid': '🦑',
|
||
'stadium': '🏟️',
|
||
'star': '⭐',
|
||
'star2': '🌟',
|
||
'star_struck': '🤩',
|
||
'statue_of_liberty': '🗽',
|
||
'steam_locomotive': '🚂',
|
||
'stethoscope': '🩺',
|
||
'stew': '🍲',
|
||
'stopwatch': '⏱️',
|
||
'straight_ruler': '📏',
|
||
'strawberry': '🍓',
|
||
'stuck_out_tongue': '😛',
|
||
'stuck_out_tongue_closed_eyes': '😝',
|
||
'stuck_out_tongue_winking_eye': '😜',
|
||
'stuffed_flatbread': '🥙',
|
||
'sun_behind_large_cloud': '🌥️',
|
||
'sun_behind_rain_cloud': '🌦️',
|
||
'sun_behind_small_cloud': '🌤️',
|
||
'sun_with_face': '🌞',
|
||
'sunflower': '🌻',
|
||
'sunglasses': '😎',
|
||
'sunny': '☀️',
|
||
'sunrise': '🌅',
|
||
'sunrise_over_mountains': '🌄',
|
||
'surfer': '🏄',
|
||
'sushi': '🍣',
|
||
'swan': '🦢',
|
||
'sweat': '😓',
|
||
'sweat_drops': '💦',
|
||
'sweat_smile': '😅',
|
||
'sweden': '🇸🇪',
|
||
'sweet_potato': '🍠',
|
||
'swimmer': '🏊',
|
||
'symbols': '🔣',
|
||
'syringe': '💉',
|
||
't-rex': '🦖',
|
||
'taco': '🌮',
|
||
'tada': '🎉',
|
||
'takeout_box': '🥡',
|
||
'tangerine': '🍊',
|
||
'taxi': '🚕',
|
||
'tea': '🍵',
|
||
'teapot': '🫖',
|
||
'telephone': '☎️',
|
||
'telephone_receiver': '📞',
|
||
'telescope': '🔭',
|
||
'tennis': '🎾',
|
||
'tent': '⛺',
|
||
'thinking': '🤔',
|
||
'thought_balloon': '💭',
|
||
'thumbsdown': '👎',
|
||
'thumbsup': '👍',
|
||
'ticket': '🎫',
|
||
'tiger': '🐯',
|
||
'tiger2': '🐅',
|
||
'timer_clock': '⏲️',
|
||
'tipping_hand_person': '💁',
|
||
'tired_face': '😫',
|
||
'toilet': '🚽',
|
||
'tokyo_tower': '🗼',
|
||
'tomato': '🍅',
|
||
'tongue': '👅',
|
||
'toolbox': '🧰',
|
||
'tooth': '🦷',
|
||
'toothbrush': '🪥',
|
||
'tornado': '🌪️',
|
||
'train2': '🚆',
|
||
'triangular_flag_on_post': '🚩',
|
||
'triangular_ruler': '📐',
|
||
'trident': '🔱',
|
||
'triumph': '😤',
|
||
'trophy': '🏆',
|
||
'tropical_drink': '🍹',
|
||
'tropical_fish': '🐠',
|
||
'truck': '🚚',
|
||
'trumpet': '🎺',
|
||
'tulip': '🌷',
|
||
'tumbler_glass': '🥃',
|
||
'turkey': '🦃',
|
||
'turtle': '🐢',
|
||
'tv': '📺',
|
||
'two_hearts': '💕',
|
||
'uk': '🇬🇧',
|
||
'umbrella': '☔',
|
||
'unamused': '😒',
|
||
'underage': '🔞',
|
||
'unicorn': '🦄',
|
||
'unlock': '🔓',
|
||
'up': '🆙',
|
||
'upside_down_face': '🙃',
|
||
'us': '🇺🇸',
|
||
'v': '✌️',
|
||
'vertical_traffic_light': '🚦',
|
||
'video_camera': '📹',
|
||
'video_game': '🎮',
|
||
'violin': '🎻',
|
||
'volcano': '🌋',
|
||
'volleyball': '🏐',
|
||
'vomiting_face': '🤮',
|
||
'vulcan_salute': '🖖',
|
||
'waffle': '🧇',
|
||
'waning_crescent_moon': '🌘',
|
||
'waning_gibbous_moon': '🌖',
|
||
'wastebasket': '🗑️',
|
||
'watch': '⌚',
|
||
'water_buffalo': '🐃',
|
||
'watermelon': '🍉',
|
||
'wave': '👋',
|
||
'wavy_dash': '〰️',
|
||
'waxing_crescent_moon': '🌒',
|
||
'waxing_gibbous_moon': '🌔',
|
||
'weary': '😩',
|
||
'wedding': '💒',
|
||
'weight_lifting': '🏋️',
|
||
'whale': '🐳',
|
||
'whale2': '🐋',
|
||
'white_check_mark': '✅',
|
||
'white_circle': '⚪',
|
||
'white_flag': '🏳️',
|
||
'white_heart': '🤍',
|
||
'white_large_square': '⬜',
|
||
'white_medium_square': '◻️',
|
||
'wilted_flower': '🥀',
|
||
'window': '🪟',
|
||
'wine_glass': '🍷',
|
||
'wink': '😉',
|
||
'wolf': '🐺',
|
||
'woman': '👩',
|
||
'woozy_face': '🥴',
|
||
'world_map': '🗺️',
|
||
'worried': '😟',
|
||
'wrench': '🔧',
|
||
'wrestling': '🤼',
|
||
'writing_hand': '✍️',
|
||
'x': '❌',
|
||
'yawning_face': '🥱',
|
||
'yellow_circle': '🟡',
|
||
'yellow_heart': '💛',
|
||
'yellow_square': '🟨',
|
||
'yen': '💴',
|
||
'yo_yo': '🪀',
|
||
'yum': '😋',
|
||
'zany_face': '🤪',
|
||
'zap': '⚡',
|
||
'zebra': '🦓',
|
||
'zipper_mouth_face': '🤐',
|
||
}
|
||
|
||
// Reverse of the above, for #54's composer autocomplete: showing recently-
|
||
// used emoji (tracked by glyph, see recentEmoji.ts) as suggestions when the
|
||
// user has just typed a bare ":" with nothing after it yet. Several glyphs
|
||
// have more than one valid shortcode (e.g. 🖕 is both 'fu' and
|
||
// 'middle_finger') -- first one wins, in the object's own key order, which
|
||
// is deterministic but otherwise arbitrary.
|
||
export const SHORTCODE_BY_GLYPH: Record<string, string> = Object.fromEntries(
|
||
Object.entries(EMOJI_SHORTCODES)
|
||
.reverse()
|
||
.map(([shortcode, glyph]) => [glyph, shortcode]),
|
||
)
|