diff --git a/deno.json b/deno.json index 9f102a7..8766abe 100644 --- a/deno.json +++ b/deno.json @@ -13,6 +13,7 @@ "test": { "exclude": ["tests/data/"] }, + "compilerOptions": {}, "fmt": { "include": ["**/*.ts"], "options": { diff --git a/models/event.ts b/models/event.ts index a11827a..7eefbd8 100644 --- a/models/event.ts +++ b/models/event.ts @@ -1,9 +1,7 @@ import { by_character, by_lurid } from '@andyburke/fsdb/organizers'; import { FSDB_COLLECTION } from '@andyburke/fsdb'; import { FSDB_INDEXER_SYMLINKS } from '@andyburke/fsdb/indexers'; -import { EMOJI_MAP as JS_EMOJI_MAP } from '../public/js/emojis/en.js'; - -const EMOJI_MAP: Record = JS_EMOJI_MAP; +import { EMOJIS } from '../public/js/emojis/en.ts'; /** * @typedef {object} TIMESTAMPS @@ -124,7 +122,7 @@ export function VALIDATE_EVENT(event: EVENT) { cause: 'reaction_must_be_an_emoji', message: 'A reaction event must have a `data.reaction` that is an emoji.' }); - } else if (typeof EMOJI_MAP[event.data.reaction] === 'undefined') { + } else if (typeof EMOJIS.MAP[event.data?.reaction] === 'undefined') { errors.push({ cause: 'reaction_must_be_an_emoji', message: 'A reaction event must have a `data.reaction` that is an emoji.' diff --git a/public/api/topics/:topic_id/events/index.ts b/public/api/topics/:topic_id/events/index.ts index 68748c0..58d9fea 100644 --- a/public/api/topics/:topic_id/events/index.ts +++ b/public/api/topics/:topic_id/events/index.ts @@ -73,7 +73,7 @@ export async function GET(request: Request, meta: Record): Promise< return false; } - if (meta.query.type && event_type !== meta.query.type) { + if (meta.query.type && !meta.query.type.split(',').includes(event_type)) { return false; } diff --git a/public/index.html b/public/index.html index fe47560..c3f9a24 100644 --- a/public/index.html +++ b/public/index.html @@ -11,9 +11,12 @@ + + - + + @@ -25,18 +28,16 @@ - - - + - - - + + + diff --git a/public/js/debounce.js b/public/js/debounce.js new file mode 100644 index 0000000..da7013e --- /dev/null +++ b/public/js/debounce.js @@ -0,0 +1,7 @@ +function debounce(fn, delay = 1_000) { + let timer = null; + return (...args) => { + clearTimeout(timer); + timer = setTimeout(() => fn(...args), delay); + }; +} diff --git a/public/js/emojis/en.js b/public/js/emojis/en.js index 9ca2012..c82ce65 100644 --- a/public/js/emojis/en.js +++ b/public/js/emojis/en.js @@ -1,4 +1,4 @@ -export const EMOJI_MAP = { +const EMOJI_MAP = { "โ˜”": ["umbrella with rain drops"], "โ˜•": ["coffee"], "โ™ˆ": ["aries"], @@ -38,264 +38,264 @@ export const EMOJI_MAP = { "๐Ÿ†˜": ["sos"], "๐Ÿ†™": ["up"], "๐Ÿ†š": ["vs"], - "๐Ÿ‡ฆ๐Ÿ‡จ": ["flag: ac"], - "๐Ÿ‡ฆ๐Ÿ‡ฉ": ["flag: ad"], - "๐Ÿ‡ฆ๐Ÿ‡ช": ["flag: ae"], - "๐Ÿ‡ฆ๐Ÿ‡ซ": ["flag: af"], - "๐Ÿ‡ฆ๐Ÿ‡ฌ": ["flag: ag"], - "๐Ÿ‡ฆ๐Ÿ‡ฎ": ["flag: ai"], - "๐Ÿ‡ฆ๐Ÿ‡ฑ": ["flag: al"], - "๐Ÿ‡ฆ๐Ÿ‡ฒ": ["flag: am"], - "๐Ÿ‡ฆ๐Ÿ‡ด": ["flag: ao"], - "๐Ÿ‡ฆ๐Ÿ‡ถ": ["flag: aq"], - "๐Ÿ‡ฆ๐Ÿ‡ท": ["flag: ar"], - "๐Ÿ‡ฆ๐Ÿ‡ธ": ["flag: as"], - "๐Ÿ‡ฆ๐Ÿ‡น": ["flag: at"], - "๐Ÿ‡ฆ๐Ÿ‡บ": ["flag: au"], - "๐Ÿ‡ฆ๐Ÿ‡ผ": ["flag: aw"], - "๐Ÿ‡ฆ๐Ÿ‡ฝ": ["flag: ax"], - "๐Ÿ‡ฆ๐Ÿ‡ฟ": ["flag: az"], - "๐Ÿ‡ง๐Ÿ‡ฆ": ["flag: ba"], - "๐Ÿ‡ง๐Ÿ‡ง": ["flag: bb"], - "๐Ÿ‡ง๐Ÿ‡ฉ": ["flag: bd"], - "๐Ÿ‡ง๐Ÿ‡ช": ["flag: be"], - "๐Ÿ‡ง๐Ÿ‡ซ": ["flag: bf"], - "๐Ÿ‡ง๐Ÿ‡ฌ": ["flag: bg"], - "๐Ÿ‡ง๐Ÿ‡ญ": ["flag: bh"], - "๐Ÿ‡ง๐Ÿ‡ฎ": ["flag: bi"], - "๐Ÿ‡ง๐Ÿ‡ฏ": ["flag: bj"], - "๐Ÿ‡ง๐Ÿ‡ฑ": ["flag: bl"], - "๐Ÿ‡ง๐Ÿ‡ฒ": ["flag: bm"], - "๐Ÿ‡ง๐Ÿ‡ณ": ["flag: bn"], - "๐Ÿ‡ง๐Ÿ‡ด": ["flag: bo"], - "๐Ÿ‡ง๐Ÿ‡ถ": ["flag: bq"], - "๐Ÿ‡ง๐Ÿ‡ท": ["flag: br"], - "๐Ÿ‡ง๐Ÿ‡ธ": ["flag: bs"], - "๐Ÿ‡ง๐Ÿ‡น": ["flag: bt"], - "๐Ÿ‡ง๐Ÿ‡ป": ["flag: bv"], - "๐Ÿ‡ง๐Ÿ‡ผ": ["flag: bw"], - "๐Ÿ‡ง๐Ÿ‡พ": ["flag: by"], - "๐Ÿ‡ง๐Ÿ‡ฟ": ["flag: bz"], - "๐Ÿ‡จ๐Ÿ‡ฆ": ["flag: ca"], - "๐Ÿ‡จ๐Ÿ‡จ": ["flag: cc"], - "๐Ÿ‡จ๐Ÿ‡ฉ": ["flag: cd"], - "๐Ÿ‡จ๐Ÿ‡ซ": ["flag: cf"], - "๐Ÿ‡จ๐Ÿ‡ฌ": ["flag: cg"], - "๐Ÿ‡จ๐Ÿ‡ญ": ["flag: ch"], - "๐Ÿ‡จ๐Ÿ‡ฎ": ["flag: ci"], - "๐Ÿ‡จ๐Ÿ‡ฐ": ["flag: ck"], - "๐Ÿ‡จ๐Ÿ‡ฑ": ["flag: cl"], - "๐Ÿ‡จ๐Ÿ‡ฒ": ["flag: cm"], - "๐Ÿ‡จ๐Ÿ‡ณ": ["flag: cn"], - "๐Ÿ‡จ๐Ÿ‡ด": ["flag: co"], - "๐Ÿ‡จ๐Ÿ‡ต": ["flag: cp"], - "๐Ÿ‡จ๐Ÿ‡ท": ["flag: cr"], - "๐Ÿ‡จ๐Ÿ‡บ": ["flag: cu"], - "๐Ÿ‡จ๐Ÿ‡ป": ["flag: cv"], - "๐Ÿ‡จ๐Ÿ‡ผ": ["flag: cw"], - "๐Ÿ‡จ๐Ÿ‡ฝ": ["flag: cx"], - "๐Ÿ‡จ๐Ÿ‡พ": ["flag: cy"], - "๐Ÿ‡จ๐Ÿ‡ฟ": ["flag: cz"], - "๐Ÿ‡ฉ๐Ÿ‡ช": ["flag: de"], - "๐Ÿ‡ฉ๐Ÿ‡ฌ": ["flag: dg"], - "๐Ÿ‡ฉ๐Ÿ‡ฏ": ["flag: dj"], - "๐Ÿ‡ฉ๐Ÿ‡ฐ": ["flag: dk"], - "๐Ÿ‡ฉ๐Ÿ‡ฒ": ["flag: dm"], - "๐Ÿ‡ฉ๐Ÿ‡ด": ["flag: do"], - "๐Ÿ‡ฉ๐Ÿ‡ฟ": ["flag: dz"], - "๐Ÿ‡ช๐Ÿ‡ฆ": ["flag: ea"], - "๐Ÿ‡ช๐Ÿ‡จ": ["flag: ec"], - "๐Ÿ‡ช๐Ÿ‡ช": ["flag: ee"], - "๐Ÿ‡ช๐Ÿ‡ฌ": ["flag: eg"], - "๐Ÿ‡ช๐Ÿ‡ญ": ["flag: eh"], - "๐Ÿ‡ช๐Ÿ‡ท": ["flag: er"], - "๐Ÿ‡ช๐Ÿ‡ธ": ["flag: es"], - "๐Ÿ‡ช๐Ÿ‡น": ["flag: et"], - "๐Ÿ‡ช๐Ÿ‡บ": ["flag: eu"], - "๐Ÿ‡ซ๐Ÿ‡ฎ": ["flag: fi"], - "๐Ÿ‡ซ๐Ÿ‡ฏ": ["flag: fj"], - "๐Ÿ‡ซ๐Ÿ‡ฐ": ["flag: fk"], - "๐Ÿ‡ซ๐Ÿ‡ฒ": ["flag: fm"], - "๐Ÿ‡ซ๐Ÿ‡ด": ["flag: fo"], - "๐Ÿ‡ซ๐Ÿ‡ท": ["flag: fr"], - "๐Ÿ‡ฌ๐Ÿ‡ฆ": ["flag: ga"], - "๐Ÿ‡ฌ๐Ÿ‡ง": ["flag: gb", "flag: uk"], - "๐Ÿ‡ฌ๐Ÿ‡ฉ": ["flag: gd"], - "๐Ÿ‡ฌ๐Ÿ‡ช": ["flag: ge"], - "๐Ÿ‡ฌ๐Ÿ‡ซ": ["flag: gf"], - "๐Ÿ‡ฌ๐Ÿ‡ฌ": ["flag: gg"], - "๐Ÿ‡ฌ๐Ÿ‡ญ": ["flag: gh"], - "๐Ÿ‡ฌ๐Ÿ‡ฎ": ["flag: gi"], - "๐Ÿ‡ฌ๐Ÿ‡ฑ": ["flag: gl"], - "๐Ÿ‡ฌ๐Ÿ‡ฒ": ["flag: gm"], - "๐Ÿ‡ฌ๐Ÿ‡ณ": ["flag: gn"], - "๐Ÿ‡ฌ๐Ÿ‡ต": ["flag: gp"], - "๐Ÿ‡ฌ๐Ÿ‡ถ": ["flag: gq"], - "๐Ÿ‡ฌ๐Ÿ‡ท": ["flag: gr"], - "๐Ÿ‡ฌ๐Ÿ‡ธ": ["flag: gs"], - "๐Ÿ‡ฌ๐Ÿ‡น": ["flag: gt"], - "๐Ÿ‡ฌ๐Ÿ‡บ": ["flag: gu"], - "๐Ÿ‡ฌ๐Ÿ‡ผ": ["flag: gw"], - "๐Ÿ‡ฌ๐Ÿ‡พ": ["flag: gy"], - "๐Ÿ‡ญ๐Ÿ‡ฐ": ["flag: hk"], - "๐Ÿ‡ญ๐Ÿ‡ฒ": ["flag: hm"], - "๐Ÿ‡ญ๐Ÿ‡ณ": ["flag: hn"], - "๐Ÿ‡ญ๐Ÿ‡ท": ["flag: hr"], - "๐Ÿ‡ญ๐Ÿ‡น": ["flag: ht"], - "๐Ÿ‡ญ๐Ÿ‡บ": ["flag: hu"], - "๐Ÿ‡ฎ๐Ÿ‡จ": ["flag: ic"], - "๐Ÿ‡ฎ๐Ÿ‡ฉ": ["flag: id"], - "๐Ÿ‡ฎ๐Ÿ‡ช": ["flag: ie"], - "๐Ÿ‡ฎ๐Ÿ‡ฑ": ["flag: il"], - "๐Ÿ‡ฎ๐Ÿ‡ฒ": ["flag: im"], - "๐Ÿ‡ฎ๐Ÿ‡ณ": ["flag: in"], - "๐Ÿ‡ฎ๐Ÿ‡ด": ["flag: io"], - "๐Ÿ‡ฎ๐Ÿ‡ถ": ["flag: iq"], - "๐Ÿ‡ฎ๐Ÿ‡ท": ["flag: ir"], - "๐Ÿ‡ฎ๐Ÿ‡ธ": ["flag: is"], - "๐Ÿ‡ฎ๐Ÿ‡น": ["flag: it"], - "๐Ÿ‡ฏ๐Ÿ‡ช": ["flag: je"], - "๐Ÿ‡ฏ๐Ÿ‡ฒ": ["flag: jm"], - "๐Ÿ‡ฏ๐Ÿ‡ด": ["flag: jo"], - "๐Ÿ‡ฏ๐Ÿ‡ต": ["flag: jp"], - "๐Ÿ‡ฐ๐Ÿ‡ช": ["flag: ke"], - "๐Ÿ‡ฐ๐Ÿ‡ฌ": ["flag: kg"], - "๐Ÿ‡ฐ๐Ÿ‡ญ": ["flag: kh"], - "๐Ÿ‡ฐ๐Ÿ‡ฎ": ["flag: ki"], - "๐Ÿ‡ฐ๐Ÿ‡ฒ": ["flag: km"], - "๐Ÿ‡ฐ๐Ÿ‡ณ": ["flag: kn"], - "๐Ÿ‡ฐ๐Ÿ‡ต": ["flag: kp"], - "๐Ÿ‡ฐ๐Ÿ‡ท": ["flag: kr"], - "๐Ÿ‡ฐ๐Ÿ‡ผ": ["flag: kw"], - "๐Ÿ‡ฐ๐Ÿ‡พ": ["flag: ky"], - "๐Ÿ‡ฐ๐Ÿ‡ฟ": ["flag: kz"], - "๐Ÿ‡ฑ๐Ÿ‡ฆ": ["flag: la"], - "๐Ÿ‡ฑ๐Ÿ‡ง": ["flag: lb"], - "๐Ÿ‡ฑ๐Ÿ‡จ": ["flag: lc"], - "๐Ÿ‡ฑ๐Ÿ‡ฎ": ["flag: li"], - "๐Ÿ‡ฑ๐Ÿ‡ฐ": ["flag: lk"], - "๐Ÿ‡ฑ๐Ÿ‡ท": ["flag: lr"], - "๐Ÿ‡ฑ๐Ÿ‡ธ": ["flag: ls"], - "๐Ÿ‡ฑ๐Ÿ‡น": ["flag: lt"], - "๐Ÿ‡ฑ๐Ÿ‡บ": ["flag: lu"], - "๐Ÿ‡ฑ๐Ÿ‡ป": ["flag: lv"], - "๐Ÿ‡ฑ๐Ÿ‡พ": ["flag: ly"], - "๐Ÿ‡ฒ๐Ÿ‡ฆ": ["flag: ma"], - "๐Ÿ‡ฒ๐Ÿ‡จ": ["flag: mc"], - "๐Ÿ‡ฒ๐Ÿ‡ฉ": ["flag: md"], - "๐Ÿ‡ฒ๐Ÿ‡ช": ["flag: me"], - "๐Ÿ‡ฒ๐Ÿ‡ซ": ["flag: mf"], - "๐Ÿ‡ฒ๐Ÿ‡ฌ": ["flag: mg"], - "๐Ÿ‡ฒ๐Ÿ‡ญ": ["flag: mh"], - "๐Ÿ‡ฒ๐Ÿ‡ฐ": ["flag: mk"], - "๐Ÿ‡ฒ๐Ÿ‡ฑ": ["flag: ml"], - "๐Ÿ‡ฒ๐Ÿ‡ฒ": ["flag: mm"], - "๐Ÿ‡ฒ๐Ÿ‡ณ": ["flag: mn"], - "๐Ÿ‡ฒ๐Ÿ‡ด": ["flag: mo"], - "๐Ÿ‡ฒ๐Ÿ‡ต": ["flag: mp"], - "๐Ÿ‡ฒ๐Ÿ‡ถ": ["flag: mq"], - "๐Ÿ‡ฒ๐Ÿ‡ท": ["flag: mr"], - "๐Ÿ‡ฒ๐Ÿ‡ธ": ["flag: ms"], - "๐Ÿ‡ฒ๐Ÿ‡น": ["flag: mt"], - "๐Ÿ‡ฒ๐Ÿ‡บ": ["flag: mu"], - "๐Ÿ‡ฒ๐Ÿ‡ป": ["flag: mv"], - "๐Ÿ‡ฒ๐Ÿ‡ผ": ["flag: mw"], - "๐Ÿ‡ฒ๐Ÿ‡ฝ": ["flag: mx"], - "๐Ÿ‡ฒ๐Ÿ‡พ": ["flag: my"], - "๐Ÿ‡ฒ๐Ÿ‡ฟ": ["flag: mz"], - "๐Ÿ‡ณ๐Ÿ‡ฆ": ["flag: na"], - "๐Ÿ‡ณ๐Ÿ‡จ": ["flag: nc"], - "๐Ÿ‡ณ๐Ÿ‡ช": ["flag: ne"], - "๐Ÿ‡ณ๐Ÿ‡ซ": ["flag: nf"], - "๐Ÿ‡ณ๐Ÿ‡ฌ": ["flag: ng"], - "๐Ÿ‡ณ๐Ÿ‡ฎ": ["flag: ni"], - "๐Ÿ‡ณ๐Ÿ‡ฑ": ["flag: nl"], - "๐Ÿ‡ณ๐Ÿ‡ด": ["flag: no"], - "๐Ÿ‡ณ๐Ÿ‡ต": ["flag: np"], - "๐Ÿ‡ณ๐Ÿ‡ท": ["flag: nr"], - "๐Ÿ‡ณ๐Ÿ‡บ": ["flag: nu"], - "๐Ÿ‡ณ๐Ÿ‡ฟ": ["flag: nz"], - "๐Ÿ‡ด๐Ÿ‡ฒ": ["flag: om"], - "๐Ÿ‡ต๐Ÿ‡ฆ": ["flag: pa"], - "๐Ÿ‡ต๐Ÿ‡ช": ["flag: pe"], - "๐Ÿ‡ต๐Ÿ‡ซ": ["flag: pf"], - "๐Ÿ‡ต๐Ÿ‡ฌ": ["flag: pg"], - "๐Ÿ‡ต๐Ÿ‡ญ": ["flag: ph"], - "๐Ÿ‡ต๐Ÿ‡ฐ": ["flag: pk"], - "๐Ÿ‡ต๐Ÿ‡ฑ": ["flag: pl"], - "๐Ÿ‡ต๐Ÿ‡ฒ": ["flag: pm"], - "๐Ÿ‡ต๐Ÿ‡ณ": ["flag: pn"], - "๐Ÿ‡ต๐Ÿ‡ท": ["flag: pr"], - "๐Ÿ‡ต๐Ÿ‡ธ": ["flag: ps"], - "๐Ÿ‡ต๐Ÿ‡น": ["flag: pt"], - "๐Ÿ‡ต๐Ÿ‡ผ": ["flag: pw"], - "๐Ÿ‡ต๐Ÿ‡พ": ["flag: py"], - "๐Ÿ‡ถ๐Ÿ‡ฆ": ["flag: qa"], - "๐Ÿ‡ท๐Ÿ‡ช": ["flag: re"], - "๐Ÿ‡ท๐Ÿ‡ด": ["flag: ro"], - "๐Ÿ‡ท๐Ÿ‡ธ": ["flag: rs"], - "๐Ÿ‡ท๐Ÿ‡บ": ["flag: ru"], - "๐Ÿ‡ท๐Ÿ‡ผ": ["flag: rw"], - "๐Ÿ‡ธ๐Ÿ‡ฆ": ["flag: sa"], - "๐Ÿ‡ธ๐Ÿ‡ง": ["flag: sb"], - "๐Ÿ‡ธ๐Ÿ‡จ": ["flag: sc"], - "๐Ÿ‡ธ๐Ÿ‡ฉ": ["flag: sd"], - "๐Ÿ‡ธ๐Ÿ‡ช": ["flag: se"], - "๐Ÿ‡ธ๐Ÿ‡ฌ": ["flag: sg"], - "๐Ÿ‡ธ๐Ÿ‡ญ": ["flag: sh"], - "๐Ÿ‡ธ๐Ÿ‡ฎ": ["flag: si"], - "๐Ÿ‡ธ๐Ÿ‡ฏ": ["flag: sj"], - "๐Ÿ‡ธ๐Ÿ‡ฐ": ["flag: sk"], - "๐Ÿ‡ธ๐Ÿ‡ฑ": ["flag: sl"], - "๐Ÿ‡ธ๐Ÿ‡ฒ": ["flag: sm"], - "๐Ÿ‡ธ๐Ÿ‡ณ": ["flag: sn"], - "๐Ÿ‡ธ๐Ÿ‡ด": ["flag: so"], - "๐Ÿ‡ธ๐Ÿ‡ท": ["flag: sr"], - "๐Ÿ‡ธ๐Ÿ‡ธ": ["flag: ss"], - "๐Ÿ‡ธ๐Ÿ‡น": ["flag: st"], - "๐Ÿ‡ธ๐Ÿ‡ป": ["flag: sv"], - "๐Ÿ‡ธ๐Ÿ‡ฝ": ["flag: sx"], - "๐Ÿ‡ธ๐Ÿ‡พ": ["flag: sy"], - "๐Ÿ‡ธ๐Ÿ‡ฟ": ["flag: sz"], - "๐Ÿ‡น๐Ÿ‡ฆ": ["flag: ta"], - "๐Ÿ‡น๐Ÿ‡จ": ["flag: tc"], - "๐Ÿ‡น๐Ÿ‡ฉ": ["flag: td"], - "๐Ÿ‡น๐Ÿ‡ซ": ["flag: tf"], - "๐Ÿ‡น๐Ÿ‡ฌ": ["flag: tg"], - "๐Ÿ‡น๐Ÿ‡ญ": ["flag: th"], - "๐Ÿ‡น๐Ÿ‡ฏ": ["flag: tj"], - "๐Ÿ‡น๐Ÿ‡ฐ": ["flag: tk"], - "๐Ÿ‡น๐Ÿ‡ฑ": ["flag: tl"], - "๐Ÿ‡น๐Ÿ‡ฒ": ["flag: tm"], - "๐Ÿ‡น๐Ÿ‡ณ": ["flag: tn"], - "๐Ÿ‡น๐Ÿ‡ด": ["flag: to"], - "๐Ÿ‡น๐Ÿ‡ท": ["flag: tr"], - "๐Ÿ‡น๐Ÿ‡น": ["flag: tt"], - "๐Ÿ‡น๐Ÿ‡ป": ["flag: tv"], - "๐Ÿ‡น๐Ÿ‡ผ": ["flag: tw"], - "๐Ÿ‡น๐Ÿ‡ฟ": ["flag: tz"], - "๐Ÿ‡บ๐Ÿ‡ฆ": ["flag: ua"], - "๐Ÿ‡บ๐Ÿ‡ฌ": ["flag: ug"], - "๐Ÿ‡บ๐Ÿ‡ฒ": ["flag: um"], - "๐Ÿ‡บ๐Ÿ‡ณ": ["flag: un"], - "๐Ÿ‡บ๐Ÿ‡ธ": ["flag: us", "flag: usa"], - "๐Ÿ‡บ๐Ÿ‡พ": ["flag: uy"], - "๐Ÿ‡บ๐Ÿ‡ฟ": ["flag: uz"], - "๐Ÿ‡ป๐Ÿ‡ฆ": ["flag: va"], - "๐Ÿ‡ป๐Ÿ‡จ": ["flag: vc"], - "๐Ÿ‡ป๐Ÿ‡ช": ["flag: ve"], - "๐Ÿ‡ป๐Ÿ‡ฌ": ["flag: vg"], - "๐Ÿ‡ป๐Ÿ‡ฎ": ["flag: vi"], - "๐Ÿ‡ป๐Ÿ‡ณ": ["flag: vn"], - "๐Ÿ‡ป๐Ÿ‡บ": ["flag: vu"], - "๐Ÿ‡ผ๐Ÿ‡ซ": ["flag: wf"], - "๐Ÿ‡ผ๐Ÿ‡ธ": ["flag: ws"], - "๐Ÿ‡ฝ๐Ÿ‡ฐ": ["flag: xk"], - "๐Ÿ‡พ๐Ÿ‡ช": ["flag: ye"], - "๐Ÿ‡พ๐Ÿ‡น": ["flag: yt"], - "๐Ÿ‡ฟ๐Ÿ‡ฆ": ["flag: za"], - "๐Ÿ‡ฟ๐Ÿ‡ฒ": ["flag: zm"], - "๐Ÿ‡ฟ๐Ÿ‡ผ": ["flag: zw"], + "๐Ÿ‡ฆ๐Ÿ‡จ": ["flag ac"], + "๐Ÿ‡ฆ๐Ÿ‡ฉ": ["flag ad"], + "๐Ÿ‡ฆ๐Ÿ‡ช": ["flag ae"], + "๐Ÿ‡ฆ๐Ÿ‡ซ": ["flag af"], + "๐Ÿ‡ฆ๐Ÿ‡ฌ": ["flag ag"], + "๐Ÿ‡ฆ๐Ÿ‡ฎ": ["flag ai"], + "๐Ÿ‡ฆ๐Ÿ‡ฑ": ["flag al"], + "๐Ÿ‡ฆ๐Ÿ‡ฒ": ["flag am"], + "๐Ÿ‡ฆ๐Ÿ‡ด": ["flag ao"], + "๐Ÿ‡ฆ๐Ÿ‡ถ": ["flag aq"], + "๐Ÿ‡ฆ๐Ÿ‡ท": ["flag ar"], + "๐Ÿ‡ฆ๐Ÿ‡ธ": ["flag as"], + "๐Ÿ‡ฆ๐Ÿ‡น": ["flag at"], + "๐Ÿ‡ฆ๐Ÿ‡บ": ["flag au"], + "๐Ÿ‡ฆ๐Ÿ‡ผ": ["flag aw"], + "๐Ÿ‡ฆ๐Ÿ‡ฝ": ["flag ax"], + "๐Ÿ‡ฆ๐Ÿ‡ฟ": ["flag az"], + "๐Ÿ‡ง๐Ÿ‡ฆ": ["flag ba"], + "๐Ÿ‡ง๐Ÿ‡ง": ["flag bb"], + "๐Ÿ‡ง๐Ÿ‡ฉ": ["flag bd"], + "๐Ÿ‡ง๐Ÿ‡ช": ["flag be"], + "๐Ÿ‡ง๐Ÿ‡ซ": ["flag bf"], + "๐Ÿ‡ง๐Ÿ‡ฌ": ["flag bg"], + "๐Ÿ‡ง๐Ÿ‡ญ": ["flag bh"], + "๐Ÿ‡ง๐Ÿ‡ฎ": ["flag bi"], + "๐Ÿ‡ง๐Ÿ‡ฏ": ["flag bj"], + "๐Ÿ‡ง๐Ÿ‡ฑ": ["flag bl"], + "๐Ÿ‡ง๐Ÿ‡ฒ": ["flag bm"], + "๐Ÿ‡ง๐Ÿ‡ณ": ["flag bn"], + "๐Ÿ‡ง๐Ÿ‡ด": ["flag bo"], + "๐Ÿ‡ง๐Ÿ‡ถ": ["flag bq"], + "๐Ÿ‡ง๐Ÿ‡ท": ["flag br"], + "๐Ÿ‡ง๐Ÿ‡ธ": ["flag bs"], + "๐Ÿ‡ง๐Ÿ‡น": ["flag bt"], + "๐Ÿ‡ง๐Ÿ‡ป": ["flag bv"], + "๐Ÿ‡ง๐Ÿ‡ผ": ["flag bw"], + "๐Ÿ‡ง๐Ÿ‡พ": ["flag by"], + "๐Ÿ‡ง๐Ÿ‡ฟ": ["flag bz"], + "๐Ÿ‡จ๐Ÿ‡ฆ": ["flag ca"], + "๐Ÿ‡จ๐Ÿ‡จ": ["flag cc"], + "๐Ÿ‡จ๐Ÿ‡ฉ": ["flag cd"], + "๐Ÿ‡จ๐Ÿ‡ซ": ["flag cf"], + "๐Ÿ‡จ๐Ÿ‡ฌ": ["flag cg"], + "๐Ÿ‡จ๐Ÿ‡ญ": ["flag ch"], + "๐Ÿ‡จ๐Ÿ‡ฎ": ["flag ci"], + "๐Ÿ‡จ๐Ÿ‡ฐ": ["flag ck"], + "๐Ÿ‡จ๐Ÿ‡ฑ": ["flag cl"], + "๐Ÿ‡จ๐Ÿ‡ฒ": ["flag cm"], + "๐Ÿ‡จ๐Ÿ‡ณ": ["flag cn"], + "๐Ÿ‡จ๐Ÿ‡ด": ["flag co"], + "๐Ÿ‡จ๐Ÿ‡ต": ["flag cp"], + "๐Ÿ‡จ๐Ÿ‡ท": ["flag cr"], + "๐Ÿ‡จ๐Ÿ‡บ": ["flag cu"], + "๐Ÿ‡จ๐Ÿ‡ป": ["flag cv"], + "๐Ÿ‡จ๐Ÿ‡ผ": ["flag cw"], + "๐Ÿ‡จ๐Ÿ‡ฝ": ["flag cx"], + "๐Ÿ‡จ๐Ÿ‡พ": ["flag cy"], + "๐Ÿ‡จ๐Ÿ‡ฟ": ["flag cz"], + "๐Ÿ‡ฉ๐Ÿ‡ช": ["flag de"], + "๐Ÿ‡ฉ๐Ÿ‡ฌ": ["flag dg"], + "๐Ÿ‡ฉ๐Ÿ‡ฏ": ["flag dj"], + "๐Ÿ‡ฉ๐Ÿ‡ฐ": ["flag dk"], + "๐Ÿ‡ฉ๐Ÿ‡ฒ": ["flag dm"], + "๐Ÿ‡ฉ๐Ÿ‡ด": ["flag do"], + "๐Ÿ‡ฉ๐Ÿ‡ฟ": ["flag dz"], + "๐Ÿ‡ช๐Ÿ‡ฆ": ["flag ea"], + "๐Ÿ‡ช๐Ÿ‡จ": ["flag ec"], + "๐Ÿ‡ช๐Ÿ‡ช": ["flag ee"], + "๐Ÿ‡ช๐Ÿ‡ฌ": ["flag eg"], + "๐Ÿ‡ช๐Ÿ‡ญ": ["flag eh"], + "๐Ÿ‡ช๐Ÿ‡ท": ["flag er"], + "๐Ÿ‡ช๐Ÿ‡ธ": ["flag es"], + "๐Ÿ‡ช๐Ÿ‡น": ["flag et"], + "๐Ÿ‡ช๐Ÿ‡บ": ["flag eu"], + "๐Ÿ‡ซ๐Ÿ‡ฎ": ["flag fi"], + "๐Ÿ‡ซ๐Ÿ‡ฏ": ["flag fj"], + "๐Ÿ‡ซ๐Ÿ‡ฐ": ["flag fk"], + "๐Ÿ‡ซ๐Ÿ‡ฒ": ["flag fm"], + "๐Ÿ‡ซ๐Ÿ‡ด": ["flag fo"], + "๐Ÿ‡ซ๐Ÿ‡ท": ["flag fr"], + "๐Ÿ‡ฌ๐Ÿ‡ฆ": ["flag ga"], + "๐Ÿ‡ฌ๐Ÿ‡ง": ["flag gb", "flag uk"], + "๐Ÿ‡ฌ๐Ÿ‡ฉ": ["flag gd"], + "๐Ÿ‡ฌ๐Ÿ‡ช": ["flag ge"], + "๐Ÿ‡ฌ๐Ÿ‡ซ": ["flag gf"], + "๐Ÿ‡ฌ๐Ÿ‡ฌ": ["flag gg"], + "๐Ÿ‡ฌ๐Ÿ‡ญ": ["flag gh"], + "๐Ÿ‡ฌ๐Ÿ‡ฎ": ["flag gi"], + "๐Ÿ‡ฌ๐Ÿ‡ฑ": ["flag gl"], + "๐Ÿ‡ฌ๐Ÿ‡ฒ": ["flag gm"], + "๐Ÿ‡ฌ๐Ÿ‡ณ": ["flag gn"], + "๐Ÿ‡ฌ๐Ÿ‡ต": ["flag gp"], + "๐Ÿ‡ฌ๐Ÿ‡ถ": ["flag gq"], + "๐Ÿ‡ฌ๐Ÿ‡ท": ["flag gr"], + "๐Ÿ‡ฌ๐Ÿ‡ธ": ["flag gs"], + "๐Ÿ‡ฌ๐Ÿ‡น": ["flag gt"], + "๐Ÿ‡ฌ๐Ÿ‡บ": ["flag gu"], + "๐Ÿ‡ฌ๐Ÿ‡ผ": ["flag gw"], + "๐Ÿ‡ฌ๐Ÿ‡พ": ["flag gy"], + "๐Ÿ‡ญ๐Ÿ‡ฐ": ["flag hk"], + "๐Ÿ‡ญ๐Ÿ‡ฒ": ["flag hm"], + "๐Ÿ‡ญ๐Ÿ‡ณ": ["flag hn"], + "๐Ÿ‡ญ๐Ÿ‡ท": ["flag hr"], + "๐Ÿ‡ญ๐Ÿ‡น": ["flag ht"], + "๐Ÿ‡ญ๐Ÿ‡บ": ["flag hu"], + "๐Ÿ‡ฎ๐Ÿ‡จ": ["flag ic"], + "๐Ÿ‡ฎ๐Ÿ‡ฉ": ["flag id"], + "๐Ÿ‡ฎ๐Ÿ‡ช": ["flag ie"], + "๐Ÿ‡ฎ๐Ÿ‡ฑ": ["flag il"], + "๐Ÿ‡ฎ๐Ÿ‡ฒ": ["flag im"], + "๐Ÿ‡ฎ๐Ÿ‡ณ": ["flag in"], + "๐Ÿ‡ฎ๐Ÿ‡ด": ["flag io"], + "๐Ÿ‡ฎ๐Ÿ‡ถ": ["flag iq"], + "๐Ÿ‡ฎ๐Ÿ‡ท": ["flag ir"], + "๐Ÿ‡ฎ๐Ÿ‡ธ": ["flag is"], + "๐Ÿ‡ฎ๐Ÿ‡น": ["flag it"], + "๐Ÿ‡ฏ๐Ÿ‡ช": ["flag je"], + "๐Ÿ‡ฏ๐Ÿ‡ฒ": ["flag jm"], + "๐Ÿ‡ฏ๐Ÿ‡ด": ["flag jo"], + "๐Ÿ‡ฏ๐Ÿ‡ต": ["flag jp"], + "๐Ÿ‡ฐ๐Ÿ‡ช": ["flag ke"], + "๐Ÿ‡ฐ๐Ÿ‡ฌ": ["flag kg"], + "๐Ÿ‡ฐ๐Ÿ‡ญ": ["flag kh"], + "๐Ÿ‡ฐ๐Ÿ‡ฎ": ["flag ki"], + "๐Ÿ‡ฐ๐Ÿ‡ฒ": ["flag km"], + "๐Ÿ‡ฐ๐Ÿ‡ณ": ["flag kn"], + "๐Ÿ‡ฐ๐Ÿ‡ต": ["flag kp"], + "๐Ÿ‡ฐ๐Ÿ‡ท": ["flag kr"], + "๐Ÿ‡ฐ๐Ÿ‡ผ": ["flag kw"], + "๐Ÿ‡ฐ๐Ÿ‡พ": ["flag ky"], + "๐Ÿ‡ฐ๐Ÿ‡ฟ": ["flag kz"], + "๐Ÿ‡ฑ๐Ÿ‡ฆ": ["flag la"], + "๐Ÿ‡ฑ๐Ÿ‡ง": ["flag lb"], + "๐Ÿ‡ฑ๐Ÿ‡จ": ["flag lc"], + "๐Ÿ‡ฑ๐Ÿ‡ฎ": ["flag li"], + "๐Ÿ‡ฑ๐Ÿ‡ฐ": ["flag lk"], + "๐Ÿ‡ฑ๐Ÿ‡ท": ["flag lr"], + "๐Ÿ‡ฑ๐Ÿ‡ธ": ["flag ls"], + "๐Ÿ‡ฑ๐Ÿ‡น": ["flag lt"], + "๐Ÿ‡ฑ๐Ÿ‡บ": ["flag lu"], + "๐Ÿ‡ฑ๐Ÿ‡ป": ["flag lv"], + "๐Ÿ‡ฑ๐Ÿ‡พ": ["flag ly"], + "๐Ÿ‡ฒ๐Ÿ‡ฆ": ["flag ma"], + "๐Ÿ‡ฒ๐Ÿ‡จ": ["flag mc"], + "๐Ÿ‡ฒ๐Ÿ‡ฉ": ["flag md"], + "๐Ÿ‡ฒ๐Ÿ‡ช": ["flag me"], + "๐Ÿ‡ฒ๐Ÿ‡ซ": ["flag mf"], + "๐Ÿ‡ฒ๐Ÿ‡ฌ": ["flag mg"], + "๐Ÿ‡ฒ๐Ÿ‡ญ": ["flag mh"], + "๐Ÿ‡ฒ๐Ÿ‡ฐ": ["flag mk"], + "๐Ÿ‡ฒ๐Ÿ‡ฑ": ["flag ml"], + "๐Ÿ‡ฒ๐Ÿ‡ฒ": ["flag mm"], + "๐Ÿ‡ฒ๐Ÿ‡ณ": ["flag mn"], + "๐Ÿ‡ฒ๐Ÿ‡ด": ["flag mo"], + "๐Ÿ‡ฒ๐Ÿ‡ต": ["flag mp"], + "๐Ÿ‡ฒ๐Ÿ‡ถ": ["flag mq"], + "๐Ÿ‡ฒ๐Ÿ‡ท": ["flag mr"], + "๐Ÿ‡ฒ๐Ÿ‡ธ": ["flag ms"], + "๐Ÿ‡ฒ๐Ÿ‡น": ["flag mt"], + "๐Ÿ‡ฒ๐Ÿ‡บ": ["flag mu"], + "๐Ÿ‡ฒ๐Ÿ‡ป": ["flag mv"], + "๐Ÿ‡ฒ๐Ÿ‡ผ": ["flag mw"], + "๐Ÿ‡ฒ๐Ÿ‡ฝ": ["flag mx"], + "๐Ÿ‡ฒ๐Ÿ‡พ": ["flag my"], + "๐Ÿ‡ฒ๐Ÿ‡ฟ": ["flag mz"], + "๐Ÿ‡ณ๐Ÿ‡ฆ": ["flag na"], + "๐Ÿ‡ณ๐Ÿ‡จ": ["flag nc"], + "๐Ÿ‡ณ๐Ÿ‡ช": ["flag ne"], + "๐Ÿ‡ณ๐Ÿ‡ซ": ["flag nf"], + "๐Ÿ‡ณ๐Ÿ‡ฌ": ["flag ng"], + "๐Ÿ‡ณ๐Ÿ‡ฎ": ["flag ni"], + "๐Ÿ‡ณ๐Ÿ‡ฑ": ["flag nl"], + "๐Ÿ‡ณ๐Ÿ‡ด": ["flag no"], + "๐Ÿ‡ณ๐Ÿ‡ต": ["flag np"], + "๐Ÿ‡ณ๐Ÿ‡ท": ["flag nr"], + "๐Ÿ‡ณ๐Ÿ‡บ": ["flag nu"], + "๐Ÿ‡ณ๐Ÿ‡ฟ": ["flag nz"], + "๐Ÿ‡ด๐Ÿ‡ฒ": ["flag om"], + "๐Ÿ‡ต๐Ÿ‡ฆ": ["flag pa"], + "๐Ÿ‡ต๐Ÿ‡ช": ["flag pe"], + "๐Ÿ‡ต๐Ÿ‡ซ": ["flag pf"], + "๐Ÿ‡ต๐Ÿ‡ฌ": ["flag pg"], + "๐Ÿ‡ต๐Ÿ‡ญ": ["flag ph"], + "๐Ÿ‡ต๐Ÿ‡ฐ": ["flag pk"], + "๐Ÿ‡ต๐Ÿ‡ฑ": ["flag pl"], + "๐Ÿ‡ต๐Ÿ‡ฒ": ["flag pm"], + "๐Ÿ‡ต๐Ÿ‡ณ": ["flag pn"], + "๐Ÿ‡ต๐Ÿ‡ท": ["flag pr"], + "๐Ÿ‡ต๐Ÿ‡ธ": ["flag ps"], + "๐Ÿ‡ต๐Ÿ‡น": ["flag pt"], + "๐Ÿ‡ต๐Ÿ‡ผ": ["flag pw"], + "๐Ÿ‡ต๐Ÿ‡พ": ["flag py"], + "๐Ÿ‡ถ๐Ÿ‡ฆ": ["flag qa"], + "๐Ÿ‡ท๐Ÿ‡ช": ["flag re"], + "๐Ÿ‡ท๐Ÿ‡ด": ["flag ro"], + "๐Ÿ‡ท๐Ÿ‡ธ": ["flag rs"], + "๐Ÿ‡ท๐Ÿ‡บ": ["flag ru"], + "๐Ÿ‡ท๐Ÿ‡ผ": ["flag rw"], + "๐Ÿ‡ธ๐Ÿ‡ฆ": ["flag sa"], + "๐Ÿ‡ธ๐Ÿ‡ง": ["flag sb"], + "๐Ÿ‡ธ๐Ÿ‡จ": ["flag sc"], + "๐Ÿ‡ธ๐Ÿ‡ฉ": ["flag sd"], + "๐Ÿ‡ธ๐Ÿ‡ช": ["flag se"], + "๐Ÿ‡ธ๐Ÿ‡ฌ": ["flag sg"], + "๐Ÿ‡ธ๐Ÿ‡ญ": ["flag sh"], + "๐Ÿ‡ธ๐Ÿ‡ฎ": ["flag si"], + "๐Ÿ‡ธ๐Ÿ‡ฏ": ["flag sj"], + "๐Ÿ‡ธ๐Ÿ‡ฐ": ["flag sk"], + "๐Ÿ‡ธ๐Ÿ‡ฑ": ["flag sl"], + "๐Ÿ‡ธ๐Ÿ‡ฒ": ["flag sm"], + "๐Ÿ‡ธ๐Ÿ‡ณ": ["flag sn"], + "๐Ÿ‡ธ๐Ÿ‡ด": ["flag so"], + "๐Ÿ‡ธ๐Ÿ‡ท": ["flag sr"], + "๐Ÿ‡ธ๐Ÿ‡ธ": ["flag ss"], + "๐Ÿ‡ธ๐Ÿ‡น": ["flag st"], + "๐Ÿ‡ธ๐Ÿ‡ป": ["flag sv"], + "๐Ÿ‡ธ๐Ÿ‡ฝ": ["flag sx"], + "๐Ÿ‡ธ๐Ÿ‡พ": ["flag sy"], + "๐Ÿ‡ธ๐Ÿ‡ฟ": ["flag sz"], + "๐Ÿ‡น๐Ÿ‡ฆ": ["flag ta"], + "๐Ÿ‡น๐Ÿ‡จ": ["flag tc"], + "๐Ÿ‡น๐Ÿ‡ฉ": ["flag td"], + "๐Ÿ‡น๐Ÿ‡ซ": ["flag tf"], + "๐Ÿ‡น๐Ÿ‡ฌ": ["flag tg"], + "๐Ÿ‡น๐Ÿ‡ญ": ["flag th"], + "๐Ÿ‡น๐Ÿ‡ฏ": ["flag tj"], + "๐Ÿ‡น๐Ÿ‡ฐ": ["flag tk"], + "๐Ÿ‡น๐Ÿ‡ฑ": ["flag tl"], + "๐Ÿ‡น๐Ÿ‡ฒ": ["flag tm"], + "๐Ÿ‡น๐Ÿ‡ณ": ["flag tn"], + "๐Ÿ‡น๐Ÿ‡ด": ["flag to"], + "๐Ÿ‡น๐Ÿ‡ท": ["flag tr"], + "๐Ÿ‡น๐Ÿ‡น": ["flag tt"], + "๐Ÿ‡น๐Ÿ‡ป": ["flag tv"], + "๐Ÿ‡น๐Ÿ‡ผ": ["flag tw"], + "๐Ÿ‡น๐Ÿ‡ฟ": ["flag tz"], + "๐Ÿ‡บ๐Ÿ‡ฆ": ["flag ua"], + "๐Ÿ‡บ๐Ÿ‡ฌ": ["flag ug"], + "๐Ÿ‡บ๐Ÿ‡ฒ": ["flag um"], + "๐Ÿ‡บ๐Ÿ‡ณ": ["flag un"], + "๐Ÿ‡บ๐Ÿ‡ธ": ["flag us", "flag usa"], + "๐Ÿ‡บ๐Ÿ‡พ": ["flag uy"], + "๐Ÿ‡บ๐Ÿ‡ฟ": ["flag uz"], + "๐Ÿ‡ป๐Ÿ‡ฆ": ["flag va"], + "๐Ÿ‡ป๐Ÿ‡จ": ["flag vc"], + "๐Ÿ‡ป๐Ÿ‡ช": ["flag ve"], + "๐Ÿ‡ป๐Ÿ‡ฌ": ["flag vg"], + "๐Ÿ‡ป๐Ÿ‡ฎ": ["flag vi"], + "๐Ÿ‡ป๐Ÿ‡ณ": ["flag vn"], + "๐Ÿ‡ป๐Ÿ‡บ": ["flag vu"], + "๐Ÿ‡ผ๐Ÿ‡ซ": ["flag wf"], + "๐Ÿ‡ผ๐Ÿ‡ธ": ["flag ws"], + "๐Ÿ‡ฝ๐Ÿ‡ฐ": ["flag xk"], + "๐Ÿ‡พ๐Ÿ‡ช": ["flag ye"], + "๐Ÿ‡พ๐Ÿ‡น": ["flag yt"], + "๐Ÿ‡ฟ๐Ÿ‡ฆ": ["flag za"], + "๐Ÿ‡ฟ๐Ÿ‡ฒ": ["flag zm"], + "๐Ÿ‡ฟ๐Ÿ‡ผ": ["flag zw"], "๐ŸŒ€": ["cyclone"], "๐ŸŒ": ["foggy"], "๐ŸŒ‚": ["closed umbrella"], @@ -482,7 +482,7 @@ export const EMOJI_MAP = { "๐ŸŽพ": ["tennis"], "๐ŸŽฟ": ["ski"], "๐Ÿ€": ["basketball"], - "๐Ÿ": ["flag: checkered", "checkered flag"], + "๐Ÿ": ["flag checkered", "checkered flag"], "๐Ÿ‚": ["snowboarder"], "๐Ÿƒโ€โ™€๏ธ": ["running"], "๐Ÿƒโ€โ™‚๏ธ": ["running"], @@ -535,14 +535,14 @@ export const EMOJI_MAP = { "๐Ÿฎ": ["izakaya lantern", "lantern"], "๐Ÿฏ": ["japanese castle"], "๐Ÿฐ": ["european castle"], - "๐Ÿณ๏ธโ€๐ŸŒˆ": ["flag: rainbow"], - "๐Ÿณ๏ธโ€โšง๏ธ": ["flag: transgender"], - "๐Ÿณ๏ธ": ["flag: white", "waving white flag"], - "๐Ÿดโ€โ˜ ๏ธ": ["flag: pirate", "pirate flag"], - "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": ["flag: england"], - "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": ["flag: scotland"], - "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": ["flag: wales"], - "๐Ÿด": ["flag: black", "waving black flag"], + "๐Ÿณ๏ธโ€๐ŸŒˆ": ["flag rainbow"], + "๐Ÿณ๏ธโ€โšง๏ธ": ["flag transgender"], + "๐Ÿณ๏ธ": ["flag white", "waving white flag"], + "๐Ÿดโ€โ˜ ๏ธ": ["flag pirate", "pirate flag"], + "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": ["flag england"], + "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": ["flag scotland"], + "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": ["flag wales"], + "๐Ÿด": ["flag black", "waving black flag"], "๐Ÿต๏ธ": ["rosette"], "๐Ÿท๏ธ": ["label"], "๐Ÿธ": ["badminton racquet and shuttlecock"], @@ -959,30 +959,30 @@ export const EMOJI_MAP = { "๐Ÿ•Œ": ["mosque"], "๐Ÿ•": ["synagogue"], "๐Ÿ•Ž": ["menorah with nine branches"], - "๐Ÿ•": ["clock 01:00", "clock 13:00", "clock1"], - "๐Ÿ•‘": ["clock 02:00", "clock 14:00", "clock2"], - "๐Ÿ•’": ["clock 03:00", "clock 15:00", "clock3"], - "๐Ÿ•“": ["clock 04:00", "clock 16:00", "clock4"], - "๐Ÿ•”": ["clock 05:00", "clock 17:00", "clock5"], - "๐Ÿ••": ["clock 06:00", "clock 18:00", "clock6"], - "๐Ÿ•–": ["clock 07:00", "clock 19:00", "clock7"], - "๐Ÿ•—": ["clock 08:00", "clock 20:00", "clock8"], - "๐Ÿ•˜": ["clock 09:00", "clock 21:00", "clock9"], - "๐Ÿ•™": ["clock 10:00", "clock 22:00", "clock10"], - "๐Ÿ•š": ["clock 11:00", "clock 23:00", "clock11"], - "๐Ÿ•›": ["clock 12:00", "clock 24:00", "clock12"], - "๐Ÿ•œ": ["clock 01:30", "clock 13:30", "clock130"], - "๐Ÿ•": ["clock 02:30", "clock 14:30", "clock230"], - "๐Ÿ•ž": ["clock 03:30", "clock 15:30", "clock330"], - "๐Ÿ•Ÿ": ["clock 04:30", "clock 16:30", "clock430"], - "๐Ÿ• ": ["clock 05:30", "clock 17:30", "clock530"], - "๐Ÿ•ก": ["clock 06:30", "clock 18:30", "clock630"], - "๐Ÿ•ข": ["clock 07:30", "clock 19:30", "clock730"], - "๐Ÿ•ฃ": ["clock 08:30", "clock 20:30", "clock830"], - "๐Ÿ•ค": ["clock 09:30", "clock 21:30", "clock930"], - "๐Ÿ•ฅ": ["clock 10:30", "clock 22:30", "clock1030"], - "๐Ÿ•ฆ": ["clock 11:30", "clock 23:30", "clock1130"], - "๐Ÿ•ง": ["clock 00:30", "clock 12:30", "clock1230"], + "๐Ÿ•": ["clock 0100", "clock 1300", "clock1"], + "๐Ÿ•‘": ["clock 0200", "clock 1400", "clock2"], + "๐Ÿ•’": ["clock 0300", "clock 1500", "clock3"], + "๐Ÿ•“": ["clock 0400", "clock 1600", "clock4"], + "๐Ÿ•”": ["clock 0500", "clock 1700", "clock5"], + "๐Ÿ••": ["clock 0600", "clock 1800", "clock6"], + "๐Ÿ•–": ["clock 0700", "clock 1900", "clock7"], + "๐Ÿ•—": ["clock 0800", "clock 2000", "clock8"], + "๐Ÿ•˜": ["clock 0900", "clock 2100", "clock9"], + "๐Ÿ•™": ["clock 1000", "clock 2200", "clock10"], + "๐Ÿ•š": ["clock 1100", "clock 2300", "clock11"], + "๐Ÿ•›": ["clock 1200", "clock 2400", "clock12"], + "๐Ÿ•œ": ["clock 0130", "clock 1330", "clock130"], + "๐Ÿ•": ["clock 0230", "clock 1430", "clock230"], + "๐Ÿ•ž": ["clock 0330", "clock 1530", "clock330"], + "๐Ÿ•Ÿ": ["clock 0430", "clock 1630", "clock430"], + "๐Ÿ• ": ["clock 0530", "clock 1730", "clock530"], + "๐Ÿ•ก": ["clock 0630", "clock 1830", "clock630"], + "๐Ÿ•ข": ["clock 0730", "clock 1930", "clock730"], + "๐Ÿ•ฃ": ["clock 0830", "clock 2030", "clock830"], + "๐Ÿ•ค": ["clock 0930", "clock 2130", "clock930"], + "๐Ÿ•ฅ": ["clock 1030", "clock 2230", "clock1030"], + "๐Ÿ•ฆ": ["clock 1130", "clock 2330", "clock1130"], + "๐Ÿ•ง": ["clock 0030", "clock 1230", "clock1230"], "๐Ÿ•ฏ๏ธ": ["candle"], "๐Ÿ•ฐ๏ธ": ["mantelpiece clock"], "๐Ÿ•ณ๏ธ": ["hole"], @@ -1807,53 +1807,52 @@ export const EMOJI_MAP = { "ใŠ™๏ธ": ["secret"], }; -EMOJI_MAP.filter = function (filter) { - const result = {}; - if (typeof filter === "function") { - for (const entry of Object.entries(this)) { - if (filter(entry)) { - result[entry[0]] = entry[1]; +let _EMOJI_WORDS; +const EMOJIS = { + MAP: EMOJI_MAP, + + filter: function (filter) { + const result = {}; + if (typeof filter === "function") { + for (const entry of Object.entries(this.MAP)) { + if (filter(entry)) { + result[entry[0]] = entry[1]; + } } + } else if (Array.isArray(filter)) { + const matchers = []; + for (const f of filter) { + matchers.push( + new RegExp( + `[\\u{${parseInt(f[0]).toString(16)}}-\\u{${parseInt(f[1]).toString(16)}}]`, + "u", + ), + ); + } + + for (const entry of Object.entries(this.MAP)) { + const matches = matchers.some((matcher) => matcher.test(entry[0])); + if (matches) { + result[entry[0]] = entry[1]; + } + } + } else { + throw new Error("unknown filter type"); } - } else if (Array.isArray(filter)) { - const matchers = []; - for (const f of filter) { - matchers.push( - new RegExp( - `[\\u{${parseInt(f[0]).toString(16)}}-\\u{${parseInt(f[1]).toString(16)}}]`, - "u", - ), + + return result; + }, + + autocomplete: function (prompt) { + const results = Object.entries(this.MAP).filter((entry) => { + return entry[1].some( + (name) => + name.toLowerCase().indexOf(prompt) >= 0 || + prompt.toLowerCase().indexOf(name) >= 0, ); - } - - for (const entry of Object.entries(this)) { - const matches = matchers.some((matcher) => matcher.test(entry[0])); - if (matches) { - result[entry[0]] = entry[1]; - } - } - } else { - throw new Error("unknown filter type"); - } - - return result; -}; - -let EMOJI_WORDS; -EMOJI_MAP.autocomplete = function (prompt) { - EMOJI_WORDS = - EMOJI_WORDS ?? - Object.values(this).reduce((_EMOJI_WORDS, words) => { - if (Array.isArray(words)) { - _EMOJI_WORDS.push(...words); - } - return _EMOJI_WORDS; - }, []); - - const results = EMOJI_WORDS.filter((word) => { - return word.toLowerCase().indexOf(prompt) >= 0 || prompt.toLowerCase().indexOf(word) >= 0; - }); - return results; + }); + return results; + }, }; /* VERY limited testing: diff --git a/public/js/emojis/en.ts b/public/js/emojis/en.ts new file mode 100644 index 0000000..17f9564 --- /dev/null +++ b/public/js/emojis/en.ts @@ -0,0 +1,1867 @@ +const EMOJI_MAP: Record = { + "โ˜”": ["umbrella with rain drops"], + "โ˜•": ["coffee"], + "โ™ˆ": ["aries"], + "โ™‰": ["taurus"], + "โ™": ["sagittarius"], + "โ™‘": ["capricorn"], + "โ™’": ["aquarius"], + "โ™“": ["pisces"], + "โš“": ["anchor"], + "โœ…": ["check mark"], + "โœจ": ["sparkles"], + "โ“": ["question"], + "โ”": ["grey question"], + "โ•": ["grey exclamation"], + "โ—": ["exclamation"], + "โž•": ["plus sign"], + "โž–": ["minus sign"], + "โž—": ["division sign"], + "#๏ธโƒฃ": ["hash"], + "*๏ธโƒฃ": ["keycap star"], + "ยฉ๏ธ": ["copyright"], + "ยฎ๏ธ": ["registered"], + "๐Ÿ€„": ["mahjong"], + "๐Ÿƒ": ["black joker"], + "๐Ÿ…ฐ๏ธ": ["a"], + "๐Ÿ…ฑ๏ธ": ["b"], + "๐Ÿ…พ๏ธ": ["o2"], + "๐Ÿ…ฟ๏ธ": ["parking"], + "๐Ÿ†Ž": ["ab"], + "๐Ÿ†‘": ["cl"], + "๐Ÿ†’": ["cool"], + "๐Ÿ†“": ["free"], + "๐Ÿ†”": ["id"], + "๐Ÿ†•": ["new"], + "๐Ÿ†–": ["ng"], + "๐Ÿ†—": ["ok"], + "๐Ÿ†˜": ["sos"], + "๐Ÿ†™": ["up"], + "๐Ÿ†š": ["vs"], + "๐Ÿ‡ฆ๐Ÿ‡จ": ["flag ac"], + "๐Ÿ‡ฆ๐Ÿ‡ฉ": ["flag ad"], + "๐Ÿ‡ฆ๐Ÿ‡ช": ["flag ae"], + "๐Ÿ‡ฆ๐Ÿ‡ซ": ["flag af"], + "๐Ÿ‡ฆ๐Ÿ‡ฌ": ["flag ag"], + "๐Ÿ‡ฆ๐Ÿ‡ฎ": ["flag ai"], + "๐Ÿ‡ฆ๐Ÿ‡ฑ": ["flag al"], + "๐Ÿ‡ฆ๐Ÿ‡ฒ": ["flag am"], + "๐Ÿ‡ฆ๐Ÿ‡ด": ["flag ao"], + "๐Ÿ‡ฆ๐Ÿ‡ถ": ["flag aq"], + "๐Ÿ‡ฆ๐Ÿ‡ท": ["flag ar"], + "๐Ÿ‡ฆ๐Ÿ‡ธ": ["flag as"], + "๐Ÿ‡ฆ๐Ÿ‡น": ["flag at"], + "๐Ÿ‡ฆ๐Ÿ‡บ": ["flag au"], + "๐Ÿ‡ฆ๐Ÿ‡ผ": ["flag aw"], + "๐Ÿ‡ฆ๐Ÿ‡ฝ": ["flag ax"], + "๐Ÿ‡ฆ๐Ÿ‡ฟ": ["flag az"], + "๐Ÿ‡ง๐Ÿ‡ฆ": ["flag ba"], + "๐Ÿ‡ง๐Ÿ‡ง": ["flag bb"], + "๐Ÿ‡ง๐Ÿ‡ฉ": ["flag bd"], + "๐Ÿ‡ง๐Ÿ‡ช": ["flag be"], + "๐Ÿ‡ง๐Ÿ‡ซ": ["flag bf"], + "๐Ÿ‡ง๐Ÿ‡ฌ": ["flag bg"], + "๐Ÿ‡ง๐Ÿ‡ญ": ["flag bh"], + "๐Ÿ‡ง๐Ÿ‡ฎ": ["flag bi"], + "๐Ÿ‡ง๐Ÿ‡ฏ": ["flag bj"], + "๐Ÿ‡ง๐Ÿ‡ฑ": ["flag bl"], + "๐Ÿ‡ง๐Ÿ‡ฒ": ["flag bm"], + "๐Ÿ‡ง๐Ÿ‡ณ": ["flag bn"], + "๐Ÿ‡ง๐Ÿ‡ด": ["flag bo"], + "๐Ÿ‡ง๐Ÿ‡ถ": ["flag bq"], + "๐Ÿ‡ง๐Ÿ‡ท": ["flag br"], + "๐Ÿ‡ง๐Ÿ‡ธ": ["flag bs"], + "๐Ÿ‡ง๐Ÿ‡น": ["flag bt"], + "๐Ÿ‡ง๐Ÿ‡ป": ["flag bv"], + "๐Ÿ‡ง๐Ÿ‡ผ": ["flag bw"], + "๐Ÿ‡ง๐Ÿ‡พ": ["flag by"], + "๐Ÿ‡ง๐Ÿ‡ฟ": ["flag bz"], + "๐Ÿ‡จ๐Ÿ‡ฆ": ["flag ca"], + "๐Ÿ‡จ๐Ÿ‡จ": ["flag cc"], + "๐Ÿ‡จ๐Ÿ‡ฉ": ["flag cd"], + "๐Ÿ‡จ๐Ÿ‡ซ": ["flag cf"], + "๐Ÿ‡จ๐Ÿ‡ฌ": ["flag cg"], + "๐Ÿ‡จ๐Ÿ‡ญ": ["flag ch"], + "๐Ÿ‡จ๐Ÿ‡ฎ": ["flag ci"], + "๐Ÿ‡จ๐Ÿ‡ฐ": ["flag ck"], + "๐Ÿ‡จ๐Ÿ‡ฑ": ["flag cl"], + "๐Ÿ‡จ๐Ÿ‡ฒ": ["flag cm"], + "๐Ÿ‡จ๐Ÿ‡ณ": ["flag cn"], + "๐Ÿ‡จ๐Ÿ‡ด": ["flag co"], + "๐Ÿ‡จ๐Ÿ‡ต": ["flag cp"], + "๐Ÿ‡จ๐Ÿ‡ท": ["flag cr"], + "๐Ÿ‡จ๐Ÿ‡บ": ["flag cu"], + "๐Ÿ‡จ๐Ÿ‡ป": ["flag cv"], + "๐Ÿ‡จ๐Ÿ‡ผ": ["flag cw"], + "๐Ÿ‡จ๐Ÿ‡ฝ": ["flag cx"], + "๐Ÿ‡จ๐Ÿ‡พ": ["flag cy"], + "๐Ÿ‡จ๐Ÿ‡ฟ": ["flag cz"], + "๐Ÿ‡ฉ๐Ÿ‡ช": ["flag de"], + "๐Ÿ‡ฉ๐Ÿ‡ฌ": ["flag dg"], + "๐Ÿ‡ฉ๐Ÿ‡ฏ": ["flag dj"], + "๐Ÿ‡ฉ๐Ÿ‡ฐ": ["flag dk"], + "๐Ÿ‡ฉ๐Ÿ‡ฒ": ["flag dm"], + "๐Ÿ‡ฉ๐Ÿ‡ด": ["flag do"], + "๐Ÿ‡ฉ๐Ÿ‡ฟ": ["flag dz"], + "๐Ÿ‡ช๐Ÿ‡ฆ": ["flag ea"], + "๐Ÿ‡ช๐Ÿ‡จ": ["flag ec"], + "๐Ÿ‡ช๐Ÿ‡ช": ["flag ee"], + "๐Ÿ‡ช๐Ÿ‡ฌ": ["flag eg"], + "๐Ÿ‡ช๐Ÿ‡ญ": ["flag eh"], + "๐Ÿ‡ช๐Ÿ‡ท": ["flag er"], + "๐Ÿ‡ช๐Ÿ‡ธ": ["flag es"], + "๐Ÿ‡ช๐Ÿ‡น": ["flag et"], + "๐Ÿ‡ช๐Ÿ‡บ": ["flag eu"], + "๐Ÿ‡ซ๐Ÿ‡ฎ": ["flag fi"], + "๐Ÿ‡ซ๐Ÿ‡ฏ": ["flag fj"], + "๐Ÿ‡ซ๐Ÿ‡ฐ": ["flag fk"], + "๐Ÿ‡ซ๐Ÿ‡ฒ": ["flag fm"], + "๐Ÿ‡ซ๐Ÿ‡ด": ["flag fo"], + "๐Ÿ‡ซ๐Ÿ‡ท": ["flag fr"], + "๐Ÿ‡ฌ๐Ÿ‡ฆ": ["flag ga"], + "๐Ÿ‡ฌ๐Ÿ‡ง": ["flag gb", "flag uk"], + "๐Ÿ‡ฌ๐Ÿ‡ฉ": ["flag gd"], + "๐Ÿ‡ฌ๐Ÿ‡ช": ["flag ge"], + "๐Ÿ‡ฌ๐Ÿ‡ซ": ["flag gf"], + "๐Ÿ‡ฌ๐Ÿ‡ฌ": ["flag gg"], + "๐Ÿ‡ฌ๐Ÿ‡ญ": ["flag gh"], + "๐Ÿ‡ฌ๐Ÿ‡ฎ": ["flag gi"], + "๐Ÿ‡ฌ๐Ÿ‡ฑ": ["flag gl"], + "๐Ÿ‡ฌ๐Ÿ‡ฒ": ["flag gm"], + "๐Ÿ‡ฌ๐Ÿ‡ณ": ["flag gn"], + "๐Ÿ‡ฌ๐Ÿ‡ต": ["flag gp"], + "๐Ÿ‡ฌ๐Ÿ‡ถ": ["flag gq"], + "๐Ÿ‡ฌ๐Ÿ‡ท": ["flag gr"], + "๐Ÿ‡ฌ๐Ÿ‡ธ": ["flag gs"], + "๐Ÿ‡ฌ๐Ÿ‡น": ["flag gt"], + "๐Ÿ‡ฌ๐Ÿ‡บ": ["flag gu"], + "๐Ÿ‡ฌ๐Ÿ‡ผ": ["flag gw"], + "๐Ÿ‡ฌ๐Ÿ‡พ": ["flag gy"], + "๐Ÿ‡ญ๐Ÿ‡ฐ": ["flag hk"], + "๐Ÿ‡ญ๐Ÿ‡ฒ": ["flag hm"], + "๐Ÿ‡ญ๐Ÿ‡ณ": ["flag hn"], + "๐Ÿ‡ญ๐Ÿ‡ท": ["flag hr"], + "๐Ÿ‡ญ๐Ÿ‡น": ["flag ht"], + "๐Ÿ‡ญ๐Ÿ‡บ": ["flag hu"], + "๐Ÿ‡ฎ๐Ÿ‡จ": ["flag ic"], + "๐Ÿ‡ฎ๐Ÿ‡ฉ": ["flag id"], + "๐Ÿ‡ฎ๐Ÿ‡ช": ["flag ie"], + "๐Ÿ‡ฎ๐Ÿ‡ฑ": ["flag il"], + "๐Ÿ‡ฎ๐Ÿ‡ฒ": ["flag im"], + "๐Ÿ‡ฎ๐Ÿ‡ณ": ["flag in"], + "๐Ÿ‡ฎ๐Ÿ‡ด": ["flag io"], + "๐Ÿ‡ฎ๐Ÿ‡ถ": ["flag iq"], + "๐Ÿ‡ฎ๐Ÿ‡ท": ["flag ir"], + "๐Ÿ‡ฎ๐Ÿ‡ธ": ["flag is"], + "๐Ÿ‡ฎ๐Ÿ‡น": ["flag it"], + "๐Ÿ‡ฏ๐Ÿ‡ช": ["flag je"], + "๐Ÿ‡ฏ๐Ÿ‡ฒ": ["flag jm"], + "๐Ÿ‡ฏ๐Ÿ‡ด": ["flag jo"], + "๐Ÿ‡ฏ๐Ÿ‡ต": ["flag jp"], + "๐Ÿ‡ฐ๐Ÿ‡ช": ["flag ke"], + "๐Ÿ‡ฐ๐Ÿ‡ฌ": ["flag kg"], + "๐Ÿ‡ฐ๐Ÿ‡ญ": ["flag kh"], + "๐Ÿ‡ฐ๐Ÿ‡ฎ": ["flag ki"], + "๐Ÿ‡ฐ๐Ÿ‡ฒ": ["flag km"], + "๐Ÿ‡ฐ๐Ÿ‡ณ": ["flag kn"], + "๐Ÿ‡ฐ๐Ÿ‡ต": ["flag kp"], + "๐Ÿ‡ฐ๐Ÿ‡ท": ["flag kr"], + "๐Ÿ‡ฐ๐Ÿ‡ผ": ["flag kw"], + "๐Ÿ‡ฐ๐Ÿ‡พ": ["flag ky"], + "๐Ÿ‡ฐ๐Ÿ‡ฟ": ["flag kz"], + "๐Ÿ‡ฑ๐Ÿ‡ฆ": ["flag la"], + "๐Ÿ‡ฑ๐Ÿ‡ง": ["flag lb"], + "๐Ÿ‡ฑ๐Ÿ‡จ": ["flag lc"], + "๐Ÿ‡ฑ๐Ÿ‡ฎ": ["flag li"], + "๐Ÿ‡ฑ๐Ÿ‡ฐ": ["flag lk"], + "๐Ÿ‡ฑ๐Ÿ‡ท": ["flag lr"], + "๐Ÿ‡ฑ๐Ÿ‡ธ": ["flag ls"], + "๐Ÿ‡ฑ๐Ÿ‡น": ["flag lt"], + "๐Ÿ‡ฑ๐Ÿ‡บ": ["flag lu"], + "๐Ÿ‡ฑ๐Ÿ‡ป": ["flag lv"], + "๐Ÿ‡ฑ๐Ÿ‡พ": ["flag ly"], + "๐Ÿ‡ฒ๐Ÿ‡ฆ": ["flag ma"], + "๐Ÿ‡ฒ๐Ÿ‡จ": ["flag mc"], + "๐Ÿ‡ฒ๐Ÿ‡ฉ": ["flag md"], + "๐Ÿ‡ฒ๐Ÿ‡ช": ["flag me"], + "๐Ÿ‡ฒ๐Ÿ‡ซ": ["flag mf"], + "๐Ÿ‡ฒ๐Ÿ‡ฌ": ["flag mg"], + "๐Ÿ‡ฒ๐Ÿ‡ญ": ["flag mh"], + "๐Ÿ‡ฒ๐Ÿ‡ฐ": ["flag mk"], + "๐Ÿ‡ฒ๐Ÿ‡ฑ": ["flag ml"], + "๐Ÿ‡ฒ๐Ÿ‡ฒ": ["flag mm"], + "๐Ÿ‡ฒ๐Ÿ‡ณ": ["flag mn"], + "๐Ÿ‡ฒ๐Ÿ‡ด": ["flag mo"], + "๐Ÿ‡ฒ๐Ÿ‡ต": ["flag mp"], + "๐Ÿ‡ฒ๐Ÿ‡ถ": ["flag mq"], + "๐Ÿ‡ฒ๐Ÿ‡ท": ["flag mr"], + "๐Ÿ‡ฒ๐Ÿ‡ธ": ["flag ms"], + "๐Ÿ‡ฒ๐Ÿ‡น": ["flag mt"], + "๐Ÿ‡ฒ๐Ÿ‡บ": ["flag mu"], + "๐Ÿ‡ฒ๐Ÿ‡ป": ["flag mv"], + "๐Ÿ‡ฒ๐Ÿ‡ผ": ["flag mw"], + "๐Ÿ‡ฒ๐Ÿ‡ฝ": ["flag mx"], + "๐Ÿ‡ฒ๐Ÿ‡พ": ["flag my"], + "๐Ÿ‡ฒ๐Ÿ‡ฟ": ["flag mz"], + "๐Ÿ‡ณ๐Ÿ‡ฆ": ["flag na"], + "๐Ÿ‡ณ๐Ÿ‡จ": ["flag nc"], + "๐Ÿ‡ณ๐Ÿ‡ช": ["flag ne"], + "๐Ÿ‡ณ๐Ÿ‡ซ": ["flag nf"], + "๐Ÿ‡ณ๐Ÿ‡ฌ": ["flag ng"], + "๐Ÿ‡ณ๐Ÿ‡ฎ": ["flag ni"], + "๐Ÿ‡ณ๐Ÿ‡ฑ": ["flag nl"], + "๐Ÿ‡ณ๐Ÿ‡ด": ["flag no"], + "๐Ÿ‡ณ๐Ÿ‡ต": ["flag np"], + "๐Ÿ‡ณ๐Ÿ‡ท": ["flag nr"], + "๐Ÿ‡ณ๐Ÿ‡บ": ["flag nu"], + "๐Ÿ‡ณ๐Ÿ‡ฟ": ["flag nz"], + "๐Ÿ‡ด๐Ÿ‡ฒ": ["flag om"], + "๐Ÿ‡ต๐Ÿ‡ฆ": ["flag pa"], + "๐Ÿ‡ต๐Ÿ‡ช": ["flag pe"], + "๐Ÿ‡ต๐Ÿ‡ซ": ["flag pf"], + "๐Ÿ‡ต๐Ÿ‡ฌ": ["flag pg"], + "๐Ÿ‡ต๐Ÿ‡ญ": ["flag ph"], + "๐Ÿ‡ต๐Ÿ‡ฐ": ["flag pk"], + "๐Ÿ‡ต๐Ÿ‡ฑ": ["flag pl"], + "๐Ÿ‡ต๐Ÿ‡ฒ": ["flag pm"], + "๐Ÿ‡ต๐Ÿ‡ณ": ["flag pn"], + "๐Ÿ‡ต๐Ÿ‡ท": ["flag pr"], + "๐Ÿ‡ต๐Ÿ‡ธ": ["flag ps"], + "๐Ÿ‡ต๐Ÿ‡น": ["flag pt"], + "๐Ÿ‡ต๐Ÿ‡ผ": ["flag pw"], + "๐Ÿ‡ต๐Ÿ‡พ": ["flag py"], + "๐Ÿ‡ถ๐Ÿ‡ฆ": ["flag qa"], + "๐Ÿ‡ท๐Ÿ‡ช": ["flag re"], + "๐Ÿ‡ท๐Ÿ‡ด": ["flag ro"], + "๐Ÿ‡ท๐Ÿ‡ธ": ["flag rs"], + "๐Ÿ‡ท๐Ÿ‡บ": ["flag ru"], + "๐Ÿ‡ท๐Ÿ‡ผ": ["flag rw"], + "๐Ÿ‡ธ๐Ÿ‡ฆ": ["flag sa"], + "๐Ÿ‡ธ๐Ÿ‡ง": ["flag sb"], + "๐Ÿ‡ธ๐Ÿ‡จ": ["flag sc"], + "๐Ÿ‡ธ๐Ÿ‡ฉ": ["flag sd"], + "๐Ÿ‡ธ๐Ÿ‡ช": ["flag se"], + "๐Ÿ‡ธ๐Ÿ‡ฌ": ["flag sg"], + "๐Ÿ‡ธ๐Ÿ‡ญ": ["flag sh"], + "๐Ÿ‡ธ๐Ÿ‡ฎ": ["flag si"], + "๐Ÿ‡ธ๐Ÿ‡ฏ": ["flag sj"], + "๐Ÿ‡ธ๐Ÿ‡ฐ": ["flag sk"], + "๐Ÿ‡ธ๐Ÿ‡ฑ": ["flag sl"], + "๐Ÿ‡ธ๐Ÿ‡ฒ": ["flag sm"], + "๐Ÿ‡ธ๐Ÿ‡ณ": ["flag sn"], + "๐Ÿ‡ธ๐Ÿ‡ด": ["flag so"], + "๐Ÿ‡ธ๐Ÿ‡ท": ["flag sr"], + "๐Ÿ‡ธ๐Ÿ‡ธ": ["flag ss"], + "๐Ÿ‡ธ๐Ÿ‡น": ["flag st"], + "๐Ÿ‡ธ๐Ÿ‡ป": ["flag sv"], + "๐Ÿ‡ธ๐Ÿ‡ฝ": ["flag sx"], + "๐Ÿ‡ธ๐Ÿ‡พ": ["flag sy"], + "๐Ÿ‡ธ๐Ÿ‡ฟ": ["flag sz"], + "๐Ÿ‡น๐Ÿ‡ฆ": ["flag ta"], + "๐Ÿ‡น๐Ÿ‡จ": ["flag tc"], + "๐Ÿ‡น๐Ÿ‡ฉ": ["flag td"], + "๐Ÿ‡น๐Ÿ‡ซ": ["flag tf"], + "๐Ÿ‡น๐Ÿ‡ฌ": ["flag tg"], + "๐Ÿ‡น๐Ÿ‡ญ": ["flag th"], + "๐Ÿ‡น๐Ÿ‡ฏ": ["flag tj"], + "๐Ÿ‡น๐Ÿ‡ฐ": ["flag tk"], + "๐Ÿ‡น๐Ÿ‡ฑ": ["flag tl"], + "๐Ÿ‡น๐Ÿ‡ฒ": ["flag tm"], + "๐Ÿ‡น๐Ÿ‡ณ": ["flag tn"], + "๐Ÿ‡น๐Ÿ‡ด": ["flag to"], + "๐Ÿ‡น๐Ÿ‡ท": ["flag tr"], + "๐Ÿ‡น๐Ÿ‡น": ["flag tt"], + "๐Ÿ‡น๐Ÿ‡ป": ["flag tv"], + "๐Ÿ‡น๐Ÿ‡ผ": ["flag tw"], + "๐Ÿ‡น๐Ÿ‡ฟ": ["flag tz"], + "๐Ÿ‡บ๐Ÿ‡ฆ": ["flag ua"], + "๐Ÿ‡บ๐Ÿ‡ฌ": ["flag ug"], + "๐Ÿ‡บ๐Ÿ‡ฒ": ["flag um"], + "๐Ÿ‡บ๐Ÿ‡ณ": ["flag un"], + "๐Ÿ‡บ๐Ÿ‡ธ": ["flag us", "flag usa"], + "๐Ÿ‡บ๐Ÿ‡พ": ["flag uy"], + "๐Ÿ‡บ๐Ÿ‡ฟ": ["flag uz"], + "๐Ÿ‡ป๐Ÿ‡ฆ": ["flag va"], + "๐Ÿ‡ป๐Ÿ‡จ": ["flag vc"], + "๐Ÿ‡ป๐Ÿ‡ช": ["flag ve"], + "๐Ÿ‡ป๐Ÿ‡ฌ": ["flag vg"], + "๐Ÿ‡ป๐Ÿ‡ฎ": ["flag vi"], + "๐Ÿ‡ป๐Ÿ‡ณ": ["flag vn"], + "๐Ÿ‡ป๐Ÿ‡บ": ["flag vu"], + "๐Ÿ‡ผ๐Ÿ‡ซ": ["flag wf"], + "๐Ÿ‡ผ๐Ÿ‡ธ": ["flag ws"], + "๐Ÿ‡ฝ๐Ÿ‡ฐ": ["flag xk"], + "๐Ÿ‡พ๐Ÿ‡ช": ["flag ye"], + "๐Ÿ‡พ๐Ÿ‡น": ["flag yt"], + "๐Ÿ‡ฟ๐Ÿ‡ฆ": ["flag za"], + "๐Ÿ‡ฟ๐Ÿ‡ฒ": ["flag zm"], + "๐Ÿ‡ฟ๐Ÿ‡ผ": ["flag zw"], + "๐ŸŒ€": ["cyclone"], + "๐ŸŒ": ["foggy"], + "๐ŸŒ‚": ["closed umbrella"], + "๐ŸŒƒ": ["night with stars"], + "๐ŸŒ„": ["sunrise over mountains"], + "๐ŸŒ…": ["sunrise"], + "๐ŸŒ†": ["city sunset"], + "๐ŸŒ‡": ["city sunrise"], + "๐ŸŒˆ": ["rainbow"], + "๐ŸŒ‰": ["bridge at night"], + "๐ŸŒŠ": ["ocean"], + "๐ŸŒ‹": ["volcano"], + "๐ŸŒŒ": ["milky way"], + "๐ŸŒ": ["earth", "earth africa"], + "๐ŸŒŽ": ["earth", "earth americas"], + "๐ŸŒ": ["earth", "earth asia"], + "๐ŸŒ": ["globe with meridians"], + "๐ŸŒ‘": ["moon", "new moon"], + "๐ŸŒ’": ["moon", "waxing crescent moon"], + "๐ŸŒ“": ["moon", "first quarter moon"], + "๐ŸŒ”": ["moon", "moon", "waxing gibbous moon"], + "๐ŸŒ•": ["moon", "full moon"], + "๐ŸŒ–": ["moon", "waning gibbous moon"], + "๐ŸŒ—": ["moon", "last quarter moon"], + "๐ŸŒ˜": ["moon", "waning crescent moon"], + "๐ŸŒ™": ["moon", "crescent moon"], + "๐ŸŒš": ["moon", "new moon with face"], + "๐ŸŒ›": ["moon", "first quarter moon with face"], + "๐ŸŒœ": ["moon", "last quarter moon with face"], + "๐ŸŒ": ["moon", "full moon with face"], + "๐ŸŒž": ["sun", "sun with face"], + "๐ŸŒŸ": ["starburst", "star"], + "๐ŸŒ ": ["stars"], + "๐ŸŒก๏ธ": ["thermometer"], + "๐ŸŒค๏ธ": ["mostly sunny", "sun small cloud"], + "๐ŸŒฅ๏ธ": ["barely sunny", "sun behind cloud"], + "๐ŸŒฆ๏ธ": ["partly sunny rain", "sun behind rain cloud"], + "๐ŸŒง๏ธ": ["cloud", "rain cloud"], + "๐ŸŒจ๏ธ": ["cloud", "snow cloud"], + "๐ŸŒฉ๏ธ": ["cloud", "lightning cloud", "lightning"], + "๐ŸŒช๏ธ": ["tornado", "tornado cloud"], + "๐ŸŒซ๏ธ": ["fog"], + "๐ŸŒฌ๏ธ": ["wind blowing face"], + "๐ŸŒญ": ["food", "hotdog"], + "๐ŸŒฎ": ["food", "taco"], + "๐ŸŒฏ": ["food", "burrito"], + "๐ŸŒฐ": ["food", "chestnut"], + "๐ŸŒฑ": ["seedling"], + "๐ŸŒฒ": ["evergreen tree"], + "๐ŸŒณ": ["deciduous tree"], + "๐ŸŒด": ["palm tree"], + "๐ŸŒต": ["cactus"], + "๐ŸŒถ๏ธ": ["food", "hot pepper"], + "๐ŸŒท": ["tulip"], + "๐ŸŒธ": ["cherry blossom"], + "๐ŸŒน": ["rose"], + "๐ŸŒบ": ["hibiscus"], + "๐ŸŒป": ["sunflower"], + "๐ŸŒผ": ["blossom"], + "๐ŸŒฝ": ["food", "corn"], + "๐ŸŒพ": ["ear of rice"], + "๐ŸŒฟ": ["herb"], + "๐Ÿ€": ["four leaf clover"], + "๐Ÿ": ["maple leaf"], + "๐Ÿ‚": ["fallen leaf"], + "๐Ÿƒ": ["leaves"], + "๐Ÿ„": ["mushroom"], + "๐Ÿ…": ["food", "tomato"], + "๐Ÿ†": ["food", "eggplant"], + "๐Ÿ‡": ["food", "grapes"], + "๐Ÿˆ": ["food", "melon"], + "๐Ÿ‰": ["food", "watermelon"], + "๐ŸŠ": ["food", "tangerine"], + "๐Ÿ‹": ["food", "lemon"], + "๐ŸŒ": ["food", "banana"], + "๐Ÿ": ["food", "pineapple"], + "๐ŸŽ": ["food", "apple"], + "๐Ÿ": ["food", "green apple"], + "๐Ÿ": ["food", "pear"], + "๐Ÿ‘": ["food", "peach"], + "๐Ÿ’": ["food", "cherries"], + "๐Ÿ“": ["food", "strawberry"], + "๐Ÿ”": ["food", "hamburger"], + "๐Ÿ•": ["food", "pizza"], + "๐Ÿ–": ["food", "meat on bone"], + "๐Ÿ—": ["food", "poultry leg", "chicken leg", "turkey leg"], + "๐Ÿ˜": ["food", "rice cracker"], + "๐Ÿ™": ["food", "rice ball"], + "๐Ÿš": ["food", "rice"], + "๐Ÿ›": ["food", "curry"], + "๐Ÿœ": ["food", "ramen"], + "๐Ÿ": ["food", "spaghetti"], + "๐Ÿž": ["food", "bread"], + "๐ŸŸ": ["food", "fries"], + "๐Ÿ ": ["food", "sweet potato"], + "๐Ÿก": ["food", "dango"], + "๐Ÿข": ["food", "oden"], + "๐Ÿฃ": ["food", "sushi"], + "๐Ÿค": ["food", "fried shrimp"], + "๐Ÿฅ": ["food", "fish cake"], + "๐Ÿฆ": ["food", "icecream"], + "๐Ÿง": ["food", "shaved ice"], + "๐Ÿจ": ["food", "ice cream"], + "๐Ÿฉ": ["food", "doughnut"], + "๐Ÿช": ["food", "cookie"], + "๐Ÿซ": ["food", "chocolate bar"], + "๐Ÿฌ": ["food", "candy"], + "๐Ÿญ": ["food", "lollipop"], + "๐Ÿฎ": ["food", "custard"], + "๐Ÿฏ": ["food", "honey pot"], + "๐Ÿฐ": ["food", "cake"], + "๐Ÿฑ": ["food", "bento"], + "๐Ÿฒ": ["food", "stew"], + "๐Ÿณ": ["food", "fried egg", "cooking"], + "๐Ÿด": ["fork and knife"], + "๐Ÿต": ["drink", "tea"], + "๐Ÿถ": ["drink", "sake"], + "๐Ÿท": ["drink", "wine glass"], + "๐Ÿธ": ["drink", "cocktail"], + "๐Ÿน": ["drink", "tropical drink"], + "๐Ÿบ": ["drink", "beer"], + "๐Ÿป": ["drink", "beers"], + "๐Ÿผ": ["baby bottle"], + "๐Ÿฝ๏ธ": ["knife fork plate", "place setting"], + "๐Ÿพ": ["champagne"], + "๐Ÿฟ": ["food", "popcorn"], + "๐ŸŽ€": ["ribbon"], + "๐ŸŽ": ["gift"], + "๐ŸŽ‚": ["food", "cake", "birthday cake", "birthday"], + "๐ŸŽƒ": ["jack o lantern"], + "๐ŸŽ„": ["christmas tree"], + "๐ŸŽ…": ["santa"], + "๐ŸŽ†": ["fireworks"], + "๐ŸŽ‡": ["sparkler"], + "๐ŸŽˆ": ["balloon"], + "๐ŸŽ‰": ["tada"], + "๐ŸŽŠ": ["confetti ball"], + "๐ŸŽ‹": ["tanabata tree"], + "๐ŸŽŒ": ["crossed flags"], + "๐ŸŽ": ["bamboo"], + "๐ŸŽŽ": ["dolls"], + "๐ŸŽ": ["flags"], + "๐ŸŽ": ["wind chime"], + "๐ŸŽ‘": ["rice scene"], + "๐ŸŽ’": ["school satchel", "backpack"], + "๐ŸŽ“": ["mortar board"], + "๐ŸŽ–๏ธ": ["medal"], + "๐ŸŽ—๏ธ": ["reminder ribbon"], + "๐ŸŽ™๏ธ": ["studio microphone"], + "๐ŸŽš๏ธ": ["level slider", "volume slider"], + "๐ŸŽ›๏ธ": ["control knobs"], + "๐ŸŽž๏ธ": ["film frames"], + "๐ŸŽŸ๏ธ": ["admission tickets"], + "๐ŸŽ ": ["carousel horse"], + "๐ŸŽก": ["ferris wheel"], + "๐ŸŽข": ["roller coaster"], + "๐ŸŽฃ": ["fishing pole and fish"], + "๐ŸŽค": ["microphone"], + "๐ŸŽฅ": ["movie camera"], + "๐ŸŽฆ": ["cinema"], + "๐ŸŽง": ["headphones"], + "๐ŸŽจ": ["art"], + "๐ŸŽฉ": ["tophat"], + "๐ŸŽช": ["circus tent"], + "๐ŸŽซ": ["ticket"], + "๐ŸŽฌ": ["clapper"], + "๐ŸŽญ": ["performing arts"], + "๐ŸŽฎ": ["video game"], + "๐ŸŽฏ": ["dart"], + "๐ŸŽฐ": ["slot machine"], + "๐ŸŽฑ": ["8ball"], + "๐ŸŽฒ": ["die", "dice", "game die"], + "๐ŸŽณ": ["bowling"], + "๐ŸŽด": ["flower playing cards"], + "๐ŸŽต": ["musical note"], + "๐ŸŽถ": ["notes"], + "๐ŸŽท": ["saxophone"], + "๐ŸŽธ": ["guitar"], + "๐ŸŽน": ["musical keyboard"], + "๐ŸŽบ": ["trumpet"], + "๐ŸŽป": ["violin"], + "๐ŸŽผ": ["musical score"], + "๐ŸŽฝ": ["running shirt with sash"], + "๐ŸŽพ": ["tennis"], + "๐ŸŽฟ": ["ski"], + "๐Ÿ€": ["basketball"], + "๐Ÿ": ["flag checkered", "checkered flag"], + "๐Ÿ‚": ["snowboarder"], + "๐Ÿƒโ€โ™€๏ธ": ["running"], + "๐Ÿƒโ€โ™‚๏ธ": ["running"], + "๐Ÿ„โ€โ™€๏ธ": ["surfing"], + "๐Ÿ„โ€โ™‚๏ธ": ["surfing"], + "๐Ÿ…": ["sports medal"], + "๐Ÿ†": ["trophy"], + "๐Ÿ‡": ["horse racing"], + "๐Ÿˆ": ["football"], + "๐Ÿ‰": ["rugby football"], + "๐ŸŠโ€โ™€๏ธ": ["swimming"], + "๐ŸŠโ€โ™‚๏ธ": ["swimming"], + "๐Ÿ‹๏ธโ€โ™€๏ธ": ["lifting weights"], + "๐Ÿ‹๏ธโ€โ™‚๏ธ": ["lifting weights"], + "๐ŸŒ๏ธโ€โ™€๏ธ": ["golfing"], + "๐ŸŒ๏ธโ€โ™‚๏ธ": ["golfing"], + "๐Ÿ๏ธ": ["racing motorcycle"], + "๐ŸŽ๏ธ": ["racing car"], + "๐Ÿ": ["cricket bat and ball"], + "๐Ÿ": ["volleyball"], + "๐Ÿ‘": ["field hockey stick and ball"], + "๐Ÿ’": ["ice hockey stick and puck"], + "๐Ÿ“": ["table tennis paddle and ball"], + "๐Ÿ”๏ธ": ["snow capped mountain"], + "๐Ÿ•๏ธ": ["camping"], + "๐Ÿ–๏ธ": ["beach with umbrella"], + "๐Ÿ—๏ธ": ["building construction"], + "๐Ÿ˜๏ธ": ["house buildings"], + "๐Ÿ™๏ธ": ["cityscape"], + "๐Ÿš๏ธ": ["derelict house building"], + "๐Ÿ›๏ธ": ["classical building"], + "๐Ÿœ๏ธ": ["desert"], + "๐Ÿ๏ธ": ["desert island"], + "๐Ÿž๏ธ": ["national park"], + "๐ŸŸ๏ธ": ["stadium"], + "๐Ÿ ": ["house"], + "๐Ÿก": ["house with garden"], + "๐Ÿข": ["office"], + "๐Ÿฃ": ["post office"], + "๐Ÿค": ["european post office"], + "๐Ÿฅ": ["hospital"], + "๐Ÿฆ": ["bank"], + "๐Ÿง": ["atm"], + "๐Ÿจ": ["hotel"], + "๐Ÿฉ": ["love hotel"], + "๐Ÿช": ["convenience store"], + "๐Ÿซ": ["school"], + "๐Ÿฌ": ["department store"], + "๐Ÿญ": ["factory"], + "๐Ÿฎ": ["izakaya lantern", "lantern"], + "๐Ÿฏ": ["japanese castle"], + "๐Ÿฐ": ["european castle"], + "๐Ÿณ๏ธโ€๐ŸŒˆ": ["flag rainbow"], + "๐Ÿณ๏ธโ€โšง๏ธ": ["flag transgender"], + "๐Ÿณ๏ธ": ["flag white", "waving white flag"], + "๐Ÿดโ€โ˜ ๏ธ": ["flag pirate", "pirate flag"], + "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": ["flag england"], + "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": ["flag scotland"], + "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": ["flag wales"], + "๐Ÿด": ["flag black", "waving black flag"], + "๐Ÿต๏ธ": ["rosette"], + "๐Ÿท๏ธ": ["label"], + "๐Ÿธ": ["badminton racquet and shuttlecock"], + "๐Ÿน": ["bow and arrow"], + "๐Ÿบ": ["amphora"], + "๐Ÿ€": ["rat"], + "๐Ÿ": ["mouse"], + "๐Ÿ‚": ["ox"], + "๐Ÿƒ": ["water buffalo"], + "๐Ÿ„": ["cow"], + "๐Ÿ…": ["tiger"], + "๐Ÿ†": ["leopard"], + "๐Ÿ‡": ["rabbit"], + "๐Ÿˆโ€โฌ›": ["black cat"], + "๐Ÿˆ": ["cat"], + "๐Ÿ‰": ["dragon"], + "๐ŸŠ": ["crocodile"], + "๐Ÿ‹": ["whale"], + "๐ŸŒ": ["snail"], + "๐Ÿ": ["snake"], + "๐ŸŽ": ["racehorse"], + "๐Ÿ": ["ram"], + "๐Ÿ": ["goat"], + "๐Ÿ‘": ["sheep"], + "๐Ÿ’": ["monkey"], + "๐Ÿ“": ["rooster"], + "๐Ÿ”": ["chicken"], + "๐Ÿ•โ€๐Ÿฆบ": ["service dog"], + "๐Ÿ•": ["dog"], + "๐Ÿ–": ["pig"], + "๐Ÿ—": ["boar"], + "๐Ÿ˜": ["elephant"], + "๐Ÿ™": ["octopus"], + "๐Ÿš": ["shell"], + "๐Ÿ›": ["bug"], + "๐Ÿœ": ["ant"], + "๐Ÿ": ["bee", "honeybee"], + "๐Ÿž": ["ladybug", "lady beetle"], + "๐ŸŸ": ["fish"], + "๐Ÿ ": ["tropical fish"], + "๐Ÿก": ["blowfish"], + "๐Ÿข": ["turtle"], + "๐Ÿฃ": ["hatching chick"], + "๐Ÿค": ["baby chick"], + "๐Ÿฅ": ["hatched chick"], + "๐Ÿฆโ€โฌ›": ["black bird"], + "๐Ÿฆ": ["bird"], + "๐Ÿง": ["penguin"], + "๐Ÿจ": ["koala"], + "๐Ÿฉ": ["poodle"], + "๐Ÿช": ["dromedary camel"], + "๐Ÿซ": ["camel"], + "๐Ÿฌ": ["dolphin", "flipper"], + "๐Ÿฏ": ["tiger"], + "๐Ÿฐ": ["rabbit"], + "๐Ÿฒ": ["dragon face"], + "๐Ÿณ": ["whale"], + "๐Ÿด": ["horse"], + "๐Ÿต": ["monkey face"], + "๐Ÿถ": ["dog"], + "๐Ÿท": ["pig"], + "๐Ÿธ": ["frog"], + "๐Ÿน": ["hamster"], + "๐Ÿบ": ["wolf"], + "๐Ÿปโ€โ„๏ธ": ["polar bear"], + "๐Ÿป": ["bear"], + "๐Ÿผ": ["panda face"], + "๐Ÿฝ": ["pig nose"], + "๐Ÿพ": ["feet", "paw prints"], + "๐Ÿฟ๏ธ": ["chipmunk"], + "๐Ÿ‘€": ["eyes"], + "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ": ["eye in speech bubble"], + "๐Ÿ‘๏ธ": ["eye"], + "๐Ÿ‘‚": ["ear"], + "๐Ÿ‘ƒ": ["nose"], + "๐Ÿ‘„": ["lips"], + "๐Ÿ‘…": ["tongue"], + "๐Ÿ‘†": ["point up"], + "๐Ÿ‘‡": ["point down"], + "๐Ÿ‘ˆ": ["point left"], + "๐Ÿ‘‰": ["point right"], + "๐Ÿ‘Š": ["facepunch", "punch"], + "๐Ÿ‘‹": ["wave"], + "๐Ÿ‘Œ": ["ok hand"], + "๐Ÿ‘": ["+1", "thumbsup"], + "๐Ÿ‘Ž": ["-1", "thumbsdown"], + "๐Ÿ‘": ["clap"], + "๐Ÿ‘": ["open hands"], + "๐Ÿ‘‘": ["crown"], + "๐Ÿ‘’": ["hat"], + "๐Ÿ‘“": ["eyeglasses"], + "๐Ÿ‘”": ["necktie"], + "๐Ÿ‘•": ["shirt", "tshirt"], + "๐Ÿ‘–": ["jeans"], + "๐Ÿ‘—": ["dress"], + "๐Ÿ‘˜": ["kimono"], + "๐Ÿ‘™": ["bikini"], + "๐Ÿ‘š": ["shirt", "clothes"], + "๐Ÿ‘›": ["purse"], + "๐Ÿ‘œ": ["handbag"], + "๐Ÿ‘": ["pouch"], + "๐Ÿ‘ž": ["shoe"], + "๐Ÿ‘Ÿ": ["athletic shoe", "shoe"], + "๐Ÿ‘ ": ["high heel shoe", "shoe"], + "๐Ÿ‘ก": ["sandal", "shoe"], + "๐Ÿ‘ข": ["boot", "shoe"], + "๐Ÿ‘ฃ": ["footprints"], + "๐Ÿ‘ค": ["bust in silhouette"], + "๐Ÿ‘ฅ": ["busts in silhouette"], + "๐Ÿ‘ฆ": ["child"], + "๐Ÿ‘ง": ["child"], + "๐Ÿ‘จโ€๐ŸŒพ": ["farmer"], + "๐Ÿ‘จโ€๐Ÿณ": ["cook"], + "๐Ÿ‘จโ€๐Ÿผ": ["feeding baby"], + "๐Ÿ‘จโ€๐ŸŽ“": ["student"], + "๐Ÿ‘จโ€๐ŸŽค": ["singer"], + "๐Ÿ‘จโ€๐ŸŽจ": ["artist"], + "๐Ÿ‘จโ€๐Ÿซ": ["teacher"], + "๐Ÿ‘จโ€๐Ÿญ": ["factory worker"], + "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["man-boy-boy"], + "๐Ÿ‘จโ€๐Ÿ‘ฆ": ["man-boy"], + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["man-girl-boy"], + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["man-girl-girl"], + "๐Ÿ‘จโ€๐Ÿ‘ง": ["man-girl"], + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ": ["man-man-boy"], + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["man-man-boy-boy"], + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง": ["man-man-girl"], + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["man-man-girl-boy"], + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["man-man-girl-girl"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": ["man-woman-boy", "family"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["man-woman-boy-boy"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": ["man-woman-girl"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["man-woman-girl-boy"], + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["man-woman-girl-girl"], + "๐Ÿ‘จโ€๐Ÿ’ป": ["technologist"], + "๐Ÿ‘จโ€๐Ÿ’ผ": ["office worker"], + "๐Ÿ‘จโ€๐Ÿ”ง": ["mechanic"], + "๐Ÿ‘จโ€๐Ÿ”ฌ": ["scientist"], + "๐Ÿ‘จโ€๐Ÿš€": ["astronaut"], + "๐Ÿ‘จโ€๐Ÿš’": ["firefighter"], + "๐Ÿ‘จโ€๐Ÿฆฏ": ["person with probing cane"], + "๐Ÿ‘จโ€๐Ÿฆฐ": ["red haired person"], + "๐Ÿ‘จโ€๐Ÿฆฑ": ["curly haired person"], + "๐Ÿ‘จโ€๐Ÿฆฒ": ["bald person"], + "๐Ÿ‘จโ€๐Ÿฆณ": ["white haired person"], + "๐Ÿ‘จโ€๐Ÿฆผ": ["person in motorized wheelchair"], + "๐Ÿ‘จโ€๐Ÿฆฝ": ["person in manual wheelchair"], + "๐Ÿ‘จโ€โš•๏ธ": ["doctor"], + "๐Ÿ‘จโ€โš–๏ธ": ["judge"], + "๐Ÿ‘จโ€โœˆ๏ธ": ["pilot"], + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ": ["man-heart-man"], + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": ["man-kiss-man"], + "๐Ÿ‘จ": ["man", "person"], + "๐Ÿ‘ฉโ€๐ŸŒพ": ["farmer"], + "๐Ÿ‘ฉโ€๐Ÿณ": ["cook"], + "๐Ÿ‘ฉโ€๐Ÿผ": ["feeding baby"], + "๐Ÿ‘ฉโ€๐ŸŽ“": ["student"], + "๐Ÿ‘ฉโ€๐ŸŽค": ["singer"], + "๐Ÿ‘ฉโ€๐ŸŽจ": ["artist"], + "๐Ÿ‘ฉโ€๐Ÿซ": ["teacher"], + "๐Ÿ‘ฉโ€๐Ÿญ": ["factory worker"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["woman-boy-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฆ": ["woman-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["woman-girl-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["woman-girl-girl"], + "๐Ÿ‘ฉโ€๐Ÿ‘ง": ["woman-girl"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": ["woman-woman-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": ["woman-woman-boy-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": ["woman-woman-girl"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": ["woman-woman-girl-boy"], + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": ["woman-woman-girl-girl"], + "๐Ÿ‘ฉโ€๐Ÿ’ป": ["technologist"], + "๐Ÿ‘ฉโ€๐Ÿ’ผ": ["office worker"], + "๐Ÿ‘ฉโ€๐Ÿ”ง": ["mechanic"], + "๐Ÿ‘ฉโ€๐Ÿ”ฌ": ["scientist"], + "๐Ÿ‘ฉโ€๐Ÿš€": ["astronaut"], + "๐Ÿ‘ฉโ€๐Ÿš’": ["firefighter"], + "๐Ÿ‘ฉโ€๐Ÿฆฏ": ["person with probing cane"], + "๐Ÿ‘ฉโ€๐Ÿฆฐ": ["red haired person"], + "๐Ÿ‘ฉโ€๐Ÿฆฑ": ["curly haired person"], + "๐Ÿ‘ฉโ€๐Ÿฆฒ": ["bald person"], + "๐Ÿ‘ฉโ€๐Ÿฆณ": ["white haired person"], + "๐Ÿ‘ฉโ€๐Ÿฆผ": ["person in motorized wheelchair"], + "๐Ÿ‘ฉโ€๐Ÿฆฝ": ["person in manual wheelchair"], + "๐Ÿ‘ฉโ€โš•๏ธ": ["doctor"], + "๐Ÿ‘ฉโ€โš–๏ธ": ["judge"], + "๐Ÿ‘ฉโ€โœˆ๏ธ": ["pilot"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ": ["woman-heart-man"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ": ["woman-heart-woman"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": ["woman-kiss-man"], + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ": ["woman-kiss-woman"], + "๐Ÿ‘ฉ": ["woman", "person"], + "๐Ÿ‘ซ": ["man and woman holding hands", "woman and man holding hands", "couple"], + "๐Ÿ‘ฌ": ["two men holding hands", "men holding hands", "couple"], + "๐Ÿ‘ญ": ["two women holding hands", "women holding hands", "couple"], + "๐Ÿ‘ฎโ€โ™€๏ธ": ["police officer", "cop"], + "๐Ÿ‘ฎโ€โ™‚๏ธ": ["police officer", "cop"], + "๐Ÿ‘ฏโ€โ™€๏ธ": ["women-with-bunny-ears-partying", "woman-with-bunny-ears-partying", "dancers"], + "๐Ÿ‘ฏโ€โ™‚๏ธ": ["men-with-bunny-ears-partying", "man-with-bunny-ears-partying"], + "๐Ÿ‘ฐโ€โ™€๏ธ": ["person with veil"], + "๐Ÿ‘ฐโ€โ™‚๏ธ": ["person with veil"], + "๐Ÿ‘ฒ": ["person with gua pi mao"], + "๐Ÿ‘ณโ€โ™€๏ธ": ["person wearing turban", "woman with turban"], + "๐Ÿ‘ณโ€โ™‚๏ธ": ["person wearing turban", "man with turban"], + "๐Ÿ‘ด": ["old person", "old man"], + "๐Ÿ‘ต": ["old person", "old woman"], + "๐Ÿ‘ถ": ["baby"], + "๐Ÿ‘ทโ€โ™€๏ธ": ["construction worker"], + "๐Ÿ‘ทโ€โ™‚๏ธ": ["construction worker"], + "๐Ÿ‘ธ": ["princess"], + "๐Ÿ‘น": ["japanese ogre"], + "๐Ÿ‘บ": ["japanese goblin"], + "๐Ÿ‘ป": ["ghost"], + "๐Ÿ‘ผ": ["angel"], + "๐Ÿ‘ฝ": ["alien"], + "๐Ÿ‘พ": ["space invader"], + "๐Ÿ‘ฟ": ["imp"], + "๐Ÿ’€": ["skull"], + "๐Ÿ’โ€โ™€๏ธ": ["tipping hand", "information desk person"], + "๐Ÿ’โ€โ™‚๏ธ": ["tipping hand", "information desk person"], + "๐Ÿ’‚โ€โ™€๏ธ": ["guard", "guardswoman"], + "๐Ÿ’‚โ€โ™‚๏ธ": ["guard", "guardsman"], + "๐Ÿ’ƒ": ["dancer"], + "๐Ÿ’„": ["lipstick"], + "๐Ÿ’…": ["nail care"], + "๐Ÿ’†โ€โ™€๏ธ": ["getting massage", "massage"], + "๐Ÿ’†โ€โ™‚๏ธ": ["getting massage", "massage"], + "๐Ÿ’‡โ€โ™€๏ธ": ["getting haircut", "haircut"], + "๐Ÿ’‡โ€โ™‚๏ธ": ["getting haircut", "haircut"], + "๐Ÿ’ˆ": ["barber"], + "๐Ÿ’‰": ["syringe"], + "๐Ÿ’Š": ["pill"], + "๐Ÿ’‹": ["kiss"], + "๐Ÿ’Œ": ["love letter"], + "๐Ÿ’": ["ring"], + "๐Ÿ’Ž": ["gem"], + "๐Ÿ’": ["couplekiss"], + "๐Ÿ’": ["bouquet"], + "๐Ÿ’‘": ["couple with heart"], + "๐Ÿ’’": ["wedding"], + "๐Ÿ’“": ["heartbeat"], + "๐Ÿ’”": ["broken heart"], + "๐Ÿ’•": ["two hearts"], + "๐Ÿ’–": ["sparkling heart"], + "๐Ÿ’—": ["heartpulse"], + "๐Ÿ’˜": ["cupid"], + "๐Ÿ’™": ["blue heart"], + "๐Ÿ’š": ["green heart"], + "๐Ÿ’›": ["yellow heart"], + "๐Ÿ’œ": ["purple heart"], + "๐Ÿ’": ["gift heart"], + "๐Ÿ’ž": ["revolving hearts"], + "๐Ÿ’Ÿ": ["heart decoration"], + "๐Ÿ’ ": ["diamond shape with a dot inside"], + "๐Ÿ’ก": ["bulb"], + "๐Ÿ’ข": ["anger"], + "๐Ÿ’ฃ": ["bomb"], + "๐Ÿ’ค": ["zzz"], + "๐Ÿ’ฅ": ["boom", "collision"], + "๐Ÿ’ฆ": ["sweat drops"], + "๐Ÿ’ง": ["droplet"], + "๐Ÿ’จ": ["dash"], + "๐Ÿ’ฉ": ["hankey", "poop", "shit"], + "๐Ÿ’ช": ["muscle"], + "๐Ÿ’ซ": ["dizzy"], + "๐Ÿ’ฌ": ["speech balloon"], + "๐Ÿ’ญ": ["thought balloon"], + "๐Ÿ’ฎ": ["white flower"], + "๐Ÿ’ฏ": ["100"], + "๐Ÿ’ฐ": ["moneybag"], + "๐Ÿ’ฑ": ["currency exchange"], + "๐Ÿ’ฒ": ["heavy dollar sign"], + "๐Ÿ’ณ": ["credit card"], + "๐Ÿ’ด": ["yen"], + "๐Ÿ’ต": ["dollar"], + "๐Ÿ’ถ": ["euro"], + "๐Ÿ’ท": ["pound"], + "๐Ÿ’ธ": ["money with wings"], + "๐Ÿ’น": ["chart"], + "๐Ÿ’บ": ["seat"], + "๐Ÿ’ป": ["computer"], + "๐Ÿ’ผ": ["briefcase"], + "๐Ÿ’ฝ": ["minidisc"], + "๐Ÿ’พ": ["floppy disk"], + "๐Ÿ’ฟ": ["cd"], + "๐Ÿ“€": ["dvd"], + "๐Ÿ“": ["file folder"], + "๐Ÿ“‚": ["open file folder"], + "๐Ÿ“ƒ": ["page with curl"], + "๐Ÿ“„": ["page facing up"], + "๐Ÿ“…": ["date"], + "๐Ÿ“†": ["calendar"], + "๐Ÿ“‡": ["card index"], + "๐Ÿ“ˆ": ["chart with upwards trend", "chart up", "line goes up"], + "๐Ÿ“‰": ["chart with downwards trend", "chart down", "line goes down"], + "๐Ÿ“Š": ["bar chart"], + "๐Ÿ“‹": ["clipboard"], + "๐Ÿ“Œ": ["pushpin"], + "๐Ÿ“": ["round pushpin"], + "๐Ÿ“Ž": ["paperclip"], + "๐Ÿ“": ["straight ruler"], + "๐Ÿ“": ["triangular ruler"], + "๐Ÿ“‘": ["bookmark tabs"], + "๐Ÿ“’": ["ledger"], + "๐Ÿ““": ["notebook"], + "๐Ÿ“”": ["notebook with decorative cover"], + "๐Ÿ“•": ["closed book"], + "๐Ÿ“–": ["book", "open book"], + "๐Ÿ“—": ["green book"], + "๐Ÿ“˜": ["blue book"], + "๐Ÿ“™": ["orange book"], + "๐Ÿ“š": ["books"], + "๐Ÿ“›": ["name badge"], + "๐Ÿ“œ": ["scroll"], + "๐Ÿ“": ["memo", "pencil"], + "๐Ÿ“ž": ["telephone receiver"], + "๐Ÿ“Ÿ": ["pager"], + "๐Ÿ“ ": ["fax"], + "๐Ÿ“ก": ["satellite antenna"], + "๐Ÿ“ข": ["loudspeaker"], + "๐Ÿ“ฃ": ["mega"], + "๐Ÿ“ค": ["outbox tray"], + "๐Ÿ“ฅ": ["inbox tray"], + "๐Ÿ“ฆ": ["package"], + "๐Ÿ“ง": ["email", "e-mail"], + "๐Ÿ“จ": ["incoming envelope"], + "๐Ÿ“ฉ": ["envelope with arrow"], + "๐Ÿ“ช": ["mailbox closed"], + "๐Ÿ“ซ": ["mailbox"], + "๐Ÿ“ฌ": ["mailbox with mail"], + "๐Ÿ“ญ": ["mailbox with no mail"], + "๐Ÿ“ฎ": ["postbox"], + "๐Ÿ“ฏ": ["postal horn"], + "๐Ÿ“ฐ": ["newspaper"], + "๐Ÿ“ฑ": ["iphone"], + "๐Ÿ“ฒ": ["calling"], + "๐Ÿ“ณ": ["vibration mode"], + "๐Ÿ“ด": ["mobile phone off"], + "๐Ÿ“ต": ["no mobile phones"], + "๐Ÿ“ถ": ["signal strength"], + "๐Ÿ“ท": ["camera"], + "๐Ÿ“ธ": ["camera with flash"], + "๐Ÿ“น": ["video camera"], + "๐Ÿ“บ": ["tv"], + "๐Ÿ“ป": ["radio"], + "๐Ÿ“ผ": ["vhs"], + "๐Ÿ“ฝ๏ธ": ["film projector"], + "๐Ÿ“ฟ": ["prayer beads"], + "๐Ÿ”€": ["twisted rightwards arrows"], + "๐Ÿ”": ["repeat"], + "๐Ÿ”‚": ["repeat one"], + "๐Ÿ”ƒ": ["arrows clockwise"], + "๐Ÿ”„": ["arrows counterclockwise"], + "๐Ÿ”…": ["low brightness"], + "๐Ÿ”†": ["high brightness"], + "๐Ÿ”‡": ["mute"], + "๐Ÿ”ˆ": ["speaker"], + "๐Ÿ”‰": ["sound"], + "๐Ÿ”Š": ["loud sound"], + "๐Ÿ”‹": ["battery"], + "๐Ÿ”Œ": ["electric plug"], + "๐Ÿ”": ["mag"], + "๐Ÿ”Ž": ["mag right"], + "๐Ÿ”": ["lock with ink pen"], + "๐Ÿ”": ["closed lock with key"], + "๐Ÿ”‘": ["key"], + "๐Ÿ”’": ["lock"], + "๐Ÿ”“": ["unlock"], + "๐Ÿ””": ["bell"], + "๐Ÿ”•": ["no bell"], + "๐Ÿ”–": ["bookmark"], + "๐Ÿ”—": ["link"], + "๐Ÿ”˜": ["radio button"], + "๐Ÿ”™": ["back"], + "๐Ÿ”š": ["end"], + "๐Ÿ”›": ["on"], + "๐Ÿ”œ": ["soon"], + "๐Ÿ”": ["top"], + "๐Ÿ”ž": ["underage"], + "๐Ÿ”Ÿ": ["keycap ten"], + "๐Ÿ” ": ["capital abcd"], + "๐Ÿ”ก": ["abcd"], + "๐Ÿ”ข": ["1234"], + "๐Ÿ”ฃ": ["symbols"], + "๐Ÿ”ค": ["abc"], + "๐Ÿ”ฅ": ["fire"], + "๐Ÿ”ฆ": ["flashlight"], + "๐Ÿ”ง": ["wrench"], + "๐Ÿ”จ": ["hammer"], + "๐Ÿ”ฉ": ["nut and bolt"], + "๐Ÿ”ช": ["hocho", "knife"], + "๐Ÿ”ซ": ["gun"], + "๐Ÿ”ฌ": ["microscope"], + "๐Ÿ”ญ": ["telescope"], + "๐Ÿ”ฎ": ["crystal ball"], + "๐Ÿ”ฏ": ["six pointed star"], + "๐Ÿ”ฐ": ["beginner"], + "๐Ÿ”ฑ": ["trident"], + "๐Ÿ”ฒ": ["black square button"], + "๐Ÿ”ณ": ["white square button"], + "๐Ÿ”ด": ["red circle"], + "๐Ÿ”ต": ["large blue circle"], + "๐Ÿ”ถ": ["large orange diamond"], + "๐Ÿ”ท": ["large blue diamond"], + "๐Ÿ”ธ": ["small orange diamond"], + "๐Ÿ”น": ["small blue diamond"], + "๐Ÿ”บ": ["small red triangle"], + "๐Ÿ”ป": ["small red triangle down"], + "๐Ÿ”ผ": ["arrow up small"], + "๐Ÿ”ฝ": ["arrow down small"], + "๐Ÿ•‰๏ธ": ["om symbol"], + "๐Ÿ•Š๏ธ": ["dove of peace"], + "๐Ÿ•‹": ["kaaba"], + "๐Ÿ•Œ": ["mosque"], + "๐Ÿ•": ["synagogue"], + "๐Ÿ•Ž": ["menorah with nine branches"], + "๐Ÿ•": ["clock 0100", "clock 1300", "clock1"], + "๐Ÿ•‘": ["clock 0200", "clock 1400", "clock2"], + "๐Ÿ•’": ["clock 0300", "clock 1500", "clock3"], + "๐Ÿ•“": ["clock 0400", "clock 1600", "clock4"], + "๐Ÿ•”": ["clock 0500", "clock 1700", "clock5"], + "๐Ÿ••": ["clock 0600", "clock 1800", "clock6"], + "๐Ÿ•–": ["clock 0700", "clock 1900", "clock7"], + "๐Ÿ•—": ["clock 0800", "clock 2000", "clock8"], + "๐Ÿ•˜": ["clock 0900", "clock 2100", "clock9"], + "๐Ÿ•™": ["clock 1000", "clock 2200", "clock10"], + "๐Ÿ•š": ["clock 1100", "clock 2300", "clock11"], + "๐Ÿ•›": ["clock 1200", "clock 2400", "clock12"], + "๐Ÿ•œ": ["clock 0130", "clock 1330", "clock130"], + "๐Ÿ•": ["clock 0230", "clock 1430", "clock230"], + "๐Ÿ•ž": ["clock 0330", "clock 1530", "clock330"], + "๐Ÿ•Ÿ": ["clock 0430", "clock 1630", "clock430"], + "๐Ÿ• ": ["clock 0530", "clock 1730", "clock530"], + "๐Ÿ•ก": ["clock 0630", "clock 1830", "clock630"], + "๐Ÿ•ข": ["clock 0730", "clock 1930", "clock730"], + "๐Ÿ•ฃ": ["clock 0830", "clock 2030", "clock830"], + "๐Ÿ•ค": ["clock 0930", "clock 2130", "clock930"], + "๐Ÿ•ฅ": ["clock 1030", "clock 2230", "clock1030"], + "๐Ÿ•ฆ": ["clock 1130", "clock 2330", "clock1130"], + "๐Ÿ•ง": ["clock 0030", "clock 1230", "clock1230"], + "๐Ÿ•ฏ๏ธ": ["candle"], + "๐Ÿ•ฐ๏ธ": ["mantelpiece clock"], + "๐Ÿ•ณ๏ธ": ["hole"], + "๐Ÿ•ด๏ธ": ["man in business suit levitating"], + "๐Ÿ•ต๏ธโ€โ™€๏ธ": ["detective", "sleuth or spy"], + "๐Ÿ•ต๏ธโ€โ™‚๏ธ": ["detective", "sleuth or spy"], + "๐Ÿ•ถ๏ธ": ["dark sunglasses"], + "๐Ÿ•ท๏ธ": ["spider"], + "๐Ÿ•ธ๏ธ": ["spider web"], + "๐Ÿ•น๏ธ": ["joystick"], + "๐Ÿ•บ": ["dancing"], + "๐Ÿ–‡๏ธ": ["linked paperclips"], + "๐Ÿ–Š๏ธ": ["ballpoint pen", "lower left ballpoint pen"], + "๐Ÿ–‹๏ธ": ["fountain pen", "lower left fountain pen"], + "๐Ÿ–Œ๏ธ": ["paintbrush", "lower left paintbrush"], + "๐Ÿ–๏ธ": ["crayon", "lower left crayon"], + "๐Ÿ–๏ธ": ["hand", "raised hand with fingers splayed"], + "๐Ÿ–•": ["middle finger", "reversed hand with middle finger extended"], + "๐Ÿ––": ["live long and prosper", "llap", "spock hand", "hand"], + "๐Ÿ–ค": ["black heart"], + "๐Ÿ–ฅ๏ธ": ["computer", "desktop computer"], + "๐Ÿ–จ๏ธ": ["printer"], + "๐Ÿ–ฑ๏ธ": ["mouse", "three button mouse"], + "๐Ÿ–ฒ๏ธ": ["trackball"], + "๐Ÿ–ผ๏ธ": ["frame with picture"], + "๐Ÿ—‚๏ธ": ["card index dividers"], + "๐Ÿ—ƒ๏ธ": ["card file box"], + "๐Ÿ—„๏ธ": ["file cabinet"], + "๐Ÿ—‘๏ธ": ["wastebasket", "garbage"], + "๐Ÿ—’๏ธ": ["note pad", "spiral note pad"], + "๐Ÿ—“๏ธ": ["calendar", "spiral calendar pad"], + "๐Ÿ—œ๏ธ": ["clamp", "compression"], + "๐Ÿ—๏ธ": ["old key"], + "๐Ÿ—ž๏ธ": ["rolled up newspaper"], + "๐Ÿ—ก๏ธ": ["dagger knife"], + "๐Ÿ—ฃ๏ธ": ["speaking head in silhouette"], + "๐Ÿ—จ๏ธ": ["left speech bubble"], + "๐Ÿ—ฏ๏ธ": ["right anger bubble"], + "๐Ÿ—ณ๏ธ": ["ballot box with ballot"], + "๐Ÿ—บ๏ธ": ["world map"], + "๐Ÿ—ป": ["mount fuji"], + "๐Ÿ—ผ": ["tokyo tower"], + "๐Ÿ—ฝ": ["statue of liberty"], + "๐Ÿ—พ": ["japan"], + "๐Ÿ—ฟ": ["moyai"], + "๐Ÿ˜€": ["face", "grinning"], + "๐Ÿ˜": ["face", "grin"], + "๐Ÿ˜‚": ["face", "joy"], + "๐Ÿ˜ƒ": ["face", "smiley"], + "๐Ÿ˜„": ["face", "smile"], + "๐Ÿ˜…": ["face", "sweat smile"], + "๐Ÿ˜†": ["face", "laughing", "satisfied"], + "๐Ÿ˜‡": ["face", "innocent"], + "๐Ÿ˜ˆ": ["face", "smiling imp"], + "๐Ÿ˜‰": ["face", "wink"], + "๐Ÿ˜Š": ["face", "blush"], + "๐Ÿ˜‹": ["face", "yum"], + "๐Ÿ˜Œ": ["face", "relieved"], + "๐Ÿ˜": ["face", "heart eyes"], + "๐Ÿ˜Ž": ["face", "sunglasses"], + "๐Ÿ˜": ["face", "smirk"], + "๐Ÿ˜": ["face", "neutral face"], + "๐Ÿ˜‘": ["face", "expressionless"], + "๐Ÿ˜’": ["face", "unamused"], + "๐Ÿ˜“": ["face", "sweat"], + "๐Ÿ˜”": ["face", "pensive"], + "๐Ÿ˜•": ["face", "confused"], + "๐Ÿ˜–": ["face", "confounded"], + "๐Ÿ˜—": ["face", "kissing"], + "๐Ÿ˜˜": ["face", "kissing heart"], + "๐Ÿ˜™": ["face", "kissing smiling eyes"], + "๐Ÿ˜š": ["face", "kissing closed eyes"], + "๐Ÿ˜›": ["face", "stuck out tongue"], + "๐Ÿ˜œ": ["face", "stuck out tongue winking eye"], + "๐Ÿ˜": ["face", "stuck out tongue closed eyes"], + "๐Ÿ˜ž": ["face", "disappointed"], + "๐Ÿ˜Ÿ": ["face", "worried"], + "๐Ÿ˜ ": ["face", "angry"], + "๐Ÿ˜ก": ["face", "rage"], + "๐Ÿ˜ข": ["face", "cry"], + "๐Ÿ˜ฃ": ["face", "persevere"], + "๐Ÿ˜ค": ["face", "triumph"], + "๐Ÿ˜ฅ": ["face", "disappointed relieved"], + "๐Ÿ˜ฆ": ["face", "frowning"], + "๐Ÿ˜ง": ["face", "anguished"], + "๐Ÿ˜จ": ["face", "fearful"], + "๐Ÿ˜ฉ": ["face", "weary"], + "๐Ÿ˜ช": ["face", "sleepy"], + "๐Ÿ˜ซ": ["face", "tired face"], + "๐Ÿ˜ฌ": ["face", "grimacing"], + "๐Ÿ˜ญ": ["face", "sob"], + "๐Ÿ˜ฎโ€๐Ÿ’จ": ["face", "face exhaling"], + "๐Ÿ˜ฎ": ["face", "open mouth"], + "๐Ÿ˜ฏ": ["face", "hushed"], + "๐Ÿ˜ฐ": ["face", "cold sweat"], + "๐Ÿ˜ฑ": ["face", "scream"], + "๐Ÿ˜ฒ": ["face", "astonished"], + "๐Ÿ˜ณ": ["face", "flushed"], + "๐Ÿ˜ด": ["face", "sleeping"], + "๐Ÿ˜ตโ€๐Ÿ’ซ": ["face", "face with spiral eyes"], + "๐Ÿ˜ต": ["face", "dizzy face"], + "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": ["face", "face in clouds"], + "๐Ÿ˜ถ": ["face", "no mouth"], + "๐Ÿ˜ท": ["face", "mask"], + "๐Ÿ˜ธ": ["smile cat"], + "๐Ÿ˜น": ["joy cat"], + "๐Ÿ˜บ": ["smiley cat"], + "๐Ÿ˜ป": ["heart eyes cat"], + "๐Ÿ˜ผ": ["smirk cat"], + "๐Ÿ˜ฝ": ["kissing cat"], + "๐Ÿ˜พ": ["pouting cat"], + "๐Ÿ˜ฟ": ["crying cat face"], + "๐Ÿ™€": ["scream cat"], + "๐Ÿ™": ["face", "slightly frowning face"], + "๐Ÿ™‚": ["face", "slightly smiling face"], + "๐Ÿ™ƒ": ["face", "upside down face"], + "๐Ÿ™„": ["face", "face with rolling eyes"], + "๐Ÿ™…โ€โ™€๏ธ": ["gesturing no", "no good"], + "๐Ÿ™…โ€โ™‚๏ธ": ["gesturing no", "no good"], + "๐Ÿ™†โ€โ™€๏ธ": ["gesturing ok", "ok"], + "๐Ÿ™†โ€โ™‚๏ธ": ["gesturing ok", "ok"], + "๐Ÿ™‡โ€โ™€๏ธ": ["bow", "bowing"], + "๐Ÿ™‡โ€โ™‚๏ธ": ["bow", "bowing"], + "๐Ÿ™‡": ["bow", "bowing"], + "๐Ÿ™ˆ": ["see no evil"], + "๐Ÿ™‰": ["hear no evil"], + "๐Ÿ™Š": ["speak no evil"], + "๐Ÿ™‹โ€โ™€๏ธ": ["raising hand"], + "๐Ÿ™‹โ€โ™‚๏ธ": ["raising hand"], + "๐Ÿ™Œ": ["raised hands"], + "๐Ÿ™โ€โ™€๏ธ": ["frowning", "person frowning"], + "๐Ÿ™โ€โ™‚๏ธ": ["frowning", "person frowning"], + "๐Ÿ™Žโ€โ™€๏ธ": ["pouting", "person with pouting face"], + "๐Ÿ™Žโ€โ™‚๏ธ": ["pouting", "person with pouting face"], + "๐Ÿ™": ["pray", "thanks"], + "๐Ÿš€": ["rocket"], + "๐Ÿš": ["helicopter"], + "๐Ÿš‚": ["steam locomotive"], + "๐Ÿšƒ": ["railway car"], + "๐Ÿš„": ["bullettrain side"], + "๐Ÿš…": ["bullettrain front"], + "๐Ÿš†": ["train"], + "๐Ÿš‡": ["metro"], + "๐Ÿšˆ": ["light rail"], + "๐Ÿš‰": ["station"], + "๐ŸšŠ": ["tram"], + "๐Ÿš‹": ["train"], + "๐ŸšŒ": ["bus"], + "๐Ÿš": ["oncoming bus"], + "๐ŸšŽ": ["trolleybus"], + "๐Ÿš": ["busstop"], + "๐Ÿš": ["minibus"], + "๐Ÿš‘": ["ambulance"], + "๐Ÿš’": ["fire engine"], + "๐Ÿš“": ["police car"], + "๐Ÿš”": ["oncoming police car", "police car"], + "๐Ÿš•": ["taxi"], + "๐Ÿš–": ["oncoming taxi", "taxi"], + "๐Ÿš—": ["car", "red car"], + "๐Ÿš˜": ["car", "oncoming car", "automobile", "oncoming automobile"], + "๐Ÿš™": ["blue car"], + "๐Ÿšš": ["truck"], + "๐Ÿš›": ["articulated lorry"], + "๐Ÿšœ": ["tractor"], + "๐Ÿš": ["monorail"], + "๐Ÿšž": ["mountain railway"], + "๐ŸšŸ": ["suspension railway"], + "๐Ÿš ": ["mountain cableway"], + "๐Ÿšก": ["aerial tramway"], + "๐Ÿšข": ["ship"], + "๐Ÿšฃโ€โ™€๏ธ": ["rowing boat", "rowboat"], + "๐Ÿšฃโ€โ™‚๏ธ": ["rowing boat", "rowboat"], + "๐Ÿšค": ["speedboat"], + "๐Ÿšฅ": ["traffic light", "horizontal traffic light"], + "๐Ÿšฆ": ["traffic light", "vertical traffic light"], + "๐Ÿšง": ["construction"], + "๐Ÿšจ": ["rotating light"], + "๐Ÿšฉ": ["triangular flag on post"], + "๐Ÿšช": ["door"], + "๐Ÿšซ": ["no entry sign", "no sign"], + "๐Ÿšฌ": ["smoking"], + "๐Ÿšญ": ["no smoking"], + "๐Ÿšฎ": ["put litter in its place"], + "๐Ÿšฏ": ["do not litter"], + "๐Ÿšฐ": ["potable water"], + "๐Ÿšฑ": ["non-potable water"], + "๐Ÿšฒ": ["bike"], + "๐Ÿšณ": ["no bicycles"], + "๐Ÿšดโ€โ™€๏ธ": ["biking", "bicyclist"], + "๐Ÿšดโ€โ™‚๏ธ": ["biking", "bicyclist"], + "๐Ÿšตโ€โ™€๏ธ": ["mountain biking", "mountain bicyclist"], + "๐Ÿšตโ€โ™‚๏ธ": ["mountain-biking", "mountain bicyclist"], + "๐Ÿšถโ€โ™€๏ธ": ["walking"], + "๐Ÿšถโ€โ™‚๏ธ": ["walking"], + "๐Ÿšท": ["no pedestrians"], + "๐Ÿšธ": ["children crossing"], + "๐Ÿšน": ["mens"], + "๐Ÿšบ": ["womens"], + "๐Ÿšป": ["restroom"], + "๐Ÿšผ": ["baby symbol"], + "๐Ÿšฝ": ["toilet"], + "๐Ÿšพ": ["wc"], + "๐Ÿšฟ": ["shower"], + "๐Ÿ›€": ["bath"], + "๐Ÿ›": ["bathtub"], + "๐Ÿ›‚": ["passport control"], + "๐Ÿ›ƒ": ["customs"], + "๐Ÿ›„": ["baggage claim"], + "๐Ÿ›…": ["left luggage"], + "๐Ÿ›‹๏ธ": ["couch and lamp"], + "๐Ÿ›Œ": ["sleeping accommodation"], + "๐Ÿ›๏ธ": ["shopping bags"], + "๐Ÿ›Ž๏ธ": ["bellhop bell"], + "๐Ÿ›๏ธ": ["bed"], + "๐Ÿ›": ["place of worship"], + "๐Ÿ›‘": ["octagonal sign"], + "๐Ÿ›’": ["shopping trolley"], + "๐Ÿ›•": ["hindu temple"], + "๐Ÿ›–": ["hut"], + "๐Ÿ›—": ["elevator"], + "๐Ÿ›œ": ["wireless"], + "๐Ÿ›": ["playground slide"], + "๐Ÿ›ž": ["wheel"], + "๐Ÿ›Ÿ": ["ring buoy"], + "๐Ÿ› ๏ธ": ["hammer and wrench"], + "๐Ÿ›ก๏ธ": ["shield"], + "๐Ÿ›ข๏ธ": ["oil drum"], + "๐Ÿ›ฃ๏ธ": ["motorway"], + "๐Ÿ›ค๏ธ": ["railway track"], + "๐Ÿ›ฅ๏ธ": ["motor boat"], + "๐Ÿ›ฉ๏ธ": ["small airplane"], + "๐Ÿ›ซ": ["airplane departure"], + "๐Ÿ›ฌ": ["airplane arriving"], + "๐Ÿ›ฐ๏ธ": ["satellite"], + "๐Ÿ›ณ๏ธ": ["passenger ship"], + "๐Ÿ›ด": ["scooter"], + "๐Ÿ›ต": ["motor scooter"], + "๐Ÿ›ถ": ["canoe"], + "๐Ÿ›ท": ["sled"], + "๐Ÿ›ธ": ["flying saucer"], + "๐Ÿ›น": ["skateboard"], + "๐Ÿ›บ": ["auto rickshaw"], + "๐Ÿ›ป": ["pickup truck"], + "๐Ÿ›ผ": ["roller skate"], + "๐ŸŸ ": ["large orange circle"], + "๐ŸŸก": ["large yellow circle"], + "๐ŸŸข": ["large green circle"], + "๐ŸŸฃ": ["large purple circle"], + "๐ŸŸค": ["large brown circle"], + "๐ŸŸฅ": ["large red square"], + "๐ŸŸฆ": ["large blue square"], + "๐ŸŸง": ["large orange square"], + "๐ŸŸจ": ["large yellow square"], + "๐ŸŸฉ": ["large green square"], + "๐ŸŸช": ["large purple square"], + "๐ŸŸซ": ["large brown square"], + "๐ŸŸฐ": ["heavy equals sign"], + "๐ŸคŒ": ["pinched fingers"], + "๐Ÿค": ["white heart"], + "๐ŸคŽ": ["brown heart"], + "๐Ÿค": ["hand", "pinching hand"], + "๐Ÿค": ["face", "zipper mouth face"], + "๐Ÿค‘": ["face", "money mouth face"], + "๐Ÿค’": ["face", "face with thermometer"], + "๐Ÿค“": ["face", "nerd face"], + "๐Ÿค”": ["face", "thinking face"], + "๐Ÿค•": ["face", "face with head bandage"], + "๐Ÿค–": ["face", "robot face"], + "๐Ÿค—": ["face", "hugging face"], + "๐Ÿค˜": ["hand", "the horns", "sign of the horns"], + "๐Ÿค™": ["hand", "call me hand"], + "๐Ÿคš": ["hand", "raised back of hand"], + "๐Ÿค›": ["hand", "left-facing fist"], + "๐Ÿคœ": ["hand", "right-facing fist"], + "๐Ÿค": ["hands", "handshake"], + "๐Ÿคž": ["hand", "crossed fingers", "hand with index and middle fingers crossed"], + "๐ŸคŸ": ["hand", "i love you hand sign"], + "๐Ÿค ": ["face", "face with cowboy hat"], + "๐Ÿคก": ["face", "clown face"], + "๐Ÿคข": ["face", "nauseated face"], + "๐Ÿคฃ": ["face", "rolling on the floor laughing"], + "๐Ÿคค": ["face", "drooling face"], + "๐Ÿคฅ": ["face", "lying face"], + "๐Ÿคฆโ€โ™€๏ธ": ["facepalming", "face palm"], + "๐Ÿคฆโ€โ™‚๏ธ": ["facepalming", "face palm"], + "๐Ÿคฆ": ["facepalming", "face palm"], + "๐Ÿคง": ["face", "sneezing face"], + "๐Ÿคจ": ["face", "face with raised eyebrow", "face with one eyebrow raised"], + "๐Ÿคฉ": ["face", "star-struck", "grinning face with star eyes"], + "๐Ÿคช": ["face", "zany face", "grinning face with one large and one small eye"], + "๐Ÿคซ": ["face", "shushing face", "face with finger covering closed lips"], + "๐Ÿคฌ": ["face", "face with symbols on mouth", "serious face with symbols covering mouth"], + "๐Ÿคญ": [ + "face", + "face with hand over mouth", + "smiling face with smiling eyes and hand covering mouth", + ], + "๐Ÿคฎ": ["face", "face vomiting", "face with open mouth vomiting"], + "๐Ÿคฏ": ["face", "exploding head", "shocked face with exploding head"], + "๐Ÿคฐ": ["pregnant"], + "๐Ÿคฑ": ["breast feeding"], + "๐Ÿคฒ": ["palms up together"], + "๐Ÿคณ": ["selfie"], + "๐Ÿคด": ["prince"], + "๐Ÿคตโ€โ™€๏ธ": ["person in tuxedo"], + "๐Ÿคตโ€โ™‚๏ธ": ["person in tuxedo"], + "๐Ÿคต": ["person in tuxedo"], + "๐Ÿคถ": ["mrs claus", "mother christmas"], + "๐Ÿคทโ€โ™€๏ธ": ["shrugging", "shrug"], + "๐Ÿคทโ€โ™‚๏ธ": ["shrugging", "shrug"], + "๐Ÿคท": ["shrugging", "shrug"], + "๐Ÿคธโ€โ™€๏ธ": ["cartwheeling", "person doing cartwheel", "cartwheel"], + "๐Ÿคธโ€โ™‚๏ธ": ["cartwheeling", "person doing cartwheel", "cartwheel"], + "๐Ÿคธ": ["cartwheeling", "person doing cartwheel", "cartwheel"], + "๐Ÿคนโ€โ™€๏ธ": ["juggling"], + "๐Ÿคนโ€โ™‚๏ธ": ["juggling"], + "๐Ÿคน": ["juggling"], + "๐Ÿคบ": ["fencer"], + "๐Ÿคผโ€โ™€๏ธ": ["wrestling"], + "๐Ÿคผโ€โ™‚๏ธ": ["wrestling"], + "๐Ÿคผ": ["wrestlers"], + "๐Ÿคฝโ€โ™€๏ธ": ["water polo"], + "๐Ÿคฝโ€โ™‚๏ธ": ["water polo"], + "๐Ÿคฝ": ["water polo"], + "๐Ÿคพโ€โ™€๏ธ": ["handball"], + "๐Ÿคพโ€โ™‚๏ธ": ["handball"], + "๐Ÿคพ": ["handball"], + "๐Ÿคฟ": ["diving mask"], + "๐Ÿฅ€": ["wilted flower"], + "๐Ÿฅ": ["drum with drumsticks"], + "๐Ÿฅ‚": ["clinking glasses"], + "๐Ÿฅƒ": ["tumbler glass"], + "๐Ÿฅ„": ["spoon"], + "๐Ÿฅ…": ["goal net"], + "๐Ÿฅ‡": ["first place medal"], + "๐Ÿฅˆ": ["second place medal"], + "๐Ÿฅ‰": ["third place medal"], + "๐ŸฅŠ": ["boxing glove"], + "๐Ÿฅ‹": ["martial arts uniform"], + "๐ŸฅŒ": ["curling stone"], + "๐Ÿฅ": ["lacrosse"], + "๐ŸฅŽ": ["softball"], + "๐Ÿฅ": ["flying disc"], + "๐Ÿฅ": ["food", "croissant"], + "๐Ÿฅ‘": ["food", "avocado"], + "๐Ÿฅ’": ["food", "cucumber"], + "๐Ÿฅ“": ["food", "bacon"], + "๐Ÿฅ”": ["food", "potato"], + "๐Ÿฅ•": ["food", "carrot"], + "๐Ÿฅ–": ["food", "baguette bread"], + "๐Ÿฅ—": ["food", "green salad"], + "๐Ÿฅ˜": ["food", "shallow pan of food"], + "๐Ÿฅ™": ["food", "stuffed flatbread"], + "๐Ÿฅš": ["food", "egg"], + "๐Ÿฅ›": ["food", "glass of milk"], + "๐Ÿฅœ": ["food", "peanuts"], + "๐Ÿฅ": ["food", "kiwifruit"], + "๐Ÿฅž": ["food", "pancakes"], + "๐ŸฅŸ": ["food", "dumpling"], + "๐Ÿฅ ": ["food", "fortune cookie"], + "๐Ÿฅก": ["food", "takeout box"], + "๐Ÿฅข": ["chopsticks"], + "๐Ÿฅฃ": ["bowl with spoon"], + "๐Ÿฅค": ["cup with straw"], + "๐Ÿฅฅ": ["food", "coconut"], + "๐Ÿฅฆ": ["food", "broccoli"], + "๐Ÿฅง": ["food", "pie"], + "๐Ÿฅจ": ["food", "pretzel"], + "๐Ÿฅฉ": ["food", "cut of meat"], + "๐Ÿฅช": ["food", "sandwich"], + "๐Ÿฅซ": ["food", "canned food"], + "๐Ÿฅฌ": ["food", "leafy green"], + "๐Ÿฅญ": ["food", "mango"], + "๐Ÿฅฎ": ["food", "moon cake"], + "๐Ÿฅฏ": ["food", "bagel"], + "๐Ÿฅฐ": ["face", "smiling face with 3 hearts"], + "๐Ÿฅฑ": ["face", "yawning face"], + "๐Ÿฅฒ": ["face", "smiling face with tear"], + "๐Ÿฅณ": ["face", "partying face"], + "๐Ÿฅด": ["face", "woozy face"], + "๐Ÿฅต": ["face", "hot face"], + "๐Ÿฅถ": ["face", "cold face"], + "๐Ÿฅท": ["ninja"], + "๐Ÿฅธ": ["face", "disguised face"], + "๐Ÿฅน": ["face", "face holding back tears"], + "๐Ÿฅบ": ["face", "pleading face"], + "๐Ÿฅป": ["clothing", "sari"], + "๐Ÿฅผ": ["clothing", "lab coat"], + "๐Ÿฅฝ": ["clothing", "goggles"], + "๐Ÿฅพ": ["clothing", "hiking boot"], + "๐Ÿฅฟ": ["clothing", "flat shoe"], + "๐Ÿฆ€": ["animal", "crab"], + "๐Ÿฆ": ["animal", "lion face"], + "๐Ÿฆ‚": ["animal", "scorpion"], + "๐Ÿฆƒ": ["animal", "turkey"], + "๐Ÿฆ„": ["animal", "unicorn", "unicorn face"], + "๐Ÿฆ…": ["animal", "eagle"], + "๐Ÿฆ†": ["animal", "duck"], + "๐Ÿฆ‡": ["animal", "bat"], + "๐Ÿฆˆ": ["animal", "shark"], + "๐Ÿฆ‰": ["animal", "owl"], + "๐ŸฆŠ": ["animal", "fox face"], + "๐Ÿฆ‹": ["animal", "butterfly"], + "๐ŸฆŒ": ["animal", "deer"], + "๐Ÿฆ": ["animal", "gorilla"], + "๐ŸฆŽ": ["animal", "lizard"], + "๐Ÿฆ": ["animal", "rhinoceros"], + "๐Ÿฆ": ["animal", "shrimp"], + "๐Ÿฆ‘": ["animal", "squid"], + "๐Ÿฆ’": ["animal", "giraffe face"], + "๐Ÿฆ“": ["animal", "zebra face"], + "๐Ÿฆ”": ["animal", "hedgehog"], + "๐Ÿฆ•": ["animal", "sauropod"], + "๐Ÿฆ–": ["animal", "t-rex"], + "๐Ÿฆ—": ["animal", "cricket"], + "๐Ÿฆ˜": ["animal", "kangaroo"], + "๐Ÿฆ™": ["animal", "llama"], + "๐Ÿฆš": ["animal", "peacock"], + "๐Ÿฆ›": ["animal", "hippopotamus"], + "๐Ÿฆœ": ["animal", "parrot"], + "๐Ÿฆ": ["animal", "raccoon"], + "๐Ÿฆž": ["animal", "lobster"], + "๐ŸฆŸ": ["animal", "mosquito"], + "๐Ÿฆ ": ["animal", "microbe"], + "๐Ÿฆก": ["animal", "badger"], + "๐Ÿฆข": ["animal", "swan"], + "๐Ÿฆฃ": ["animal", "mammoth"], + "๐Ÿฆค": ["animal", "dodo"], + "๐Ÿฆฅ": ["animal", "sloth"], + "๐Ÿฆฆ": ["animal", "otter"], + "๐Ÿฆง": ["animal", "orangutan"], + "๐Ÿฆจ": ["animal", "skunk"], + "๐Ÿฆฉ": ["animal", "flamingo"], + "๐Ÿฆช": ["animal", "oyster"], + "๐Ÿฆซ": ["animal", "beaver"], + "๐Ÿฆฌ": ["animal", "bison"], + "๐Ÿฆญ": ["animal", "seal"], + "๐Ÿฆฎ": ["animal", "guide dog"], + "๐Ÿฆฏ": ["probing cane"], + "๐Ÿฆด": ["bone"], + "๐Ÿฆต": ["leg"], + "๐Ÿฆถ": ["foot"], + "๐Ÿฆท": ["tooth"], + "๐Ÿฆธโ€โ™€๏ธ": ["superhero"], + "๐Ÿฆธโ€โ™‚๏ธ": ["superhero"], + "๐Ÿฆธ": ["superhero"], + "๐Ÿฆนโ€โ™€๏ธ": ["supervillain"], + "๐Ÿฆนโ€โ™‚๏ธ": ["supervillain"], + "๐Ÿฆน": ["supervillain"], + "๐Ÿฆบ": ["safety vest"], + "๐Ÿฆป": ["ear with hearing aid"], + "๐Ÿฆผ": ["motorized wheelchair"], + "๐Ÿฆฝ": ["manual wheelchair"], + "๐Ÿฆพ": ["mechanical arm"], + "๐Ÿฆฟ": ["mechanical leg"], + "๐Ÿง€": ["cheese wedge"], + "๐Ÿง": ["cupcake"], + "๐Ÿง‚": ["salt"], + "๐Ÿงƒ": ["beverage box"], + "๐Ÿง„": ["garlic"], + "๐Ÿง…": ["onion"], + "๐Ÿง†": ["falafel"], + "๐Ÿง‡": ["waffle"], + "๐Ÿงˆ": ["butter"], + "๐Ÿง‰": ["mate drink"], + "๐ŸงŠ": ["ice cube"], + "๐Ÿง‹": ["bubble tea"], + "๐ŸงŒ": ["troll"], + "๐Ÿงโ€โ™€๏ธ": ["standing"], + "๐Ÿงโ€โ™‚๏ธ": ["standing"], + "๐Ÿง": ["standing"], + "๐ŸงŽโ€โ™€๏ธ": ["kneeling"], + "๐ŸงŽโ€โ™‚๏ธ": ["kneeling"], + "๐ŸงŽ": ["kneeling"], + "๐Ÿงโ€โ™€๏ธ": ["deaf person"], + "๐Ÿงโ€โ™‚๏ธ": ["deaf person"], + "๐Ÿง": ["deaf person"], + "๐Ÿง": ["face", "face with monocle"], + "๐Ÿง‘โ€๐ŸŒพ": ["farmer"], + "๐Ÿง‘โ€๐Ÿณ": ["cook"], + "๐Ÿง‘โ€๐Ÿผ": ["person feeding baby"], + "๐Ÿง‘โ€๐ŸŽ„": ["mx claus"], + "๐Ÿง‘โ€๐ŸŽ“": ["student"], + "๐Ÿง‘โ€๐ŸŽค": ["singer"], + "๐Ÿง‘โ€๐ŸŽจ": ["artist"], + "๐Ÿง‘โ€๐Ÿซ": ["teacher"], + "๐Ÿง‘โ€๐Ÿญ": ["factory worker"], + "๐Ÿง‘โ€๐Ÿ’ป": ["technologist"], + "๐Ÿง‘โ€๐Ÿ’ผ": ["office worker"], + "๐Ÿง‘โ€๐Ÿ”ง": ["mechanic"], + "๐Ÿง‘โ€๐Ÿ”ฌ": ["scientist"], + "๐Ÿง‘โ€๐Ÿš€": ["astronaut"], + "๐Ÿง‘โ€๐Ÿš’": ["firefighter"], + "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘": ["people holding hands"], + "๐Ÿง‘โ€๐Ÿฆฏ": ["person with probing cane"], + "๐Ÿง‘โ€๐Ÿฆฐ": ["red haired person"], + "๐Ÿง‘โ€๐Ÿฆฑ": ["curly haired person"], + "๐Ÿง‘โ€๐Ÿฆฒ": ["bald person"], + "๐Ÿง‘โ€๐Ÿฆณ": ["white haired person"], + "๐Ÿง‘โ€๐Ÿฆผ": ["person in motorized wheelchair"], + "๐Ÿง‘โ€๐Ÿฆฝ": ["person in manual wheelchair"], + "๐Ÿง‘โ€โš•๏ธ": ["health worker"], + "๐Ÿง‘โ€โš–๏ธ": ["judge"], + "๐Ÿง‘โ€โœˆ๏ธ": ["pilot"], + "๐Ÿง‘": ["adult"], + "๐Ÿง’": ["child"], + "๐Ÿง“": ["older adult"], + "๐Ÿง”โ€โ™€๏ธ": ["beard", "bearded person"], + "๐Ÿง”โ€โ™‚๏ธ": ["beard", "bearded person"], + "๐Ÿง”": ["beard", "bearded person"], + "๐Ÿง•": ["person with headscarf"], + "๐Ÿง–โ€โ™€๏ธ": ["steamy room", "person in steamy room"], + "๐Ÿง–โ€โ™‚๏ธ": ["steamy room", "person in steamy room"], + "๐Ÿง—โ€โ™€๏ธ": ["climbing", "person climbing"], + "๐Ÿง—โ€โ™‚๏ธ": ["climbing", "person climbing"], + "๐Ÿง˜โ€โ™€๏ธ": ["lotus position", "person in lotus position"], + "๐Ÿง˜โ€โ™‚๏ธ": ["lotus position", "person in lotus position"], + "๐Ÿง™โ€โ™€๏ธ": ["mage"], + "๐Ÿง™โ€โ™‚๏ธ": ["mage"], + "๐Ÿงšโ€โ™€๏ธ": ["fairy"], + "๐Ÿงšโ€โ™‚๏ธ": ["fairy"], + "๐Ÿง›โ€โ™€๏ธ": ["vampire"], + "๐Ÿง›โ€โ™‚๏ธ": ["vampire"], + "๐Ÿงœโ€โ™€๏ธ": ["mermaid", "merman", "merperson"], + "๐Ÿงœโ€โ™‚๏ธ": ["mermaid", "merman", "merperson"], + "๐Ÿงโ€โ™€๏ธ": ["elf"], + "๐Ÿงโ€โ™‚๏ธ": ["elf"], + "๐Ÿงžโ€โ™€๏ธ": ["genie"], + "๐Ÿงžโ€โ™‚๏ธ": ["genie"], + "๐ŸงŸโ€โ™€๏ธ": ["zombie"], + "๐ŸงŸโ€โ™‚๏ธ": ["zombie"], + "๐Ÿง ": ["brain"], + "๐Ÿงก": ["orange heart"], + "๐Ÿงข": ["billed cap"], + "๐Ÿงฃ": ["scarf"], + "๐Ÿงค": ["gloves"], + "๐Ÿงฅ": ["coat"], + "๐Ÿงฆ": ["socks"], + "๐Ÿงง": ["red envelope"], + "๐Ÿงจ": ["firecracker"], + "๐Ÿงฉ": ["jigsaw"], + "๐Ÿงช": ["test tube"], + "๐Ÿงซ": ["petri dish"], + "๐Ÿงฌ": ["dna"], + "๐Ÿงญ": ["compass"], + "๐Ÿงฎ": ["abacus"], + "๐Ÿงฏ": ["fire extinguisher"], + "๐Ÿงฐ": ["toolbox"], + "๐Ÿงฑ": ["bricks"], + "๐Ÿงฒ": ["magnet"], + "๐Ÿงณ": ["luggage"], + "๐Ÿงด": ["lotion bottle"], + "๐Ÿงต": ["thread"], + "๐Ÿงถ": ["yarn"], + "๐Ÿงท": ["safety pin"], + "๐Ÿงธ": ["teddy bear"], + "๐Ÿงน": ["broom"], + "๐Ÿงบ": ["basket"], + "๐Ÿงป": ["roll of paper"], + "๐Ÿงผ": ["soap"], + "๐Ÿงฝ": ["sponge"], + "๐Ÿงพ": ["receipt"], + "๐Ÿงฟ": ["nazar amulet"], + "๐Ÿฉฐ": ["ballet shoes"], + "๐Ÿฉฑ": ["one-piece swimsuit"], + "๐Ÿฉฒ": ["briefs"], + "๐Ÿฉณ": ["shorts"], + "๐Ÿฉด": ["thong sandal"], + "๐Ÿฉต": ["light blue heart"], + "๐Ÿฉถ": ["grey heart"], + "๐Ÿฉท": ["pink heart"], + "๐Ÿฉธ": ["drop of blood"], + "๐Ÿฉน": ["adhesive bandage"], + "๐Ÿฉบ": ["stethoscope"], + "๐Ÿฉป": ["xray", "x-ray"], + "๐Ÿฉผ": ["crutch"], + "๐Ÿช€": ["yoyo", "yo-yo"], + "๐Ÿช": ["kite"], + "๐Ÿช‚": ["parachute"], + "๐Ÿชƒ": ["boomerang"], + "๐Ÿช„": ["magic wand"], + "๐Ÿช…": ["pinata"], + "๐Ÿช†": ["nesting dolls"], + "๐Ÿช‡": ["maracas"], + "๐Ÿชˆ": ["flute"], + "๐Ÿช": ["ringed planet"], + "๐Ÿช‘": ["chair"], + "๐Ÿช’": ["razor"], + "๐Ÿช“": ["axe"], + "๐Ÿช”": ["diya lamp"], + "๐Ÿช•": ["banjo"], + "๐Ÿช–": ["military helmet"], + "๐Ÿช—": ["accordion"], + "๐Ÿช˜": ["long drum"], + "๐Ÿช™": ["coin"], + "๐Ÿชš": ["saw", "carpentry saw"], + "๐Ÿช›": ["screwdriver"], + "๐Ÿชœ": ["ladder"], + "๐Ÿช": ["hook"], + "๐Ÿชž": ["mirror"], + "๐ŸชŸ": ["window"], + "๐Ÿช ": ["plunger"], + "๐Ÿชก": ["sewing needle"], + "๐Ÿชข": ["knot"], + "๐Ÿชฃ": ["bucket"], + "๐Ÿชค": ["mouse trap"], + "๐Ÿชฅ": ["toothbrush"], + "๐Ÿชฆ": ["headstone"], + "๐Ÿชง": ["placard"], + "๐Ÿชจ": ["rock"], + "๐Ÿชฉ": ["mirror ball"], + "๐Ÿชช": ["identification card"], + "๐Ÿชซ": ["low battery"], + "๐Ÿชฌ": ["hamsa"], + "๐Ÿชญ": ["folding hand fan"], + "๐Ÿชฎ": ["hair pick"], + "๐Ÿชฏ": ["khanda"], + "๐Ÿชฐ": ["fly"], + "๐Ÿชฑ": ["worm"], + "๐Ÿชฒ": ["beetle"], + "๐Ÿชณ": ["cockroach"], + "๐Ÿชด": ["potted plant"], + "๐Ÿชต": ["wood"], + "๐Ÿชถ": ["feather"], + "๐Ÿชท": ["lotus"], + "๐Ÿชธ": ["coral"], + "๐Ÿชน": ["empty nest"], + "๐Ÿชบ": ["nest with eggs"], + "๐Ÿชป": ["hyacinth"], + "๐Ÿชผ": ["jellyfish"], + "๐Ÿชฝ": ["wing"], + "๐Ÿชฟ": ["goose"], + "๐Ÿซ€": ["anatomical heart"], + "๐Ÿซ": ["lungs"], + "๐Ÿซ‚": ["people hugging"], + "๐Ÿซƒ": ["pregnant man"], + "๐Ÿซ„": ["pregnant person"], + "๐Ÿซ…": ["person with crown"], + "๐ŸซŽ": ["moose"], + "๐Ÿซ": ["donkey"], + "๐Ÿซ": ["blueberries"], + "๐Ÿซ‘": ["bell pepper"], + "๐Ÿซ’": ["olive"], + "๐Ÿซ“": ["flatbread"], + "๐Ÿซ”": ["tamale"], + "๐Ÿซ•": ["fondue"], + "๐Ÿซ–": ["teapot"], + "๐Ÿซ—": ["pouring liquid"], + "๐Ÿซ˜": ["beans"], + "๐Ÿซ™": ["jar"], + "๐Ÿซš": ["ginger root"], + "๐Ÿซ›": ["pea pod"], + "๐Ÿซ ": ["face", "melting face"], + "๐Ÿซก": ["face", "saluting face"], + "๐Ÿซข": ["face", "face with open eyes and hand over mouth"], + "๐Ÿซฃ": ["face", "face with peeking eye"], + "๐Ÿซค": ["face", "face with diagonal mouth"], + "๐Ÿซฅ": ["face", "dotted line face"], + "๐Ÿซฆ": ["biting lip"], + "๐Ÿซง": ["bubbles"], + "๐Ÿซจ": ["face", "shaking face"], + "๐Ÿซฐ": ["hand", "hand with index finger and thumb crossed"], + "๐Ÿซฑ": ["hand", "rightwards hand"], + "๐Ÿซฒ": ["hand", "leftwards hand"], + "๐Ÿซณ": ["hand", "palm down hand"], + "๐Ÿซด": ["hand", "palm up hand"], + "๐Ÿซต": ["hand", "index pointing at the viewer"], + "๐Ÿซถ": ["hands", "heart hands"], + "๐Ÿซท": ["hand", "leftwards pushing hand"], + "๐Ÿซธ": ["hand", "rightwards pushing hand"], + "โ€ผ๏ธ": ["bangbang"], + "โ‰๏ธ": ["interrobang"], + "โ„ข๏ธ": ["tm"], + "โ†”๏ธ": ["left right arrow"], + "โ†•๏ธ": ["arrow up down"], + "โ†–๏ธ": ["arrow upper left"], + "โ†—๏ธ": ["arrow upper right"], + "โ†˜๏ธ": ["arrow lower right"], + "โ†™๏ธ": ["arrow lower left"], + "โ†ฉ๏ธ": ["leftwards arrow with hook"], + "โ†ช๏ธ": ["arrow right hook"], + "โŒš": ["watch"], + "โŒ›": ["hourglass"], + "โŒจ๏ธ": ["keyboard"], + "โ๏ธ": ["eject"], + "โฉ": ["fast forward"], + "โช": ["rewind"], + "โซ": ["arrow double up"], + "โฌ": ["arrow double down"], + "โญ๏ธ": ["black right pointing double triangle with vertical bar"], + "โฎ๏ธ": ["black left pointing double triangle with vertical bar"], + "โฏ๏ธ": ["black right pointing triangle with double vertical bar"], + "โฐ": ["alarm clock"], + "โฑ๏ธ": ["stopwatch"], + "โฒ๏ธ": ["timer clock"], + "โณ": ["hourglass flowing sand"], + "โธ๏ธ": ["double vertical bar"], + "โน๏ธ": ["black square for stop"], + "โบ๏ธ": ["black circle for record"], + "โ“‚๏ธ": ["m"], + "โ–ช๏ธ": ["black small square"], + "โ–ซ๏ธ": ["white small square"], + "โ–ถ๏ธ": ["arrow forward"], + "โ—€๏ธ": ["arrow backward"], + "โ—ป๏ธ": ["white medium square"], + "โ—ผ๏ธ": ["black medium square"], + "โ—ฝ": ["white medium small square"], + "โ—พ": ["black medium small square"], + "โ˜€๏ธ": ["sunny"], + "โ˜๏ธ": ["cloud"], + "โ˜‚๏ธ": ["umbrella"], + "โ˜ƒ๏ธ": ["snowman"], + "โ˜„๏ธ": ["comet"], + "โ˜Ž๏ธ": ["phone", "telephone"], + "โ˜‘๏ธ": ["ballot box with check"], + "โ˜˜๏ธ": ["shamrock"], + "โ˜๏ธ": ["point up"], + "โ˜ ๏ธ": ["skull and crossbones"], + "โ˜ข๏ธ": ["radioactive sign"], + "โ˜ฃ๏ธ": ["biohazard sign"], + "โ˜ฆ๏ธ": ["orthodox cross"], + "โ˜ช๏ธ": ["star and crescent"], + "โ˜ฎ๏ธ": ["peace symbol"], + "โ˜ฏ๏ธ": ["yin yang"], + "โ˜ธ๏ธ": ["wheel of dharma"], + "โ˜น๏ธ": ["white frowning face"], + "โ˜บ๏ธ": ["relaxed"], + "โ™€๏ธ": ["female sign"], + "โ™‚๏ธ": ["male sign"], + "โ™Š": ["gemini"], + "โ™‹": ["cancer"], + "โ™Œ": ["leo"], + "โ™": ["virgo"], + "โ™Ž": ["libra"], + "โ™": ["scorpius"], + "โ™Ÿ๏ธ": ["chess pawn"], + "โ™ ๏ธ": ["spades"], + "โ™ฃ๏ธ": ["clubs"], + "โ™ฅ๏ธ": ["hearts"], + "โ™ฆ๏ธ": ["diamonds"], + "โ™จ๏ธ": ["hotsprings"], + "โ™ป๏ธ": ["recycle"], + "โ™พ๏ธ": ["infinity"], + "โ™ฟ": ["wheelchair"], + "โš’๏ธ": ["hammer and pick"], + "โš”๏ธ": ["crossed swords"], + "โš•๏ธ": ["medical symbol", "staff of aesculapius"], + "โš–๏ธ": ["scales"], + "โš—๏ธ": ["alembic"], + "โš™๏ธ": ["gear"], + "โš›๏ธ": ["atom symbol"], + "โšœ๏ธ": ["fleur de lis"], + "โš ๏ธ": ["warning"], + "โšก": ["zap"], + "โšง๏ธ": ["transgender symbol"], + "โšช": ["white circle"], + "โšซ": ["black circle"], + "โšฐ๏ธ": ["coffin"], + "โšฑ๏ธ": ["funeral urn"], + "โšฝ": ["soccer"], + "โšพ": ["baseball"], + "โ›„": ["snowman without snow"], + "โ›…": ["partly sunny"], + "โ›ˆ๏ธ": ["thunder cloud and rain"], + "โ›Ž": ["ophiuchus"], + "โ›๏ธ": ["pick"], + "โ›‘๏ธ": ["helmet with white cross"], + "โ›“๏ธ": ["chains"], + "โ›”": ["no entry"], + "โ›ฉ๏ธ": ["shinto shrine"], + "โ›ช": ["church"], + "โ›ฐ๏ธ": ["mountain"], + "โ›ฑ๏ธ": ["umbrella on ground"], + "โ›ฒ": ["fountain"], + "โ›ณ": ["golf"], + "โ›ด๏ธ": ["ferry"], + "โ›ต": ["boat", "sailboat"], + "โ›ท๏ธ": ["skier"], + "โ›ธ๏ธ": ["ice skate"], + "โ›น๏ธโ€โ™€๏ธ": ["woman-bouncing-ball"], + "โ›น๏ธโ€โ™‚๏ธ": ["man-bouncing-ball", "person with ball"], + "โ›บ": ["tent"], + "โ›ฝ": ["fuelpump"], + "โœ‚๏ธ": ["scissors"], + "โœˆ๏ธ": ["airplane"], + "โœ‰๏ธ": ["email", "envelope"], + "โœŠ": ["hand", "fist"], + "โœ‹": ["hand", "raised hand"], + "โœŒ๏ธ": ["v"], + "โœ๏ธ": ["writing hand"], + "โœ๏ธ": ["pencil2"], + "โœ’๏ธ": ["black nib"], + "โœ”๏ธ": ["heavy check mark"], + "โœ–๏ธ": ["heavy multiplication x"], + "โœ๏ธ": ["latin cross"], + "โœก๏ธ": ["star of david"], + "โœณ๏ธ": ["eight spoked asterisk"], + "โœด๏ธ": ["eight pointed black star"], + "โ„๏ธ": ["snowflake"], + "โ‡๏ธ": ["sparkle"], + "โŒ": ["x"], + "โŽ": ["x", "negative squared cross mark"], + "โฃ๏ธ": ["heavy heart exclamation mark ornament"], + "โค๏ธโ€๐Ÿ”ฅ": ["heart on fire"], + "โค๏ธโ€๐Ÿฉน": ["mending heart"], + "โค๏ธ": ["heart"], + "โžก๏ธ": ["arrow right"], + "โžฐ": ["curly loop"], + "โžฟ": ["loop"], + "โคด๏ธ": ["arrow heading up"], + "โคต๏ธ": ["arrow heading down"], + "โฌ…๏ธ": ["arrow left"], + "โฌ†๏ธ": ["arrow up"], + "โฌ‡๏ธ": ["arrow down"], + "โฌ›": ["black large square"], + "โฌœ": ["white large square"], + "โญ": ["star"], + "โญ•": ["o"], + "ใ€ฐ๏ธ": ["wavy dash"], + "ใ€ฝ๏ธ": ["part alternation mark"], + "ใŠ—๏ธ": ["congratulations"], + "ใŠ™๏ธ": ["secret"], +}; + +let _EMOJI_WORDS: string[] | undefined; +export const EMOJIS = { + MAP: EMOJI_MAP, + + filter: function (filter: ((entry: [string, string[]]) => boolean) | []) { + const result: Record = {}; + if (typeof filter === 'function') { + for (const entry of Object.entries(this.MAP)) { + if (filter(entry)) { + result[entry[0]] = entry[1]; + } + } + } else if (Array.isArray(filter)) { + const matchers = []; + for (const f of filter) { + matchers.push( + new RegExp( + `[\\u{${parseInt(f[0]).toString(16)}}-\\u{${parseInt(f[1]).toString(16)}}]`, + 'u' + ) + ); + } + + for (const entry of Object.entries(this.MAP)) { + const matches = matchers.some((matcher) => matcher.test(entry[0])); + if (matches) { + result[entry[0]] = entry[1]; + } + } + } else { + throw new Error('unknown filter type'); + } + + return result; + }, + + autocomplete: function (prompt: string) { + const results = Object.entries(this.MAP).filter((entry) => { + return entry[1].some( + (name) => + name.toLowerCase().indexOf(prompt) >= 0 || + prompt.toLowerCase().indexOf(name) >= 0, + ); + }); + return results; + } +}; + +/* VERY limited testing: +console.dir({ + filtered_by_ranges: EMOJI_MAP.filter([ + [128513, 128591], // Emoticons icons + [128640, 128704] // Transport and map symbols + ]), + filtered_by_function: EMOJI_MAP.filter((entry) => entry[0] === "๐Ÿ˜ƒ"), + autocomplete: EMOJI_MAP.autocomplete("smi") +}); +*/ diff --git a/public/js/reactions.js b/public/js/reactions.js new file mode 100644 index 0000000..51e9080 --- /dev/null +++ b/public/js/reactions.js @@ -0,0 +1,256 @@ +const reactions_popup_width = 280; +const reactions_popup_height = 280; + +const reactions_popup_styling = ` +#reactionspopup { + position: fixed; + width: ${reactions_popup_width}px; + height: ${reactions_popup_height}px; + z-index: 100; + background: inherit; + overflow: hidden; + border: 1px solid var(--border-normal); + padding: 0.5rem; + text-align: center; +} + +#reactionspopup .icon.close { + float: right; + margin: 0.5rem; +} + +#reactionspopup input[name="search"] { + width: 80%; +} + +#reactionspopup ul { + margin-top: 0.5rem; + padding: 0.5rem; + text-align: left; + overflow: scroll; +} + +#reactionspopup ul li { + display: inline-block; + cursor: pointer; +} + +#reactionspopup ul[data-filtered] li { + display: none; + visibility: hidden; +} + +#reactionspopup ul[data-filtered] li[data-filtered] { + display: inline-block; + visibility: visible; +} + +#reactionspopup #reactions-names-display { + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 2rem; + background: inherit; +} + +`; + +function get_best_coords_for_popup(target, offset = { x: 10, y: 10 }) { + const target_x = target?.getBoundingClientRect().left ?? 0; + const target_y = target?.getBoundingClientRect().top ?? 0; + + const viewport_width = document.body.getBoundingClientRect().width; + const viewport_height = document.body.getBoundingClientRect().height; + + const best_coords = { + x: target_x + offset.x, + y: target_y + offset.y, + }; + + if (target_x + offset.x + reactions_popup_width + offset.x > viewport_width) { + best_coords.x = Math.max(0, target_x - reactions_popup_width); + } + + if (target_y + offset.y + reactions_popup_height + offset.y > viewport_height) { + best_coords.y = Math.max(0, target_y - reactions_popup_height); + } + + return best_coords; +} + +let reactions_popup; +let reactions_popup_form; +let reactions_popup_parent_id_input; +let reactions_popup_emojis_list; +let reactions_popup_reaction_input; + +function open_reactions_popup(event) { + const parent_event_id = event.target?.closest("[data-event_id]")?.dataset?.event_id; + reactions_popup_parent_id_input.value = parent_event_id ?? ""; + + const position = get_best_coords_for_popup(event.target.closest("[data-reactions]"), { + x: 25, + y: 25, + }); + + reactions_popup.style.left = position.x + "px"; + reactions_popup.style.top = position.y + "px"; + + reactions_popup.style.visibility = "visible"; + reactions_popup.style.opacity = "1"; + reactions_popup.style.display = "block"; +} + +function clear_reactions_popup() { + if (!reactions_popup) { + return; + } + + reactions_popup.style.visibility = "hidden"; + reactions_popup.style.opacity = "0"; + reactions_popup.style.display = "none"; +} + +document.addEventListener("DOMContentLoaded", () => { + if (!document.getElementById("reactions-styling")) { + const style = document.createElement("style"); + style.id = "reactions-styling"; + style.innerHTML = reactions_popup_styling; + document.head.appendChild(style); + } + + reactions_popup = document.createElement("div"); + + reactions_popup.id = "reactionspopup"; + reactions_popup.innerHTML = ` +
+
+ + + + + + + + + + + + + + + +
    + ${Object.keys(EMOJIS.MAP) + .map( + (emoji) => + `
  • ${emoji}
  • `, + ) + .join("\n")} +
+
+
+`; + + document.body.appendChild(reactions_popup); + + reactions_popup_form = document.getElementById("reactions-selection-form"); + document.addEventListener("topic_changed", ({ detail: { topic_id } }) => { + const reaction_topic_id = topic_id ?? document.body.dataset.topic; + reactions_popup_form.action = reaction_topic_id + ? `/api/topics/${reaction_topic_id}/events` + : ""; + }); + + reactions_popup_parent_id_input = reactions_popup_form.querySelector('[name="parent_id"]'); + reactions_popup_emojis_list = document.getElementById("reactions-emojis-list"); + reactions_popup_reaction_input = reactions_popup_form.querySelector('[name="data.reaction"]'); + reactions_popup_names_display = document.getElementById("reactions-names-display"); + + reactions_popup_emojis_list.querySelectorAll("li[data-emoji]").forEach((emoji_selector) => { + emoji_selector.addEventListener("click", (event) => { + event.preventDefault(); + + const selector = event.target; + const emoji = selector.dataset.emoji; + + reactions_popup_reaction_input.value = emoji; + reactions_popup_form.requestSubmit(); + }); + }); + + reactions_popup_form.addEventListener("mouseover", (event) => { + reactions_popup_names_display.textContent = event.target.matches("li[data-names]") + ? event.target.dataset.names + : ""; + }); + + const reactions_popup_search = debounce((event) => { + const prompt = event.target?.value; + const filtered = EMOJIS.autocomplete(prompt); + + delete emojis_list.dataset.filtered; + if (filtered.length) { + emojis_list.dataset.filtered = true; + emojis_list.querySelectorAll("li").forEach((li) => { + if (filtered.some((entry) => entry[0] === li.dataset.emoji)) { + li.dataset.filtered = true; + } else { + delete li.dataset.filtered; + } + }); + } + }, 200); + + document + .getElementById("reactions-search-input") + .addEventListener("input", reactions_popup_search); + document + .getElementById("reactions-search-input") + .addEventListener("paste", reactions_popup_search); + document + .getElementById("reactions-search-input") + .addEventListener("change", reactions_popup_search); + + document.querySelector("body").addEventListener("click", (event) => { + const is_a_data_reactions_child = event?.target?.closest("[data-reactions]"); + if (!is_a_data_reactions_child) { + clear_reactions_popup(); + return; + } + + event.preventDefault(); + open_reactions_popup(event); + }); +}); diff --git a/public/js/smartfeeds.js b/public/js/smartfeeds.js index 8793238..387053a 100644 --- a/public/js/smartfeeds.js +++ b/public/js/smartfeeds.js @@ -14,11 +14,13 @@ function smarten_feeds() { continue; } - const feed_item_template = feed.querySelector("template"); - if (!feed_item_template) { - console.warn("No template for smart feed: " + feed); - continue; - } + feed.__templates = feed + .querySelectorAll("template[data-for_type]") + .values() + .reduce((_templates, template) => { + _templates[template.dataset.for_type] = template; + return _templates; + }, {}); feed.__start = () => { feed.__started = true; @@ -65,17 +67,26 @@ function smarten_feeds() { }; feed.__target = (item) => { - return feed.__target_element?.(item) ?? feed; + if (!feed.__target_element) { + return feed; + } + + return feed.__target_element(item); }; feed.__autoscroll_debounce_timeout = undefined; feed.__render = async (item) => { + const template = feed.__templates[item.type]; + if (!template) { + return; + } + feed.__context = feed.__context ?? (feed.dataset.context ? new Function(feed.dataset.context) : undefined); const context = feed.__context ? await feed.__context(item, feed) : {}; - const rendered_html = eval("`" + feed_item_template.innerHTML.trim() + "`"); + const rendered_html = eval("`" + template.innerHTML.trim() + "`"); const existing_element = feed.querySelector("#" + item.id?.replace(/([:\.])/g, "\\$1")) ?? @@ -106,6 +117,10 @@ function smarten_feeds() { } } else { const target = feed.__target(item); + if (!target) { + return; + } + switch (feed.dataset.insert ?? "append") { case "prepend": target.insertAdjacentHTML("afterbegin", rendered_html); @@ -120,7 +135,7 @@ function smarten_feeds() { break; } - if (feed.dataset.autoscroll) { + if (target === feed && feed.dataset.autoscroll) { if (feed.__autoscroll_debounce_timeout) { clearTimeout(feed.__autoscroll_debounce_timeout); } diff --git a/public/js/smartforms.js b/public/js/smartforms.js index a644732..e7610c2 100644 --- a/public/js/smartforms.js +++ b/public/js/smartforms.js @@ -32,6 +32,10 @@ function smarten_forms() { for (const [key, value] of form_data.entries()) { const input = form.querySelector(`[name="${key}"]`); + if (input.dataset.skip) { + continue; + } + if (input.type === "file") { if (input.dataset["smartformsSaveToHome"]) { form.uploaded = []; diff --git a/public/js/textareaenhancements.js b/public/js/textareaenhancements.js index 0fcf435..1cd8feb 100644 --- a/public/js/textareaenhancements.js +++ b/public/js/textareaenhancements.js @@ -1,27 +1,36 @@ +let enhance_textareas_debounce_timeout; function enhance_textareas() { - const textareas = document.body.querySelectorAll("textarea:not([data-enhanced])"); - for (const textarea of textareas) { - const max_length_attr = textarea.getAttribute("maxlength"); - if (/^\d+$/.test(max_length_attr)) { - const max_length = parseInt(max_length_attr, 10); + if (enhance_textareas_debounce_timeout) { + clearTimeout(enhance_textareas_debounce_timeout); + } - function on_updated() { - const counters = this.parentElement.querySelectorAll( - `[data-limit-counter-for="${this.name}"]`, - ); - for (const counter of counters) { - counter.innerHTML = `${this.value.length} / ${max_length}`; + enhance_textareas_debounce_timeout = setTimeout(() => { + enhance_textareas_debounce_timeout = undefined; + + const textareas = document.body.querySelectorAll("textarea:not([data-enhanced])"); + for (const textarea of textareas) { + const max_length_attr = textarea.getAttribute("maxlength"); + if (/^\d+$/.test(max_length_attr)) { + const max_length = parseInt(max_length_attr, 10); + + function on_updated() { + const counters = this.parentElement.querySelectorAll( + `[data-limit-counter-for="${this.name}"]`, + ); + for (const counter of counters) { + counter.innerHTML = `${this.value.length} / ${max_length}`; + } } + + textarea.addEventListener("keyup", on_updated); + textarea.addEventListener("paste", on_updated); + textarea.addEventListener("blur", on_updated); + on_updated.call(textarea); } - textarea.addEventListener("keyup", on_updated); - textarea.addEventListener("paste", on_updated); - textarea.addEventListener("blur", on_updated); - on_updated.call(textarea); + textarea.dataset.enhanced = true; } - - textarea.dataset.enhanced = true; - } + }, 10); } const textarea_enhancement_observer = new MutationObserver(enhance_textareas); diff --git a/public/tabs/blurbs/blurbs.html b/public/tabs/blurbs/blurbs.html index 6aea53f..ecb4098 100644 --- a/public/tabs/blurbs/blurbs.html +++ b/public/tabs/blurbs/blurbs.html @@ -174,8 +174,14 @@ }; } -