@adminide-stack/yantra-mobile 12.0.69-alpha.20 โ†’ 12.0.69-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- const list = (s) => Array.from(s.replace(/\s+/g, " ").trim().split(" "));
1
+ import {EMOJI_KEYWORDS_SOURCE}from'./emojiKeywords.js';const list = (s) => Array.from(s.replace(/\s+/g, " ").trim().split(" "));
2
2
  const EMOJI_CATEGORIES = [{
3
3
  key: "smileys",
4
4
  title: "Smileys & People",
@@ -33,4 +33,28 @@ function emojiFromInput(text) {
33
33
  if (!value || value.length > 16) return null;
34
34
  if (/[A-Za-z0-9\s.,;:'"!?@#$%^&*()\-_=+[\]{}<>/\\|`~]/.test(value)) return null;
35
35
  return value;
36
- }export{EMOJI_CATEGORIES,emojiFromInput};//# sourceMappingURL=emojiCatalog.js.map
36
+ }
37
+ let emojiIndex = null;
38
+ function getEmojiIndex() {
39
+ if (!emojiIndex) {
40
+ emojiIndex = EMOJI_KEYWORDS_SOURCE.split("\n").map((line) => line.trim().split(" ")).filter((parts) => parts.length > 1).map(([emoji, ...words]) => ({
41
+ emoji,
42
+ words
43
+ }));
44
+ }
45
+ return emojiIndex;
46
+ }
47
+ function searchEmoji(query, limit = 96) {
48
+ const terms = query.toLowerCase().trim().split(/\s+/).filter(Boolean);
49
+ if (!terms.length) return [];
50
+ const named = [];
51
+ const tagged = [];
52
+ for (const {
53
+ emoji,
54
+ words
55
+ } of getEmojiIndex()) {
56
+ if (!terms.every((t) => words.some((w) => w.startsWith(t)))) continue;
57
+ (words[0].startsWith(terms[0]) ? named : tagged).push(emoji);
58
+ }
59
+ return [...named, ...tagged].slice(0, limit);
60
+ }export{EMOJI_CATEGORIES,emojiFromInput,searchEmoji};//# sourceMappingURL=emojiCatalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emojiCatalog.js","sources":["../../../src/features/messaging/emojiCatalog.ts"],"sourcesContent":["/**\n * Emoji grid for the \"+\" Tapback picker. Plain data rather than an emoji\n * package: the remote ships no extra dependencies, and the system emoji\n * keyboard in the picker covers everything not listed here.\n */\nexport interface EmojiCategory {\n key: string;\n title: string;\n emojis: string[];\n}\n\nconst list = (s: string) => Array.from(s.replace(/\\s+/g, ' ').trim().split(' '));\n\nexport const EMOJI_CATEGORIES: EmojiCategory[] = [\n {\n key: 'smileys',\n title: 'Smileys & People',\n emojis: list(\n `๐Ÿ˜€ ๐Ÿ˜ƒ ๐Ÿ˜„ ๐Ÿ˜ ๐Ÿ˜† ๐Ÿ˜… ๐Ÿคฃ ๐Ÿ˜‚ ๐Ÿ™‚ ๐Ÿ™ƒ ๐Ÿ˜‰ ๐Ÿ˜Š ๐Ÿ˜‡ ๐Ÿฅฐ ๐Ÿ˜ ๐Ÿคฉ ๐Ÿ˜˜ ๐Ÿ˜— ๐Ÿ˜š ๐Ÿ˜™ ๐Ÿฅฒ ๐Ÿ˜‹ ๐Ÿ˜› ๐Ÿ˜œ ๐Ÿคช ๐Ÿ˜ ๐Ÿค‘ ๐Ÿค— ๐Ÿคญ ๐Ÿคซ ๐Ÿค” ๐Ÿค ๐Ÿคจ ๐Ÿ˜ ๐Ÿ˜‘ ๐Ÿ˜ถ ๐Ÿ˜ ๐Ÿ˜’ ๐Ÿ™„ ๐Ÿ˜ฌ ๐Ÿ˜ฎโ€๐Ÿ’จ ๐Ÿคฅ ๐Ÿ˜Œ ๐Ÿ˜” ๐Ÿ˜ช ๐Ÿคค ๐Ÿ˜ด ๐Ÿ˜ท ๐Ÿค’ ๐Ÿค• ๐Ÿคข ๐Ÿคฎ ๐Ÿฅต ๐Ÿฅถ ๐Ÿฅด ๐Ÿ˜ต ๐Ÿคฏ ๐Ÿค  ๐Ÿฅณ ๐Ÿฅธ ๐Ÿ˜Ž ๐Ÿค“ ๐Ÿง ๐Ÿ˜• ๐Ÿ˜Ÿ ๐Ÿ™ ๐Ÿ˜ฎ ๐Ÿ˜ฏ ๐Ÿ˜ฒ ๐Ÿ˜ณ ๐Ÿฅบ ๐Ÿ˜ฆ ๐Ÿ˜ง ๐Ÿ˜จ ๐Ÿ˜ฐ ๐Ÿ˜ฅ ๐Ÿ˜ข ๐Ÿ˜ญ ๐Ÿ˜ฑ ๐Ÿ˜– ๐Ÿ˜ฃ ๐Ÿ˜ž ๐Ÿ˜“ ๐Ÿ˜ฉ ๐Ÿ˜ซ ๐Ÿฅฑ ๐Ÿ˜ค ๐Ÿ˜ก ๐Ÿ˜  ๐Ÿคฌ ๐Ÿ˜ˆ ๐Ÿ‘ฟ ๐Ÿ’€ ๐Ÿ’ฉ ๐Ÿคก ๐Ÿ‘ป ๐Ÿ‘ฝ ๐Ÿค– ๐Ÿ˜บ ๐Ÿ˜ธ ๐Ÿ˜น ๐Ÿ˜ป ๐Ÿ˜ผ ๐Ÿ˜ฝ ๐Ÿ™€ ๐Ÿ˜ฟ ๐Ÿ˜พ`,\n ),\n },\n {\n key: 'gestures',\n title: 'Gestures & Body',\n emojis: list(\n `๐Ÿ‘‹ ๐Ÿคš ๐Ÿ–๏ธ โœ‹ ๐Ÿ–– ๐Ÿ‘Œ ๐ŸคŒ ๐Ÿค โœŒ๏ธ ๐Ÿคž ๐ŸคŸ ๐Ÿค˜ ๐Ÿค™ ๐Ÿ‘ˆ ๐Ÿ‘‰ ๐Ÿ‘† ๐Ÿ‘‡ โ˜๏ธ ๐Ÿ‘ ๐Ÿ‘Ž โœŠ ๐Ÿ‘Š ๐Ÿค› ๐Ÿคœ ๐Ÿ‘ ๐Ÿ™Œ ๐Ÿ‘ ๐Ÿคฒ ๐Ÿค ๐Ÿ™ โœ๏ธ ๐Ÿ’… ๐Ÿ’ช ๐Ÿฆพ ๐Ÿง  ๐Ÿ‘€ ๐Ÿ‘๏ธ ๐Ÿ‘… ๐Ÿ‘„ ๐Ÿ’‹ ๐Ÿซถ ๐Ÿซก ๐Ÿซ  ๐Ÿซข ๐Ÿซฃ ๐Ÿซฅ`,\n ),\n },\n {\n key: 'hearts',\n title: 'Hearts & Symbols',\n emojis: list(\n `โค๏ธ ๐Ÿงก ๐Ÿ’› ๐Ÿ’š ๐Ÿ’™ ๐Ÿ’œ ๐Ÿ–ค ๐Ÿค ๐ŸคŽ ๐Ÿ’” โค๏ธโ€๐Ÿ”ฅ โค๏ธโ€๐Ÿฉน โฃ๏ธ ๐Ÿ’• ๐Ÿ’ž ๐Ÿ’“ ๐Ÿ’— ๐Ÿ’– ๐Ÿ’˜ ๐Ÿ’ ๐Ÿ’ฏ ๐Ÿ’ข ๐Ÿ’ฅ ๐Ÿ’ซ ๐Ÿ’ฆ ๐Ÿ’จ ๐Ÿ•ณ๏ธ ๐Ÿ’ฌ ๐Ÿ’ญ ๐Ÿ’ค โœจ โญ ๐ŸŒŸ ๐Ÿ”ฅ โšก โ€ผ๏ธ โ‰๏ธ โ“ โ— โœ… โŒ โญ• ๐Ÿšซ ๐Ÿ’ก ๐ŸŽฏ ๐Ÿ”” ๐ŸŽต ๐ŸŽถ โž• โž– โœ”๏ธ ๐Ÿ†— ๐Ÿ†’ ๐Ÿ†• ๐Ÿ”`,\n ),\n },\n {\n key: 'animals',\n title: 'Animals & Nature',\n emojis: list(\n `๐Ÿถ ๐Ÿฑ ๐Ÿญ ๐Ÿน ๐Ÿฐ ๐ŸฆŠ ๐Ÿป ๐Ÿผ ๐Ÿจ ๐Ÿฏ ๐Ÿฆ ๐Ÿฎ ๐Ÿท ๐Ÿธ ๐Ÿต ๐Ÿ™ˆ ๐Ÿ™‰ ๐Ÿ™Š ๐Ÿ” ๐Ÿง ๐Ÿฆ ๐Ÿฆ† ๐Ÿฆ… ๐Ÿฆ‰ ๐Ÿบ ๐Ÿด ๐Ÿฆ„ ๐Ÿ ๐Ÿฆ‹ ๐ŸŒ ๐Ÿž ๐Ÿข ๐Ÿ ๐Ÿ™ ๐Ÿฆ€ ๐Ÿ  ๐Ÿฌ ๐Ÿณ ๐Ÿฆˆ ๐ŸŠ ๐Ÿ˜ ๐Ÿฆ’ ๐Ÿช ๐Ÿ• ๐Ÿˆ ๐ŸŒต ๐ŸŽ„ ๐ŸŒฒ ๐ŸŒด ๐ŸŒฑ ๐Ÿ€ ๐Ÿ ๐Ÿ‚ ๐ŸŒท ๐ŸŒน ๐ŸŒบ ๐ŸŒธ ๐ŸŒผ ๐ŸŒป ๐ŸŒž ๐ŸŒ ๐ŸŒš ๐ŸŒ™ ๐ŸŒˆ โ˜€๏ธ โ›… โ˜๏ธ ๐ŸŒง๏ธ โ›ˆ๏ธ โ„๏ธ โ˜ƒ๏ธ ๐ŸŒŠ`,\n ),\n },\n {\n key: 'food',\n title: 'Food & Drink',\n emojis: list(\n `๐Ÿ ๐ŸŽ ๐Ÿ ๐ŸŠ ๐Ÿ‹ ๐ŸŒ ๐Ÿ‰ ๐Ÿ‡ ๐Ÿ“ ๐Ÿซ ๐Ÿ’ ๐Ÿ‘ ๐Ÿฅญ ๐Ÿ ๐Ÿฅฅ ๐Ÿฅ ๐Ÿ… ๐Ÿฅ‘ ๐ŸŒถ๏ธ ๐ŸŒฝ ๐Ÿฅ• ๐Ÿฅ” ๐Ÿฅ ๐Ÿž ๐Ÿง€ ๐Ÿฅš ๐Ÿณ ๐Ÿฅž ๐Ÿฅ“ ๐Ÿ— ๐Ÿ– ๐ŸŒญ ๐Ÿ” ๐ŸŸ ๐Ÿ• ๐Ÿฅช ๐ŸŒฎ ๐ŸŒฏ ๐Ÿฅ— ๐Ÿ ๐Ÿœ ๐Ÿฒ ๐Ÿ› ๐Ÿฃ ๐Ÿฑ ๐ŸฅŸ ๐Ÿค ๐Ÿš ๐Ÿฆ ๐Ÿฉ ๐Ÿช ๐ŸŽ‚ ๐Ÿฐ ๐Ÿง ๐Ÿซ ๐Ÿฌ ๐Ÿญ ๐Ÿฟ โ˜• ๐Ÿต ๐Ÿงƒ ๐Ÿฅค ๐Ÿง‹ ๐Ÿบ ๐Ÿป ๐Ÿฅ‚ ๐Ÿท ๐Ÿธ ๐Ÿน`,\n ),\n },\n {\n key: 'activity',\n title: 'Activity & Objects',\n emojis: list(\n `โšฝ ๐Ÿ€ ๐Ÿˆ โšพ ๐ŸŽพ ๐Ÿ ๐Ÿ‰ ๐ŸŽฑ ๐Ÿ“ ๐Ÿธ ๐Ÿ โ›ณ ๐ŸฅŠ ๐Ÿ† ๐Ÿฅ‡ ๐Ÿฅˆ ๐Ÿฅ‰ ๐Ÿ… ๐ŸŽ–๏ธ ๐ŸŽ‰ ๐ŸŽŠ ๐ŸŽˆ ๐ŸŽ ๐ŸŽ€ ๐ŸŽฎ ๐Ÿ•น๏ธ ๐ŸŽฒ ๐Ÿงฉ ๐ŸŽจ ๐ŸŽฌ ๐ŸŽค ๐ŸŽง ๐ŸŽธ ๐ŸŽน ๐Ÿฅ ๐Ÿ“ท ๐Ÿ“ฑ ๐Ÿ’ป โŒจ๏ธ ๐Ÿ–ฅ๏ธ ๐Ÿ”‹ ๐Ÿ’ฐ ๐Ÿ’ต ๐Ÿ’ณ ๐Ÿ“ˆ ๐Ÿ“‰ ๐Ÿ“Œ ๐Ÿ“Ž โœ๏ธ ๐Ÿ“ ๐Ÿ“š ๐Ÿ“… โฐ โŒ› ๐Ÿ”‘ ๐Ÿ”’ ๐Ÿ”จ ๐Ÿ› ๏ธ ๐Ÿ’Š ๐Ÿš— ๐Ÿš• ๐ŸšŒ ๐Ÿš€ โœˆ๏ธ ๐Ÿšฒ ๐Ÿ  ๐Ÿข ๐Ÿ—บ๏ธ ๐Ÿ–๏ธ โ›ฐ๏ธ`,\n ),\n },\n {\n key: 'flags',\n title: 'Flags',\n emojis: list(`๐Ÿณ๏ธ ๐Ÿด ๐Ÿ ๐Ÿšฉ ๐Ÿณ๏ธโ€๐ŸŒˆ ๐Ÿ‡ฎ๐Ÿ‡ณ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ‡จ๐Ÿ‡ฆ ๐Ÿ‡ฆ๐Ÿ‡บ ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡ฒ๐Ÿ‡ฝ ๐Ÿ‡ฆ๐Ÿ‡ช ๐Ÿ‡ธ๐Ÿ‡ฆ ๐Ÿ‡ธ๐Ÿ‡ฌ ๐Ÿ‡ณ๐Ÿ‡ฟ ๐Ÿ‡ฟ๐Ÿ‡ฆ ๐Ÿ‡ณ๐Ÿ‡ฌ ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡น๐Ÿ‡ท ๐Ÿ‡ณ๐Ÿ‡ฑ ๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‡จ๐Ÿ‡ญ`),\n },\n];\n\n/**\n * The reaction to use from what the user typed in the picker's text field, or\n * null while it holds nothing emoji-like. Letters, digits and plain punctuation\n * are ignored so the field cannot turn into a free-text reaction.\n */\nexport function emojiFromInput(text: string): string | null {\n const value = text.trim();\n if (!value || value.length > 16) return null;\n if (/[A-Za-z0-9\\s.,;:'\"!?@#$%^&*()\\-_=+[\\]{}<>/\\\\|`~]/.test(value)) return null;\n return value;\n}\n"],"names":[],"mappings":"AAUA,MAAM,IAAO,GAAA,CAAC,CAAc,KAAA,KAAA,CAAM,KAAK,CAAE,CAAA,OAAA,CAAQ,MAAQ,EAAA,GAAG,CAAE,CAAA,IAAA,EAAO,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AACxE,MAAM,mBAAoC,CAAC;AAAA,EAChD,GAAK,EAAA,SAAA;AAAA,EACL,KAAO,EAAA,kBAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAqU,4jCAAA,CAAA;AACpV,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,UAAA;AAAA,EACL,KAAO,EAAA,iBAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAA2I,0dAAA,CAAA;AAC1J,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,QAAA;AAAA,EACL,KAAO,EAAA,kBAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAmK,gkBAAA,CAAA;AAClL,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,SAAA;AAAA,EACL,KAAO,EAAA,kBAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAyN,iuBAAA,CAAA;AACxO,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,MAAA;AAAA,EACL,KAAO,EAAA,cAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAgN,orBAAA,CAAA;AAC/N,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,UAAA;AAAA,EACL,KAAO,EAAA,oBAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAoN,4tBAAA,CAAA;AACnO,CAAG,EAAA;AAAA,EACD,GAAK,EAAA,OAAA;AAAA,EACL,KAAO,EAAA,OAAA;AAAA,EACP,MAAA,EAAQ,KAAK,CAAkJ,uiBAAA,CAAA;AACjK,CAAC;AAOM,SAAS,eAAe,IAA6B,EAAA;AAC1D,EAAM,MAAA,KAAA,GAAQ,KAAK,IAAK,EAAA;AACxB,EAAA,IAAI,CAAC,KAAA,IAAS,KAAM,CAAA,MAAA,GAAS,IAAW,OAAA,IAAA;AACxC,EAAA,IAAI,kDAAmD,CAAA,IAAA,CAAK,KAAK,CAAA,EAAU,OAAA,IAAA;AAC3E,EAAO,OAAA,KAAA;AACT"}
1
+ {"version":3,"file":"emojiCatalog.js","sources":["../../../src/features/messaging/emojiCatalog.ts"],"sourcesContent":["import { EMOJI_KEYWORDS_SOURCE } from './emojiKeywords';\n\n/**\n * Emoji grid for the \"+\" Tapback picker. Plain data rather than an emoji\n * package: the remote ships no extra dependencies, and the system emoji\n * keyboard in the picker covers everything not listed here.\n */\nexport interface EmojiCategory {\n key: string;\n title: string;\n emojis: string[];\n}\n\nconst list = (s: string) => Array.from(s.replace(/\\s+/g, ' ').trim().split(' '));\n\nexport const EMOJI_CATEGORIES: EmojiCategory[] = [\n {\n key: 'smileys',\n title: 'Smileys & People',\n emojis: list(\n `๐Ÿ˜€ ๐Ÿ˜ƒ ๐Ÿ˜„ ๐Ÿ˜ ๐Ÿ˜† ๐Ÿ˜… ๐Ÿคฃ ๐Ÿ˜‚ ๐Ÿ™‚ ๐Ÿ™ƒ ๐Ÿ˜‰ ๐Ÿ˜Š ๐Ÿ˜‡ ๐Ÿฅฐ ๐Ÿ˜ ๐Ÿคฉ ๐Ÿ˜˜ ๐Ÿ˜— ๐Ÿ˜š ๐Ÿ˜™ ๐Ÿฅฒ ๐Ÿ˜‹ ๐Ÿ˜› ๐Ÿ˜œ ๐Ÿคช ๐Ÿ˜ ๐Ÿค‘ ๐Ÿค— ๐Ÿคญ ๐Ÿคซ ๐Ÿค” ๐Ÿค ๐Ÿคจ ๐Ÿ˜ ๐Ÿ˜‘ ๐Ÿ˜ถ ๐Ÿ˜ ๐Ÿ˜’ ๐Ÿ™„ ๐Ÿ˜ฌ ๐Ÿ˜ฎโ€๐Ÿ’จ ๐Ÿคฅ ๐Ÿ˜Œ ๐Ÿ˜” ๐Ÿ˜ช ๐Ÿคค ๐Ÿ˜ด ๐Ÿ˜ท ๐Ÿค’ ๐Ÿค• ๐Ÿคข ๐Ÿคฎ ๐Ÿฅต ๐Ÿฅถ ๐Ÿฅด ๐Ÿ˜ต ๐Ÿคฏ ๐Ÿค  ๐Ÿฅณ ๐Ÿฅธ ๐Ÿ˜Ž ๐Ÿค“ ๐Ÿง ๐Ÿ˜• ๐Ÿ˜Ÿ ๐Ÿ™ ๐Ÿ˜ฎ ๐Ÿ˜ฏ ๐Ÿ˜ฒ ๐Ÿ˜ณ ๐Ÿฅบ ๐Ÿ˜ฆ ๐Ÿ˜ง ๐Ÿ˜จ ๐Ÿ˜ฐ ๐Ÿ˜ฅ ๐Ÿ˜ข ๐Ÿ˜ญ ๐Ÿ˜ฑ ๐Ÿ˜– ๐Ÿ˜ฃ ๐Ÿ˜ž ๐Ÿ˜“ ๐Ÿ˜ฉ ๐Ÿ˜ซ ๐Ÿฅฑ ๐Ÿ˜ค ๐Ÿ˜ก ๐Ÿ˜  ๐Ÿคฌ ๐Ÿ˜ˆ ๐Ÿ‘ฟ ๐Ÿ’€ ๐Ÿ’ฉ ๐Ÿคก ๐Ÿ‘ป ๐Ÿ‘ฝ ๐Ÿค– ๐Ÿ˜บ ๐Ÿ˜ธ ๐Ÿ˜น ๐Ÿ˜ป ๐Ÿ˜ผ ๐Ÿ˜ฝ ๐Ÿ™€ ๐Ÿ˜ฟ ๐Ÿ˜พ`,\n ),\n },\n {\n key: 'gestures',\n title: 'Gestures & Body',\n emojis: list(\n `๐Ÿ‘‹ ๐Ÿคš ๐Ÿ–๏ธ โœ‹ ๐Ÿ–– ๐Ÿ‘Œ ๐ŸคŒ ๐Ÿค โœŒ๏ธ ๐Ÿคž ๐ŸคŸ ๐Ÿค˜ ๐Ÿค™ ๐Ÿ‘ˆ ๐Ÿ‘‰ ๐Ÿ‘† ๐Ÿ‘‡ โ˜๏ธ ๐Ÿ‘ ๐Ÿ‘Ž โœŠ ๐Ÿ‘Š ๐Ÿค› ๐Ÿคœ ๐Ÿ‘ ๐Ÿ™Œ ๐Ÿ‘ ๐Ÿคฒ ๐Ÿค ๐Ÿ™ โœ๏ธ ๐Ÿ’… ๐Ÿ’ช ๐Ÿฆพ ๐Ÿง  ๐Ÿ‘€ ๐Ÿ‘๏ธ ๐Ÿ‘… ๐Ÿ‘„ ๐Ÿ’‹ ๐Ÿซถ ๐Ÿซก ๐Ÿซ  ๐Ÿซข ๐Ÿซฃ ๐Ÿซฅ`,\n ),\n },\n {\n key: 'hearts',\n title: 'Hearts & Symbols',\n emojis: list(\n `โค๏ธ ๐Ÿงก ๐Ÿ’› ๐Ÿ’š ๐Ÿ’™ ๐Ÿ’œ ๐Ÿ–ค ๐Ÿค ๐ŸคŽ ๐Ÿ’” โค๏ธโ€๐Ÿ”ฅ โค๏ธโ€๐Ÿฉน โฃ๏ธ ๐Ÿ’• ๐Ÿ’ž ๐Ÿ’“ ๐Ÿ’— ๐Ÿ’– ๐Ÿ’˜ ๐Ÿ’ ๐Ÿ’ฏ ๐Ÿ’ข ๐Ÿ’ฅ ๐Ÿ’ซ ๐Ÿ’ฆ ๐Ÿ’จ ๐Ÿ•ณ๏ธ ๐Ÿ’ฌ ๐Ÿ’ญ ๐Ÿ’ค โœจ โญ ๐ŸŒŸ ๐Ÿ”ฅ โšก โ€ผ๏ธ โ‰๏ธ โ“ โ— โœ… โŒ โญ• ๐Ÿšซ ๐Ÿ’ก ๐ŸŽฏ ๐Ÿ”” ๐ŸŽต ๐ŸŽถ โž• โž– โœ”๏ธ ๐Ÿ†— ๐Ÿ†’ ๐Ÿ†• ๐Ÿ”`,\n ),\n },\n {\n key: 'animals',\n title: 'Animals & Nature',\n emojis: list(\n `๐Ÿถ ๐Ÿฑ ๐Ÿญ ๐Ÿน ๐Ÿฐ ๐ŸฆŠ ๐Ÿป ๐Ÿผ ๐Ÿจ ๐Ÿฏ ๐Ÿฆ ๐Ÿฎ ๐Ÿท ๐Ÿธ ๐Ÿต ๐Ÿ™ˆ ๐Ÿ™‰ ๐Ÿ™Š ๐Ÿ” ๐Ÿง ๐Ÿฆ ๐Ÿฆ† ๐Ÿฆ… ๐Ÿฆ‰ ๐Ÿบ ๐Ÿด ๐Ÿฆ„ ๐Ÿ ๐Ÿฆ‹ ๐ŸŒ ๐Ÿž ๐Ÿข ๐Ÿ ๐Ÿ™ ๐Ÿฆ€ ๐Ÿ  ๐Ÿฌ ๐Ÿณ ๐Ÿฆˆ ๐ŸŠ ๐Ÿ˜ ๐Ÿฆ’ ๐Ÿช ๐Ÿ• ๐Ÿˆ ๐ŸŒต ๐ŸŽ„ ๐ŸŒฒ ๐ŸŒด ๐ŸŒฑ ๐Ÿ€ ๐Ÿ ๐Ÿ‚ ๐ŸŒท ๐ŸŒน ๐ŸŒบ ๐ŸŒธ ๐ŸŒผ ๐ŸŒป ๐ŸŒž ๐ŸŒ ๐ŸŒš ๐ŸŒ™ ๐ŸŒˆ โ˜€๏ธ โ›… โ˜๏ธ ๐ŸŒง๏ธ โ›ˆ๏ธ โ„๏ธ โ˜ƒ๏ธ ๐ŸŒŠ`,\n ),\n },\n {\n key: 'food',\n title: 'Food & Drink',\n emojis: list(\n `๐Ÿ ๐ŸŽ ๐Ÿ ๐ŸŠ ๐Ÿ‹ ๐ŸŒ ๐Ÿ‰ ๐Ÿ‡ ๐Ÿ“ ๐Ÿซ ๐Ÿ’ ๐Ÿ‘ ๐Ÿฅญ ๐Ÿ ๐Ÿฅฅ ๐Ÿฅ ๐Ÿ… ๐Ÿฅ‘ ๐ŸŒถ๏ธ ๐ŸŒฝ ๐Ÿฅ• ๐Ÿฅ” ๐Ÿฅ ๐Ÿž ๐Ÿง€ ๐Ÿฅš ๐Ÿณ ๐Ÿฅž ๐Ÿฅ“ ๐Ÿ— ๐Ÿ– ๐ŸŒญ ๐Ÿ” ๐ŸŸ ๐Ÿ• ๐Ÿฅช ๐ŸŒฎ ๐ŸŒฏ ๐Ÿฅ— ๐Ÿ ๐Ÿœ ๐Ÿฒ ๐Ÿ› ๐Ÿฃ ๐Ÿฑ ๐ŸฅŸ ๐Ÿค ๐Ÿš ๐Ÿฆ ๐Ÿฉ ๐Ÿช ๐ŸŽ‚ ๐Ÿฐ ๐Ÿง ๐Ÿซ ๐Ÿฌ ๐Ÿญ ๐Ÿฟ โ˜• ๐Ÿต ๐Ÿงƒ ๐Ÿฅค ๐Ÿง‹ ๐Ÿบ ๐Ÿป ๐Ÿฅ‚ ๐Ÿท ๐Ÿธ ๐Ÿน`,\n ),\n },\n {\n key: 'activity',\n title: 'Activity & Objects',\n emojis: list(\n `โšฝ ๐Ÿ€ ๐Ÿˆ โšพ ๐ŸŽพ ๐Ÿ ๐Ÿ‰ ๐ŸŽฑ ๐Ÿ“ ๐Ÿธ ๐Ÿ โ›ณ ๐ŸฅŠ ๐Ÿ† ๐Ÿฅ‡ ๐Ÿฅˆ ๐Ÿฅ‰ ๐Ÿ… ๐ŸŽ–๏ธ ๐ŸŽ‰ ๐ŸŽŠ ๐ŸŽˆ ๐ŸŽ ๐ŸŽ€ ๐ŸŽฎ ๐Ÿ•น๏ธ ๐ŸŽฒ ๐Ÿงฉ ๐ŸŽจ ๐ŸŽฌ ๐ŸŽค ๐ŸŽง ๐ŸŽธ ๐ŸŽน ๐Ÿฅ ๐Ÿ“ท ๐Ÿ“ฑ ๐Ÿ’ป โŒจ๏ธ ๐Ÿ–ฅ๏ธ ๐Ÿ”‹ ๐Ÿ’ฐ ๐Ÿ’ต ๐Ÿ’ณ ๐Ÿ“ˆ ๐Ÿ“‰ ๐Ÿ“Œ ๐Ÿ“Ž โœ๏ธ ๐Ÿ“ ๐Ÿ“š ๐Ÿ“… โฐ โŒ› ๐Ÿ”‘ ๐Ÿ”’ ๐Ÿ”จ ๐Ÿ› ๏ธ ๐Ÿ’Š ๐Ÿš— ๐Ÿš• ๐ŸšŒ ๐Ÿš€ โœˆ๏ธ ๐Ÿšฒ ๐Ÿ  ๐Ÿข ๐Ÿ—บ๏ธ ๐Ÿ–๏ธ โ›ฐ๏ธ`,\n ),\n },\n {\n key: 'flags',\n title: 'Flags',\n emojis: list(`๐Ÿณ๏ธ ๐Ÿด ๐Ÿ ๐Ÿšฉ ๐Ÿณ๏ธโ€๐ŸŒˆ ๐Ÿ‡ฎ๐Ÿ‡ณ ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ‡จ๐Ÿ‡ฆ ๐Ÿ‡ฆ๐Ÿ‡บ ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡ฒ๐Ÿ‡ฝ ๐Ÿ‡ฆ๐Ÿ‡ช ๐Ÿ‡ธ๐Ÿ‡ฆ ๐Ÿ‡ธ๐Ÿ‡ฌ ๐Ÿ‡ณ๐Ÿ‡ฟ ๐Ÿ‡ฟ๐Ÿ‡ฆ ๐Ÿ‡ณ๐Ÿ‡ฌ ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡น๐Ÿ‡ท ๐Ÿ‡ณ๐Ÿ‡ฑ ๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‡จ๐Ÿ‡ญ`),\n },\n];\n\n/**\n * The reaction to use from what the user typed in the picker's text field, or\n * null while it holds nothing emoji-like. Letters, digits and plain punctuation\n * are ignored so the field cannot turn into a free-text reaction.\n */\nexport function emojiFromInput(text: string): string | null {\n const value = text.trim();\n if (!value || value.length > 16) return null;\n if (/[A-Za-z0-9\\s.,;:'\"!?@#$%^&*()\\-_=+[\\]{}<>/\\\\|`~]/.test(value)) return null;\n return value;\n}\n\ninterface EmojiEntry {\n emoji: string;\n words: string[];\n}\n\nlet emojiIndex: EmojiEntry[] | null = null;\n\n/** Parsed on first search only; the picker's grid does not need it. */\nfunction getEmojiIndex(): EmojiEntry[] {\n if (!emojiIndex) {\n emojiIndex = EMOJI_KEYWORDS_SOURCE.split('\\n')\n .map((line) => line.trim().split(' '))\n .filter((parts) => parts.length > 1)\n .map(([emoji, ...words]) => ({ emoji, words }));\n }\n return emojiIndex;\n}\n\n/**\n * Emoji whose name or keywords start with every word typed (\"sleep\" -> ๐Ÿ˜ด ๐Ÿ˜ช ๐Ÿ›Œ ๐Ÿ’ค,\n * \"red heart\" -> โค๏ธ). Emoji whose name starts with the first word come first.\n */\nexport function searchEmoji(query: string, limit = 96): string[] {\n const terms = query.toLowerCase().trim().split(/\\s+/).filter(Boolean);\n if (!terms.length) return [];\n const named: string[] = [];\n const tagged: string[] = [];\n for (const { emoji, words } of getEmojiIndex()) {\n if (!terms.every((t) => words.some((w) => w.startsWith(t)))) continue;\n (words[0].startsWith(terms[0]) ? named : tagged).push(emoji);\n }\n return [...named, ...tagged].slice(0, limit);\n}\n"],"names":[],"mappings":"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"}