From 73de40b81e37897806ba8d53eeed2f4f3b429dc6 Mon Sep 17 00:00:00 2001 From: poppingmoon <63451158+poppingmoon@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:26:29 +0900 Subject: [PATCH 01/29] enhance: support emojis added in Unicode 16.0 or earlier (#16329) * add missing emojis to emojilist.json * reorder family emojis * reorder harp * reorder symbols * correct emoji genders * add missing emojis to unicode-emoji-indexes * add Japanese annotations for Sark flag * correct kana notations * add square colors * upgrade @twemoji/parser to 16.0.0 * correct emoji genders * upgrade mfm.js to 0.25.0 --- packages/backend/package.json | 6 +- packages/backend/src/misc/emoji-regex.ts | 2 +- packages/frontend-embed/package.json | 6 +- packages/frontend-shared/js/emojilist.json | 168 +++++++++++--- packages/frontend/.storybook/mocks.ts | 2 +- packages/frontend/package.json | 6 +- .../src/unicode-emoji-indexes/en-US.json | 218 +++++++++++++----- .../src/unicode-emoji-indexes/ja-JP.json | 45 ++++ .../src/unicode-emoji-indexes/ja-JP_hira.json | 53 ++++- pnpm-lock.yaml | 76 +++--- 10 files changed, 435 insertions(+), 147 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index dbf4a5566c..b62dd46790 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -70,7 +70,7 @@ "dependencies": { "@aws-sdk/client-s3": "3.826.0", "@aws-sdk/lib-storage": "3.826.0", - "@discordapp/twemoji": "15.1.0", + "@discordapp/twemoji": "16.0.1", "@fastify/accepts": "5.0.2", "@fastify/cookie": "11.0.2", "@fastify/cors": "10.1.0", @@ -93,7 +93,7 @@ "@smithy/node-http-handler": "2.5.0", "@swc/cli": "0.7.7", "@swc/core": "1.12.0", - "@twemoji/parser": "15.1.1", + "@twemoji/parser": "16.0.0", "@types/redis-info": "3.0.3", "accepts": "1.3.8", "ajv": "8.17.1", @@ -135,7 +135,7 @@ "jsrsasign": "11.1.0", "juice": "11.0.1", "meilisearch": "0.51.0", - "mfm-js": "0.24.0", + "mfm-js": "0.25.0", "microformats-parser": "2.0.3", "mime-types": "2.1.35", "misskey-js": "workspace:*", diff --git a/packages/backend/src/misc/emoji-regex.ts b/packages/backend/src/misc/emoji-regex.ts index 6d03b433ba..fabbdc335f 100644 --- a/packages/backend/src/misc/emoji-regex.ts +++ b/packages/backend/src/misc/emoji-regex.ts @@ -4,6 +4,6 @@ */ // taken from @twemoji/parser/dist/lib/regex.js -const twemojiRegex = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[ยฉยฎ\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude88\ude90-\udebd\udebf-\udec2\udece-\udedb\udee0-\udee8]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; +const twemojiRegex = /(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[ยฉยฎ\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude89\ude8f-\udec2\udec6\udece-\udedc\udedf-\udee9]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; export const emojiRegex = new RegExp(`(${twemojiRegex.source})`); diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index bae5b0ebd3..5c3c8518e7 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -10,11 +10,11 @@ "lint": "pnpm typecheck && pnpm eslint" }, "dependencies": { - "@discordapp/twemoji": "15.1.0", + "@discordapp/twemoji": "16.0.1", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.2", "@rollup/pluginutils": "5.2.0", - "@twemoji/parser": "15.1.1", + "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "5.2.4", "@vue/compiler-sfc": "3.5.17", "astring": "1.9.0", @@ -23,7 +23,7 @@ "icons-subsetter": "workspace:*", "frontend-shared": "workspace:*", "json5": "2.2.3", - "mfm-js": "0.24.0", + "mfm-js": "0.25.0", "misskey-js": "workspace:*", "punycode.js": "2.3.1", "rollup": "4.45.1", diff --git a/packages/frontend-shared/js/emojilist.json b/packages/frontend-shared/js/emojilist.json index 75d5c34d71..19004f1bcc 100644 --- a/packages/frontend-shared/js/emojilist.json +++ b/packages/frontend-shared/js/emojilist.json @@ -44,6 +44,8 @@ ["๐Ÿ˜‘", "expressionless", 0], ["๐Ÿ˜’", "unamused", 0], ["๐Ÿ™„", "roll_eyes", 0], + ["๐Ÿ™‚โ€โ†”๏ธ", "head_shaking_horizontally", 0], + ["๐Ÿ™‚โ€โ†•๏ธ", "head_shaking_vertically", 0], ["๐Ÿค”", "thinking", 0], ["๐Ÿคฅ", "lying_face", 0], ["๐Ÿคญ", "hand_over_mouth", 0], @@ -76,6 +78,7 @@ ["๐Ÿ˜ฅ", "disappointed_relieved", 0], ["๐Ÿคค", "drooling_face", 0], ["๐Ÿ˜ช", "sleepy", 0], + ["๐Ÿซฉ", "face_with_bags_under_eyes", 0], ["๐Ÿ˜“", "sweat", 0], ["๐Ÿฅต", "hot", 0], ["๐Ÿฅถ", "cold", 0], @@ -92,6 +95,7 @@ ["๐Ÿฅด", "woozy", 0], ["๐Ÿฅฑ", "yawning", 0], ["๐Ÿ˜ด", "sleeping", 0], + ["๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ", "eye_in_speech_bubble", 0], ["๐Ÿ’ค", "zzz", 0], ["๐Ÿ˜ถโ€๐ŸŒซ๏ธ", "face_in_clouds", 0], ["๐Ÿ˜ฎโ€๐Ÿ’จ", "face_exhaling", 0], @@ -185,6 +189,7 @@ ["๐Ÿ‘ค", "bust_in_silhouette", 1], ["๐Ÿ‘ฅ", "busts_in_silhouette", 1], ["๐Ÿ—ฃ", "speaking_head", 1], + ["๐Ÿซ†", "fingerprint", 1], ["๐Ÿ‘ถ", "baby", 1], ["๐Ÿง’", "child", 1], ["๐Ÿ‘ฆ", "boy", 1], @@ -198,8 +203,9 @@ ["๐Ÿง‘โ€๐Ÿฆฐ", "red_hair", 1], ["๐Ÿ‘ฉโ€๐Ÿฆฐ", "red_hair_woman", 1], ["๐Ÿ‘จโ€๐Ÿฆฐ", "red_hair_man", 1], + ["๐Ÿ‘ฑ", "blonde_person", 1], ["๐Ÿ‘ฑโ€โ™€๏ธ", "blonde_woman", 1], - ["๐Ÿ‘ฑ", "blonde_man", 1], + ["๐Ÿ‘ฑโ€โ™‚๏ธ", "blonde_man", 1], ["๐Ÿง‘โ€๐Ÿฆณ", "white_hair", 1], ["๐Ÿ‘ฉโ€๐Ÿฆณ", "white_hair_woman", 1], ["๐Ÿ‘จโ€๐Ÿฆณ", "white_hair_man", 1], @@ -207,21 +213,28 @@ ["๐Ÿ‘ฉโ€๐Ÿฆฒ", "bald_woman", 1], ["๐Ÿ‘จโ€๐Ÿฆฒ", "bald_man", 1], ["๐Ÿง”", "bearded_person", 1], + ["๐Ÿง”โ€โ™€๏ธ", "beard_woman", 1], + ["๐Ÿง”โ€โ™‚๏ธ", "beard_man", 1], ["๐Ÿง“", "older_adult", 1], ["๐Ÿ‘ด", "older_man", 1], ["๐Ÿ‘ต", "older_woman", 1], ["๐Ÿ‘ฒ", "man_with_gua_pi_mao", 1], ["๐Ÿง•", "woman_with_headscarf", 1], + ["๐Ÿ‘ณ", "person_with_turban", 1], ["๐Ÿ‘ณโ€โ™€๏ธ", "woman_with_turban", 1], - ["๐Ÿ‘ณ", "man_with_turban", 1], + ["๐Ÿ‘ณโ€โ™‚๏ธ", "man_with_turban", 1], + ["๐Ÿ‘ฎ", "police_officer", 1], ["๐Ÿ‘ฎโ€โ™€๏ธ", "policewoman", 1], - ["๐Ÿ‘ฎ", "policeman", 1], + ["๐Ÿ‘ฎโ€โ™‚๏ธ", "policeman", 1], + ["๐Ÿ‘ท", "construction_worker", 1], ["๐Ÿ‘ทโ€โ™€๏ธ", "construction_worker_woman", 1], - ["๐Ÿ‘ท", "construction_worker_man", 1], + ["๐Ÿ‘ทโ€โ™‚๏ธ", "construction_worker_man", 1], + ["๐Ÿ’‚", "guard", 1], ["๐Ÿ’‚โ€โ™€๏ธ", "guardswoman", 1], - ["๐Ÿ’‚", "guardsman", 1], + ["๐Ÿ’‚โ€โ™‚๏ธ", "guardsman", 1], + ["๐Ÿ•ต", "detective", 1], ["๐Ÿ•ต๏ธโ€โ™€๏ธ", "female_detective", 1], - ["๐Ÿ•ต", "male_detective", 1], + ["๐Ÿ•ต๏ธโ€โ™‚๏ธ", "male_detective", 1], ["๐Ÿง‘โ€โš•๏ธ", "health_worker", 1], ["๐Ÿ‘ฉโ€โš•๏ธ", "woman_health_worker", 1], ["๐Ÿ‘จโ€โš•๏ธ", "man_health_worker", 1], @@ -270,26 +283,35 @@ ["๐Ÿง‘โ€โš–๏ธ", "judge", 1], ["๐Ÿ‘ฉโ€โš–๏ธ", "woman_judge", 1], ["๐Ÿ‘จโ€โš–๏ธ", "man_judge", 1], + ["๐Ÿฆธ", "superhero", 1], ["๐Ÿฆธโ€โ™€๏ธ", "woman_superhero", 1], ["๐Ÿฆธโ€โ™‚๏ธ", "man_superhero", 1], + ["๐Ÿฆน", "supervillain", 1], ["๐Ÿฆนโ€โ™€๏ธ", "woman_supervillain", 1], ["๐Ÿฆนโ€โ™‚๏ธ", "man_supervillain", 1], ["๐Ÿคถ", "mrs_claus", 1], ["๐Ÿง‘โ€๐ŸŽ„", "mx_claus", 1], ["๐ŸŽ…", "santa", 1], ["๐Ÿฅท", "ninja", 1], + ["๐Ÿง™", "mage", 1], ["๐Ÿง™โ€โ™€๏ธ", "sorceress", 1], ["๐Ÿง™โ€โ™‚๏ธ", "wizard", 1], + ["๐Ÿง", "elf", 1], ["๐Ÿงโ€โ™€๏ธ", "woman_elf", 1], ["๐Ÿงโ€โ™‚๏ธ", "man_elf", 1], + ["๐Ÿง›", "vampire", 1], ["๐Ÿง›โ€โ™€๏ธ", "woman_vampire", 1], ["๐Ÿง›โ€โ™‚๏ธ", "man_vampire", 1], + ["๐ŸงŸ", "zombie", 1], ["๐ŸงŸโ€โ™€๏ธ", "woman_zombie", 1], ["๐ŸงŸโ€โ™‚๏ธ", "man_zombie", 1], + ["๐Ÿงž", "genie", 1], ["๐Ÿงžโ€โ™€๏ธ", "woman_genie", 1], ["๐Ÿงžโ€โ™‚๏ธ", "man_genie", 1], + ["๐Ÿงœ", "merperson", 1], ["๐Ÿงœโ€โ™€๏ธ", "mermaid", 1], ["๐Ÿงœโ€โ™‚๏ธ", "merman", 1], + ["๐Ÿงš", "fairy", 1], ["๐Ÿงšโ€โ™€๏ธ", "woman_fairy", 1], ["๐Ÿงšโ€โ™‚๏ธ", "man_fairy", 1], ["๐Ÿ‘ผ", "angel", 1], @@ -305,68 +327,108 @@ ["๐Ÿ‘ธ", "princess", 1], ["๐Ÿคด", "prince", 1], ["๐Ÿ‘ฐ", "person_with_veil", 1], - ["๐Ÿ‘ฐ", "bride_with_veil", 1], + ["๐Ÿ‘ฐโ€โ™€๏ธ", "bride_with_veil", 1], + ["๐Ÿ‘ฐโ€โ™‚๏ธ", "man_with_veil", 1], ["๐Ÿคต", "person_in_tuxedo", 1], - ["๐Ÿคต", "man_in_tuxedo", 1], + ["๐Ÿคตโ€โ™€๏ธ", "woman_in_tuxedo", 1], + ["๐Ÿคตโ€โ™‚๏ธ", "man_in_tuxedo", 1], + ["๐Ÿƒ", "running_person", 1], + ["๐Ÿƒโ€โžก๏ธ", "running_person_facing_right", 1], ["๐Ÿƒโ€โ™€๏ธ", "running_woman", 1], - ["๐Ÿƒ", "running_man", 1], + ["๐Ÿƒโ€โ™€๏ธโ€โžก๏ธ", "running_woman_facing_right", 1], + ["๐Ÿƒโ€โ™‚๏ธ", "running_man", 1], + ["๐Ÿƒโ€โ™‚๏ธโ€โžก๏ธ", "running_man_facing_right", 1], + ["๐Ÿšถ", "walking_person", 1], + ["๐Ÿšถโ€โžก๏ธ", "walking_person_facing_right", 1], ["๐Ÿšถโ€โ™€๏ธ", "walking_woman", 1], - ["๐Ÿšถ", "walking_man", 1], + ["๐Ÿšถโ€โ™€๏ธโ€โžก๏ธ", "walking_woman_facing_right", 1], + ["๐Ÿšถโ€โ™‚๏ธ", "walking_man", 1], + ["๐Ÿšถโ€โ™‚๏ธโ€โžก๏ธ", "walking_man_facing_right", 1], ["๐Ÿ’ƒ", "dancer", 1], ["๐Ÿ•บ", "man_dancing", 1], - ["๐Ÿ‘ฏ", "dancing_women", 1], + ["๐Ÿ‘ฏ", "dancing_people", 1], + ["๐Ÿ‘ฏโ€โ™€๏ธ", "dancing_women", 1], ["๐Ÿ‘ฏโ€โ™‚๏ธ", "dancing_men", 1], ["๐Ÿ‘ซ", "couple", 1], ["๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘", "people_holding_hands", 1], ["๐Ÿ‘ฌ", "two_men_holding_hands", 1], ["๐Ÿ‘ญ", "two_women_holding_hands", 1], ["๐Ÿซ‚", "people_hugging", 1], + ["๐Ÿ™‡", "bowing_person", 1], ["๐Ÿ™‡โ€โ™€๏ธ", "bowing_woman", 1], - ["๐Ÿ™‡", "bowing_man", 1], + ["๐Ÿ™‡โ€โ™‚๏ธ", "bowing_man", 1], + ["๐Ÿคฆ", "person_facepalming", 1], ["๐Ÿคฆโ€โ™‚๏ธ", "man_facepalming", 1], ["๐Ÿคฆโ€โ™€๏ธ", "woman_facepalming", 1], - ["๐Ÿคท", "woman_shrugging", 1], + ["๐Ÿคท", "person_shrugging", 1], + ["๐Ÿคทโ€โ™€๏ธ", "woman_shrugging", 1], ["๐Ÿคทโ€โ™‚๏ธ", "man_shrugging", 1], - ["๐Ÿ’", "tipping_hand_woman", 1], + ["๐Ÿ’", "tipping_hand_person", 1], + ["๐Ÿ’โ€โ™€๏ธ", "tipping_hand_woman", 1], ["๐Ÿ’โ€โ™‚๏ธ", "tipping_hand_man", 1], - ["๐Ÿ™…", "no_good_woman", 1], + ["๐Ÿ™…", "no_good_person", 1], + ["๐Ÿ™…โ€โ™€๏ธ", "no_good_woman", 1], ["๐Ÿ™…โ€โ™‚๏ธ", "no_good_man", 1], - ["๐Ÿ™†", "ok_woman", 1], + ["๐Ÿ™†", "ok_person", 1], + ["๐Ÿ™†โ€โ™€๏ธ", "ok_woman", 1], ["๐Ÿ™†โ€โ™‚๏ธ", "ok_man", 1], - ["๐Ÿ™‹", "raising_hand_woman", 1], + ["๐Ÿ™‹", "raising_hand_person", 1], + ["๐Ÿ™‹โ€โ™€๏ธ", "raising_hand_woman", 1], ["๐Ÿ™‹โ€โ™‚๏ธ", "raising_hand_man", 1], - ["๐Ÿ™Ž", "pouting_woman", 1], + ["๐Ÿ™Ž", "pouting_person", 1], + ["๐Ÿ™Žโ€โ™€๏ธ", "pouting_woman", 1], ["๐Ÿ™Žโ€โ™‚๏ธ", "pouting_man", 1], - ["๐Ÿ™", "frowning_woman", 1], + ["๐Ÿ™", "frowning_person", 1], + ["๐Ÿ™โ€โ™€๏ธ", "frowning_woman", 1], ["๐Ÿ™โ€โ™‚๏ธ", "frowning_man", 1], - ["๐Ÿ’‡", "haircut_woman", 1], + ["๐Ÿ’‡", "haircut_person", 1], + ["๐Ÿ’‡โ€โ™€๏ธ", "haircut_woman", 1], ["๐Ÿ’‡โ€โ™‚๏ธ", "haircut_man", 1], - ["๐Ÿ’†", "massage_woman", 1], + ["๐Ÿ’†", "massage_person", 1], + ["๐Ÿ’†โ€โ™€๏ธ", "massage_woman", 1], ["๐Ÿ’†โ€โ™‚๏ธ", "massage_man", 1], + ["๐Ÿง–", "person_in_steamy_room", 1], ["๐Ÿง–โ€โ™€๏ธ", "woman_in_steamy_room", 1], ["๐Ÿง–โ€โ™‚๏ธ", "man_in_steamy_room", 1], + ["๐Ÿง", "person_deaf", 1], ["๐Ÿงโ€โ™€๏ธ", "woman_deaf", 1], ["๐Ÿงโ€โ™‚๏ธ", "man_deaf", 1], + ["๐Ÿง", "person_standing", 1], ["๐Ÿงโ€โ™€๏ธ", "woman_standing", 1], ["๐Ÿงโ€โ™‚๏ธ", "man_standing", 1], + ["๐ŸงŽ", "person_kneeling", 1], + ["๐ŸงŽโ€โžก๏ธ", "person_kneeling_facing_right", 1], ["๐ŸงŽโ€โ™€๏ธ", "woman_kneeling", 1], + ["๐ŸงŽโ€โ™€๏ธโ€โžก๏ธ", "woman_kneeling_facing_right", 1], ["๐ŸงŽโ€โ™‚๏ธ", "man_kneeling", 1], + ["๐ŸงŽโ€โ™‚๏ธโ€โžก๏ธ", "man_kneeling_facing_right", 1], ["๐Ÿง‘โ€๐Ÿฆฏ", "person_with_probing_cane", 1], + ["๐Ÿง‘โ€๐Ÿฆฏโ€โžก๏ธ", "person_with_probing_cane_facing_right", 1], ["๐Ÿ‘ฉโ€๐Ÿฆฏ", "woman_with_probing_cane", 1], + ["๐Ÿ‘ฉโ€๐Ÿฆฏโ€โžก๏ธ", "woman_with_probing_cane_facing_right", 1], ["๐Ÿ‘จโ€๐Ÿฆฏ", "man_with_probing_cane", 1], + ["๐Ÿ‘จโ€๐Ÿฆฏโ€โžก๏ธ", "man_with_probing_cane_facing_right", 1], ["๐Ÿง‘โ€๐Ÿฆผ", "person_in_motorized_wheelchair", 1], + ["๐Ÿง‘โ€๐Ÿฆผโ€โžก๏ธ", "person_in_motorized_wheelchair_facing_right", 1], ["๐Ÿ‘ฉโ€๐Ÿฆผ", "woman_in_motorized_wheelchair", 1], + ["๐Ÿ‘ฉโ€๐Ÿฆผโ€โžก๏ธ", "woman_in_motorized_wheelchair_facing_right", 1], ["๐Ÿ‘จโ€๐Ÿฆผ", "man_in_motorized_wheelchair", 1], + ["๐Ÿ‘จโ€๐Ÿฆผโ€โžก๏ธ", "man_in_motorized_wheelchair_facing_right", 1], ["๐Ÿง‘โ€๐Ÿฆฝ", "person_in_manual_wheelchair", 1], + ["๐Ÿง‘โ€๐Ÿฆฝโ€โžก๏ธ", "person_in_manual_wheelchair_facing_right", 1], ["๐Ÿ‘ฉโ€๐Ÿฆฝ", "woman_in_manual_wheelchair", 1], + ["๐Ÿ‘ฉโ€๐Ÿฆฝโ€โžก๏ธ", "woman_in_manual_wheelchair_facing_right", 1], ["๐Ÿ‘จโ€๐Ÿฆฝ", "man_in_manual_wheelchair", 1], - ["๐Ÿ’‘", "couple_with_heart_woman_man", 1], + ["๐Ÿ‘จโ€๐Ÿฆฝโ€โžก๏ธ", "man_in_manual_wheelchair_facing_right", 1], + ["๐Ÿ’‘", "couple_with_heart", 1], + ["๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ", "couple_with_heart_woman_man", 1], ["๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ", "couple_with_heart_woman_woman", 1], ["๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ", "couple_with_heart_man_man", 1], - ["๐Ÿ’", "couplekiss_man_woman", 1], + ["๐Ÿ’", "couplekiss", 1], + ["๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ", "couplekiss_woman_man", 1], ["๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ", "couplekiss_woman_woman", 1], ["๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ", "couplekiss_man_man", 1], - ["๐Ÿ‘ช", "family_man_woman_boy", 1], + ["๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ", "family_man_woman_boy", 1], ["๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง", "family_man_woman_girl", 1], ["๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", "family_man_woman_girl_boy", 1], ["๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", "family_man_woman_boy_boy", 1], @@ -391,6 +453,11 @@ ["๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ", "family_man_girl_boy", 1], ["๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ", "family_man_boy_boy", 1], ["๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง", "family_man_girl_girl", 1], + ["๐Ÿ‘ช", "family", 1], + ["๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’", "family_adult_adult_child", 1], + ["๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’", "family_adult_adult_child_child", 1], + ["๐Ÿง‘โ€๐Ÿง’", "family_adult_child", 1], + ["๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’", "family_adult_child_child", 1], ["๐Ÿงถ", "yarn", 1], ["๐Ÿงต", "thread", 1], ["๐Ÿงฅ", "coat", 1], @@ -475,6 +542,7 @@ ["๐Ÿฆโ€โฌ›", "black_bird", 2], ["๐Ÿฆ…", "eagle", 2], ["๐Ÿฆ‰", "owl", 2], + ["๐Ÿฆโ€๐Ÿ”ฅ", "phoenix", 2], ["๐Ÿฆ‡", "bat", 2], ["๐Ÿบ", "wolf", 2], ["๐Ÿ—", "boar", 2], @@ -575,6 +643,7 @@ ["๐ŸŒฟ", "herb", 2], ["โ˜˜", "shamrock", 2], ["๐Ÿ€", "four_leaf_clover", 2], + ["๐Ÿชพ", "leafless_tree", 2], ["๐ŸŽ", "bamboo", 2], ["๐ŸŽ‹", "tanabata_tree", 2], ["๐Ÿƒ", "leaves", 2], @@ -648,6 +717,7 @@ ["๐Ÿชธ", "coral", 2], ["๐Ÿชน", "empty_nest", 2], ["๐Ÿชบ", "nest_with_eggs", 2], + ["๐Ÿ‹โ€๐ŸŸฉ", "lime", 3], ["๐Ÿ", "green_apple", 3], ["๐ŸŽ", "apple", 3], ["๐Ÿ", "pear", 3], @@ -667,6 +737,8 @@ ["๐Ÿฅ‘", "avocado", 3], ["๐Ÿซ›", "pea_pod", 3], ["๐Ÿฅฆ", "broccoli", 3], + ["๐Ÿ„โ€๐ŸŸซ", "brown_mushroom", 3], + ["๐Ÿซœ", "root_vegetable", 3], ["๐Ÿ…", "tomato", 3], ["๐Ÿ†", "eggplant", 3], ["๐Ÿฅ’", "cucumber", 3], @@ -786,8 +858,9 @@ ["๐Ÿฅ", "flying_disc", 4], ["๐ŸŽฑ", "8ball", 4], ["โ›ณ", "golf", 4], + ["๐ŸŒ", "golfing_person", 4], ["๐ŸŒ๏ธโ€โ™€๏ธ", "golfing_woman", 4], - ["๐ŸŒ", "golfing_man", 4], + ["๐ŸŒ๏ธโ€โ™‚๏ธ", "golfing_man", 4], ["๐Ÿ“", "ping_pong", 4], ["๐Ÿธ", "badminton", 4], ["๐Ÿฅ…", "goal_net", 4], @@ -799,10 +872,13 @@ ["โ›ท", "skier", 4], ["๐Ÿ‚", "snowboarder", 4], ["๐Ÿคบ", "person_fencing", 4], + ["๐Ÿคผ", "people_wrestling", 4], ["๐Ÿคผโ€โ™€๏ธ", "women_wrestling", 4], ["๐Ÿคผโ€โ™‚๏ธ", "men_wrestling", 4], + ["๐Ÿคธ", "person_cartwheeling", 4], ["๐Ÿคธโ€โ™€๏ธ", "woman_cartwheeling", 4], ["๐Ÿคธโ€โ™‚๏ธ", "man_cartwheeling", 4], + ["๐Ÿคพ", "person_playing_handball", 4], ["๐Ÿคพโ€โ™€๏ธ", "woman_playing_handball", 4], ["๐Ÿคพโ€โ™‚๏ธ", "man_playing_handball", 4], ["โ›ธ", "ice_skate", 4], @@ -813,27 +889,37 @@ ["๐ŸŽฃ", "fishing_pole_and_fish", 4], ["๐ŸฅŠ", "boxing_glove", 4], ["๐Ÿฅ‹", "martial_arts_uniform", 4], + ["๐Ÿšฃ", "rowing_person", 4], ["๐Ÿšฃโ€โ™€๏ธ", "rowing_woman", 4], - ["๐Ÿšฃ", "rowing_man", 4], + ["๐Ÿšฃโ€โ™‚๏ธ", "rowing_man", 4], + ["๐Ÿง—", "climbing_person", 4], ["๐Ÿง—โ€โ™€๏ธ", "climbing_woman", 4], ["๐Ÿง—โ€โ™‚๏ธ", "climbing_man", 4], + ["๐ŸŠ", "swimming_person", 4], ["๐ŸŠโ€โ™€๏ธ", "swimming_woman", 4], - ["๐ŸŠ", "swimming_man", 4], + ["๐ŸŠโ€โ™‚๏ธ", "swimming_man", 4], + ["๐Ÿคฝ", "person_playing_water_polo", 4], ["๐Ÿคฝโ€โ™€๏ธ", "woman_playing_water_polo", 4], ["๐Ÿคฝโ€โ™‚๏ธ", "man_playing_water_polo", 4], + ["๐Ÿง˜", "person_in_lotus_position", 4], ["๐Ÿง˜โ€โ™€๏ธ", "woman_in_lotus_position", 4], ["๐Ÿง˜โ€โ™‚๏ธ", "man_in_lotus_position", 4], + ["๐Ÿ„", "surfing_person", 4], ["๐Ÿ„โ€โ™€๏ธ", "surfing_woman", 4], - ["๐Ÿ„", "surfing_man", 4], + ["๐Ÿ„โ€โ™‚๏ธ", "surfing_man", 4], ["๐Ÿ›€", "bath", 4], + ["โ›น", "basketball_person", 4], ["โ›น๏ธโ€โ™€๏ธ", "basketball_woman", 4], - ["โ›น", "basketball_man", 4], + ["โ›น๏ธโ€โ™‚๏ธ", "basketball_man", 4], + ["๐Ÿ‹", "weight_lifting_person", 4], ["๐Ÿ‹๏ธโ€โ™€๏ธ", "weight_lifting_woman", 4], - ["๐Ÿ‹", "weight_lifting_man", 4], + ["๐Ÿ‹๏ธโ€โ™‚๏ธ", "weight_lifting_man", 4], + ["๐Ÿšด", "biking_person", 4], ["๐Ÿšดโ€โ™€๏ธ", "biking_woman", 4], - ["๐Ÿšด", "biking_man", 4], + ["๐Ÿšดโ€โ™‚๏ธ", "biking_man", 4], + ["๐Ÿšต", "mountain_biking_person", 4], ["๐Ÿšตโ€โ™€๏ธ", "mountain_biking_woman", 4], - ["๐Ÿšต", "mountain_biking_man", 4], + ["๐Ÿšตโ€โ™‚๏ธ", "mountain_biking_man", 4], ["๐Ÿ‡", "horse_racing", 4], ["๐Ÿคฟ", "diving_mask", 4], ["๐Ÿช€", "yo_yo", 4], @@ -856,6 +942,7 @@ ["๐ŸŽญ", "performing_arts", 4], ["๐ŸŽจ", "art", 4], ["๐ŸŽช", "circus_tent", 4], + ["๐Ÿคน", "person_juggling", 4], ["๐Ÿคนโ€โ™€๏ธ", "woman_juggling", 4], ["๐Ÿคนโ€โ™‚๏ธ", "man_juggling", 4], ["๐ŸŽค", "microphone", 4], @@ -872,6 +959,7 @@ ["๐Ÿช•", "banjo", 4], ["๐Ÿช—", "accordion", 4], ["๐Ÿช˜", "long_drum", 4], + ["๐Ÿช‰", "harp", 4], ["๐ŸŽฌ", "clapper", 4], ["๐ŸŽฎ", "video_game", 4], ["๐Ÿ‘พ", "space_invader", 4], @@ -1076,8 +1164,10 @@ ["๐Ÿช™", "coin", 6], ["๐Ÿ’ณ", "credit_card", 6], ["๐Ÿชช", "identification_card", 6], + ["๐Ÿฅพ", "hiking_boot", 6], ["๐Ÿ’Ž", "gem", 6], ["โš–", "balance_scale", 6], + ["โ›“๏ธโ€๐Ÿ’ฅ", "broken_chain", 6], ["๐Ÿงฐ", "toolbox", 6], ["๐Ÿ”ง", "wrench", 6], ["๐Ÿ”จ", "hammer", 6], @@ -1093,6 +1183,7 @@ ["๐Ÿช›", "screwdriver", 6], ["๐Ÿช", "hook", 6], ["๐Ÿชœ", "ladder", 6], + ["๐Ÿช", "shovel", 6], ["๐Ÿงฑ", "brick", 6], ["โ›“", "chains", 6], ["๐Ÿงฒ", "magnet", 6], @@ -1304,6 +1395,8 @@ ["โ™“", "pisces", 7], ["๐Ÿ†”", "id", 7], ["โš›", "atom_symbol", 7], + ["โ™€๏ธ", "female_sign", 7], + ["โ™‚๏ธ", "male_sign", 7], ["โšง๏ธ", "transgender_symbol", 7], ["๐Ÿˆณ", "u7a7a", 7], ["๐Ÿˆน", "u5272", 7], @@ -1463,9 +1556,11 @@ ["โ™พ", "infinity", 7], ["๐Ÿ’ฒ", "heavy_dollar_sign", 7], ["๐Ÿ’ฑ", "currency_exchange", 7], + ["โš•๏ธ", "medical_symbol", 7], ["ยฉ๏ธ", "copyright", 7], ["ยฎ๏ธ", "registered", 7], ["โ„ข๏ธ", "tm", 7], + ["๐ŸซŸ", "splatter", 7], ["๐Ÿ”š", "end", 7], ["๐Ÿ”™", "back", 7], ["๐Ÿ”›", "on", 7], @@ -1576,6 +1671,7 @@ ["๐Ÿ‡ง๐Ÿ‡ฒ", "bermuda", 8], ["๐Ÿ‡ง๐Ÿ‡น", "bhutan", 8], ["๐Ÿ‡ง๐Ÿ‡ด", "bolivia", 8], + ["๐Ÿ‡ง๐Ÿ‡ป", "bouvet_island", 8], ["๐Ÿ‡ง๐Ÿ‡ถ", "caribbean_netherlands", 8], ["๐Ÿ‡ง๐Ÿ‡ฆ", "bosnia_herzegovina", 8], ["๐Ÿ‡ง๐Ÿ‡ผ", "botswana", 8], @@ -1593,10 +1689,12 @@ ["๐Ÿ‡ฎ๐Ÿ‡จ", "canary_islands", 8], ["๐Ÿ‡ฐ๐Ÿ‡พ", "cayman_islands", 8], ["๐Ÿ‡จ๐Ÿ‡ซ", "central_african_republic", 8], + ["๐Ÿ‡ช๐Ÿ‡ฆ", "ceuta_melilla", 8], ["๐Ÿ‡น๐Ÿ‡ฉ", "chad", 8], ["๐Ÿ‡จ๐Ÿ‡ฑ", "chile", 8], ["๐Ÿ‡จ๐Ÿ‡ณ", "cn", 8], ["๐Ÿ‡จ๐Ÿ‡ฝ", "christmas_island", 8], + ["๐Ÿ‡จ๐Ÿ‡ต", "clipperton_island", 8], ["๐Ÿ‡จ๐Ÿ‡จ", "cocos_islands", 8], ["๐Ÿ‡จ๐Ÿ‡ด", "colombia", 8], ["๐Ÿ‡ฐ๐Ÿ‡ฒ", "comoros", 8], @@ -1610,6 +1708,7 @@ ["๐Ÿ‡จ๐Ÿ‡พ", "cyprus", 8], ["๐Ÿ‡จ๐Ÿ‡ฟ", "czech_republic", 8], ["๐Ÿ‡ฉ๐Ÿ‡ฐ", "denmark", 8], + ["๐Ÿ‡ฉ๐Ÿ‡ฌ", "diego_garcia", 8], ["๐Ÿ‡ฉ๐Ÿ‡ฏ", "djibouti", 8], ["๐Ÿ‡ฉ๐Ÿ‡ฒ", "dominica", 8], ["๐Ÿ‡ฉ๐Ÿ‡ด", "dominican_republic", 8], @@ -1646,6 +1745,7 @@ ["๐Ÿ‡ฌ๐Ÿ‡ผ", "guinea_bissau", 8], ["๐Ÿ‡ฌ๐Ÿ‡พ", "guyana", 8], ["๐Ÿ‡ญ๐Ÿ‡น", "haiti", 8], + ["๐Ÿ‡ญ๐Ÿ‡ฒ", "heard_mcdonald_islands", 8], ["๐Ÿ‡ญ๐Ÿ‡ณ", "honduras", 8], ["๐Ÿ‡ญ๐Ÿ‡ฐ", "hong_kong", 8], ["๐Ÿ‡ญ๐Ÿ‡บ", "hungary", 8], @@ -1733,10 +1833,12 @@ ["๐Ÿ‡ท๐Ÿ‡ด", "romania", 8], ["๐Ÿ‡ท๐Ÿ‡บ", "ru", 8], ["๐Ÿ‡ท๐Ÿ‡ผ", "rwanda", 8], + ["๐Ÿ‡จ๐Ÿ‡ถ", "sark", 8], ["๐Ÿ‡ง๐Ÿ‡ฑ", "st_barthelemy", 8], ["๐Ÿ‡ธ๐Ÿ‡ญ", "st_helena", 8], ["๐Ÿ‡ฐ๐Ÿ‡ณ", "st_kitts_nevis", 8], ["๐Ÿ‡ฑ๐Ÿ‡จ", "st_lucia", 8], + ["๐Ÿ‡ฒ๐Ÿ‡ซ", "st_martin", 8], ["๐Ÿ‡ต๐Ÿ‡ฒ", "st_pierre_miquelon", 8], ["๐Ÿ‡ป๐Ÿ‡จ", "st_vincent_grenadines", 8], ["๐Ÿ‡ผ๐Ÿ‡ธ", "samoa", 8], @@ -1762,6 +1864,7 @@ ["๐Ÿ‡ธ๐Ÿ‡ฉ", "sudan", 8], ["๐Ÿ‡ธ๐Ÿ‡ท", "suriname", 8], ["๐Ÿ‡ธ๐Ÿ‡ฟ", "swaziland", 8], + ["๐Ÿ‡ธ๐Ÿ‡ฏ", "svalbard_jan_mayen", 8], ["๐Ÿ‡ธ๐Ÿ‡ช", "sweden", 8], ["๐Ÿ‡จ๐Ÿ‡ญ", "switzerland", 8], ["๐Ÿ‡ธ๐Ÿ‡พ", "syria", 8], @@ -1788,6 +1891,7 @@ ["๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ", "scotland", 8], ["๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ", "wales", 8], ["๐Ÿ‡บ๐Ÿ‡ธ", "us", 8], + ["๐Ÿ‡บ๐Ÿ‡ฒ", "us_outlying_islands", 8], ["๐Ÿ‡ป๐Ÿ‡ฎ", "us_virgin_islands", 8], ["๐Ÿ‡บ๐Ÿ‡พ", "uruguay", 8], ["๐Ÿ‡บ๐Ÿ‡ฟ", "uzbekistan", 8], diff --git a/packages/frontend/.storybook/mocks.ts b/packages/frontend/.storybook/mocks.ts index 29cb112ccb..84d5ee6c33 100644 --- a/packages/frontend/.storybook/mocks.ts +++ b/packages/frontend/.storybook/mocks.ts @@ -34,7 +34,7 @@ export const commonHandlers = [ }), http.get('/twemoji/:codepoints.svg', async ({ params }) => { const { codepoints } = params; - const value = await fetch(`https://unpkg.com/@discordapp/twemoji@15.0.2/dist/svg/${codepoints}.svg`).then((response) => response.blob()); + const value = await fetch(`https://unpkg.com/@discordapp/twemoji@16.0.1/dist/svg/${codepoints}.svg`).then((response) => response.blob()); return new HttpResponse(value, { headers: { 'Content-Type': 'image/svg+xml', diff --git a/packages/frontend/package.json b/packages/frontend/package.json index b8964549f4..847f1b7aee 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "@analytics/google-analytics": "1.1.0", - "@discordapp/twemoji": "15.1.0", + "@discordapp/twemoji": "16.0.1", "@github/webauthn-json": "2.1.1", "@mcaptcha/vanilla-glue": "0.1.0-alpha-3", "@misskey-dev/browser-image-resizer": "2024.1.0", @@ -26,7 +26,7 @@ "@rollup/pluginutils": "5.2.0", "@sentry/vue": "9.39.0", "@syuilo/aiscript": "0.19.0", - "@twemoji/parser": "15.1.1", + "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "5.2.4", "@vue/compiler-sfc": "3.5.17", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15", @@ -54,7 +54,7 @@ "json5": "2.2.3", "magic-string": "0.30.17", "matter-js": "0.20.0", - "mfm-js": "0.24.0", + "mfm-js": "0.25.0", "misskey-bubble-game": "workspace:*", "misskey-js": "workspace:*", "misskey-reversi": "workspace:*", diff --git a/packages/frontend/src/unicode-emoji-indexes/en-US.json b/packages/frontend/src/unicode-emoji-indexes/en-US.json index 4d8b040ad2..bd8271b911 100644 --- a/packages/frontend/src/unicode-emoji-indexes/en-US.json +++ b/packages/frontend/src/unicode-emoji-indexes/en-US.json @@ -44,6 +44,8 @@ "๐Ÿ˜‘": ["face", "indifferent", "-_-", "meh", "deadpan"], "๐Ÿ˜’": ["indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye"], "๐Ÿ™„": ["face", "eyeroll", "frustrated"], + "๐Ÿ™‚โ€โ†”๏ธ": ["face", "head", "horizontally", "no", "shake", "shaking"], + "๐Ÿ™‚โ€โ†•๏ธ": ["face", "head", "nod", "shaking", "vertically", "yes"], "๐Ÿค”": ["face", "hmmm", "think", "consider"], "๐Ÿคฅ": ["face", "lie", "pinocchio"], "๐Ÿคญ": ["face", "whoops", "shock", "surprise"], @@ -76,6 +78,7 @@ "๐Ÿ˜ฅ": ["face", "phew", "sweat", "nervous"], "๐Ÿคค": ["face"], "๐Ÿ˜ช": ["face", "tired", "rest", "nap"], + "๐Ÿซฉ": ["face", "bags", "bored", "exhausted", "eyes", "fatigued", "late", "sleepy", "tired", "weary"], "๐Ÿ˜“": ["face", "hot", "sad", "tired", "exercise"], "๐Ÿฅต": ["face", "feverish", "heat", "red", "sweating"], "๐Ÿฅถ": ["face", "blue", "freezing", "frozen", "frostbite", "icicles"], @@ -92,10 +95,11 @@ "๐Ÿฅด": ["face", "dizzy", "intoxicated", "tipsy", "wavy"], "๐Ÿฅฑ": ["face", "tired", "yawning"], "๐Ÿ˜ด": ["face", "tired", "sleepy", "night", "zzz"], + "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ": ["balloon", "bubble", "eye", "speech", "witness"], "๐Ÿ’ค": ["sleepy", "tired", "dream"], - "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": [], - "๐Ÿ˜ฎโ€๐Ÿ’จ": [], - "๐Ÿ˜ตโ€๐Ÿ’ซ": [], + "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": ["face", "absentminded", "clouds", "fog", "head"], + "๐Ÿ˜ฎโ€๐Ÿ’จ": ["face", "blow", "blowing", "exhale", "exhaling", "exhausted", "gasp", "groan", "relief", "sigh", "smiley", "smoke", "whisper", "whistle"], + "๐Ÿ˜ตโ€๐Ÿ’ซ": ["face", "confused", "dizzy", "eyes", "hypnotized", "omg", "smiley", "spiral", "trouble", "whoa", "woah", "woozy"], "๐Ÿซ ": ["disappear", "dissolve", "liquid", "melt", "toketa"], "๐Ÿซข": ["amazement", "awe", "disbelief", "embarrass", "scared", "surprise", "ohoho"], "๐Ÿซฃ": ["captivated", "peep", "stare", "chunibyo"], @@ -159,19 +163,19 @@ "๐Ÿคž": ["good", "lucky"], "๐Ÿ––": ["hand", "fingers", "spock", "star trek"], "โœ": ["lower_left_ballpoint_pen", "stationery", "write", "compose"], - "๐Ÿซฐ": [], - "๐Ÿซฑ": [], - "๐Ÿซฒ": [], - "๐Ÿซณ": [], - "๐Ÿซด": [], - "๐Ÿซต": [], + "๐Ÿซฐ": ["<3", "crossed", "expensive", "finger", "hand", "heart", "index", "love", "money", "snap", "thumb"], + "๐Ÿซฑ": ["hand", "handshake", "hold", "reach", "right", "rightward", "rightwards", "shake"], + "๐Ÿซฒ": ["hand", "handshake", "hold", "left", "leftward", "leftwards", "reach", "shake"], + "๐Ÿซณ": ["dismiss", "down", "drop", "dropped", "hand", "palm", "pick", "shoo", "up"], + "๐Ÿซด": ["beckon", "catch", "come", "hand", "hold", "know", "lift", "me", "offer", "palm", "tell"], + "๐Ÿซต": ["at", "finger", "hand", "index", "pointing", "poke", "viewer", "you"], "๐Ÿซถ": ["moemoekyun"], "๐Ÿค": ["hand", "fingers"], "๐ŸคŒ": ["hand", "fingers"], "๐Ÿคณ": ["camera", "phone"], "๐Ÿ’…": ["beauty", "manicure", "finger", "fashion", "nail"], "๐Ÿ‘„": ["mouth", "kiss"], - "๐Ÿซฆ": [], + "๐Ÿซฆ": ["anxious", "bite", "biting", "fear", "flirt", "flirting", "kiss", "lip", "lipstick", "nervous", "sexy", "uncomfortable", "worried", "worry"], "๐Ÿฆท": ["teeth", "dentist"], "๐Ÿ‘…": ["mouth", "playful"], "๐Ÿ‘‚": ["face", "hear", "sound", "listen"], @@ -180,11 +184,12 @@ "๐Ÿ‘": ["face", "look", "see", "watch", "stare"], "๐Ÿ‘€": ["look", "watch", "stalk", "peek", "see"], "๐Ÿง ": ["smart", "intelligent"], - "๐Ÿซ€": [], - "๐Ÿซ": [], + "๐Ÿซ€": ["anatomical", "beat", "cardiology", "heart", "heartbeat", "organ", "pulse", "real", "red"], + "๐Ÿซ": ["breath", "breathe", "exhalation", "inhalation", "lung", "lungs", "organ", "respiration"], "๐Ÿ‘ค": ["user", "person", "human"], "๐Ÿ‘ฅ": ["user", "person", "human", "group", "team"], "๐Ÿ—ฃ": ["user", "person", "human", "sing", "say", "talk"], + "๐Ÿซ†": ["clue", "crime", "detective", "fingerprint", "forensics", "identity", "mystery", "print", "safety", "trace"], "๐Ÿ‘ถ": ["child", "boy", "girl", "toddler"], "๐Ÿง’": ["gender-neutral", "young"], "๐Ÿ‘ฆ": ["man", "male", "guy", "teenager"], @@ -199,6 +204,7 @@ "๐Ÿ‘ฉโ€๐Ÿฆฐ": ["woman", "female", "girl", "ginger", "redhead"], "๐Ÿ‘จโ€๐Ÿฆฐ": ["man", "male", "boy", "guy", "ginger", "redhead"], "๐Ÿ‘ฑโ€โ™€๏ธ": ["woman", "female", "girl", "blonde", "person"], + "๐Ÿ‘ฑโ€โ™‚๏ธ": ["blond", "blond-haired", "hair", "man"], "๐Ÿ‘ฑ": ["man", "male", "boy", "blonde", "guy", "person"], "๐Ÿง‘โ€๐Ÿฆณ": ["gray", "old", "white"], "๐Ÿ‘ฉโ€๐Ÿฆณ": ["woman", "female", "girl", "gray", "old", "white"], @@ -207,20 +213,27 @@ "๐Ÿ‘ฉโ€๐Ÿฆฒ": ["woman", "female", "girl", "bald", "chemotherapy", "hairless", "shaven"], "๐Ÿ‘จโ€๐Ÿฆฒ": ["man", "male", "boy", "guy", "bald", "chemotherapy", "hairless", "shaven"], "๐Ÿง”": ["person", "bewhiskered"], + "๐Ÿง”โ€โ™€๏ธ": ["beard", "bearded", "whiskers", "woman"], + "๐Ÿง”โ€โ™‚๏ธ": ["beard", "bearded", "man", "whiskers"], "๐Ÿง“": ["human", "elder", "senior", "gender-neutral"], "๐Ÿ‘ด": ["human", "male", "men", "old", "elder", "senior"], "๐Ÿ‘ต": ["human", "female", "women", "lady", "old", "elder", "senior"], "๐Ÿ‘ฒ": ["male", "boy", "chinese"], "๐Ÿง•": ["female", "hijab", "mantilla", "tichel"], "๐Ÿ‘ณโ€โ™€๏ธ": ["female", "indian", "hinduism", "arabs", "woman"], + "๐Ÿ‘ณโ€โ™‚๏ธ": ["man", "turban", "wearing"], "๐Ÿ‘ณ": ["male", "indian", "hinduism", "arabs"], "๐Ÿ‘ฎโ€โ™€๏ธ": ["woman", "police", "law", "legal", "enforcement", "arrest", "911", "female"], + "๐Ÿ‘ฎโ€โ™‚๏ธ": ["apprehend", "arrest", "citation", "cop", "law", "man", "officer", "over", "police", "pulled", "undercover"], "๐Ÿ‘ฎ": ["man", "police", "law", "legal", "enforcement", "arrest", "911"], "๐Ÿ‘ทโ€โ™€๏ธ": ["female", "human", "wip", "build", "construction", "worker", "labor", "woman"], + "๐Ÿ‘ทโ€โ™‚๏ธ": ["build", "construction", "fix", "hardhat", "hat", "man", "rebuild", "remodel", "repair", "work", "worker"], "๐Ÿ‘ท": ["male", "human", "wip", "guy", "build", "construction", "worker", "labor"], "๐Ÿ’‚โ€โ™€๏ธ": ["uk", "gb", "british", "female", "royal", "woman"], + "๐Ÿ’‚โ€โ™‚๏ธ": ["buckingham", "guard", "helmet", "london", "man", "palace"], "๐Ÿ’‚": ["uk", "gb", "british", "male", "guy", "royal"], "๐Ÿ•ต๏ธโ€โ™€๏ธ": ["human", "spy", "detective", "female", "woman"], + "๐Ÿ•ต๏ธโ€โ™‚๏ธ": ["detective", "man", "sleuth", "spy"], "๐Ÿ•ต": ["human", "spy", "detective"], "๐Ÿง‘โ€โš•๏ธ": ["doctor", "nurse", "therapist", "healthcare", "human"], "๐Ÿ‘ฉโ€โš•๏ธ": ["doctor", "nurse", "therapist", "healthcare", "woman", "human"], @@ -270,102 +283,152 @@ "๐Ÿง‘โ€โš–๏ธ": ["justice", "court", "human"], "๐Ÿ‘ฉโ€โš–๏ธ": ["justice", "court", "woman", "human"], "๐Ÿ‘จโ€โš–๏ธ": ["justice", "court", "man", "human"], + "๐Ÿฆธ": ["good", "hero", "superhero", "superpower"], "๐Ÿฆธโ€โ™€๏ธ": ["woman", "female", "good", "heroine", "superpowers"], "๐Ÿฆธโ€โ™‚๏ธ": ["man", "male", "good", "hero", "superpowers"], + "๐Ÿฆน": ["bad", "criminal", "evil", "superpower", "supervillain", "villain"], "๐Ÿฆนโ€โ™€๏ธ": ["woman", "female", "evil", "bad", "criminal", "heroine", "superpowers"], "๐Ÿฆนโ€โ™‚๏ธ": ["man", "male", "evil", "bad", "criminal", "hero", "superpowers"], "๐Ÿคถ": ["woman", "female", "xmas", "mother christmas"], "๐Ÿง‘โ€๐ŸŽ„": ["xmas", "christmas"], "๐ŸŽ…": ["festival", "man", "male", "xmas", "father christmas"], - "๐Ÿฅท": [], + "๐Ÿฅท": ["assassin", "fight", "fighter", "hidden", "ninja", "person", "secret", "skills", "sly", "soldier", "stealth", "war"], + "๐Ÿง™": ["fantasy", "mage", "magic", "play", "sorcerer", "sorceress", "sorcery", "spell", "summon", "witch", "wizard"], "๐Ÿง™โ€โ™€๏ธ": ["woman", "female", "mage", "witch"], "๐Ÿง™โ€โ™‚๏ธ": ["man", "male", "mage", "sorcerer"], + "๐Ÿง": ["elf", "elves", "enchantment", "fantasy", "folklore", "magic", "magical", "myth"], "๐Ÿงโ€โ™€๏ธ": ["woman", "female"], "๐Ÿงโ€โ™‚๏ธ": ["man", "male"], + "๐Ÿง›": ["blood", "dracula", "fangs", "halloween", "scary", "supernatural", "teeth", "undead", "vampire"], "๐Ÿง›โ€โ™€๏ธ": ["woman", "female"], "๐Ÿง›โ€โ™‚๏ธ": ["man", "male", "dracula"], + "๐ŸงŸ": ["apocalypse", "dead", "halloween", "horror", "scary", "undead", "walking", "zombie"], "๐ŸงŸโ€โ™€๏ธ": ["woman", "female", "undead", "walking dead"], "๐ŸงŸโ€โ™‚๏ธ": ["man", "male", "dracula", "undead", "walking dead"], + "๐Ÿงž": ["djinn", "fantasy", "genie", "jinn", "lamp", "myth", "rub", "wishes"], "๐Ÿงžโ€โ™€๏ธ": ["woman", "female"], "๐Ÿงžโ€โ™‚๏ธ": ["man", "male"], + "๐Ÿงœ": ["creature", "fairytale", "folklore", "merperson", "ocean", "sea", "siren", "trident"], "๐Ÿงœโ€โ™€๏ธ": ["woman", "female", "merwoman", "ariel"], "๐Ÿงœโ€โ™‚๏ธ": ["man", "male", "triton"], + "๐Ÿงš": ["fairy", "fairytale", "fantasy", "myth", "person", "pixie", "tale", "wings"], "๐Ÿงšโ€โ™€๏ธ": ["woman", "female"], "๐Ÿงšโ€โ™‚๏ธ": ["man", "male"], "๐Ÿ‘ผ": ["heaven", "wings", "halo"], - "๐ŸงŒ": [], + "๐ŸงŒ": ["fairy", "fantasy", "monster", "tale", "troll", "trolling"], "๐Ÿคฐ": ["baby"], - "๐Ÿซƒ": [], - "๐Ÿซ„": [], - "๐Ÿซ…": [], + "๐Ÿซƒ": ["belly", "bloated", "full", "man", "overeat", "pregnant"], + "๐Ÿซ„": ["belly", "bloated", "full", "overeat", "person", "pregnant", "stuffed"], + "๐Ÿซ…": ["crown", "monarch", "noble", "person", "regal", "royal", "royalty"], "๐Ÿคฑ": ["nursing", "baby"], - "๐Ÿ‘ฉโ€๐Ÿผ": [], - "๐Ÿ‘จโ€๐Ÿผ": [], - "๐Ÿง‘โ€๐Ÿผ": [], + "๐Ÿ‘ฉโ€๐Ÿผ": ["baby", "feed", "feeding", "mom", "mother", "nanny", "newborn", "nursing", "woman"], + "๐Ÿ‘จโ€๐Ÿผ": ["baby", "dad", "father", "feed", "feeding", "man", "nanny", "newborn", "nursing"], + "๐Ÿง‘โ€๐Ÿผ": ["baby", "feed", "feeding", "nanny", "newborn", "nursing", "parent"], "๐Ÿ‘ธ": ["girl", "woman", "female", "blond", "crown", "royal", "queen"], "๐Ÿคด": ["boy", "man", "male", "crown", "royal", "king"], "๐Ÿ‘ฐ": ["couple", "marriage", "wedding", "woman", "bride"], - "๐Ÿ‘ฐ": ["couple", "marriage", "wedding", "woman", "bride"], - "๐Ÿคต": ["couple", "marriage", "wedding", "groom"], + "๐Ÿ‘ฐโ€โ™€๏ธ": ["bride", "veil", "wedding", "woman"], + "๐Ÿ‘ฐโ€โ™‚๏ธ": ["man", "veil", "wedding"], "๐Ÿคต": ["couple", "marriage", "wedding", "groom"], + "๐Ÿคตโ€โ™€๏ธ": ["formal", "tuxedo", "wedding", "woman"], + "๐Ÿคตโ€โ™‚๏ธ": ["formal", "groom", "man", "tuxedo", "wedding"], + "๐Ÿƒโ€โžก๏ธ": ["facing", "fast", "hurry", "marathon", "move", "person", "quick", "race", "racing", "right", "run", "rush", "speed"], "๐Ÿƒโ€โ™€๏ธ": ["woman", "walking", "exercise", "race", "running", "female"], "๐Ÿƒ": ["man", "walking", "exercise", "race", "running"], + "๐Ÿƒโ€โ™€๏ธโ€โžก๏ธ": ["facing", "fast", "hurry", "marathon", "move", "quick", "race", "racing", "right", "run", "rush", "speed", "woman"], + "๐Ÿƒโ€โ™‚๏ธ": ["fast", "hurry", "man", "marathon", "move", "quick", "race", "racing", "run", "rush", "speed"], + "๐Ÿƒโ€โ™‚๏ธโ€โžก๏ธ": ["facing", "fast", "hurry", "man", "marathon", "move", "quick", "race", "racing", "right", "run", "rush", "speed"], + "๐Ÿšถโ€โžก๏ธ": ["amble", "facing", "gait", "hike", "man", "pace", "pedestrian", "person", "right", "stride", "stroll", "walk", "walking"], "๐Ÿšถโ€โ™€๏ธ": ["human", "feet", "steps", "woman", "female"], "๐Ÿšถ": ["human", "feet", "steps"], + "๐Ÿšถโ€โ™€๏ธโ€โžก๏ธ": ["amble", "facing", "gait", "hike", "man", "pace", "pedestrian", "right", "stride", "stroll", "walk", "walking", "woman"], + "๐Ÿšถโ€โ™‚๏ธ": ["amble", "gait", "hike", "man", "pace", "pedestrian", "stride", "stroll", "walk", "walking"], + "๐Ÿšถโ€โ™‚๏ธโ€โžก๏ธ": ["amble", "facing", "gait", "hike", "man", "pace", "pedestrian", "right", "stride", "stroll", "walk", "walking"], "๐Ÿ’ƒ": ["female", "girl", "woman", "fun"], "๐Ÿ•บ": ["male", "boy", "fun", "dancer"], "๐Ÿ‘ฏ": ["female", "bunny", "women", "girls"], + "๐Ÿ‘ฏโ€โ™€๏ธ": ["bestie", "bff", "bunny", "counterpart", "dancer", "double", "ear", "identical", "pair", "party", "partying", "people", "soulmate", "twin", "twinsies", "women"], "๐Ÿ‘ฏโ€โ™‚๏ธ": ["male", "bunny", "men", "boys"], "๐Ÿ‘ซ": ["pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage"], "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘": ["pair", "couple", "love", "like", "bromance", "friendship", "people", "human"], "๐Ÿ‘ฌ": ["pair", "couple", "love", "like", "bromance", "friendship", "people", "man", "human"], "๐Ÿ‘ญ": ["pair", "couple", "love", "like", "bromance", "friendship", "people", "female", "human"], - "๐Ÿซ‚": [], + "๐Ÿซ‚": ["comfort", "embrace", "farewell", "friendship", "goodbye", "hello", "hug", "hugging", "love", "people", "thanks"], "๐Ÿ™‡โ€โ™€๏ธ": ["woman", "female", "girl"], "๐Ÿ™‡": ["man", "male", "boy"], + "๐Ÿ™‡โ€โ™‚๏ธ": ["apology", "ask", "beg", "bow", "bowing", "favor", "forgive", "gesture", "man", "meditate", "meditation", "pity", "regret", "sorry"], + "๐Ÿคฆ": ["again", "bewilder", "disbelief", "exasperation", "facepalm", "no", "not", "oh", "omg", "person", "shock", "smh"], "๐Ÿคฆโ€โ™‚๏ธ": ["man", "male", "boy", "disbelief"], "๐Ÿคฆโ€โ™€๏ธ": ["woman", "female", "girl", "disbelief"], "๐Ÿคท": ["woman", "female", "girl", "confused", "indifferent", "doubt"], + "๐Ÿคทโ€โ™€๏ธ": ["doubt", "dunno", "guess", "idk", "ignorance", "indifference", "knows", "maybe", "shrug", "shrugging", "whatever", "who", "woman"], "๐Ÿคทโ€โ™‚๏ธ": ["man", "male", "boy", "confused", "indifferent", "doubt"], "๐Ÿ’": ["female", "girl", "woman", "human", "information"], + "๐Ÿ’โ€โ™€๏ธ": ["fetch", "flick", "flip", "gossip", "hand", "sarcasm", "sarcastic", "sassy", "seriously", "tipping", "whatever", "woman"], "๐Ÿ’โ€โ™‚๏ธ": ["male", "boy", "man", "human", "information"], "๐Ÿ™…": ["female", "girl", "woman", "nope"], + "๐Ÿ™…โ€โ™€๏ธ": ["forbidden", "gesture", "hand", "no", "not", "prohibit", "woman"], "๐Ÿ™…โ€โ™‚๏ธ": ["male", "boy", "man", "nope"], "๐Ÿ™†": ["women", "girl", "female", "pink", "human", "woman"], + "๐Ÿ™†โ€โ™€๏ธ": ["exercise", "gesture", "gesturing", "hand", "ok", "omg", "woman"], "๐Ÿ™†โ€โ™‚๏ธ": ["men", "boy", "male", "blue", "human", "man"], "๐Ÿ™‹": ["female", "girl", "woman"], + "๐Ÿ™‹โ€โ™€๏ธ": ["gesture", "hand", "here", "know", "me", "pick", "question", "raise", "raising", "woman"], "๐Ÿ™‹โ€โ™‚๏ธ": ["male", "boy", "man"], "๐Ÿ™Ž": ["female", "girl", "woman"], + "๐Ÿ™Žโ€โ™€๏ธ": ["disappointed", "downtrodden", "frown", "grimace", "pouting", "scowl", "sulk", "upset", "whine", "woman"], "๐Ÿ™Žโ€โ™‚๏ธ": ["male", "boy", "man"], "๐Ÿ™": ["female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy"], + "๐Ÿ™โ€โ™€๏ธ": ["annoyed", "disappointed", "disgruntled", "disturbed", "frown", "frowning", "frustrated", "gesture", "irritated", "upset", "woman"], "๐Ÿ™โ€โ™‚๏ธ": ["male", "boy", "man", "sad", "depressed", "discouraged", "unhappy"], "๐Ÿ’‡": ["female", "girl", "woman"], + "๐Ÿ’‡โ€โ™€๏ธ": ["barber", "beauty", "chop", "cosmetology", "cut", "groom", "hair", "haircut", "parlor", "person", "shears", "style", "woman"], "๐Ÿ’‡โ€โ™‚๏ธ": ["male", "boy", "man"], "๐Ÿ’†": ["female", "girl", "woman", "head"], + "๐Ÿ’†โ€โ™€๏ธ": ["face", "getting", "headache", "massage", "relax", "relaxing", "salon", "soothe", "spa", "tension", "therapy", "treatment", "woman"], "๐Ÿ’†โ€โ™‚๏ธ": ["male", "boy", "man", "head"], + "๐Ÿง–": ["day", "luxurious", "pamper", "person", "relax", "room", "sauna", "spa", "steam", "steambath", "unwind"], "๐Ÿง–โ€โ™€๏ธ": ["female", "woman", "spa", "steamroom", "sauna"], "๐Ÿง–โ€โ™‚๏ธ": ["male", "man", "spa", "steamroom", "sauna"], + "๐Ÿง": ["accessibility", "deaf", "ear", "gesture", "hear", "person"], "๐Ÿงโ€โ™€๏ธ": ["woman", "female"], "๐Ÿงโ€โ™‚๏ธ": ["man", "male"], + "๐Ÿง": ["person", "stand", "standing"], "๐Ÿงโ€โ™€๏ธ": ["woman", "female"], "๐Ÿงโ€โ™‚๏ธ": ["man", "male"], + "๐ŸงŽ": ["kneel", "kneeling", "knees", "person"], + "๐ŸงŽโ€โžก๏ธ": ["facing", "kneel", "kneeling", "knees", "person", "right"], "๐ŸงŽโ€โ™€๏ธ": ["woman", "female"], + "๐ŸงŽโ€โ™€๏ธโ€โžก๏ธ": ["facing", "kneel", "kneeling", "knees", "right", "woman"], "๐ŸงŽโ€โ™‚๏ธ": ["man", "male"], + "๐ŸงŽโ€โ™‚๏ธโ€โžก๏ธ": ["facing", "kneel", "kneeling", "knees", "man", "right"], "๐Ÿง‘โ€๐Ÿฆฏ": ["accessibility", "blind"], + "๐Ÿง‘โ€๐Ÿฆฏโ€โžก๏ธ": ["accessibility", "blind", "cane", "facing", "person", "probing", "right", "white"], "๐Ÿ‘ฉโ€๐Ÿฆฏ": ["woman", "female", "accessibility", "blind"], + "๐Ÿ‘ฉโ€๐Ÿฆฏโ€โžก๏ธ": ["accessibility", "blind", "cane", "facing", "probing", "right", "white", "woman"], "๐Ÿ‘จโ€๐Ÿฆฏ": ["man", "male", "accessibility", "blind"], + "๐Ÿ‘จโ€๐Ÿฆฏโ€โžก๏ธ": ["accessibility", "blind", "cane", "facing", "man", "probing", "right", "white"], "๐Ÿง‘โ€๐Ÿฆผ": ["accessibility"], + "๐Ÿง‘โ€๐Ÿฆผโ€โžก๏ธ": ["accessibility", "facing", "motorized", "person", "right", "wheelchair"], "๐Ÿ‘ฉโ€๐Ÿฆผ": ["woman", "female", "accessibility"], + "๐Ÿ‘ฉโ€๐Ÿฆผโ€โžก๏ธ": ["accessibility", "facing", "motorized", "right", "wheelchair", "woman"], "๐Ÿ‘จโ€๐Ÿฆผ": ["man", "male", "accessibility"], + "๐Ÿ‘จโ€๐Ÿฆผโ€โžก๏ธ": ["accessibility", "facing", "man", "motorized", "right", "wheelchair"], "๐Ÿง‘โ€๐Ÿฆฝ": ["accessibility"], + "๐Ÿง‘โ€๐Ÿฆฝโ€โžก๏ธ": ["accessibility", "facing", "manual", "person", "right", "wheelchair"], "๐Ÿ‘ฉโ€๐Ÿฆฝ": ["woman", "female", "accessibility"], + "๐Ÿ‘ฉโ€๐Ÿฆฝโ€โžก๏ธ": ["accessibility", "facing", "manual", "right", "wheelchair", "woman"], "๐Ÿ‘จโ€๐Ÿฆฝ": ["man", "male", "accessibility"], + "๐Ÿ‘จโ€๐Ÿฆฝโ€โžก๏ธ": ["accessibility", "facing", "man", "manual", "right", "wheelchair"], "๐Ÿ’‘": ["pair", "love", "like", "affection", "human", "dating", "valentines", "marriage"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ": ["anniversary", "babe", "bae", "couple", "dating", "heart", "kiss", "love", "man", "person", "relationship", "romance", "together", "woman", "you"], "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ": ["pair", "love", "like", "affection", "human", "dating", "valentines", "marriage"], "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ": ["pair", "love", "like", "affection", "human", "dating", "valentines", "marriage"], "๐Ÿ’": ["pair", "valentines", "love", "like", "dating", "marriage"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": ["anniversary", "babe", "bae", "couple", "date", "dating", "heart", "kiss", "love", "man", "mwah", "person", "romance", "together", "woman", "xoxo"], "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ": ["pair", "valentines", "love", "like", "dating", "marriage"], "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": ["pair", "valentines", "love", "like", "dating", "marriage"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": ["boy", "child", "family", "man", "woman"], "๐Ÿ‘ช": ["home", "parents", "child", "mom", "dad", "father", "mother", "people", "human"], "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": ["home", "parents", "people", "human", "child"], "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["home", "parents", "people", "human", "children"], @@ -391,6 +454,10 @@ "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["home", "parent", "people", "human", "children"], "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["home", "parent", "people", "human", "children"], "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["home", "parent", "people", "human", "children"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’": ["adult", "child", "family"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’": ["adult", "child", "family"], + "๐Ÿง‘โ€๐Ÿง’": ["adult", "child", "family"], + "๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’": ["adult", "child", "family"], "๐Ÿงถ": ["ball", "crochet", "knit"], "๐Ÿงต": ["needle", "sewing", "spool", "string"], "๐Ÿงฅ": ["jacket"], @@ -415,7 +482,7 @@ "๐Ÿ‘ข": ["shoes", "fashion"], "๐Ÿ‘ž": ["fashion", "male"], "๐Ÿ‘Ÿ": ["shoes", "sports", "sneakers"], - "๐Ÿฉด": [], + "๐Ÿฉด": ["beach", "flip", "flop", "sandal", "sandals", "shoe", "thong", "thongs", "zลri"], "๐Ÿฉฐ": ["shoes", "sports"], "๐Ÿงฆ": ["stockings", "clothes"], "๐Ÿงค": ["hands", "winter", "clothes"], @@ -424,7 +491,7 @@ "๐ŸŽฉ": ["magic", "gentleman", "classy", "circus"], "๐Ÿงข": ["cap", "baseball"], "โ›‘": ["construction", "build"], - "๐Ÿช–": [], + "๐Ÿช–": ["army", "helmet", "military", "soldier", "war", "warrior"], "๐ŸŽ“": ["school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education"], "๐Ÿ‘‘": ["king", "kod", "leader", "royalty", "lord"], "๐ŸŽ’": ["student", "education", "bag", "backpack"], @@ -475,6 +542,7 @@ "๐Ÿฆโ€โฌ›": ["animal", "nature", "bird", "black", "crow", "raven", "rook"], "๐Ÿฆ…": ["animal", "nature", "bird"], "๐Ÿฆ‰": ["animal", "nature", "bird", "hoot"], + "๐Ÿฆโ€๐Ÿ”ฅ": ["animal", "nature", "ascend", "ascension", "emerge", "fantasy", "firebird", "glory", "immortal", "phoenix", "rebirth", "reincarnation", "reinvent", "renewal", "revival", "revive", "rise", "transform"], "๐Ÿฆ‡": ["animal", "nature", "blind", "vampire"], "๐Ÿบ": ["animal", "nature", "wild"], "๐Ÿ—": ["animal", "nature"], @@ -575,6 +643,7 @@ "๐ŸŒฟ": ["vegetable", "plant", "medicine", "weed", "grass", "lawn"], "โ˜˜": ["vegetable", "plant", "nature", "irish", "clover"], "๐Ÿ€": ["vegetable", "plant", "nature", "lucky", "irish"], + "๐Ÿชพ": ["plant", "nature", "bare", "barren", "branches", "dead", "drought", "leafless", "tree", "trunk", "winter", "wood"], "๐ŸŽ": ["plant", "nature", "vegetable", "panda", "pine_decoration"], "๐ŸŽ‹": ["plant", "nature", "branch", "summer"], "๐Ÿƒ": ["nature", "plant", "tree", "vegetable", "grass", "lawn", "spring"], @@ -644,10 +713,11 @@ "๐Ÿ’ง": ["water", "drip", "faucet", "spring"], "๐Ÿ’ฆ": ["water", "drip", "oops"], "๐ŸŒŠ": ["sea", "water", "wave", "nature", "tsunami", "disaster"], - "๐Ÿชท": [], - "๐Ÿชธ": [], - "๐Ÿชน": [], - "๐Ÿชบ": [], + "๐Ÿชท": ["plant", "nature", "beauty", "buddhism", "calm", "flower", "hinduism", "lotus", "peace", "purity", "serenity"], + "๐Ÿชธ": ["animal", "nature", "change", "climate", "coral", "ocean", "reef", "sea"], + "๐Ÿชน": ["plant", "nature", "branch", "empty", "home", "nest", "nesting"], + "๐Ÿชบ": ["plant", "nature", "bird", "branch", "egg", "eggs", "nest", "nesting"], + "๐Ÿ‹โ€๐ŸŸฉ": ["acidity", "citrus", "cocktail", "fruit", "garnish", "key", "lime", "margarita", "mojito", "refreshing", "salsa", "sour", "tangy", "tequila", "tropical", "zest"], "๐Ÿ": ["fruit", "nature"], "๐ŸŽ": ["fruit", "mac", "school"], "๐Ÿ": ["fruit", "nature", "food"], @@ -667,6 +737,8 @@ "๐Ÿฅ‘": ["fruit", "food"], "๐Ÿซ›": ["beans", "edamame", "legume", "pea", "pod", "vegetable", "food"], "๐Ÿฅฆ": ["fruit", "food", "vegetable"], + "๐Ÿ„โ€๐ŸŸซ": ["food", "fungi", "fungus", "mushroom", "nature", "pizza", "portobello", "shiitake", "shroom", "spore", "sprout", "toppings", "truffle", "vegetable", "vegetarian", "veggie"], + "๐Ÿซœ": ["beet", "food", "garden", "radish", "root", "salad", "turnip", "vegetable", "vegetarian"], "๐Ÿ…": ["fruit", "vegetable", "nature", "food"], "๐Ÿ†": ["vegetable", "nature", "food", "aubergine"], "๐Ÿฅ’": ["fruit", "food", "pickle"], @@ -759,7 +831,7 @@ "๐Ÿต": ["drink", "bowl", "breakfast", "green", "british"], "๐Ÿฅค": ["drink", "soda"], "โ˜•": ["beverage", "caffeine", "latte", "espresso"], - "๐Ÿซ–": [], + "๐Ÿซ–": ["brew", "drink", "food", "pot", "tea", "teapot"], "๐Ÿง‹": ["tapioca"], "๐Ÿผ": ["food", "container", "milk"], "๐Ÿงƒ": ["food", "drink"], @@ -772,9 +844,9 @@ "๐Ÿฅฃ": ["food", "breakfast", "cereal", "oatmeal", "porridge"], "๐Ÿฅก": ["food", "leftovers"], "๐Ÿฅข": ["food"], - "๐Ÿซ—": [], - "๐Ÿซ˜": [], - "๐Ÿซ™": [], + "๐Ÿซ—": ["accident", "drink", "empty", "glass", "liquid", "oops", "pour", "pouring", "spill", "water"], + "๐Ÿซ˜": ["beans", "food", "kidney", "legume", "small"], + "๐Ÿซ™": ["condiment", "container", "empty", "jar", "nothing", "sauce", "store"], "โšฝ": ["sports", "football"], "๐Ÿ€": ["sports", "balls", "NBA"], "๐Ÿˆ": ["sports", "balls", "NFL"], @@ -788,6 +860,7 @@ "โ›ณ": ["sports", "business", "flag", "hole", "summer"], "๐ŸŒ๏ธโ€โ™€๏ธ": ["sports", "business", "woman", "female"], "๐ŸŒ": ["sports", "business"], + "๐ŸŒ๏ธโ€โ™‚๏ธ": ["sport", "ball", "birdie", "caddy", "driving", "golf", "golfing", "green", "man", "pga", "putt", "range", "tee"], "๐Ÿ“": ["sports", "pingpong"], "๐Ÿธ": ["sports"], "๐Ÿฅ…": ["sports"], @@ -799,10 +872,13 @@ "โ›ท": ["sports", "winter", "snow"], "๐Ÿ‚": ["sports", "winter"], "๐Ÿคบ": ["sports", "fencing", "sword"], + "๐Ÿคผ": ["sport", "combat", "duel", "grapple", "people", "ring", "tournament", "wrestle", "wrestling"], "๐Ÿคผโ€โ™€๏ธ": ["sports", "wrestlers"], "๐Ÿคผโ€โ™‚๏ธ": ["sports", "wrestlers"], + "๐Ÿคธ": ["sport", "active", "cartwheel", "cartwheeling", "excited", "flip", "gymnastics", "happy", "person", "somersault"], "๐Ÿคธโ€โ™€๏ธ": ["gymnastics"], "๐Ÿคธโ€โ™‚๏ธ": ["gymnastics"], + "๐Ÿคพ": ["sport", "athletics", "ball", "catch", "chuck", "handball", "hurl", "lob", "person", "pitch", "playing", "throw", "toss"], "๐Ÿคพโ€โ™€๏ธ": ["sports"], "๐Ÿคพโ€โ™‚๏ธ": ["sports"], "โ›ธ": ["sports"], @@ -815,32 +891,42 @@ "๐Ÿฅ‹": ["judo", "karate", "taekwondo"], "๐Ÿšฃโ€โ™€๏ธ": ["sports", "hobby", "water", "ship", "woman", "female"], "๐Ÿšฃ": ["sports", "hobby", "water", "ship"], + "๐Ÿšฃโ€โ™‚๏ธ": ["sport", "boat", "canoe", "cruise", "fishing", "lake", "man", "oar", "paddle", "raft", "river", "row", "rowboat", "rowing"], + "๐Ÿง—": ["climb", "climber", "climbing", "mountain", "person", "rock", "scale", "up"], "๐Ÿง—โ€โ™€๏ธ": ["sports", "hobby", "woman", "female", "rock"], "๐Ÿง—โ€โ™‚๏ธ": ["sports", "hobby", "man", "male", "rock"], "๐ŸŠโ€โ™€๏ธ": ["sports", "exercise", "human", "athlete", "water", "summer", "woman", "female"], "๐ŸŠ": ["sports", "exercise", "human", "athlete", "water", "summer"], + "๐ŸŠโ€โ™‚๏ธ": ["sport", "freestyle", "man", "swim", "swimmer", "swimming", "triathlon"], + "๐Ÿคฝ": ["sport", "person", "playing", "polo", "swimming", "water", "waterpolo"], "๐Ÿคฝโ€โ™€๏ธ": ["sports", "pool"], "๐Ÿคฝโ€โ™‚๏ธ": ["sports", "pool"], + "๐Ÿง˜": ["cross", "legged", "legs", "lotus", "meditation", "peace", "person", "position", "relax", "serenity", "yoga", "yogi", "zen"], "๐Ÿง˜โ€โ™€๏ธ": ["woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness"], "๐Ÿง˜โ€โ™‚๏ธ": ["man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness"], "๐Ÿ„โ€โ™€๏ธ": ["sports", "ocean", "sea", "summer", "beach", "woman", "female"], "๐Ÿ„": ["sports", "ocean", "sea", "summer", "beach"], + "๐Ÿ„โ€โ™‚๏ธ": ["sport", "beach", "man", "ocean", "surf", "surfer", "surfing", "swell", "waves"], "๐Ÿ›€": ["clean", "shower", "bathroom"], "โ›น๏ธโ€โ™€๏ธ": ["sports", "human", "woman", "female"], "โ›น": ["sports", "human"], + "โ›น๏ธโ€โ™‚๏ธ": ["sport", "athletic", "ball", "basketball", "bouncing", "championship", "dribble", "man", "net", "player", "throw"], "๐Ÿ‹๏ธโ€โ™€๏ธ": ["sports", "training", "exercise", "woman", "female"], "๐Ÿ‹": ["sports", "training", "exercise"], + "๐Ÿ‹๏ธโ€โ™‚๏ธ": ["sport", "barbell", "bodybuilder", "deadlift", "lifter", "lifting", "man", "powerlifting", "weight", "weightlifter", "weights", "workout"], "๐Ÿšดโ€โ™€๏ธ": ["sports", "bike", "exercise", "hipster", "woman", "female"], "๐Ÿšด": ["sports", "bike", "exercise", "hipster"], + "๐Ÿšดโ€โ™‚๏ธ": ["sport", "bicycle", "bicyclist", "bike", "biking", "cycle", "cyclist", "man", "riding"], "๐Ÿšตโ€โ™€๏ธ": ["transportation", "sports", "human", "race", "bike", "woman", "female"], "๐Ÿšต": ["transportation", "sports", "human", "race", "bike"], + "๐Ÿšตโ€โ™‚๏ธ": ["sport", "bicycle", "bicyclist", "bike", "biking", "cycle", "cyclist", "man", "mountain", "riding"], "๐Ÿ‡": ["animal", "betting", "competition", "gambling", "luck"], "๐Ÿคฟ": ["sports"], "๐Ÿช€": ["sports"], "๐Ÿช": ["sports"], "๐Ÿฆบ": ["sports"], - "๐Ÿชก": [], - "๐Ÿชข": [], + "๐Ÿชก": ["embroidery", "needle", "sew", "sewing", "stitches", "sutures", "tailoring", "thread"], + "๐Ÿชข": ["cord", "knot", "rope", "tangled", "tie", "twine", "twist"], "๐Ÿ•ด": ["suit", "business", "levitate", "hover", "jump"], "๐Ÿ†": ["win", "award", "contest", "place", "ftw", "ceremony"], "๐ŸŽฝ": ["play", "pageant"], @@ -856,6 +942,7 @@ "๐ŸŽญ": ["acting", "theater", "drama"], "๐ŸŽจ": ["design", "paint", "draw", "colors"], "๐ŸŽช": ["festival", "carnival", "party"], + "๐Ÿคน": ["sport", "act", "balance", "balancing", "handle", "juggle", "juggling", "manage", "multitask", "person", "skill"], "๐Ÿคนโ€โ™€๏ธ": ["juggle", "balance", "skill", "multitask"], "๐Ÿคนโ€โ™‚๏ธ": ["juggle", "balance", "skill", "multitask"], "๐ŸŽค": ["sound", "music", "PA", "sing", "talkshow"], @@ -872,6 +959,7 @@ "๐Ÿช•": ["music", "instrument"], "๐Ÿช—": ["music", "instrument"], "๐Ÿช˜": ["music", "instrument"], + "๐Ÿช‰": ["cupid", "harp", "instrument", "love", "music", "orchestra"], "๐ŸŽฌ": ["movie", "film", "record"], "๐ŸŽฎ": ["play", "console", "PS4", "controller"], "๐Ÿ‘พ": ["game", "arcade", "play"], @@ -881,11 +969,11 @@ "๐ŸŽฐ": ["bet", "gamble", "vegas", "fruit machine", "luck", "casino"], "๐Ÿงฉ": ["interlocking", "puzzle", "piece"], "๐ŸŽณ": ["sports", "fun", "play"], - "๐Ÿช„": [], - "๐Ÿช…": [], - "๐Ÿช†": [], - "๐Ÿชฌ": [], - "๐Ÿชฉ": [], + "๐Ÿช„": ["magic", "magician", "wand", "witch", "wizard"], + "๐Ÿช…": ["candy", "celebrate", "celebration", "cinco", "de", "festive", "mayo", "party", "pinada", "pinata", "piรฑata"], + "๐Ÿช†": ["babooshka", "baboushka", "babushka", "doll", "dolls", "matryoshka", "nesting", "russia"], + "๐Ÿชฌ": ["amulet", "fatima", "fortune", "guide", "hamsa", "hand", "mary", "miriam", "palm", "protect", "protection"], + "๐Ÿชฉ": ["ball", "dance", "disco", "glitter", "mirror", "party"], "๐Ÿš—": ["red", "transportation", "vehicle"], "๐Ÿš•": ["uber", "vehicle", "cars", "transportation"], "๐Ÿš™": ["transportation", "vehicle"], @@ -941,7 +1029,7 @@ "๐Ÿš€": ["launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly"], "๐Ÿ›ฐ": ["communication", "gps", "orbit", "spaceflight", "NASA", "ISS"], "๐Ÿ›ป": ["car"], - "๐Ÿ›ผ": [], + "๐Ÿ›ผ": ["blades", "roller", "skate", "skates", "sport"], "๐Ÿ’บ": ["sit", "airplane", "transport", "bus", "flight", "fly"], "๐Ÿ›ถ": ["boat", "paddle", "water", "ship"], "โš“": ["ship", "ferry", "sea", "boat"], @@ -1013,12 +1101,12 @@ "๐Ÿ•‹": ["mecca", "mosque", "islam"], "โ›ฉ": ["temple", "japan", "kyoto"], "๐Ÿ›•": ["temple"], - "๐Ÿชจ": [], - "๐Ÿชต": [], - "๐Ÿ›–": [], - "๐Ÿ›": [], - "๐Ÿ›ž": [], - "๐Ÿ›Ÿ": [], + "๐Ÿชจ": ["boulder", "heavy", "rock", "solid", "stone", "tough"], + "๐Ÿชต": ["log", "lumber", "timber", "wood"], + "๐Ÿ›–": ["home", "house", "hut", "roundhouse", "shelter", "yurt"], + "๐Ÿ›": ["amusement", "park", "play", "playground", "playing", "slide", "sliding", "theme"], + "๐Ÿ›ž": ["car", "circle", "tire", "turn", "vehicle", "wheel"], + "๐Ÿ›Ÿ": ["buoy", "float", "life", "lifesaver", "preserver", "rescue", "ring", "safety", "save", "saver", "swim"], "โŒš": ["time", "accessories"], "๐Ÿ“ฑ": ["technology", "apple", "gadgets", "dial"], "๐Ÿ“ฒ": ["iphone", "incoming"], @@ -1059,7 +1147,7 @@ "โŒ›": ["time", "clock", "oldschool", "limit", "exam", "quiz", "test"], "๐Ÿ“ก": ["communication", "future", "radio", "space"], "๐Ÿ”‹": ["power", "energy", "sustain"], - "๐Ÿชซ": [], + "๐Ÿชซ": ["battery", "drained", "electronic", "energy", "low", "power"], "๐Ÿ”Œ": ["charger", "power"], "๐Ÿ’ก": ["light", "electricity", "idea"], "๐Ÿ”ฆ": ["dark", "camping", "sight", "night"], @@ -1075,9 +1163,11 @@ "๐Ÿ’ฐ": ["dollar", "payment", "coins", "sale"], "๐Ÿช™": ["dollar", "payment", "coins", "sale"], "๐Ÿ’ณ": ["money", "sales", "dollar", "bill", "payment", "shopping"], - "๐Ÿชช": [], + "๐Ÿชช": ["card", "credentials", "document", "id", "identification", "license", "security"], + "๐Ÿฅพ": ["backpacking", "boot", "brown", "camping", "hiking", "outdoors", "shoe"], "๐Ÿ’Ž": ["blue", "ruby", "diamond", "jewelry"], "โš–": ["law", "fairness", "weight"], + "โ›“๏ธโ€๐Ÿ’ฅ": ["break", "breaking", "broken", "chain", "cuffs", "freedom"], "๐Ÿงฐ": ["tools", "diy", "fix", "maintainer", "mechanic"], "๐Ÿ”ง": ["tools", "diy", "ikea", "fix", "maintainer"], "๐Ÿ”จ": ["tools", "build", "create"], @@ -1093,6 +1183,7 @@ "๐Ÿช›": ["tool"], "๐Ÿช": ["tool"], "๐Ÿชœ": ["tool"], + "๐Ÿช": ["bury", "dig", "garden", "hole", "plant", "scoop", "shovel", "snow", "spade"], "๐Ÿงฑ": ["bricks"], "โ›“": ["lock", "arrest"], "๐Ÿงฒ": ["attraction", "magnetic"], @@ -1123,8 +1214,8 @@ "๐Ÿฉบ": ["health", "hospital", "medicine", "needle", "doctor", "nurse"], "๐Ÿช’": ["health"], "๐Ÿชฎ": ["afro", "comb", "hair", "pick"], - "๐Ÿฉป": [], - "๐Ÿฉผ": [], + "๐Ÿฉป": ["bones", "doctor", "medical", "skeleton", "skull", "x-ray", "xray"], + "๐Ÿฉผ": ["aid", "cane", "crutch", "disability", "help", "hurt", "injured", "mobility", "stick"], "๐Ÿงฌ": ["biologist", "genetics", "life"], "๐Ÿงซ": ["bacteria", "biology", "culture", "lab"], "๐Ÿงช": ["chemistry", "experiment", "lab", "science"], @@ -1159,7 +1250,7 @@ "๐Ÿชค": ["household"], "๐Ÿชฃ": ["household"], "๐Ÿชฅ": ["household"], - "๐Ÿซง": [], + "๐Ÿซง": ["bubble", "bubbles", "burp", "clean", "floating", "pearl", "soap", "underwater"], "โ›ฑ": ["weather", "summer"], "๐Ÿ—ฟ": ["rock", "easter island", "moai"], "๐Ÿ›": ["mall", "buy", "purchase"], @@ -1249,8 +1340,8 @@ "๐Ÿ–Œ": ["drawing", "creativity", "art"], "๐Ÿ”": ["search", "zoom", "find", "detective"], "๐Ÿ”Ž": ["search", "zoom", "find", "detective"], - "๐Ÿชฆ": [], - "๐Ÿชง": [], + "๐Ÿชฆ": ["cemetery", "dead", "grave", "graveyard", "headstone", "memorial", "rip", "tomb", "tombstone"], + "๐Ÿชง": ["card", "demonstration", "notice", "picket", "placard", "plaque", "protest", "sign"], "๐Ÿ’ฏ": ["score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred"], "๐Ÿ”ข": ["numbers", "blue-square"], "๐Ÿฉท": ["love", "like", "affection", "valentines"], @@ -1275,8 +1366,8 @@ "๐Ÿ’˜": ["love", "like", "heart", "affection", "valentines"], "๐Ÿ’": ["love", "valentines"], "๐Ÿ’Ÿ": ["purple-square", "love", "like"], - "โค๏ธโ€๐Ÿ”ฅ": [], - "โค๏ธโ€๐Ÿฉน": [], + "โค๏ธโ€๐Ÿ”ฅ": ["burn", "fire", "heart", "love", "lust", "sacred"], + "โค๏ธโ€๐Ÿฉน": ["healthier", "heart", "improving", "mending", "recovering", "recuperating", "well"], "โ˜ฎ": ["hippie"], "โœ": ["christianity"], "โ˜ช": ["islam"], @@ -1304,6 +1395,8 @@ "โ™“": ["purple-square", "sign", "zodiac", "astrology"], "๐Ÿ†”": ["purple-square", "words"], "โš›": ["science", "physics", "chemistry"], + "โ™€๏ธ": ["female", "sign", "woman", "pink-square"], + "โ™‚๏ธ": ["male", "man", "sign", "blue-square"], "โšง๏ธ": ["purple-square", "woman", "female", "toilet", "loo", "restroom", "gender"], "๐Ÿˆณ": ["kanji", "japanese", "chinese", "empty", "sky", "blue-square", "aki"], "๐Ÿˆน": ["cut", "divide", "chinese", "kanji", "pink-square", "waribiki"], @@ -1459,13 +1552,15 @@ "โž–": ["math", "calculation", "subtract", "less"], "โž—": ["divide", "math", "calculation"], "โœ–๏ธ": ["math", "calculation"], - "๐ŸŸฐ": [], + "๐ŸŸฐ": ["answer", "equal", "equality", "equals", "heavy", "math", "sign"], "โ™พ": ["forever"], "๐Ÿ’ฒ": ["money", "sales", "payment", "currency", "buck"], "๐Ÿ’ฑ": ["money", "sales", "dollar", "travel"], + "โš•๏ธ": ["aesculapius", "medical", "medicine", "staff", "symbol"], "ยฉ๏ธ": ["ip", "license", "circle", "law", "legal"], "ยฎ๏ธ": ["alphabet", "circle"], "โ„ข๏ธ": ["trademark", "brand", "law", "legal"], + "๐ŸซŸ": ["drip", "holi", "ink", "liquid", "mess", "paint", "spill", "splatter", "stain"], "๐Ÿ”š": ["words", "arrow"], "๐Ÿ”™": ["arrow", "words", "return"], "๐Ÿ”›": ["arrow", "words"], @@ -1576,6 +1671,7 @@ "๐Ÿ‡ง๐Ÿ‡ฒ": ["bm", "bermuda", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡น": ["bt", "bhutan", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡ด": ["bo", "bolivia", "flag", "nation", "country", "banner"], + "๐Ÿ‡ง๐Ÿ‡ป": ["bv", "bouvet", "island", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡ถ": ["bq", "bonaire", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡ฆ": ["ba", "bosnia", "herzegovina", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡ผ": ["bw", "botswana", "flag", "nation", "country", "banner"], @@ -1593,10 +1689,12 @@ "๐Ÿ‡ฎ๐Ÿ‡จ": ["ic", "canary", "islands", "flag", "nation", "country", "banner"], "๐Ÿ‡ฐ๐Ÿ‡พ": ["ky", "cayman", "islands", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ซ": ["cf", "central", "african", "republic", "flag", "nation", "country", "banner"], + "๐Ÿ‡ช๐Ÿ‡ฆ": ["ea", "ceuta", "melilla", "flag", "nation", "country", "banner"], "๐Ÿ‡น๐Ÿ‡ฉ": ["td", "chad", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ฑ": ["cl", "chile", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ณ": ["cn", "china", "chinese", "prc", "flag", "country", "nation", "banner"], "๐Ÿ‡จ๐Ÿ‡ฝ": ["cx", "christmas", "island", "flag", "nation", "country", "banner"], + "๐Ÿ‡จ๐Ÿ‡ต": ["cp", "clipperton", "island", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡จ": ["cc", "cocos", "keeling", "islands", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ด": ["co", "colombia", "flag", "nation", "country", "banner"], "๐Ÿ‡ฐ๐Ÿ‡ฒ": ["km", "comoros", "flag", "nation", "country", "banner"], @@ -1610,6 +1708,7 @@ "๐Ÿ‡จ๐Ÿ‡พ": ["cy", "cyprus", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ฟ": ["cz", "czech", "republic", "flag", "nation", "country", "banner"], "๐Ÿ‡ฉ๐Ÿ‡ฐ": ["dk", "denmark", "flag", "nation", "country", "banner"], + "๐Ÿ‡ฉ๐Ÿ‡ฌ": ["dg", "diego", "garcia", "flag", "nation", "country", "banner"], "๐Ÿ‡ฉ๐Ÿ‡ฏ": ["dj", "djibouti", "flag", "nation", "country", "banner"], "๐Ÿ‡ฉ๐Ÿ‡ฒ": ["dm", "dominica", "flag", "nation", "country", "banner"], "๐Ÿ‡ฉ๐Ÿ‡ด": ["do", "dominican", "republic", "flag", "nation", "country", "banner"], @@ -1646,6 +1745,7 @@ "๐Ÿ‡ฌ๐Ÿ‡ผ": ["gw", "guiana", "bissau", "flag", "nation", "country", "banner"], "๐Ÿ‡ฌ๐Ÿ‡พ": ["gy", "guyana", "flag", "nation", "country", "banner"], "๐Ÿ‡ญ๐Ÿ‡น": ["ht", "haiti", "flag", "nation", "country", "banner"], + "๐Ÿ‡ญ๐Ÿ‡ฒ": ["hm", "heard", "mcdonald", "islands", "flag", "nation", "country", "banner"], "๐Ÿ‡ญ๐Ÿ‡ณ": ["hn", "honduras", "flag", "nation", "country", "banner"], "๐Ÿ‡ญ๐Ÿ‡ฐ": ["hk", "hong", "kong", "flag", "nation", "country", "banner"], "๐Ÿ‡ญ๐Ÿ‡บ": ["hu", "hungary", "flag", "nation", "country", "banner"], @@ -1733,10 +1833,12 @@ "๐Ÿ‡ท๐Ÿ‡ด": ["ro", "romania", "flag", "nation", "country", "banner"], "๐Ÿ‡ท๐Ÿ‡บ": ["ru", "russian", "federation", "flag", "nation", "country", "banner"], "๐Ÿ‡ท๐Ÿ‡ผ": ["rw", "rwanda", "flag", "nation", "country", "banner"], + "๐Ÿ‡จ๐Ÿ‡ถ": ["cq", "sark", "flag", "nation", "country", "banner"], "๐Ÿ‡ง๐Ÿ‡ฑ": ["bl", "saint", "barthรฉlemy", "flag", "nation", "country", "banner"], "๐Ÿ‡ธ๐Ÿ‡ญ": ["sh", "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner"], "๐Ÿ‡ฐ๐Ÿ‡ณ": ["kn", "saint", "kitts", "nevis", "flag", "nation", "country", "banner"], "๐Ÿ‡ฑ๐Ÿ‡จ": ["lc", "saint", "lucia", "flag", "nation", "country", "banner"], + "๐Ÿ‡ฒ๐Ÿ‡ซ": ["mf", "st", "martin", "flag", "nation", "country", "banner"], "๐Ÿ‡ต๐Ÿ‡ฒ": ["pm", "saint", "pierre", "miquelon", "flag", "nation", "country", "banner"], "๐Ÿ‡ป๐Ÿ‡จ": ["vc", "saint", "vincent", "grenadines", "flag", "nation", "country", "banner"], "๐Ÿ‡ผ๐Ÿ‡ธ": ["ws", "western", "samoa", "flag", "nation", "country", "banner"], @@ -1762,6 +1864,7 @@ "๐Ÿ‡ธ๐Ÿ‡ฉ": ["sd", "sudan", "flag", "nation", "country", "banner"], "๐Ÿ‡ธ๐Ÿ‡ท": ["sr", "suriname", "flag", "nation", "country", "banner"], "๐Ÿ‡ธ๐Ÿ‡ฟ": ["sz", "eswatini", "flag", "nation", "country", "banner"], + "๐Ÿ‡ธ๐Ÿ‡ฏ": ["sj", "svalbard", "jan", "mayen", "flag", "nation", "country", "banner"], "๐Ÿ‡ธ๐Ÿ‡ช": ["se", "sweden", "flag", "nation", "country", "banner"], "๐Ÿ‡จ๐Ÿ‡ญ": ["ch", "switzerland", "confoederatio", "helvetica", "flag", "nation", "country", "banner"], "๐Ÿ‡ธ๐Ÿ‡พ": ["sy", "syrian", "arab", "republic", "flag", "nation", "country", "banner"], @@ -1788,6 +1891,7 @@ "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": ["flag", "scottish"], "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": ["flag", "welsh"], "๐Ÿ‡บ๐Ÿ‡ธ": ["us", "usa", "united", "states", "america", "flag", "nation", "country", "banner"], + "๐Ÿ‡บ๐Ÿ‡ฒ": ["um", "us", "outlying", "islands", "flag", "nation", "country", "banner"], "๐Ÿ‡ป๐Ÿ‡ฎ": ["vi", "virgin", "islands", "us", "flag", "nation", "country", "banner"], "๐Ÿ‡บ๐Ÿ‡พ": ["uy", "uruguay", "flag", "nation", "country", "banner"], "๐Ÿ‡บ๐Ÿ‡ฟ": ["uz", "uzbekistan", "flag", "nation", "country", "banner"], diff --git a/packages/frontend/src/unicode-emoji-indexes/ja-JP.json b/packages/frontend/src/unicode-emoji-indexes/ja-JP.json index 9c491804f2..136e96759e 100644 --- a/packages/frontend/src/unicode-emoji-indexes/ja-JP.json +++ b/packages/frontend/src/unicode-emoji-indexes/ja-JP.json @@ -36,6 +36,9 @@ "๐Ÿคก":["ใƒ”ใ‚จใƒญใฎ้ก”","ใƒ”ใ‚จใƒญ","้ก”"], "๐Ÿ˜":["ใซใ‚„ใซใ‚„ใ—ใŸ้ก”","้ก”","ใซใ‚„ใซใ‚„"], "๐Ÿ˜ถ":["ๅฃใฎใชใ„้ก”","้ก”","ๅฃ","้™ใ‹ใซ","ๆฒˆ้ป™"], + "๐Ÿ™‚โ€โ†”๏ธ":["ใ„ใ„ใˆ","ไธ่ณ›ๆˆ","้ก”","้ฆ–ใ‚’ๆŒฏใ‚‹","้ฆ–ใ‚’ๆจชใซๆŒฏใ‚‹"], + "๐Ÿ™‚โ€โ†•๏ธ":["ใฏใ„","้ ทใ","้ก”","้ฆ–ใ‚’ๆŒฏใ‚‹","้ฆ–ใ‚’็ธฆใซๆŒฏใ‚‹"], + "๐Ÿซฉ":["ใ‚ฏใƒž","ๅพนๅคœ","็–ฒใ‚ŒใŸ","็œ ใ„","้ก”"], "๐Ÿซฅ":["็‚น็ทšใฎ้ก”","่ฝใก่พผใ‚“ใ ","ๆถˆใˆใ‚‹","้š ใ‚Œใ‚‹","ๅ†…ๅ‘็š„","็›ฎใซ่ฆ‹ใˆใชใ„"], "๐Ÿ˜":["ๆ™ฎ้€šใฎ้ก”","็„ก่กจๆƒ…","้ก”","ๅนณ้™"], "๐Ÿซค":["ๅฃใŒๆ–œใ‚ใซใชใฃใŸ้ก”","ใŒใฃใ‹ใ‚Š","็„ก้–ขๅฟƒ","็–‘ใ„ๆทฑใ„","ไธๅฎ‰"], @@ -111,6 +114,38 @@ "๐Ÿ’ฉ":["ใ†ใ‚“ใก","ใƒžใƒณใ‚ฌ","ๆผซ็”ป","ใƒ•ใƒณ","้ก”","ใƒขใƒณใ‚นใ‚ฟใƒผ"], "๐Ÿ‘ป":["ใŠๅŒ–ใ‘","ๅฆ–ๆ€ช","้ก”","ใŠใจใŽ่ฉฑ","ใƒ•ใ‚กใƒณใ‚ฟใ‚ธใƒผ","ๅนฝ้œŠ","ใƒขใƒณใ‚นใ‚ฟใƒผ","ใƒใƒญใ‚ฆใ‚ฃใƒผใƒณ"], "๐Ÿ’€":["ใƒ‰ใ‚ฏใƒญ","ไฝ“","ๆญป","้ก”","ใŠใจใŽ่ฉฑ","ใƒขใƒณใ‚นใ‚ฟใƒผ","้ชธ้ชจ","ใƒใƒญใ‚ฆใ‚ฃใƒผใƒณ"], + "๐Ÿซ†":["ๆŒ‡็ด‹","้‘‘่ญ˜","็”Ÿไฝ“่ช่จผ","ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ"], + "๐Ÿƒโ€โžก๏ธ":["ใ‚ธใƒงใ‚ฎใƒณใ‚ฐ","ใƒžใƒฉใ‚ฝใƒณ","ใƒฉใƒณใƒŠใƒผ","ใƒฉใƒณใƒ‹ใƒณใ‚ฐ","ๅณๅ‘ใ","ๆ€ฅใ","่ตฐใ‚‹","่ตฐใ‚‹ไบบ","้ง†ใ‘่ถณ"], + "๐Ÿƒโ€โ™€๏ธโ€โžก๏ธ":["ใ‚ธใƒงใ‚ฎใƒณใ‚ฐ","ใƒžใƒฉใ‚ฝใƒณ","ใƒฉใƒณใƒŠใƒผ","ใƒฉใƒณใƒ‹ใƒณใ‚ฐ","ๅณๅ‘ใ","ๅฅณๆ€ง","ๆ€ฅใ","่ตฐใ‚‹","่ตฐใ‚‹ๅฅณ","้ง†ใ‘่ถณ"], + "๐Ÿƒโ€โ™‚๏ธโ€โžก๏ธ":["ใ‚ธใƒงใ‚ฎใƒณใ‚ฐ","ใƒžใƒฉใ‚ฝใƒณ","ใƒฉใƒณใƒŠใƒผ","ใƒฉใƒณใƒ‹ใƒณใ‚ฐ","ๅณๅ‘ใ","็”ทๆ€ง","่ตฐใ‚‹็”ท"], + "๐Ÿšถโ€โžก๏ธ":["ใ‚ฆใ‚ฉใƒผใ‚ญใƒณใ‚ฐ","ใƒใ‚คใ‚ญใƒณใ‚ฐ","ใถใ‚‰ใคใ","ไบบ","ๅณๅ‘ใ","ๅคง่‚ก","ๆ•ฃๆญฉ","ๆญฉใ","ๆญฉ่กŒ","ๆญฉ่กŒ่€…"], + "๐Ÿšถโ€โ™€๏ธโ€โžก๏ธ":["ใ‚ฆใ‚ฉใƒผใ‚ญใƒณใ‚ฐ","ใƒใ‚คใ‚ญใƒณใ‚ฐ","ๅณๅ‘ใ","ๅฅณๆ€ง","ๆ•ฃๆญฉ","ๆญฉใ","ๆญฉใๅฅณ","ๆญฉ่กŒ","ๆญฉ่กŒ่€…"], + "๐Ÿšถโ€โ™‚๏ธโ€โžก๏ธ":["ใ‚ฆใ‚ฉใƒผใ‚ญใƒณใ‚ฐ","ๅณๅ‘ใ","ๆญฉใ็”ท","ๆญฉ่กŒ","ๆญฉ่กŒ่€…","็”ทๆ€ง"], + "๐ŸงŽโ€โžก๏ธ":["ใฒใ–ใพใšใ","ไบบ","ๅณๅ‘ใ","ๅบงใ‚‹","ๆญฃๅบงใ™ใ‚‹ไบบ"], + "๐ŸงŽโ€โ™€๏ธโ€โžก๏ธ":["ใฒใ–ใพใšใ","ๅณๅ‘ใ","ๅฅณๆ€ง","ๅบงใ‚‹","ๆญฃๅบงใ™ใ‚‹ๅฅณๆ€ง"], + "๐ŸงŽโ€โ™‚๏ธโ€โžก๏ธ":["ใฒใ–ใพใšใ","ๅณๅ‘ใ","ๅบงใ‚‹","ๆญฃๅบงใ™ใ‚‹็”ทๆ€ง","็”ทๆ€ง"], + "๐Ÿง‘โ€๐Ÿฆฏโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๆ–ใ‚’ใคใ„ใŸไบบ","็›ฎ","่ฆ–่ฆš","้šœใŒใ„"], + "๐Ÿ‘ฉโ€๐Ÿฆฏโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๅฅณๆ€ง","ๆ–ใ‚’ใคใ„ใŸๅฅณๆ€ง","็™ฝๆ–ใ‚’ใคใ„ใŸๅฅณๆ€ง","็›ฎ","่ฆ–่ฆš","้šœใŒใ„"], + "๐Ÿ‘จโ€๐Ÿฆฏโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๆ–ใ‚’ใคใ„ใŸ็”ทๆ€ง","็”ทๆ€ง","็™ฝๆ–ใ‚’ใคใ„ใŸ็”ทๆ€ง","็›ฎ","่ฆ–่ฆš","้šœใŒใ„"], + "๐Ÿง‘โ€๐Ÿฆผโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","่ปŠใ„ใ™","้šœใŒใ„","้›ปๅ‹•่ปŠๆค…ๅญใฎไบบ"], + "๐Ÿ‘ฉโ€๐Ÿฆผโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๅฅณๆ€ง","่ปŠใ„ใ™","้šœใŒใ„","้›ปๅ‹•่ปŠๆค…ๅญใฎๅฅณๆ€ง"], + "๐Ÿ‘จโ€๐Ÿฆผโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","็”ทๆ€ง","่ปŠใ„ใ™","้šœใŒใ„","้›ปๅ‹•่ปŠๆค…ๅญใฎ็”ทๆ€ง"], + "๐Ÿง‘โ€๐Ÿฆฝโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๆ‰‹ๅ‹•ๅผ่ปŠๆค…ๅญใฎไบบ","่ปŠใ„ใ™","้šœใŒใ„"], + "๐Ÿ‘ฉโ€๐Ÿฆฝโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๅฅณๆ€ง","ๆ‰‹ๅ‹•ๅผ่ปŠๆค…ๅญใฎๅฅณๆ€ง","่ปŠใ„ใ™","้šœใŒใ„"], + "๐Ÿ‘จโ€๐Ÿฆฝโ€โžก๏ธ":["ใ‚ขใ‚ฏใ‚ปใ‚ทใƒ“ใƒชใƒ†ใ‚ฃ","ๅณๅ‘ใ","ๆ‰‹ๅ‹•ๅผ่ปŠๆค…ๅญใฎ็”ทๆ€ง","็”ทๆ€ง","่ปŠใ„ใ™","้šœใŒใ„"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ":["ๅฅณๆ€ง","ๅญไพ›","ๅฎถๆ—","็”ทใฎๅญ","็”ทๆ€ง","่ฆชๅญ"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’":["ๅคงไบบไบŒไบบ","ๅญไพ›ไธ€ไบบ","ๅฎถๆ—","ๅคงไบบไบŒไบบใจๅญไพ›ไธ€ไบบ","่ฆชๅญ"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’":["ๅคงไบบไบŒไบบ","ๅญไพ›ไบŒไบบ","ๅฎถๆ—","ๅคงไบบไบŒไบบใจๅญไพ›ไบŒไบบ","่ฆชๅญ"], + "๐Ÿง‘โ€๐Ÿง’":["ๅคงไบบไธ€ไบบ","ๅญไพ›ไธ€ไบบ","ๅฎถๆ—","ๅคงไบบไธ€ไบบใจๅญไพ›ไธ€ไบบ","่ฆชๅญ"], + "๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’":["ๅคงไบบไธ€ไบบ","ๅญไพ›ไบŒไบบ","ๅฎถๆ—","ๅคงไบบไธ€ไบบใจๅญไพ›ไบŒไบบ","่ฆชๅญ"], + "๐Ÿฆโ€๐Ÿ”ฅ":["ใƒ•ใ‚กใƒณใ‚ฟใ‚ธใƒผ","ใƒ•ใ‚งใƒ‹ใƒƒใ‚ฏใ‚น","ไธๆญป้ณฅ","ๅ†็”Ÿ","ๅพฉๆดป","็ซใฎ้ณฅ","็”Ÿใพใ‚Œๅค‰ใ‚ใ‚Š","็ฅž่ฉฑ","่ปข็”Ÿ","่ผชๅปป"], + "๐Ÿชพ":["ไธๆฏ›","ๅนฒใฐใค","่‘‰ใฎใชใ„ๆœจ","ๅ†ฌ"], + "๐Ÿ‹โ€๐ŸŸฉ":["ใ•ใ‚ใ‚„ใ‹","ใƒˆใƒญใƒ”ใ‚ซใƒซ","ใƒ•ใƒซใƒผใƒ„","ใƒžใƒซใ‚ฌใƒชใƒผใ‚ฟ","ใƒขใƒ’ใƒผใƒˆ","ใƒฉใ‚คใƒ ","ๆžœ็‰ฉ","ๆŸ‘ๆฉ˜้กž","็ท‘","้…ธใฃใฑใ„"], + "๐Ÿ„โ€๐ŸŸซ":["ใใฎใ“","ใ‚ญใƒŽใ‚ณ","ใ—ใ„ใŸใ‘","ใƒˆใƒชใƒฅใƒ•","ใƒ–ใƒฉใ‚ฆใƒณใƒžใƒƒใ‚ทใƒฅใƒซใƒผใƒ ","ใƒใƒผใƒˆใƒ™ใƒญใƒผ","ใƒžใƒƒใ‚ทใƒฅใƒซใƒผใƒ ","ๆคŽ่Œธ","่Œธ","่Œ้กž"], + "๐Ÿซœ":["ใƒ“ใƒผใƒ„","ๅบญ","ๆ น","ใ‚ซใƒ–","้‡Ž่œ"], + "๐Ÿช‰":["ใ‚ชใƒผใ‚ฑใ‚นใƒˆใƒฉ","ใ‚ญใƒฅใƒผใƒ”ใƒƒใƒ‰","ใƒใƒผใƒ—","ๅผฆๆฅฝๅ™จ","ๆ„›","ๆฅฝๅ™จ","้Ÿณๆฅฝ"], + "โ›“๏ธโ€๐Ÿ’ฅ":["ใใ•ใ‚Š","ใƒใ‚งใƒผใƒณ","ๅฃŠใ‚ŒใŸ","ๅฃŠใ‚ŒใŸ้Ž–"], + "๐Ÿช":["ใ‚ทใƒฃใƒ™ใƒซ","ใ‚ทใƒงใƒ™ใƒซ","ใ‚นใ‚ณใƒƒใƒ—","ๆŽ˜ใ‚‹","็ฉด","้‹ค"], "โ˜ ":["ใƒ‰ใ‚ฏใƒญใƒžใƒผใ‚ฏ","ไฝ“","ไบคๅทฎใ—ใŸ้ชจ","ๆญป","้ก”","ใƒขใƒณใ‚นใ‚ฟใƒผ","้ชธ้ชจ","ใƒใƒญใ‚ฆใ‚ฃใƒผใƒณ"], "๐Ÿ‘ฝ":["ๅฎ‡ๅฎ™ไบบ","ๆ€ช็ฃ","็•ฐๆ˜Ÿไบบ","้ก”","ใŠใจใŽ่ฉฑ","ใƒ•ใ‚กใƒณใ‚ฟใ‚ธใƒผ","ใƒขใƒณใ‚นใ‚ฟใƒผ","ๅฎ‡ๅฎ™","UFO"], "๐Ÿค–":["ใƒญใƒœใƒƒใƒˆใฎ้ก”","้ก”","ใƒขใƒณใ‚นใ‚ฟใƒผ","ใƒญใƒœใƒƒใƒˆ"], @@ -1518,6 +1553,7 @@ "ยฉ๏ธ":["ใ‚ณใƒ”ใƒผใƒฉใ‚คใƒˆใƒžใƒผใ‚ฏ","่‘—ไฝœๆจฉ"], "ยฎ๏ธ":["็™ป้Œฒๅ•†ๆจ™ใƒžใƒผใ‚ฏ","็™ป้Œฒๆธˆใฟ","ๅ•†ๆจ™"], "โ„ข๏ธ":["ๅ•†ๆจ™ใƒžใƒผใ‚ฏ","ใƒžใƒผใ‚ฏ","tm","ๅ•†ๆจ™"], + "๐ŸซŸ":["ใ—ใถใ","ใƒšใƒณใ‚ญ","้ฃ›ๆฒซ","้ฃ›ใณๆ•ฃใ‚Š","ใ‚นใƒ—ใƒฉใƒƒใ‚ทใƒฅ"], "๐Ÿ”š":["ENDใจๅทฆ็Ÿขๅฐ","็Ÿขๅฐ","็ซฏ"], "๐Ÿ”™":["BACKใจๅทฆ็Ÿขๅฐ","็Ÿขๅฐ","ๆˆปใ‚‹"], "๐Ÿ”›":["ON!ใจๅทฆๅณ็Ÿขๅฐ","็Ÿขๅฐ","ใƒžใƒผใ‚ฏ","ใ‚ชใƒณ"], @@ -1643,6 +1679,7 @@ "๐Ÿ‡ง๐Ÿ‡ท":["ใƒ–ใƒฉใ‚ธใƒซๅ›ฝๆ——","ใƒ–ใƒฉใ‚ธใƒซ","ๅ›ฝๆ——"], "๐Ÿ‡ง๐Ÿ‡ธ":["ใƒใƒใƒžๅ›ฝๆ——","ใƒใƒใƒž","ๅ›ฝๆ——"], "๐Ÿ‡ง๐Ÿ‡น":["ใƒ–ใƒผใ‚ฟใƒณๅ›ฝๆ——","ใƒ–ใƒผใ‚ฟใƒณ","ๅ›ฝๆ——"], + "๐Ÿ‡ง๐Ÿ‡ป":["ใƒ–ใƒผใƒ™ๅณถใฎๆ——","ใƒ–ใƒผใƒ™ๅณถ","ๅ›ฝๆ——"], "๐Ÿ‡ง๐Ÿ‡ผ":["ใƒœใƒ„ใƒฏใƒŠๅ›ฝๆ——","ใƒœใƒ„ใƒฏใƒŠ","ๅ›ฝๆ——"], "๐Ÿ‡ง๐Ÿ‡พ":["ใƒ™ใƒฉใƒซใƒผใ‚ทๅ›ฝๆ——","ใƒ™ใƒฉใƒซใƒผใ‚ท","ๅ›ฝๆ——"], "๐Ÿ‡ง๐Ÿ‡ฟ":["ใƒ™ใƒชใƒผใ‚บๅ›ฝๆ——","ใƒ™ใƒชใƒผใ‚บ","ๅ›ฝๆ——"], @@ -1658,6 +1695,8 @@ "๐Ÿ‡จ๐Ÿ‡ฒ":["ใ‚ซใƒกใƒซใƒผใƒณๅ›ฝๆ——","ใ‚ซใƒกใƒซใƒผใƒณ","ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡ณ":["ไธญๅ›ฝๅ›ฝๆ——","ไธญๅ›ฝ","ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡ด":["ใ‚ณใƒญใƒณใƒ“ใ‚ขๅ›ฝๆ——","ใ‚ณใƒญใƒณใƒ“ใ‚ข","ๅ›ฝๆ——"], + "๐Ÿ‡จ๐Ÿ‡ต":["ใ‚ฏใƒชใƒƒใƒ‘ใƒผใƒˆใƒณๅณถใฎๆ——","ใ‚ฏใƒชใƒƒใƒ‘ใƒผใƒˆใƒณๅณถ","ๅ›ฝๆ——"], + "๐Ÿ‡จ๐Ÿ‡ถ":["ใ‚ตใƒผใ‚ฏๅณถใฎๆ——", "ใ‚ตใƒผใ‚ฏๅณถ", "ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡ท":["ใ‚ณใ‚นใ‚ฟใƒชใ‚ซๅ›ฝๆ——","ใ‚ณใ‚นใ‚ฟใƒชใ‚ซ","ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡บ":["ใ‚ญใƒฅใƒผใƒๅ›ฝๆ——","ใ‚ญใƒฅใƒผใƒ","ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡ป":["ใ‚ซใƒผใƒœใƒ™ใƒซใƒ‡ๅ›ฝๆ——","ใ‚ซใƒผใƒœ","ใ‚ฑใƒผใƒ—","ๅ›ฝๆ——","ใƒ™ใƒซใƒ‡"], @@ -1666,11 +1705,13 @@ "๐Ÿ‡จ๐Ÿ‡พ":["ใ‚ญใƒ—ใƒญใ‚นๅ›ฝๆ——","ใ‚ญใƒ—ใƒญใ‚น","ๅ›ฝๆ——"], "๐Ÿ‡จ๐Ÿ‡ฟ":["ใƒใ‚งใ‚ณๅ›ฝๆ——","ใƒใ‚งใ‚ณๅ…ฑๅ’Œๅ›ฝ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ช":["ใƒ‰ใ‚คใƒ„ๅ›ฝๆ——","ๅ›ฝๆ——","ใƒ‰ใ‚คใƒ„"], + "๐Ÿ‡ฉ๐Ÿ‡ฌ":["ใƒ‡ใ‚ฃใ‚จใ‚ดใ‚ฌใƒซใ‚ทใ‚ขๅณถใฎๆ——","ใƒ‡ใ‚ฃใ‚จใ‚ดใ‚ฌใƒซใ‚ทใ‚ขๅณถ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ฏ":["ใ‚ธใƒ–ใƒๅ›ฝๆ——","ใ‚ธใƒ–ใƒ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ฐ":["ใƒ‡ใƒณใƒžใƒผใ‚ฏๅ›ฝๆ——","ใƒ‡ใƒณใƒžใƒผใ‚ฏ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ฒ":["ใƒ‰ใƒŸใƒ‹ใ‚ซๅ›ฝๆ——","ใƒ‰ใƒŸใƒ‹ใ‚ซ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ด":["ใƒ‰ใƒŸใƒ‹ใ‚ซๅ…ฑๅ’Œๅ›ฝๅ›ฝๆ——","ใƒ‰ใƒŸใƒ‹ใ‚ซๅ…ฑๅ’Œๅ›ฝ","ๅ›ฝๆ——"], "๐Ÿ‡ฉ๐Ÿ‡ฟ":["ใ‚ขใƒซใ‚ธใ‚งใƒชใ‚ขๅ›ฝๆ——","ใ‚ขใƒซใ‚ธใ‚งใƒชใ‚ข","ๅ›ฝๆ——"], + "๐Ÿ‡ช๐Ÿ‡ฆ":["ใ‚ปใ‚ฆใ‚ฟใƒปใƒกใƒชใƒชใƒฃใฎๆ——","ใ‚ปใ‚ฆใ‚ฟใƒปใƒกใƒชใƒชใƒฃ","ๅ›ฝๆ——"], "๐Ÿ‡ช๐Ÿ‡จ":["ใ‚จใ‚ฏใ‚ขใƒ‰ใƒซๅ›ฝๆ——","ใ‚จใ‚ฏใ‚ขใƒ‰ใƒซ","ๅ›ฝๆ——"], "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ":["ใ‚คใƒณใ‚ฐใƒฉใƒณใƒ‰ใฎๆ——","ใ‚คใƒณใ‚ฐใƒฉใƒณใƒ‰","ๆ——"], "๐Ÿ‡ช๐Ÿ‡ช":["ใ‚จใ‚นใƒˆใƒ‹ใ‚ขๅ›ฝๆ——","ใ‚จใ‚นใƒˆใƒ‹ใ‚ข","ๅ›ฝๆ——"], @@ -1706,6 +1747,7 @@ "๐Ÿ‡ฌ๐Ÿ‡ผ":["ใ‚ฎใƒ‹ใ‚ขใƒ“ใ‚ตใ‚ฆๅ›ฝๆ——","ใƒ“ใ‚ตใ‚ฆ","ๅ›ฝๆ——","ใ‚ฎใƒ‹ใ‚ข"], "๐Ÿ‡ฌ๐Ÿ‡พ":["ใ‚ฌใ‚คใ‚ขใƒŠๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ฌใ‚คใ‚ขใƒŠ"], "๐Ÿ‡ญ๐Ÿ‡ฐ":["้ฆ™ๆธฏใฎๆ——","ไธญๅ›ฝ","ๅ›ฝๆ——","้ฆ™ๆธฏ"], + "๐Ÿ‡ญ๐Ÿ‡ฒ":["ใƒใƒผใƒ‰ๅณถใƒปใƒžใ‚ฏใƒ‰ใƒŠใƒซใƒ‰่ซธๅณถใฎๆ——","ใƒใƒผใƒ‰ๅณถใƒปใƒžใ‚ฏใƒ‰ใƒŠใƒซใƒ‰่ซธๅณถ","ๅ›ฝๆ——"], "๐Ÿ‡ญ๐Ÿ‡ณ":["ใƒ›ใƒณใ‚ธใƒฅใƒฉใ‚นๅ›ฝๆ——","ๅ›ฝๆ——","ใƒ›ใƒณใ‚ธใƒฅใƒฉใ‚น"], "๐Ÿ‡ญ๐Ÿ‡ท":["ใ‚ฏใƒญใ‚ขใƒใ‚ขๅ›ฝๆ——","ใ‚ฏใƒญใ‚ขใƒใ‚ข","ๅ›ฝๆ——"], "๐Ÿ‡ญ๐Ÿ‡น":["ใƒใ‚คใƒๅ›ฝๆ——","ๅ›ฝๆ——","ใƒใ‚คใƒ"], @@ -1751,6 +1793,7 @@ "๐Ÿ‡ฒ๐Ÿ‡จ":["ใƒขใƒŠใ‚ณๅ›ฝๆ——","ๅ›ฝๆ——","ใƒขใƒŠใ‚ณ"], "๐Ÿ‡ฒ๐Ÿ‡ฉ":["ใƒขใƒซใƒ‰ใƒๅ›ฝๆ——","ๅ›ฝๆ——","ใƒขใƒซใƒ‰ใƒ"], "๐Ÿ‡ฒ๐Ÿ‡ช":["ใƒขใƒณใƒ†ใƒใ‚ฐใƒญๅ›ฝๆ——","ๅ›ฝๆ——","ใƒขใƒณใƒ†ใƒใ‚ฐใƒญ"], + "๐Ÿ‡ฒ๐Ÿ‡ซ":["ใ‚ตใƒณใƒปใƒžใƒซใ‚ฟใƒณใฎๆ——","ใ‚ตใƒณใƒปใƒžใƒซใ‚ฟใƒณ","ๅ›ฝๆ——"], "๐Ÿ‡ฒ๐Ÿ‡ฌ":["ใƒžใƒ€ใ‚ฌใ‚นใ‚ซใƒซๅ›ฝๆ——","ๅ›ฝๆ——","ใƒžใƒ€ใ‚ฌใ‚นใ‚ซใƒซ"], "๐Ÿ‡ฒ๐Ÿ‡ญ":["ใƒžใƒผใ‚ทใƒฃใƒซ่ซธๅณถๅ›ฝๆ——","ๅ›ฝๆ——","่ซธๅณถ","ใƒžใƒผใ‚ทใƒฃใƒซ"], "๐Ÿ‡ฒ๐Ÿ‡ฐ":["ใƒžใ‚ฑใƒ‰ใƒ‹ใ‚ขๅ›ฝๆ——","ๅ›ฝๆ——","ใƒžใ‚ฑใƒ‰ใƒ‹ใ‚ข"], @@ -1811,6 +1854,7 @@ "๐Ÿ‡ธ๐Ÿ‡ฌ":["ใ‚ทใƒณใ‚ฌใƒใƒผใƒซๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ทใƒณใ‚ฌใƒใƒผใƒซ"], "๐Ÿ‡ธ๐Ÿ‡ญ":["ใ‚ปใƒณใƒˆใƒ˜ใƒฌใƒŠๅณถใฎๆ——","ๆ——","ใƒ˜ใƒฌใƒŠ","ใ‚ปใƒณใƒˆ"], "๐Ÿ‡ธ๐Ÿ‡ฎ":["ใ‚นใƒญใƒ™ใƒ‹ใ‚ขๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚นใƒญใƒ™ใƒ‹ใ‚ข"], + "๐Ÿ‡ธ๐Ÿ‡ฏ":["ใ‚นใƒใƒผใƒซใƒใƒซ่ซธๅณถใƒปใƒคใƒณใƒžใ‚คใ‚จใƒณๅณถใฎๆ——","ใ‚นใƒใƒผใƒซใƒใƒซ่ซธๅณถใƒปใƒคใƒณใƒžใ‚คใ‚จใƒณๅณถ","ๅ›ฝๆ——"], "๐Ÿ‡ธ๐Ÿ‡ฐ":["ใ‚นใƒญใƒใ‚ญใ‚ขๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚นใƒญใƒใ‚ญใ‚ข"], "๐Ÿ‡ธ๐Ÿ‡ฑ":["ใ‚ทใ‚จใƒฉใƒฌใ‚ชใƒๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ทใ‚จใƒฉใƒฌใ‚ชใƒ"], "๐Ÿ‡ธ๐Ÿ‡ฒ":["ใ‚ตใƒณใƒžใƒชใƒŽๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ตใƒณใƒžใƒชใƒŽ"], @@ -1842,6 +1886,7 @@ "๐Ÿ‡น๐Ÿ‡ฟ":["ใ‚ฟใƒณใ‚ถใƒ‹ใ‚ขๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ฟใƒณใ‚ถใƒ‹ใ‚ข"], "๐Ÿ‡บ๐Ÿ‡ฆ":["ใ‚ฆใ‚ฏใƒฉใ‚คใƒŠๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ฆใ‚ฏใƒฉใ‚คใƒŠ"], "๐Ÿ‡บ๐Ÿ‡ฌ":["ใ‚ฆใ‚ฌใƒณใƒ€ๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ฆใ‚ฌใƒณใƒ€"], + "๐Ÿ‡บ๐Ÿ‡ฒ":["ๅˆ่ก†ๅ›ฝ้ ˜ๆœ‰ๅฐ้›ขๅณถใฎๆ——","ๅˆ่ก†ๅ›ฝ้ ˜ๆœ‰ๅฐ้›ขๅณถ","ๅ›ฝๆ——"], "๐Ÿ‡บ๐Ÿ‡ณ":["ๅ›ฝ้€ฃใฎๆ——","ๆ——","ๅ›ฝ้€ฃ","้€ฃๅˆ","ๅ›ฝ้š›"], "๐Ÿ‡บ๐Ÿ‡ธ":["ใ‚ขใƒกใƒชใ‚ซๅ›ฝๆ——","ใ‚ขใƒกใƒชใ‚ซ","ๆ——","ๅˆ่ก†","ๅˆ่ก†ๅ›ฝ","ใ‚ขใƒกใƒชใ‚ซๅˆ่ก†ๅ›ฝ","ๅˆ่ก†ๅ›ฝ้ ˜ๆœ‰ๅฐ้›ขๅณถ"], "๐Ÿ‡บ๐Ÿ‡พ":["ใ‚ฆใƒซใ‚ฐใ‚ขใ‚คๅ›ฝๆ——","ๅ›ฝๆ——","ใ‚ฆใƒซใ‚ฐใ‚ขใ‚ค"], diff --git a/packages/frontend/src/unicode-emoji-indexes/ja-JP_hira.json b/packages/frontend/src/unicode-emoji-indexes/ja-JP_hira.json index 2ad282d501..7dfe022d72 100644 --- a/packages/frontend/src/unicode-emoji-indexes/ja-JP_hira.json +++ b/packages/frontend/src/unicode-emoji-indexes/ja-JP_hira.json @@ -36,6 +36,9 @@ "๐Ÿคก": ["ใดใˆใ‚ใฎใ‹ใŠ","ใดใˆใ‚","ใ‹ใŠ"], "๐Ÿ˜": ["ใซใ‚„ใซใ‚„ใ—ใŸใ‹ใŠ","ใ‹ใŠ","ใซใ‚„ใซใ‚„"], "๐Ÿ˜ถ": ["ใใกใฎใชใ„ใ‹ใŠ","ใ‹ใŠ","ใใก","ใ—ใšใ‹ใซ","ใกใ‚“ใ‚‚ใ"], + "๐Ÿ™‚โ€โ†”๏ธ": ["ใ„ใ„ใˆ","ใตใ•ใ‚“ใ›ใ„","ใ‹ใŠ","ใใณใ‚’ใตใ‚‹","ใใณใ‚’ใ‚ˆใ“ใซใตใ‚‹"], + "๐Ÿ™‚โ€โ†•๏ธ": ["ใฏใ„","ใ†ใชใšใ","ใ‹ใŠ","ใใณใ‚’ใตใ‚‹","ใใณใ‚’ใŸใฆใซใตใ‚‹"], + "๐Ÿซฉ": ["ใใพ","ใฆใคใ‚„","ใคใ‹ใ‚ŒใŸ","ใญใ‚€ใ„","ใ‹ใŠ"], "๐Ÿซฅ": ["ใฆใ‚“ใ›ใ‚“ใฎใ‹ใŠ","ใŠใกใ“ใ‚“ใ ","ใใˆใ‚‹","ใ‹ใใ‚Œใ‚‹","ใชใ„ใ“ใ†ใฆใ","ใ‚ใซใฟใˆใชใ„"], "๐Ÿ˜": ["ใตใคใ†ใฎใ‹ใŠ","ใ‚€ใฒใ‚‡ใ†ใ˜ใ‚‡ใ†","ใ‹ใŠ","ใธใ„ใ›ใ„"], "๐Ÿซค": ["ใใกใŒใชใชใ‚ใซใชใฃใŸใ‹ใŠ","ใŒใฃใ‹ใ‚Š","ใ‚€ใ‹ใ‚“ใ—ใ‚“","ใ†ใŸใŒใ„ใถใ‹ใ„","ใตใ‚ใ‚“"], @@ -111,6 +114,38 @@ "๐Ÿ’ฉ": ["ใ†ใ‚“ใก","ใพใ‚“ใŒ","ใตใ‚“","ใ‹ใŠ","ใ‚‚ใ‚“ใ™ใŸใƒผ"], "๐Ÿ‘ป": ["ใŠใฐใ‘","ใ‚ˆใ†ใ‹ใ„","ใ‹ใŠ","ใŠใจใŽใฐใชใ—","ใตใใ‚“ใŸใ˜ใƒผ","ใ‚†ใ†ใ‚Œใ„","ใ‚‚ใ‚“ใ™ใŸใƒผ","ใฏใ‚ใ†ใƒใƒผใ‚“"], "๐Ÿ’€": ["ใฉใใ‚","ใ‹ใ‚‰ใ ","ใ—","ใ‹ใŠ","ใŠใจใŽใฐใชใ—","ใ‚‚ใ‚“ใ™ใŸใƒผ","ใŒใ„ใ“ใค","ใฏใ‚ใ†ใƒใƒผใ‚“"], + "๐Ÿซ†": ["ใ—ใ‚‚ใ‚“","ใ‹ใ‚“ใ—ใ","ใ›ใ„ใŸใ„ใซใ‚“ใ—ใ‚‡ใ†","ใ›ใใ‚…ใ‚Šใฆใƒ"], + "๐Ÿƒโ€โžก๏ธ": ["ใ˜ใ‚‡ใŽใ‚“ใ","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ","ใฟใŽใ‚€ใ","ใ„ใใ","ใฏใ—ใ‚‹","ใฏใ—ใ‚‹ใฒใจ","ใ‹ใ‘ใ‚ใ—"], + "๐Ÿƒโ€โ™€๏ธโ€โžก๏ธ": ["ใ˜ใ‚‡ใŽใ‚“ใ","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใ„ใใ","ใฏใ—ใ‚‹","ใฏใ—ใ‚‹ใŠใ‚“ใช","ใ‹ใ‘ใ‚ใ—"], + "๐Ÿƒโ€โ™‚๏ธโ€โžก๏ธ": ["ใ˜ใ‚‡ใŽใ‚“ใ","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ","ใฟใŽใ‚€ใ","ใ ใ‚“ใ›ใ„","ใฏใ—ใ‚‹ใŠใจใ“"], + "๐Ÿšถโ€โžก๏ธ": ["ใ†ใ‰ใƒผใใ‚“ใ","ใฏใ„ใใ‚“ใ","ใถใ‚‰ใคใ","ใฒใจ","ใฟใŽใ‚€ใ","ใŠใŠใพใŸ","ใ•ใ‚“ใฝ","ใ‚ใ‚‹ใ","ใปใ“ใ†","ใปใ“ใ†ใ—ใ‚ƒ"], + "๐Ÿšถโ€โ™€๏ธโ€โžก๏ธ": ["ใ†ใ‰ใƒผใใ‚“ใ","ใฏใ„ใใ‚“ใ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใ•ใ‚“ใฝ","ใ‚ใ‚‹ใ","ใ‚ใ‚‹ใใŠใ‚“ใช","ใปใ“ใ†","ใปใ“ใ†ใ—ใ‚ƒ"], + "๐Ÿšถโ€โ™‚๏ธโ€โžก๏ธ": ["ใ†ใ‰ใƒผใใ‚“ใ","ใฟใŽใ‚€ใ","ใ‚ใ‚‹ใใŠใจใ“","ใปใ“ใ†","ใปใ“ใ†ใ—ใ‚ƒ","ใ ใ‚“ใ›ใ„"], + "๐ŸงŽโ€โžก๏ธ": ["ใฒใ–ใพใšใ","ใฒใจ","ใฟใŽใ‚€ใ","ใ™ใ‚ใ‚‹","ใ›ใ„ใ–ใ™ใ‚‹ใฒใจ"], + "๐ŸงŽโ€โ™€๏ธโ€โžก๏ธ": ["ใฒใ–ใพใšใ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใ™ใ‚ใ‚‹","ใ›ใ„ใ–ใ™ใ‚‹ใ˜ใ‚‡ใ›ใ„"], + "๐ŸงŽโ€โ™‚๏ธโ€โžก๏ธ": ["ใฒใ–ใพใšใ","ใฟใŽใ‚€ใ","ใ™ใ‚ใ‚‹","ใ›ใ„ใ–ใ™ใ‚‹ใ ใ‚“ใ›ใ„","ใ ใ‚“ใ›ใ„"], + "๐Ÿง‘โ€๐Ÿฆฏโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใคใˆใ‚’ใคใ„ใŸใฒใจ","ใ‚","ใ—ใ‹ใ","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿ‘ฉโ€๐Ÿฆฏโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใคใˆใ‚’ใคใ„ใŸใ˜ใ‚‡ใ›ใ„","ใฏใใ˜ใ‚‡ใ†ใ‚’ใคใ„ใŸใ˜ใ‚‡ใ›ใ„","ใ‚","ใ—ใ‹ใ","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿ‘จโ€๐Ÿฆฏโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใคใˆใ‚’ใคใ„ใŸใ ใ‚“ใ›ใ„","ใ ใ‚“ใ›ใ„","ใฏใใ˜ใ‚‡ใ†ใ‚’ใคใ„ใŸใ ใ‚“ใ›ใ„","ใ‚","ใ—ใ‹ใ","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿง‘โ€๐Ÿฆผโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„","ใงใ‚“ใฉใ†ใใ‚‹ใพใ„ใ™ใฎใฒใจ"], + "๐Ÿ‘ฉโ€๐Ÿฆผโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„","ใงใ‚“ใฉใ†ใใ‚‹ใพใ„ใ™ใฎใ˜ใ‚‡ใ›ใ„"], + "๐Ÿ‘จโ€๐Ÿฆผโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ ใ‚“ใ›ใ„","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„","ใงใ‚“ใฉใ†ใใ‚‹ใพใ„ใ™ใฎใ ใ‚“ใ›ใ„"], + "๐Ÿง‘โ€๐Ÿฆฝโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ—ใ‚…ใฉใ†ใ—ใใใ‚‹ใพใ„ใ™ใฎใฒใจ","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿ‘ฉโ€๐Ÿฆฝโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ˜ใ‚‡ใ›ใ„","ใ—ใ‚…ใฉใ†ใ—ใใใ‚‹ใพใ„ใ™ใฎใ˜ใ‚‡ใ›ใ„","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿ‘จโ€๐Ÿฆฝโ€โžก๏ธ": ["ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใฟใŽใ‚€ใ","ใ—ใ‚…ใฉใ†ใ—ใใใ‚‹ใพใ„ใ™ใฎใ ใ‚“ใ›ใ„","ใ ใ‚“ใ›ใ„","ใใ‚‹ใพใ„ใ™","ใ—ใ‚‡ใ†ใŒใ„"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": ["ใ˜ใ‚‡ใ›ใ„","ใ“ใฉใ‚‚","ใ‹ใžใ","ใŠใจใ“ใฎใ“","ใ ใ‚“ใ›ใ„","ใŠใ‚„ใ“"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’": ["ใŠใจใชใตใŸใ‚Š","ใ“ใฉใ‚‚ใฒใจใ‚Š","ใ‹ใžใ","ใŠใจใชใตใŸใ‚Šใจใ“ใฉใ‚‚ใฒใจใ‚Š","ใŠใ‚„ใ“"], + "๐Ÿง‘โ€๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’": ["ใŠใจใชใตใŸใ‚Š","ใ“ใฉใ‚‚ใตใŸใ‚Š","ใ‹ใžใ","ใŠใจใชใตใŸใ‚Šใจใ“ใฉใ‚‚ใตใŸใ‚Š","ใŠใ‚„ใ“"], + "๐Ÿง‘โ€๐Ÿง’": ["ใŠใจใชใฒใจใ‚Š","ใ“ใฉใ‚‚ใฒใจใ‚Š","ใ‹ใžใ","ใŠใจใชใฒใจใ‚Šใจใ“ใฉใ‚‚ใฒใจใ‚Š","ใŠใ‚„ใ“"], + "๐Ÿง‘โ€๐Ÿง’โ€๐Ÿง’": ["ใŠใจใชใฒใจใ‚Š","ใ“ใฉใ‚‚ใตใŸใ‚Š","ใ‹ใžใ","ใŠใจใชใฒใจใ‚Šใจใ“ใฉใ‚‚ใตใŸใ‚Š","ใŠใ‚„ใ“"], + "๐Ÿฆโ€๐Ÿ”ฅ": ["ใตใใ‚“ใŸใ˜ใƒผ","ใตใ‡ใซใฃใใ™","ใตใ—ใกใ‚‡ใ†","ใ•ใ„ใ›ใ„","ใตใฃใ‹ใค","ใฒใฎใจใ‚Š","ใ†ใพใ‚Œใ‹ใ‚ใ‚Š","ใ—ใ‚“ใ‚","ใฆใ‚“ใ›ใ„","ใ‚Šใ‚“ใญ"], + "๐Ÿชพ": ["ใตใ‚‚ใ†","ใ‹ใ‚“ใฐใค","ใฏใฎใชใ„ใ","ใตใ‚†"], + "๐Ÿ‹โ€๐ŸŸฉ": ["ใ•ใ‚ใ‚„ใ‹","ใจใ‚ใดใ‹ใ‚‹","ใตใ‚‹ใƒผใค","ใพใ‚‹ใŒใ‚ŠใƒผใŸ","ใ‚‚ใฒใƒผใจ","ใ‚‰ใ„ใ‚€","ใใ ใ‚‚ใฎ","ใ‹ใ‚“ใใคใ‚‹ใ„","ใฟใฉใ‚Š","ใ™ใฃใฑใ„"], + "๐Ÿ„โ€๐ŸŸซ": ["ใใฎใ“","ใ—ใ„ใŸใ‘","ใจใ‚Šใ‚…ใต","ใถใ‚‰ใ†ใ‚“ใพใฃใ—ใ‚…ใ‚‹ใƒผใ‚€","ใฝใƒผใจในใ‚ใƒผ","ใพใฃใ—ใ‚…ใ‚‹ใƒผใ‚€","ใŸใ‘","ใใ‚“ใ‚‹ใ„"], + "๐Ÿซœ": ["ใณใƒผใค","ใซใ‚","ใญ","ใ‹ใถ","ใ‚„ใ•ใ„"], + "๐Ÿช‰": ["ใŠใƒผใ‘ใ™ใจใ‚‰","ใใ‚…ใƒผใดใฃใฉ","ใฏใƒผใท","ใ’ใ‚“ใŒใฃใ","ใ‚ใ„","ใŒใฃใ","ใŠใ‚“ใŒใ"], + "โ›“๏ธโ€๐Ÿ’ฅ": ["ใใ•ใ‚Š","ใกใ‡ใƒผใ‚“","ใ“ใ‚ใ‚ŒใŸ","ใ“ใ‚ใ‚ŒใŸใใ•ใ‚Š"], + "๐Ÿช": ["ใ—ใ‚ƒในใ‚‹","ใ—ใ‚‡ในใ‚‹","ใ™ใ“ใฃใท","ใปใ‚‹","ใ‚ใช","ใ™ใ"], "โ˜ ": ["ใฉใใ‚ใพใƒผใ","ใ‹ใ‚‰ใ ","ใ“ใ†ใ•ใ—ใŸใปใญ","ใ—","ใ‹ใŠ","ใ‚‚ใ‚“ใ™ใŸใƒผ","ใŒใ„ใ“ใค","ใฏใ‚ใ†ใƒใƒผใ‚“"], "๐Ÿ‘ฝ": ["ใ†ใกใ‚…ใ†ใ˜ใ‚“","ใ‹ใ„ใ˜ใ‚…ใ†","ใ„ใ›ใ„ใ˜ใ‚“","ใ‹ใŠ","ใŠใจใŽใฐใชใ—","ใตใใ‚“ใŸใ˜ใƒผ","ใ‚‚ใ‚“ใ™ใŸใƒผ","ใ†ใกใ‚…ใ†","UFO"], "๐Ÿค–": ["ใ‚ใผใฃใจใฎใ‹ใŠ","ใ‹ใŠ","ใ‚‚ใ‚“ใ™ใŸใƒผ","ใ‚ใผใฃใจ"], @@ -382,9 +417,9 @@ "๐Ÿšถโ€โ™€๏ธ": ["ใ‚ใ‚‹ใใ˜ใ‚‡ใ›ใ„","ใฏใ„ใใ‚“ใ","ใปใ“ใ†ใ—ใ‚ƒ","ใ‚ใ‚‹ใ","ใ†ใ‰ใƒผใใ‚“ใ","ใ˜ใ‚‡ใ›ใ„","ใŠใ‚“ใช"], "๐Ÿšถ": ["ใ‚ใ‚‹ใใฒใจ","ใฏใ„ใใ‚“ใ","ใปใ“ใ†ใ—ใ‚ƒ","ใ‚ใ‚‹ใ","ใ†ใ‰ใƒผใใ‚“ใ"], "๐Ÿšถโ€โ™‚๏ธ": ["ใ‚ใ‚‹ใใ ใ‚“ใ›ใ„","ใฏใ„ใใ‚“ใ","ใปใ“ใ†ใ—ใ‚ƒ","ใ‚ใ‚‹ใ","ใ†ใ‰ใƒผใใ‚“ใ","ใŠใจใ“","ใ ใ‚“ใ›ใ„"], - "๐Ÿ‘ฉโ€๐Ÿฆฏ": ["ใ—ใ‚ใคใˆใ‚’ใ‚‚ใฃใŸใ˜ใ‚‡ใ›ใ„","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†","ใ˜ใ‚‡ใ›ใ„","ใŠใ‚“ใช"], - "๐Ÿง‘โ€๐Ÿฆฏ": ["ใ—ใ‚ใคใˆใ‚’ใ‚‚ใฃใŸใฒใจ","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†"], - "๐Ÿ‘จโ€๐Ÿฆฏ": ["ใ—ใ‚ใคใˆใ‚’ใ‚‚ใฃใŸใ ใ‚“ใ›ใ„","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†","ใ ใ‚“ใ›ใ„","ใŠใจใ“"], + "๐Ÿ‘ฉโ€๐Ÿฆฏ": ["ใฏใใ˜ใ‚‡ใ†ใ‚’ใ‚‚ใฃใŸใ˜ใ‚‡ใ›ใ„","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†","ใ˜ใ‚‡ใ›ใ„","ใŠใ‚“ใช"], + "๐Ÿง‘โ€๐Ÿฆฏ": ["ใฏใใ˜ใ‚‡ใ†ใ‚’ใ‚‚ใฃใŸใฒใจ","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†"], + "๐Ÿ‘จโ€๐Ÿฆฏ": ["ใฏใใ˜ใ‚‡ใ†ใ‚’ใ‚‚ใฃใŸใ ใ‚“ใ›ใ„","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†","ใ ใ‚“ใ›ใ„","ใŠใจใ“"], "๐Ÿƒโ€โ™€๏ธ": ["ใฏใ—ใ‚‹ใ˜ใ‚‡ใ›ใ„","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ","ใ˜ใ‚‡ใ›ใ„","ใŠใ‚“ใช"], "๐Ÿƒ": ["ใฏใ—ใ‚‹ใฒใจ","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ"], "๐Ÿƒโ€โ™‚๏ธ": ["ใฏใ—ใ‚‹ใ ใ‚“ใ›ใ„","ใพใ‚‰ใใ‚“","ใ‚‰ใ‚“ใชใƒผ","ใ‚‰ใ‚“ใซใ‚“ใ","ใŠใจใ“","ใ ใ‚“ใ›ใ„"], @@ -1129,7 +1164,7 @@ "๐Ÿงพ": ["ใ‚Šใ‚‡ใ†ใ—ใ‚…ใ†ใ—ใ‚‡","ใ‹ใ„ใ‘ใ„","ใผใ","ใ—ใ‚‡ใ†ใ“","ใ—ใ‚‡ใ†ใ‚ใ„"], "๐Ÿ’Ž": ["ใปใ†ใ›ใ","ใ ใ„ใ‚ใ‚‚ใ‚“ใฉ","ใ˜ใ‚…ใˆใ‚‹","ใ‚ใพใ‚“ใ™"], "โš–": ["ใฏใ‹ใ‚Š","ใฆใ‚“ใณใ‚“","ใ“ใ†ใ›ใ„","ใฆใ‚“ใณใ‚“ใ–","ใ‚‚ใฎใ•ใ—","ใฉใ†ใ","ใ˜ใ‚…ใ†ใ‚Šใ‚‡ใ†","ใ›ใ„ใ–"], - "๐Ÿฆฏ": ["ใ—ใ‚ใคใˆ","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†"], + "๐Ÿฆฏ": ["ใฏใใ˜ใ‚‡ใ†","ใ‚ใใ›ใ—ใณใ‚Šใฆใƒ","ใ‚ใŒใตใ˜ใ‚†ใ†"], "๐Ÿงฐ": ["ใฉใ†ใใฐใ“","ใ‚€ใญ","ใ›ใ„ใณใ—","ใ“ใ†ใ"], "๐Ÿ”ง": ["ใ‚Œใ‚“ใก","ใฉใ†ใ"], "๐Ÿช›": ["ใฉใ‚‰ใ„ใฐใƒผ","ใญใ˜","ใ“ใ†ใ"], @@ -1518,6 +1553,7 @@ "ยฉ๏ธ": ["ใ“ใดใƒผใ‚‰ใ„ใจใพใƒผใ","ใกใ‚‡ใ•ใใ‘ใ‚“"], "ยฎ๏ธ": ["ใจใ†ใ‚ใใ—ใ‚‡ใ†ใฒใ‚‡ใ†ใพใƒผใ","ใจใ†ใ‚ใใšใฟ","ใ—ใ‚‡ใ†ใฒใ‚‡ใ†"], "โ„ข๏ธ": ["ใ—ใ‚‡ใ†ใฒใ‚‡ใ†ใพใƒผใ","ใพใƒผใ","tm","ใ—ใ‚‡ใ†ใฒใ‚‡ใ†"], + "๐ŸซŸ": ["ใ—ใถใ","ใบใ‚“ใ","ใฒใพใค","ใจใณใกใ‚Š","ใ™ใทใ‚‰ใฃใ—ใ‚…"], "๐Ÿ”š": ["ENDใจใฒใ ใ‚Šใ‚„ใ˜ใ‚‹ใ—","ใ‚„ใ˜ใ‚‹ใ—","ใฏใ˜"], "๐Ÿ”™": ["BACKใจใฒใ ใ‚Šใ‚„ใ˜ใ‚‹ใ—","ใ‚„ใ˜ใ‚‹ใ—","ใ‚‚ใฉใ‚‹"], "๐Ÿ”›": ["ON!ใจใ•ใ‚†ใ†ใ‚„ใ˜ใ‚‹ใ—","ใ‚„ใ˜ใ‚‹ใ—","ใพใƒผใ","ใŠใ‚“"], @@ -1643,6 +1679,7 @@ "๐Ÿ‡ง๐Ÿ‡ท": ["ใถใ‚‰ใ˜ใ‚‹ใ“ใฃใ","ใถใ‚‰ใ˜ใ‚‹","ใ“ใฃใ"], "๐Ÿ‡ง๐Ÿ‡ธ": ["ใฐใฏใพใ“ใฃใ","ใฐใฏใพ","ใ“ใฃใ"], "๐Ÿ‡ง๐Ÿ‡น": ["ใถใƒผใŸใ‚“ใ“ใฃใ","ใถใƒผใŸใ‚“","ใ“ใฃใ"], + "๐Ÿ‡ง๐Ÿ‡ป": ["ใถใƒผในใจใ†ใฎใฏใŸ","ใถใƒผในใจใ†","ใ“ใฃใ"], "๐Ÿ‡ง๐Ÿ‡ผ": ["ใผใคใ‚ใชใ“ใฃใ","ใผใคใ‚ใช","ใ“ใฃใ"], "๐Ÿ‡ง๐Ÿ‡พ": ["ในใ‚‰ใ‚‹ใƒผใ—ใ“ใฃใ","ในใ‚‰ใ‚‹ใƒผใ—","ใ“ใฃใ"], "๐Ÿ‡ง๐Ÿ‡ฟ": ["ในใ‚Šใƒผใšใ“ใฃใ","ในใ‚Šใƒผใš","ใ“ใฃใ"], @@ -1658,6 +1695,8 @@ "๐Ÿ‡จ๐Ÿ‡ฒ": ["ใ‹ใ‚ใ‚‹ใƒผใ‚“ใ“ใฃใ","ใ‹ใ‚ใ‚‹ใƒผใ‚“","ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡ณ": ["ใกใ‚…ใ†ใ”ใใ“ใฃใ","ใกใ‚…ใ†ใ”ใ","ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡ด": ["ใ“ใ‚ใ‚“ใณใ‚ใ“ใฃใ","ใ“ใ‚ใ‚“ใณใ‚","ใ“ใฃใ"], + "๐Ÿ‡จ๐Ÿ‡ต": ["ใใ‚Šใฃใฑใƒผใจใ‚“ใจใ†ใฎใฏใŸ","ใใ‚Šใฃใฑใƒผใจใ‚“ใจใ†","ใ“ใฃใ"], + "๐Ÿ‡จ๐Ÿ‡ถ": ["ใ•ใƒผใใจใ†ใฎใฏใŸ", "ใ•ใƒผใใจใ†", "ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡ท": ["ใ“ใ™ใŸใ‚Šใ‹ใ“ใฃใ","ใ“ใ™ใŸใ‚Šใ‹","ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡บ": ["ใใ‚…ใƒผใฐใ“ใฃใ","ใใ‚…ใƒผใฐ","ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡ป": ["ใ‹ใƒผใผในใ‚‹ใงใ“ใฃใ","ใ‹ใƒผใผ","ใ‘ใƒผใท","ใ“ใฃใ","ในใ‚‹ใง"], @@ -1666,11 +1705,13 @@ "๐Ÿ‡จ๐Ÿ‡พ": ["ใใทใ‚ใ™ใ“ใฃใ","ใใทใ‚ใ™","ใ“ใฃใ"], "๐Ÿ‡จ๐Ÿ‡ฟ": ["ใกใ‡ใ“ใ“ใฃใ","ใกใ‡ใ“ใใ‚‡ใ†ใ‚ใ“ใ","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ช": ["ใฉใ„ใคใ“ใฃใ","ใ“ใฃใ","ใฉใ„ใค"], + "๐Ÿ‡ฉ๐Ÿ‡ฌ": ["ใงใƒใˆใ”ใŒใ‚‹ใ—ใ‚ใจใ†ใฎใฏใŸ","ใงใƒใˆใ”ใŒใ‚‹ใ—ใ‚ใจใ†","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ฏ": ["ใ˜ใถใกใ“ใฃใ","ใ˜ใถใก","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ฐ": ["ใงใ‚“ใพใƒผใใ“ใฃใ","ใงใ‚“ใพใƒผใ","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ฒ": ["ใฉใฟใซใ‹ใ“ใฃใ","ใฉใฟใซใ‹","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ด": ["ใฉใฟใซใ‹ใใ‚‡ใ†ใ‚ใ“ใใ“ใฃใ","ใฉใฟใซใ‹ใใ‚‡ใ†ใ‚ใ“ใ","ใ“ใฃใ"], "๐Ÿ‡ฉ๐Ÿ‡ฟ": ["ใ‚ใ‚‹ใ˜ใ‡ใ‚Šใ‚ใ“ใฃใ","ใ‚ใ‚‹ใ˜ใ‡ใ‚Šใ‚","ใ“ใฃใ"], + "๐Ÿ‡ช๐Ÿ‡ฆ": ["ใ›ใ†ใŸใƒปใ‚ใ‚Šใ‚Šใ‚ƒใฎใฏใŸ","ใ›ใ†ใŸใƒปใ‚ใ‚Šใ‚Šใ‚ƒ","ใ“ใฃใ"], "๐Ÿ‡ช๐Ÿ‡จ": ["ใˆใใ‚ใฉใ‚‹ใ“ใฃใ","ใˆใใ‚ใฉใ‚‹","ใ“ใฃใ"], "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": ["ใ„ใ‚“ใใ‚‰ใ‚“ใฉใฎใฏใŸ","ใ„ใ‚“ใใ‚‰ใ‚“ใฉ","ใ“ใฃใ"], "๐Ÿ‡ช๐Ÿ‡ช": ["ใˆใ™ใจใซใ‚ใ“ใฃใ","ใˆใ™ใจใซใ‚","ใ“ใฃใ"], @@ -1706,6 +1747,7 @@ "๐Ÿ‡ฌ๐Ÿ‡ผ": ["ใŽใซใ‚ใณใ•ใ†ใ“ใฃใ","ใณใ•ใ†","ใ“ใฃใ","ใŽใซใ‚"], "๐Ÿ‡ฌ๐Ÿ‡พ": ["ใŒใ„ใ‚ใชใ“ใฃใ","ใ“ใฃใ","ใŒใ„ใ‚ใช"], "๐Ÿ‡ญ๐Ÿ‡ฐ": ["ใปใ‚“ใ“ใ‚“ใฎใฏใŸ","ใกใ‚…ใ†ใ”ใ","ใ“ใฃใ","ใปใ‚“ใ“ใ‚“"], + "๐Ÿ‡ญ๐Ÿ‡ฒ": ["ใฏใƒผใฉใจใ†ใƒปใพใใฉใชใ‚‹ใฉใ—ใ‚‡ใจใ†ใฎใฏใŸ","ใฏใƒผใฉใจใ†ใƒปใพใใฉใชใ‚‹ใฉใ—ใ‚‡ใจใ†","ใ“ใฃใ"], "๐Ÿ‡ญ๐Ÿ‡ณ": ["ใปใ‚“ใ˜ใ‚…ใ‚‰ใ™ใ“ใฃใ","ใ“ใฃใ","ใปใ‚“ใ˜ใ‚…ใ‚‰ใ™"], "๐Ÿ‡ญ๐Ÿ‡ท": ["ใใ‚ใ‚ใกใ‚ใ“ใฃใ","ใใ‚ใ‚ใกใ‚","ใ“ใฃใ"], "๐Ÿ‡ญ๐Ÿ‡น": ["ใฏใ„ใกใ“ใฃใ","ใ“ใฃใ","ใฏใ„ใก"], @@ -1751,6 +1793,7 @@ "๐Ÿ‡ฒ๐Ÿ‡จ": ["ใ‚‚ใชใ“ใ“ใฃใ","ใ“ใฃใ","ใ‚‚ใชใ“"], "๐Ÿ‡ฒ๐Ÿ‡ฉ": ["ใ‚‚ใ‚‹ใฉใฐใ“ใฃใ","ใ“ใฃใ","ใ‚‚ใ‚‹ใฉใฐ"], "๐Ÿ‡ฒ๐Ÿ‡ช": ["ใ‚‚ใ‚“ใฆใญใใ‚ใ“ใฃใ","ใ“ใฃใ","ใ‚‚ใ‚“ใฆใญใใ‚"], + "๐Ÿ‡ฒ๐Ÿ‡ซ": ["ใ•ใ‚“ใƒปใพใ‚‹ใŸใ‚“ใฎใฏใŸ","ใ•ใ‚“ใƒปใพใ‚‹ใŸใ‚“","ใ“ใฃใ"], "๐Ÿ‡ฒ๐Ÿ‡ฌ": ["ใพใ ใŒใ™ใ‹ใ‚‹ใ“ใฃใ","ใ“ใฃใ","ใพใ ใŒใ™ใ‹ใ‚‹"], "๐Ÿ‡ฒ๐Ÿ‡ญ": ["ใพใƒผใ—ใ‚ƒใ‚‹ใ—ใ‚‡ใจใ†ใ“ใฃใ","ใ“ใฃใ","ใ—ใ‚‡ใจใ†","ใพใƒผใ—ใ‚ƒใ‚‹"], "๐Ÿ‡ฒ๐Ÿ‡ฐ": ["ใพใ‘ใฉใซใ‚ใ“ใฃใ","ใ“ใฃใ","ใพใ‘ใฉใซใ‚"], @@ -1811,6 +1854,7 @@ "๐Ÿ‡ธ๐Ÿ‡ฌ": ["ใ—ใ‚“ใŒใฝใƒผใ‚‹ใ“ใฃใ","ใ“ใฃใ","ใ—ใ‚“ใŒใฝใƒผใ‚‹"], "๐Ÿ‡ธ๐Ÿ‡ญ": ["ใ›ใ‚“ใจใธใ‚Œใชใจใ†ใฎใฏใŸ","ใฏใŸ","ใธใ‚Œใช","ใ›ใ‚“ใจ"], "๐Ÿ‡ธ๐Ÿ‡ฎ": ["ใ™ใ‚ในใซใ‚ใ“ใฃใ","ใ“ใฃใ","ใ™ใ‚ในใซใ‚"], + "๐Ÿ‡ธ๐Ÿ‡ฏ": ["ใ™ใฐใƒผใ‚‹ใฐใ‚‹ใ—ใ‚‡ใจใ†ใƒปใ‚„ใ‚“ใพใ„ใˆใ‚“ใจใ†ใฎใฏใŸ","ใ™ใฐใƒผใ‚‹ใฐใ‚‹ใ—ใ‚‡ใจใ†ใƒปใ‚„ใ‚“ใพใ„ใˆใ‚“ใจใ†","ใ“ใฃใ"], "๐Ÿ‡ธ๐Ÿ‡ฐ": ["ใ™ใ‚ใฐใใ‚ใ“ใฃใ","ใ“ใฃใ","ใ™ใ‚ใฐใใ‚"], "๐Ÿ‡ธ๐Ÿ‡ฑ": ["ใ—ใˆใ‚‰ใ‚ŒใŠใญใ“ใฃใ","ใ“ใฃใ","ใ—ใˆใ‚‰ใ‚ŒใŠใญ"], "๐Ÿ‡ธ๐Ÿ‡ฒ": ["ใ•ใ‚“ใพใ‚Šใฎใ“ใฃใ","ใ“ใฃใ","ใ•ใ‚“ใพใ‚Šใฎ"], @@ -1842,6 +1886,7 @@ "๐Ÿ‡น๐Ÿ‡ฟ": ["ใŸใ‚“ใ–ใซใ‚ใ“ใฃใ","ใ“ใฃใ","ใŸใ‚“ใ–ใซใ‚"], "๐Ÿ‡บ๐Ÿ‡ฆ": ["ใ†ใใ‚‰ใ„ใชใ“ใฃใ","ใ“ใฃใ","ใ†ใใ‚‰ใ„ใช"], "๐Ÿ‡บ๐Ÿ‡ฌ": ["ใ†ใŒใ‚“ใ ใ“ใฃใ","ใ“ใฃใ","ใ†ใŒใ‚“ใ "], + "๐Ÿ‡บ๐Ÿ‡ฒ": ["ใŒใฃใ—ใ‚…ใ†ใ“ใใ‚Šใ‚‡ใ†ใ‚†ใ†ใ—ใ‚‡ใ†ใ‚Šใจใ†ใฎใฏใŸ","ใŒใฃใ—ใ‚…ใ†ใ“ใใ‚Šใ‚‡ใ†ใ‚†ใ†ใ—ใ‚‡ใ†ใ‚Šใจใ†","ใ“ใฃใ"], "๐Ÿ‡บ๐Ÿ‡ณ": ["ใ“ใใ‚Œใ‚“ใฎใฏใŸ","ใฏใŸ","ใ“ใใ‚Œใ‚“","ใ‚Œใ‚“ใ”ใ†","ใ“ใใ•ใ„"], "๐Ÿ‡บ๐Ÿ‡ธ": ["ใ‚ใ‚ใ‚Šใ‹ใ“ใฃใ","ใ‚ใ‚ใ‚Šใ‹","ใฏใŸ","ใ”ใ†ใ—ใ‚…ใ†","ใŒใฃใ—ใ‚…ใ†ใ“ใ","ใ‚ใ‚ใ‚Šใ‹ใŒใฃใ—ใ‚…ใ†ใ“ใ","ใŒใฃใ—ใ‚…ใ†ใ“ใใ‚Šใ‚‡ใ†ใ‚†ใ†ใ—ใ‚‡ใ†ใ‚Šใจใ†"], "๐Ÿ‡บ๐Ÿ‡พ": ["ใ†ใ‚‹ใใ‚ใ„ใ“ใฃใ","ใ“ใฃใ","ใ†ใ‚‹ใใ‚ใ„"], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7430550b6c..2a446cbdfb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,8 +99,8 @@ importers: specifier: 3.826.0 version: 3.826.0(@aws-sdk/client-s3@3.826.0) '@discordapp/twemoji': - specifier: 15.1.0 - version: 15.1.0 + specifier: 16.0.1 + version: 16.0.1 '@fastify/accepts': specifier: 5.0.2 version: 5.0.2 @@ -168,8 +168,8 @@ importers: specifier: 1.12.0 version: 1.12.0 '@twemoji/parser': - specifier: 15.1.1 - version: 15.1.1 + specifier: 16.0.0 + version: 16.0.0 '@types/redis-info': specifier: 3.0.3 version: 3.0.3 @@ -294,8 +294,8 @@ importers: specifier: 0.51.0 version: 0.51.0 mfm-js: - specifier: 0.24.0 - version: 0.24.0 + specifier: 0.25.0 + version: 0.25.0 microformats-parser: specifier: 2.0.3 version: 2.0.3 @@ -707,8 +707,8 @@ importers: specifier: 1.1.0 version: 1.1.0 '@discordapp/twemoji': - specifier: 15.1.0 - version: 15.1.0 + specifier: 16.0.1 + version: 16.0.1 '@github/webauthn-json': specifier: 2.1.1 version: 2.1.1 @@ -734,8 +734,8 @@ importers: specifier: 0.19.0 version: 0.19.0 '@twemoji/parser': - specifier: 15.1.1 - version: 15.1.1 + specifier: 16.0.0 + version: 16.0.0 '@vitejs/plugin-vue': specifier: 5.2.4 version: 5.2.4(vite@6.3.5(@types/node@22.16.4)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3)) @@ -818,8 +818,8 @@ importers: specifier: 0.20.0 version: 0.20.0 mfm-js: - specifier: 0.24.0 - version: 0.24.0 + specifier: 0.25.0 + version: 0.25.0 misskey-bubble-game: specifier: workspace:* version: link:../misskey-bubble-game @@ -1080,8 +1080,8 @@ importers: packages/frontend-embed: dependencies: '@discordapp/twemoji': - specifier: 15.1.0 - version: 15.1.0 + specifier: 16.0.1 + version: 16.0.1 '@rollup/plugin-json': specifier: 6.1.0 version: 6.1.0(rollup@4.45.1) @@ -1092,8 +1092,8 @@ importers: specifier: 5.2.0 version: 5.2.0(rollup@4.45.1) '@twemoji/parser': - specifier: 15.1.1 - version: 15.1.1 + specifier: 16.0.0 + version: 16.0.0 '@vitejs/plugin-vue': specifier: 5.2.4 version: 5.2.4(vite@6.3.5(@types/node@22.16.4)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3)) @@ -1119,8 +1119,8 @@ importers: specifier: 2.2.3 version: 2.2.3 mfm-js: - specifier: 0.24.0 - version: 0.24.0 + specifier: 0.25.0 + version: 0.25.0 misskey-js: specifier: workspace:* version: link:../misskey-js @@ -1964,8 +1964,8 @@ packages: resolution: {integrity: sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==} engines: {node: '>=14.0'} - '@discordapp/twemoji@15.1.0': - resolution: {integrity: sha512-QdpV4ifTONAXvDjRrMohausZeGrQ1ac/Ox6togUh6Xl3XKJ/KAaMMuAEi0qsb0wDwoVTSZBll5Y6+N3hB2ktBw==} + '@discordapp/twemoji@16.0.1': + resolution: {integrity: sha512-figLiBWzjS5cyrAjLaGjM8AAaowO3qvK8rg5bA2dElB4qsaPMvBVlFDMO2d3x+nC1igt7kgWH4dvNmvvUHUF8w==} '@emnapi/runtime@1.4.3': resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} @@ -4270,14 +4270,8 @@ packages: resolution: {integrity: sha512-oKarNCN1QUhG148M88mtZdOlBZWWGcInquef+U8QL7gwJkRuNo5WS45Fjsd+3hM9cDJWGpqSZ4Oo097KDx4IWA==} engines: {node: '>=14.17'} - '@twemoji/parser@15.0.0': - resolution: {integrity: sha512-lh9515BNsvKSNvyUqbj5yFu83iIDQ77SwVcsN/SnEGawczhsKU6qWuogewN1GweTi5Imo5ToQ9s+nNTf97IXvg==} - - '@twemoji/parser@15.1.0': - resolution: {integrity: sha512-3HTiSxPvkWUJ4kZeCvwyKlIwkpTUfBOk6igpBBRQni58ceQMv5YK4smkc8vX/eqOlMMNER/9qobv+Q6Q8LVrqA==} - - '@twemoji/parser@15.1.1': - resolution: {integrity: sha512-CChRzIu6ngkCJOmURBlYEdX5DZSu+bBTtqR60XjBkFrmvplKW7OQsea+i8XwF4bLVlUXBO7ZmHhRPDzfQyLwwg==} + '@twemoji/parser@16.0.0': + resolution: {integrity: sha512-jmuIjkp3OIaEemwMy3sArBwZSuZkRqmueGwRe2Zk4cFzbUJISFBJSZLDUUBNIgq3c+nY49ideYN2OiII6JUqwA==} '@types/accepts@1.3.7': resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} @@ -7986,8 +7980,8 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - mfm-js@0.24.0: - resolution: {integrity: sha512-6m8N0ElH9/4CA1izhVqmxTfLj5Z9RspdqM/lMew4xU/UTgm4Pf//VpDunpasxbRFjeJSVW+zoVwL4ZPfPtfiQg==} + mfm-js@0.25.0: + resolution: {integrity: sha512-JoK5TOtswXIvZSZ9hUEL+ZkcNV4onu/DtkaKeXK846+sJBBF8DvxYmPutt7nPaRDsUMmJGr64PNVMFpMGdk3hw==} microformats-parser@2.0.3: resolution: {integrity: sha512-MhZoQXkvWrvI3iu1IJ7Zk2VglphPt5P482E5rXvHalvtxhuS/QioMB8gEr8omt7Fd0K/qQEAbTmabvNpCbi3EQ==} @@ -10717,8 +10711,8 @@ packages: vue-component-type-helpers@2.2.12: resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} - vue-component-type-helpers@3.0.3: - resolution: {integrity: sha512-koiBu7lO8e6w/UlbZAAIW11qcFQocYIl7Nh/SVwGZ804ej5KrncU32bRxi2zfU2Kyf6HWuk1CeeVP2rhIL+vyQ==} + vue-component-type-helpers@3.0.4: + resolution: {integrity: sha512-WtR3kPk8vqKYfCK/HGyT47lK/T3FaVyWxaCNuosaHYE8h9/k0lYRZ/PI/+T/z2wP+uuNKmL6z30rOcBboOu/YA==} vue-demi@0.14.7: resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} @@ -11893,9 +11887,9 @@ snapshots: transitivePeerDependencies: - web-streams-polyfill - '@discordapp/twemoji@15.1.0': + '@discordapp/twemoji@16.0.1': dependencies: - '@twemoji/parser': 15.1.0 + '@twemoji/parser': 16.0.0 fs-extra: 8.1.0 jsonfile: 5.0.0 universalify: 0.1.2 @@ -14330,7 +14324,7 @@ snapshots: ts-dedent: 2.2.0 type-fest: 2.19.0 vue: 3.5.17(typescript@5.8.3) - vue-component-type-helpers: 3.0.3 + vue-component-type-helpers: 3.0.4 '@stylistic/eslint-plugin@2.13.0(eslint@9.31.0)(typescript@5.8.3)': dependencies: @@ -14591,11 +14585,7 @@ snapshots: '@tsd/typescript@5.8.3': {} - '@twemoji/parser@15.0.0': {} - - '@twemoji/parser@15.1.0': {} - - '@twemoji/parser@15.1.1': {} + '@twemoji/parser@16.0.0': {} '@types/accepts@1.3.7': dependencies: @@ -19284,9 +19274,9 @@ snapshots: methods@1.1.2: {} - mfm-js@0.24.0: + mfm-js@0.25.0: dependencies: - '@twemoji/parser': 15.0.0 + '@twemoji/parser': 16.0.0 microformats-parser@2.0.3: dependencies: @@ -22265,7 +22255,7 @@ snapshots: vue-component-type-helpers@2.2.12: {} - vue-component-type-helpers@3.0.3: {} + vue-component-type-helpers@3.0.4: {} vue-demi@0.14.7(vue@3.5.17(typescript@5.8.3)): dependencies: From a1e170e065f39c6373e6546450834852187d3cf1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 1 Aug 2025 13:35:41 +0000 Subject: [PATCH 02/29] Bump version to 2025.8.0-alpha.3 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 156bc69225..1ad8bd9134 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.8.0-alpha.2", + "version": "2025.8.0-alpha.3", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 76dd47a27e..8ba836942f 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.8.0-alpha.2", + "version": "2025.8.0-alpha.3", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 57e0f1b4ef1b4f385cd941145dbbc380df4ce19c Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 2 Aug 2025 11:03:41 +0900 Subject: [PATCH 03/29] fix e2e --- packages/backend/test-federation/test/utils.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/backend/test-federation/test/utils.ts b/packages/backend/test-federation/test/utils.ts index 2779eb7e81..b5103e00be 100644 --- a/packages/backend/test-federation/test/utils.ts +++ b/packages/backend/test-federation/test/utils.ts @@ -79,6 +79,9 @@ async function createAdmin(host: Host): Promise { if (err.info.e.message === 'access denied') return undefined; From 844935488788f0969825748f1a280dd935106342 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 2 Aug 2025 11:47:24 +0900 Subject: [PATCH 04/29] fix e2e --- packages/backend/test/e2e/endpoints.ts | 1 + packages/backend/test/e2e/fetch-resource.ts | 3 ++- packages/backend/test/e2e/ff-visibility.ts | 1 + packages/backend/test/e2e/well-known.ts | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/backend/test/e2e/endpoints.ts b/packages/backend/test/e2e/endpoints.ts index b52162a687..469f19e2b9 100644 --- a/packages/backend/test/e2e/endpoints.ts +++ b/packages/backend/test/e2e/endpoints.ts @@ -24,6 +24,7 @@ describe('Endpoints', () => { bob = await signup({ username: 'bob' }); carol = await signup({ username: 'carol' }); dave = await signup({ username: 'dave' }); + await api('admin/update-meta', { federation: 'all' }, alice as misskey.entities.SignupResponse); }, 1000 * 60 * 2); describe('signup', () => { diff --git a/packages/backend/test/e2e/fetch-resource.ts b/packages/backend/test/e2e/fetch-resource.ts index 740295bda8..bef98893c6 100644 --- a/packages/backend/test/e2e/fetch-resource.ts +++ b/packages/backend/test/e2e/fetch-resource.ts @@ -6,7 +6,7 @@ process.env.NODE_ENV = 'test'; import * as assert from 'assert'; -import { channel, clip, galleryPost, page, play, post, signup, simpleGet, uploadFile } from '../utils.js'; +import { api, channel, clip, galleryPost, page, play, post, signup, simpleGet, uploadFile } from '../utils.js'; import type { SimpleGetResponse } from '../utils.js'; import type * as misskey from 'misskey-js'; @@ -78,6 +78,7 @@ describe('Webใƒชใ‚ฝใƒผใ‚น', () => { beforeAll(async () => { alice = await signup({ username: 'alice' }); + await api('admin/update-meta', { federation: 'all' }, alice as misskey.entities.SignupResponse); aliceUploadedFile = (await uploadFile(alice)).body; alicesPost = await post(alice, { text: 'test', diff --git a/packages/backend/test/e2e/ff-visibility.ts b/packages/backend/test/e2e/ff-visibility.ts index 5d0c70a3c2..02582ae815 100644 --- a/packages/backend/test/e2e/ff-visibility.ts +++ b/packages/backend/test/e2e/ff-visibility.ts @@ -16,6 +16,7 @@ describe('FF visibility', () => { beforeAll(async () => { alice = await signup({ username: 'alice' }); bob = await signup({ username: 'bob' }); + await api('admin/update-meta', { federation: 'all' }, alice as misskey.entities.SignupResponse); }, 1000 * 60 * 2); test('followingVisibility, followersVisibility ใŒใจใ‚‚ใซ public ใชใƒฆใƒผใ‚ถใƒผใฎใƒ•ใ‚ฉใƒญใƒผ/ใƒ•ใ‚ฉใƒญใƒฏใƒผใ‚’่ชฐใงใ‚‚่ฆ‹ใ‚Œใ‚‹', async () => { diff --git a/packages/backend/test/e2e/well-known.ts b/packages/backend/test/e2e/well-known.ts index bdb298dfe4..538a990a4e 100644 --- a/packages/backend/test/e2e/well-known.ts +++ b/packages/backend/test/e2e/well-known.ts @@ -6,7 +6,7 @@ process.env.NODE_ENV = 'test'; import * as assert from 'assert'; -import { host, origin, relativeFetch, signup } from '../utils.js'; +import { api, host, origin, relativeFetch, signup } from '../utils.js'; import type * as misskey from 'misskey-js'; describe('.well-known', () => { @@ -14,6 +14,7 @@ describe('.well-known', () => { beforeAll(async () => { alice = await signup({ username: 'alice' }); + await api('admin/update-meta', { federation: 'all' }, alice as misskey.entities.SignupResponse); }, 1000 * 60 * 2); test('nodeinfo', async () => { From fc244067e059bf88c69ee241e1bfc218517c917b Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:10:51 +0900 Subject: [PATCH 05/29] =?UTF-8?q?enhnace(frontend):=20=E3=83=AA=E3=83=AD?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=AE=E3=82=B5=E3=82=B8=E3=82=A7=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0?= =?UTF-8?q?=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=8F=E3=83=90=E3=83=8A=E3=83=BC?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/pages/settings/deck.vue | 6 +- .../src/pages/settings/mute-block.vue | 6 +- .../frontend/src/pages/settings/navbar.vue | 1 - .../frontend/src/pages/settings/other.vue | 6 +- .../src/pages/settings/preferences.vue | 6 +- .../src/ui/_common_/PreferenceRestore.vue | 4 -- .../src/ui/_common_/ReloadSuggest.vue | 71 +++++++++++++++++++ packages/frontend/src/ui/deck.vue | 8 ++- packages/frontend/src/ui/universal.vue | 3 + packages/frontend/src/utility/reload-ask.ts | 40 ----------- .../frontend/src/utility/reload-suggest.ts | 12 ++++ 11 files changed, 105 insertions(+), 58 deletions(-) create mode 100644 packages/frontend/src/ui/_common_/ReloadSuggest.vue delete mode 100644 packages/frontend/src/utility/reload-ask.ts create mode 100644 packages/frontend/src/utility/reload-suggest.ts diff --git a/packages/frontend/src/pages/settings/deck.vue b/packages/frontend/src/pages/settings/deck.vue index ae882d1ee2..7a19b0495b 100644 --- a/packages/frontend/src/pages/settings/deck.vue +++ b/packages/frontend/src/pages/settings/deck.vue @@ -97,8 +97,8 @@ import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import { prefer } from '@/preferences.js'; import MkPreferenceContainer from '@/components/MkPreferenceContainer.vue'; -import { reloadAsk } from '@/utility/reload-ask.js'; import { selectFile } from '@/utility/drive.js'; +import { suggestReload } from '@/utility/reload-suggest.js'; const navWindow = prefer.model('deck.navWindow'); const useSimpleUiForNonRootPages = prefer.model('deck.useSimpleUiForNonRootPages'); @@ -109,8 +109,8 @@ const menuPosition = prefer.model('deck.menuPosition'); const navbarPosition = prefer.model('deck.navbarPosition'); const wallpaper = prefer.model('deck.wallpaper'); -watch(wallpaper, async () => { - await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); +watch(wallpaper, () => { + suggestReload(); }); function setWallpaper(ev: MouseEvent) { diff --git a/packages/frontend/src/pages/settings/mute-block.vue b/packages/frontend/src/pages/settings/mute-block.vue index 6ca313da81..57aa30226b 100644 --- a/packages/frontend/src/pages/settings/mute-block.vue +++ b/packages/frontend/src/pages/settings/mute-block.vue @@ -189,10 +189,10 @@ import { ensureSignin } from '@/i.js'; import MkInfo from '@/components/MkInfo.vue'; import MkFolder from '@/components/MkFolder.vue'; import MkSwitch from '@/components/MkSwitch.vue'; -import { reloadAsk } from '@/utility/reload-ask.js'; import { prefer } from '@/preferences.js'; import MkFeatureBanner from '@/components/MkFeatureBanner.vue'; import { Paginator } from '@/utility/paginator.js'; +import { suggestReload } from '@/utility/reload-suggest.js'; const $i = ensureSignin(); @@ -216,8 +216,8 @@ const showSoftWordMutedWord = prefer.model('showSoftWordMutedWord'); watch([ showSoftWordMutedWord, -], async () => { - await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); +], () => { + suggestReload(); }); async function unrenoteMute(user, ev) { diff --git a/packages/frontend/src/pages/settings/navbar.vue b/packages/frontend/src/pages/settings/navbar.vue index e57195c8a2..09c1199d0c 100644 --- a/packages/frontend/src/pages/settings/navbar.vue +++ b/packages/frontend/src/pages/settings/navbar.vue @@ -64,7 +64,6 @@ import MkPreferenceContainer from '@/components/MkPreferenceContainer.vue'; import * as os from '@/os.js'; import { navbarItemDef } from '@/navbar.js'; import { store } from '@/store.js'; -import { reloadAsk } from '@/utility/reload-ask.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import { prefer } from '@/preferences.js'; diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue index ac432e9f32..e0fb9b86bb 100644 --- a/packages/frontend/src/pages/settings/other.vue +++ b/packages/frontend/src/pages/settings/other.vue @@ -155,13 +155,13 @@ import { misskeyApi } from '@/utility/misskey-api.js'; import { ensureSignin } from '@/i.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; -import { reloadAsk } from '@/utility/reload-ask.js'; import FormSection from '@/components/form/section.vue'; import { prefer } from '@/preferences.js'; import MkRolePreview from '@/components/MkRolePreview.vue'; import { signout } from '@/signout.js'; import { migrateOldSettings } from '@/pref-migrate.js'; import { hideAllTips as _hideAllTips, resetAllTips as _resetAllTips } from '@/tips.js'; +import { suggestReload } from '@/utility/reload-suggest.js'; const $i = ensureSignin(); @@ -172,8 +172,8 @@ const devMode = prefer.model('devMode'); const stackingRouterView = prefer.model('experimental.stackingRouterView'); const enableFolderPageView = prefer.model('experimental.enableFolderPageView'); -watch(skipNoteRender, async () => { - await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); +watch(skipNoteRender, () => { + suggestReload(); }); async function deleteAccount() { diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 0e400778aa..04f9b0512b 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -795,7 +795,6 @@ import MkInfo from '@/components/MkInfo.vue'; import { store } from '@/store.js'; import * as os from '@/os.js'; import { misskeyApi } from '@/utility/misskey-api.js'; -import { reloadAsk } from '@/utility/reload-ask.js'; import { i18n } from '@/i18n.js'; import { definePage } from '@/page.js'; import { miLocalStorage } from '@/local-storage.js'; @@ -807,6 +806,7 @@ import { claimAchievement } from '@/utility/achievements.js'; import { instance } from '@/instance.js'; import { ensureSignin } from '@/i.js'; import { genId } from '@/utility/id.js'; +import { suggestReload } from '@/utility/reload-suggest.js'; const $i = ensureSignin(); @@ -928,8 +928,8 @@ watch([ enablePullToRefresh, reduceAnimation, showAvailableReactionsFirstInNote, -], async () => { - await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); +], () => { + suggestReload(); }); const emojiIndexLangs = ['en-US', 'ja-JP', 'ja-JP_hira'] as const; diff --git a/packages/frontend/src/ui/_common_/PreferenceRestore.vue b/packages/frontend/src/ui/_common_/PreferenceRestore.vue index 5fd9f5e44b..b9d54cddc6 100644 --- a/packages/frontend/src/ui/_common_/PreferenceRestore.vue +++ b/packages/frontend/src/ui/_common_/PreferenceRestore.vue @@ -48,10 +48,6 @@ function skip() { .title { padding: 0 10px; font-weight: bold; - - &:empty { - display: none; - } } .body { diff --git a/packages/frontend/src/ui/_common_/ReloadSuggest.vue b/packages/frontend/src/ui/_common_/ReloadSuggest.vue new file mode 100644 index 0000000000..8fcfe0b12f --- /dev/null +++ b/packages/frontend/src/ui/_common_/ReloadSuggest.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue index d2b163a38f..7cd54f01ef 100644 --- a/packages/frontend/src/ui/deck.vue +++ b/packages/frontend/src/ui/deck.vue @@ -13,6 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
+ +
@@ -81,12 +83,14 @@ SPDX-License-Identifier: AGPL-3.0-only + + diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts index 19766e8575..6b1b80695f 100644 --- a/packages/frontend/src/components/index.ts +++ b/packages/frontend/src/components/index.ts @@ -31,7 +31,7 @@ import PageWithHeader from './global/PageWithHeader.vue'; import PageWithAnimBg from './global/PageWithAnimBg.vue'; import SearchMarker from './global/SearchMarker.vue'; import SearchLabel from './global/SearchLabel.vue'; -import SearchKeyword from './global/SearchKeyword.vue'; +import SearchText from './global/SearchText.vue'; import SearchIcon from './global/SearchIcon.vue'; import type { App } from 'vue'; @@ -71,7 +71,7 @@ export const components = { PageWithAnimBg: PageWithAnimBg, SearchMarker: SearchMarker, SearchLabel: SearchLabel, - SearchKeyword: SearchKeyword, + SearchText: SearchText, SearchIcon: SearchIcon, }; @@ -105,7 +105,7 @@ declare module '@vue/runtime-core' { PageWithAnimBg: typeof PageWithAnimBg; SearchMarker: typeof SearchMarker; SearchLabel: typeof SearchLabel; - SearchKeyword: typeof SearchKeyword; + SearchText: typeof SearchText; SearchIcon: typeof SearchIcon; } } diff --git a/packages/frontend/src/pages/admin/bot-protection.vue b/packages/frontend/src/pages/admin/bot-protection.vue index 6c580f87f1..bd919146f8 100644 --- a/packages/frontend/src/pages/admin/bot-protection.vue +++ b/packages/frontend/src/pages/admin/bot-protection.vue @@ -4,158 +4,161 @@ SPDX-License-Identifier: AGPL-3.0-only --> diff --git a/packages/frontend/src/components/global/PageWithHeader.vue b/packages/frontend/src/components/global/PageWithHeader.vue index d90afb652e..d368dee88a 100644 --- a/packages/frontend/src/components/global/PageWithHeader.vue +++ b/packages/frontend/src/components/global/PageWithHeader.vue @@ -6,14 +6,22 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -26,6 +34,7 @@ import { useScrollPositionKeeper } from '@/composables/use-scroll-position-keepe import MkSwiper from '@/components/MkSwiper.vue'; import { useRouter } from '@/router.js'; import { prefer } from '@/preferences.js'; +import MkTabs from '@/components/MkTabs.vue'; const props = withDefaults(defineProps { return rest; }); +const pageHeaderPropsWithoutTabs = computed(() => { + const { reversed, tabs, ...rest } = props; + return rest; +}); + const tab = defineModel('tab'); const rootEl = useTemplateRef('rootEl'); @@ -68,4 +82,11 @@ defineExpose({ .body, .swiper { min-height: calc(100cqh - (var(--MI-stickyTop, 0px) + var(--MI-stickyBottom, 0px))); } + +.footerTabs { + background: color(from var(--MI_THEME-pageHeaderBg) srgb r g b / 0.75); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); + border-top: solid 0.5px var(--MI_THEME-divider); +} diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index 7ee5f151fa..ed4f36c0e5 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -477,6 +477,14 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + + + + + @@ -866,6 +874,7 @@ const animatedMfm = prefer.model('animatedMfm'); const disableShowingAnimatedImages = prefer.model('disableShowingAnimatedImages'); const keepScreenOn = prefer.model('keepScreenOn'); const enableHorizontalSwipe = prefer.model('enableHorizontalSwipe'); +const showPageTabBarBottom = prefer.model('showPageTabBarBottom'); const enablePullToRefresh = prefer.model('enablePullToRefresh'); const useNativeUiForVideoAudioPlayer = prefer.model('useNativeUiForVideoAudioPlayer'); const contextMenu = prefer.model('contextMenu'); @@ -925,6 +934,7 @@ watch([ useSystemFont, makeEveryTextElementsSelectable, enableHorizontalSwipe, + showPageTabBarBottom, enablePullToRefresh, reduceAnimation, showAvailableReactionsFirstInNote, diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index a83a3153d0..f6370c8c78 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -381,6 +381,9 @@ export const PREF_DEF = definePreferences({ showAvailableReactionsFirstInNote: { default: false, }, + showPageTabBarBottom: { + default: false, + }, plugins: { default: [] as Plugin[], mergeStrategy: (a, b) => { diff --git a/packages/frontend/src/ui/_common_/mobile-footer-menu.vue b/packages/frontend/src/ui/_common_/mobile-footer-menu.vue index e2993230be..7ab8a45f51 100644 --- a/packages/frontend/src/ui/_common_/mobile-footer-menu.vue +++ b/packages/frontend/src/ui/_common_/mobile-footer-menu.vue @@ -86,7 +86,7 @@ watch(rootEl, () => { box-sizing: border-box; background: var(--MI_THEME-navBg); color: var(--MI_THEME-navFg); - box-shadow: 0px 0px 6px 6px #0000000f; + border-top: solid 0.5px var(--MI_THEME-divider); } .item { From d979cd2c07d24270d03be29f8f1c5b6a3351798d Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:15:02 +0900 Subject: [PATCH 21/29] =?UTF-8?q?fix(frontend):=20=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E3=81=A7=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=81=AE=E3=82=A2=E3=83=83=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=8C=E4=B8=AD=E6=AD=A2=E3=81=BE=E3=81=9F?= =?UTF-8?q?=E3=81=AF=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E9=9A=9B=E3=81=AE?= =?UTF-8?q?=E3=83=8F=E3=83=B3=E3=83=89=E3=83=AA=E3=83=B3=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + packages/frontend/src/components/MkPostForm.vue | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8fcb60a39..b0b23ed891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Feat: ใƒšใƒผใ‚ธใฎใ‚ฟใƒ–ใƒใƒผใ‚’ไธ‹้ƒจใซ่กจ็คบใงใใ‚‹ใ‚ˆใ†ใซ - Enhance: ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ‘ใƒใƒซใ‚’ๆคœ็ดขใงใใ‚‹ใ‚ˆใ†ใซ - Enhance: ใƒˆใƒซใ‚ณ่ชž (tr-TR) ใซๅฏพๅฟœ +- Fix: ๆŠ•็จฟใƒ•ใ‚ฉใƒผใƒ ใงใƒ•ใ‚กใ‚คใƒซใฎใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใŒไธญๆญขใพใŸใฏๅคฑๆ•—ใ—ใŸ้š›ใฎใƒใƒณใƒ‰ใƒชใƒณใ‚ฐใ‚’ไฟฎๆญฃ - Fix: ไธ€้ƒจใฎ่จญๅฎšๆคœ็ดข็ตๆžœใŒๅญ˜ๅœจใ—ใชใ„ใƒ‘ใ‚นใซใชใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1171) - Fix: ใƒ†ใƒผใƒžใ‚จใƒ‡ใ‚ฃใ‚ฟใŒๅ‹•ไฝœใ—ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index 174a73e0fd..f1fa870991 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -907,6 +907,11 @@ async function post(ev?: MouseEvent) { if (uploader.items.value.some(x => x.uploaded == null)) { await uploadFiles(); + + // ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ๅคฑๆ•—ใ—ใŸใ‚‚ใฎใŒใ‚ใฃใŸใ‚‰ไธญๆญข + if (uploader.items.value.some(x => x.uploaded == null)) { + return; + } } let postData = { From b4a0fdfaa14ea67e78be5ba1488ccbfd6edaaf73 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:35:42 +0900 Subject: [PATCH 22/29] fix type errors --- packages/frontend/src/pages/timeline.vue | 25 ++++++------------------ 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index b783f7ee0b..b8c3ebadd9 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -107,7 +107,7 @@ const withSensitive = computed({ async function chooseList(ev: MouseEvent): Promise { const lists = await userListsCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...lists.map(list => ({ type: 'link' as const, text: list.name, @@ -121,12 +121,12 @@ async function chooseList(ev: MouseEvent): Promise { to: '/my/lists', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } async function chooseAntenna(ev: MouseEvent): Promise { const antennas = await antennasCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...antennas.map(antenna => ({ type: 'link' as const, text: antenna.name, @@ -141,12 +141,12 @@ async function chooseAntenna(ev: MouseEvent): Promise { to: '/my/antennas', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } async function chooseChannel(ev: MouseEvent): Promise { const channels = await favoritedChannelsCache.fetch(); - const items: MenuItem[] = [ + const items: (MenuItem | undefined)[] = [ ...channels.map(channel => { const lastReadedAt = miLocalStorage.getItemAsJson(`channelLastReadedAt:${channel.id}`) ?? null; const hasUnreadNote = (lastReadedAt && channel.lastNotedAt) ? Date.parse(channel.lastNotedAt) > lastReadedAt : !!(!lastReadedAt && channel.lastNotedAt); @@ -166,7 +166,7 @@ async function chooseChannel(ev: MouseEvent): Promise { to: '/channels', }, ]; - os.popupMenu(items, ev.currentTarget ?? ev.target); + os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target); } function saveSrc(newSrc: TimelinePageSrc): void { @@ -190,19 +190,6 @@ function saveTlFilter(key: keyof typeof store.s.tl.filter, newValue: boolean) { } } -async function timetravel(): Promise { - const { canceled, result: date } = await os.inputDate({ - title: i18n.ts.date, - }); - if (canceled) return; - - tlComponent.value.timetravel(date); -} - -function focus(): void { - tlComponent.value.focus(); -} - function switchTlIfNeeded() { if (isBasicTimeline(src.value) && !isAvailableBasicTimeline(src.value)) { src.value = availableBasicTimelines()[0]; From 9931fff35ba13f1ed5d7d949d29e0da5e29a050f Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:44:59 +0900 Subject: [PATCH 23/29] =?UTF-8?q?=F0=9F=8E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/global/MkPageHeader.vue | 3 ++- packages/frontend/src/pages/timeline.vue | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue index 542c3d8d12..2f4de840db 100644 --- a/packages/frontend/src/components/global/MkPageHeader.vue +++ b/packages/frontend/src/components/global/MkPageHeader.vue @@ -52,6 +52,7 @@ export type PageHeaderProps = { actions?: PageHeaderItem[] | null; thin?: boolean; hideTitle?: boolean; + canOmitTitle?: boolean; displayMyAvatar?: boolean; }; @@ -77,7 +78,7 @@ const emit = defineEmits<{ const injectedPageMetadata = inject(DI.pageMetadata, ref(null)); const pageMetadata = computed(() => props.overridePageMetadata ?? injectedPageMetadata.value); -const hideTitle = computed(() => inject('shouldOmitHeaderTitle', false) || props.hideTitle); +const hideTitle = computed(() => inject('shouldOmitHeaderTitle', false) || props.hideTitle || (props.canOmitTitle && props.tabs.length > 0)); const thin_ = props.thin || inject('shouldHeaderThin', false); const el = useTemplateRef('el'); diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index b8c3ebadd9..3fe48b4d72 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only -->