@webitel/ui-sdk 26.6.56 → 26.6.58

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.
Files changed (128) hide show
  1. package/dist/{clients-BylvVtUg.js → clients-CX7SniM1.js} +6 -6
  2. package/dist/{components-Ceu_o5QZ.js → components-reoSYpZx.js} +2063 -1152
  3. package/dist/{composables-DJlgUtl5.js → composables-Ckg9IFyC.js} +3 -3
  4. package/dist/{debounce-DPzXwiOS.js → debounce-Bp3jy7S5.js} +2 -2
  5. package/dist/{deep-copy-CQw5yeEH.js → deep-copy-CTgLtgMO.js} +1 -1
  6. package/dist/{dist-BYiYpK00.js → dist-CAOIU8xq.js} +1 -1
  7. package/dist/{dist-05Bf47Wg.js → dist-Crpfx4FA.js} +1 -1
  8. package/dist/dist-uCh8HaP3.js +1910 -0
  9. package/dist/{enums-DW1oVune.js → enums-CBWwTuq7.js} +14 -10
  10. package/dist/{floating-ui.dom-n2j9PKCB.js → floating-ui.dom-Ch9ml4Rx.js} +322 -352
  11. package/dist/{generateInstance-BD4pC4PS.js → generateInstance-DpLUt03M.js} +3 -3
  12. package/dist/{chunk-CY3AvKd6.js → rolldown-runtime-BEcgMyyN.js} +8 -1
  13. package/dist/{side-channel-Cyte-MzW.js → side-channel-8SnAuRMA.js} +18 -18
  14. package/dist/ui-sdk.js +831 -25977
  15. package/dist/ui-sdk.umd.cjs +1849 -7448
  16. package/dist/{useValidation-NX7UjlXi.js → useValidation-B0voza7s.js} +2 -2
  17. package/dist/{useVidstackSrc-jCDCYTce.js → useVidstackSrc-epUQZhkL.js} +6 -4
  18. package/dist/{useWtTable-tqmVOvve.js → useWtTable-DrrvvB6k.js} +1 -1
  19. package/dist/vidstack-BLEs9rMG-Agxpv9v8.js +11 -0
  20. package/dist/{vidstack-video-IgjC6GLU.js → vidstack-C6nBVWwn-BlZqtkYB.js} +11 -11
  21. package/dist/{vidstack-C9vIqaYT-C1EgPq17.js → vidstack-CDOoBnJL-BCwLE1fB.js} +2 -2
  22. package/dist/{vidstack-Bq6c3Bam-hoRopLll.js → vidstack-CI5oafcm-DAV7Lilr.js} +38 -37
  23. package/dist/{vidstack-D_-9AA6_-Dq3APB0-.js → vidstack-CXo4cwSP2-6kDG00FC.js} +3 -3
  24. package/dist/{vidstack-Dihypf8P-ibWMCHK-.js → vidstack-CZQo98ic-D3uTuzB9.js} +1 -1
  25. package/dist/{vidstack-DDXt6fpN-Don_e6LS.js → vidstack-CceZzgm4-C37rtwSQ.js} +13 -13
  26. package/dist/{vidstack-ChQTHmIQ-nTO94M6P.js → vidstack-CdfyZegh-Bn47J4h6.js} +3 -3
  27. package/dist/{vidstack-C2US-gSO-DeIgENrW.js → vidstack-CgfrU1hS-CNTJkyzm.js} +26 -26
  28. package/dist/{vidstack-BGSTndAW-CyKM_CM4.js → vidstack-D9mvYVIz-DesuYgKV.js} +179 -278
  29. package/dist/{vidstack-BQlOPwOu-ChhdffAJ.js → vidstack-DATGlkSz2-BnlUxvSa.js} +2 -2
  30. package/dist/{vidstack-D2pY00kU-dXPuSPZl.js → vidstack-DUnfBERX2-Cl6yTfB3.js} +6 -6
  31. package/dist/{vidstack-Ci54COQW-CAAXpwzv.js → vidstack-DYPyTdYw-BzqKxwCK.js} +49 -44
  32. package/dist/vidstack-IMa-zkAV-DevzBPj3.js +35 -0
  33. package/dist/{vidstack-B01xzxC4-DeYSgDZy.js → vidstack-_E7LrUjK-DaCLs8ge.js} +1 -1
  34. package/dist/{vidstack-audio-CCSR8cXr.js → vidstack-audio-CH4wIf0F.js} +2 -2
  35. package/dist/{vidstack-dash-CNcNULYU.js → vidstack-dash-CmlmZIFT.js} +31 -32
  36. package/dist/{vidstack-google-cast-Co5Q_rfL.js → vidstack-google-cast-COyApZ_Z.js} +17 -18
  37. package/dist/{vidstack-hls-BP6P23Cc.js → vidstack-hls-D1sxUvBd.js} +70 -71
  38. package/dist/vidstack-ijoHbXQB-DBClSWHE.js +32 -0
  39. package/dist/{vidstack-CTojmhKq-D7sZJxgm.js → vidstack-mvRkf9tF-CoFf7dS9.js} +7 -7
  40. package/dist/vidstack-q-9soyHT-CiZ4hFSF.js +50 -0
  41. package/dist/vidstack-video-iy3-Vo1A.js +2 -0
  42. package/dist/{vidstack-vimeo-EzzPpggD.js → vidstack-vimeo-BhNQpz6m.js} +58 -58
  43. package/dist/{vidstack-youtube-C1_NAfWa.js → vidstack-youtube-BIhUrYs-.js} +33 -30
  44. package/dist/{vue-i18n-B8Px6VcD.js → vue-i18n-lTFLGg_9.js} +796 -728
  45. package/dist/{wt-action-bar-BHg0dHh-.js → wt-action-bar-B17FBHD7.js} +2 -2
  46. package/dist/{wt-button-Cv7wRtF5.js → wt-button-0kP5bPMs.js} +30 -30
  47. package/dist/wt-chat-emoji-C_fb9LZF.js +1372 -0
  48. package/dist/{wt-datepicker-DmmqWre1.js → wt-datepicker-baNcFWZ1.js} +765 -765
  49. package/dist/{wt-display-chip-items-CIW2Kmd1.js → wt-display-chip-items-CgrbKQ5R.js} +1 -1
  50. package/dist/{wt-dual-panel-Cnzr4m-k.js → wt-dual-panel-C5LZm1Tr.js} +1 -1
  51. package/dist/{wt-expansion-card-B3J3dMdV.js → wt-expansion-card-C2qETdn0.js} +2 -2
  52. package/dist/{wt-expansion-panel-CYZR6tYG.js → wt-expansion-panel-Dvzj9PTk.js} +1 -1
  53. package/dist/{wt-galleria-AICD8wZ_.js → wt-galleria-DL3svAQs.js} +2 -2
  54. package/dist/{wt-icon-CqEgBu_3.js → wt-icon-DIdpwmpC.js} +224 -219
  55. package/dist/{wt-icon-action-DlZx4RV6.js → wt-icon-action-C8WN2oVD.js} +2 -2
  56. package/dist/{wt-icon-btn-B66HR8qM.js → wt-icon-btn-BLnhJADA.js} +1 -1
  57. package/dist/{wt-notifications-bar-Bbzp4mi1.js → wt-notifications-bar-Dx1YPqFu.js} +7 -8
  58. package/dist/{wt-pagination-CZuQFM3-.js → wt-pagination-G2ZGU4Pi.js} +1 -1
  59. package/dist/{wt-player-CFL51-s6.js → wt-player-CCwEyUzv.js} +6 -6
  60. package/dist/{wt-popover-CJin-2BO.js → wt-popover-BdwrokVy.js} +1 -1
  61. package/dist/{wt-search-bar--ACLsoNo.js → wt-search-bar-CiQJ9ViN.js} +4 -4
  62. package/dist/{wt-selection-popup-B77UY7Yu.js → wt-selection-popup-Bh9D7VtA.js} +1 -1
  63. package/dist/{wt-send-message-popup-D5_uap5F.js → wt-send-message-popup-CIH2cusg.js} +3 -3
  64. package/dist/{wt-slider-BS3SoGht.js → wt-slider-BPzRTeYU.js} +1 -1
  65. package/dist/{wt-start-page-eN1PEokc.js → wt-start-page-DMXRhA9E.js} +1 -1
  66. package/dist/{wt-table-2AC3hrK9.js → wt-table-25p4E01H.js} +2 -2
  67. package/dist/{wt-table-column-select-DFF6z3a3.js → wt-table-column-select-C3ma6jxK.js} +3 -3
  68. package/dist/{wt-timepicker-DpZmWZdv.js → wt-timepicker-DyM1OQX4.js} +3 -3
  69. package/dist/wt-toast-KTAx-8zA.js +71 -0
  70. package/dist/{wt-tree-ZyoPrNOl.js → wt-tree-DZ9ErOGj.js} +22 -12
  71. package/dist/{wt-tree-table-DkK3EyzZ.js → wt-tree-table-BlZEw4tr.js} +41 -41
  72. package/dist/{wt-type-extension-value-input-f5i8mReW.js → wt-type-extension-value-input-Dw24yOLg.js} +4 -4
  73. package/dist/{wt-vidstack-player-Ba6-mEdW.js → wt-vidstack-player-CLtfGaGj.js} +1601 -1453
  74. package/package.json +1 -1
  75. package/src/assets/icons/sprite/index.ts +7 -0
  76. package/src/assets/icons/sprite/ws-signal-high.svg +11 -0
  77. package/src/assets/icons/sprite/ws-signal-low.svg +11 -0
  78. package/src/assets/icons/sprite/ws-signal-medium.svg +11 -0
  79. package/src/components/index.js +3 -0
  80. package/src/components/wt-call-media-metric/wt-call-media-metric.vue +41 -0
  81. package/src/components/wt-toast/wt-toast.vue +2 -2
  82. package/src/enums/ConnectionQualityLevel/ConnectionQualityLevel.enum.ts +8 -0
  83. package/src/enums/index.ts +6 -0
  84. package/src/locale/en/en.js +5 -0
  85. package/src/locale/es/es.js +5 -0
  86. package/src/locale/kz/kz.js +5 -0
  87. package/src/locale/pl/pl.js +5 -0
  88. package/src/locale/ro/ro.js +5 -0
  89. package/src/locale/ru/ru.js +5 -0
  90. package/src/locale/uk/uk.js +5 -0
  91. package/src/locale/uz/uz.js +5 -0
  92. package/src/locale/vi/vi.js +5 -0
  93. package/src/scripts/getConnectionQuality.ts +13 -0
  94. package/src/scripts/index.js +2 -0
  95. package/types/components/wt-call-media-metric/wt-call-media-metric.vue.d.ts +13 -0
  96. package/types/components/wt-galleria/wt-galleria.vue.d.ts +2 -6
  97. package/types/components/wt-input-number/wt-input-number.vue.d.ts +2 -2
  98. package/types/components/wt-input-text/wt-input-text.vue.d.ts +2 -2
  99. package/types/components/wt-switcher/wt-switcher.vue.d.ts +2 -2
  100. package/types/components/wt-table/wt-table.vue.d.ts +1 -1
  101. package/types/components/wt-textarea/wt-textarea.vue.d.ts +1 -9
  102. package/types/enums/ConnectionQualityLevel/ConnectionQualityLevel.enum.d.ts +6 -0
  103. package/types/enums/index.d.ts +3 -2
  104. package/types/locale/en/en.d.ts +5 -0
  105. package/types/locale/es/es.d.ts +5 -0
  106. package/types/locale/i18n.d.ts +45 -0
  107. package/types/locale/index.d.ts +45 -0
  108. package/types/locale/kz/kz.d.ts +5 -0
  109. package/types/locale/pl/pl.d.ts +5 -0
  110. package/types/locale/ro/ro.d.ts +5 -0
  111. package/types/locale/ru/ru.d.ts +5 -0
  112. package/types/locale/uk/uk.d.ts +5 -0
  113. package/types/locale/uz/uz.d.ts +5 -0
  114. package/types/locale/vi/vi.d.ts +5 -0
  115. package/types/modules/AuditForm/components/audit-form-question-write-wrapper.vue.d.ts +1 -5
  116. package/types/modules/AuditForm/components/audit-form.vue.d.ts +4 -10
  117. package/types/modules/Flow/lookups/FlowTypeApplications.lookup.d.ts +5 -5
  118. package/types/scripts/getConnectionQuality.d.ts +2 -0
  119. package/types/scripts/index.d.ts +2 -1
  120. package/dist/dist-Dz55hlwp.js +0 -1371
  121. package/dist/eventBus-By3thVlR.js +0 -31
  122. package/dist/usetoast-BECIyaas.js +0 -10
  123. package/dist/vidstack-D5EzK014-DOe01V3H.js +0 -14
  124. package/dist/vidstack-Dm1xEU9Q-VlefmrP8.js +0 -31
  125. package/dist/vidstack-DqAw8m9J-Dk1GT3Oe.js +0 -22
  126. package/dist/vidstack-krOAtKMi-DN1WZC3p.js +0 -30
  127. package/dist/wt-chat-emoji-Dnu07Or5.js +0 -2226
  128. package/dist/wt-toast-gaZL33Am.js +0 -44
@@ -0,0 +1,1372 @@
1
+ import "./components-reoSYpZx.js";
2
+ import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
3
+ import { l as t } from "./enums-CBWwTuq7.js";
4
+ import { t as n } from "./wt-button-0kP5bPMs.js";
5
+ import { n as r } from "./wt-toast-KTAx-8zA.js";
6
+ import { Teleport as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createVNode as l, nextTick as u, onBeforeUnmount as d, openBlock as f, ref as p, resolveDirective as m, unref as h, withDirectives as g } from "vue";
7
+ //#region node_modules/emoji-picker-element/database.js
8
+ function _(e) {
9
+ if (typeof e != "string" || !e) throw Error("expected a non-empty string, got: " + e);
10
+ }
11
+ function v(e) {
12
+ if (typeof e != "number") throw Error("expected a number, got: " + e);
13
+ }
14
+ var y = 1, b = 1, x = "emoji", S = "keyvalue", C = "favorites", w = "tokens", T = "tokens", E = "unicode", D = "count", O = "group", ee = "order", k = "group-order", A = "eTag", j = "url", te = "skinTone", M = "readonly", N = "readwrite", ne = "skinUnicodes", P = "skinUnicodes", re = "https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json", ie = "en";
15
+ function ae(e, t) {
16
+ let n = /* @__PURE__ */ new Set(), r = [];
17
+ for (let i of e) {
18
+ let e = t(i);
19
+ n.has(e) || (n.add(e), r.push(i));
20
+ }
21
+ return r;
22
+ }
23
+ function F(e) {
24
+ return ae(e, (e) => e.unicode);
25
+ }
26
+ function oe(e) {
27
+ function t(t, n, r) {
28
+ let i = n ? e.createObjectStore(t, { keyPath: n }) : e.createObjectStore(t);
29
+ if (r) for (let [e, [t, n]] of Object.entries(r)) i.createIndex(e, t, { multiEntry: n });
30
+ return i;
31
+ }
32
+ t(S), t(x, E, {
33
+ [T]: [w, !0],
34
+ [k]: [[O, ee]],
35
+ [ne]: [P, !0]
36
+ }), t(C, void 0, { [D]: [""] });
37
+ }
38
+ var I = {}, L = {}, R = {};
39
+ function se(e, t, n) {
40
+ n.onerror = () => t(n.error), n.onblocked = () => t(/* @__PURE__ */ Error("IDB blocked")), n.onsuccess = () => e(n.result);
41
+ }
42
+ async function ce(e) {
43
+ let t = await new Promise((t, n) => {
44
+ let r = indexedDB.open(e, y);
45
+ I[e] = r, r.onupgradeneeded = (e) => {
46
+ /* istanbul ignore else */
47
+ e.oldVersion < b && oe(r.result);
48
+ }, se(t, n, r);
49
+ });
50
+ return t.onclose = () => ue(e), t;
51
+ }
52
+ function le(e) {
53
+ return L[e] || (L[e] = ce(e)), L[e];
54
+ }
55
+ function z(e, t, n, r) {
56
+ return new Promise((i, a) => {
57
+ let o = e.transaction(t, n, { durability: "relaxed" }), s = typeof t == "string" ? o.objectStore(t) : t.map((e) => o.objectStore(e)), c;
58
+ /* istanbul ignore next */
59
+ r(s, o, (e) => {
60
+ c = e;
61
+ }), o.oncomplete = () => i(c), o.onerror = () => a(o.error);
62
+ });
63
+ }
64
+ function ue(e) {
65
+ let t = I[e], n = t && t.result;
66
+ if (n) {
67
+ n.close();
68
+ let t = R[e];
69
+ /* istanbul ignore else */
70
+ if (t) for (let e of t) e();
71
+ }
72
+ delete I[e], delete L[e], delete R[e];
73
+ }
74
+ function de(e) {
75
+ return new Promise((t, n) => {
76
+ ue(e), se(t, n, indexedDB.deleteDatabase(e));
77
+ });
78
+ }
79
+ function fe(e, t) {
80
+ let n = R[e];
81
+ n ||= R[e] = [], n.push(t);
82
+ }
83
+ var pe = /* @__PURE__ */ new Set(/* @__PURE__ */ ":D.XD.:'D.O:).:X.:P.;P.XP.:L.:Z.:j.8D.XO.8).:B.:O.:S.:'o.Dx.X(.D:.:C.>0).:3.</3.<3.\\M/.:E.8#".split("."));
84
+ function B(e) {
85
+ return e.split(/[\s_]+/).map((e) => !e.match(/\w/) || pe.has(e) ? e.toLowerCase() : e.replace(/[)(:,]/g, "").replace(/’/g, "'").toLowerCase()).filter(Boolean);
86
+ }
87
+ var me = 2;
88
+ function he(e) {
89
+ return e.filter(Boolean).map((e) => e.toLowerCase()).filter((e) => e.length >= me);
90
+ }
91
+ function ge(e) {
92
+ return e.map(({ annotation: e, emoticon: t, group: n, order: r, shortcodes: i, skins: a, tags: o, emoji: s, version: c }) => {
93
+ let l = {
94
+ annotation: e,
95
+ group: n,
96
+ order: r,
97
+ tags: o,
98
+ tokens: [...new Set(he([
99
+ ...(i || []).map(B).flat(),
100
+ ...(o || []).map(B).flat(),
101
+ ...B(e),
102
+ t
103
+ ]))].sort(),
104
+ unicode: s,
105
+ version: c
106
+ };
107
+ if (t && (l.emoticon = t), i && (l.shortcodes = i), a) {
108
+ l.skinTones = [], l.skinUnicodes = [], l.skinVersions = [];
109
+ for (let { tone: e, emoji: t, version: n } of a) l.skinTones.push(e), l.skinUnicodes.push(t), l.skinVersions.push(n);
110
+ }
111
+ return l;
112
+ });
113
+ }
114
+ function _e(e, t, n, r) {
115
+ e[t](n).onsuccess = (e) => r && r(e.target.result);
116
+ }
117
+ function V(e, t, n) {
118
+ _e(e, "get", t, n);
119
+ }
120
+ function ve(e, t, n) {
121
+ _e(e, "getAll", t, n);
122
+ }
123
+ function H(e) {
124
+ /* istanbul ignore else */
125
+ e.commit && e.commit();
126
+ }
127
+ function ye(e, t) {
128
+ let n = e[0];
129
+ for (let r = 1; r < e.length; r++) {
130
+ let i = e[r];
131
+ t(n) > t(i) && (n = i);
132
+ }
133
+ return n;
134
+ }
135
+ function be(e, t) {
136
+ let n = ye(e, (e) => e.length), r = [];
137
+ for (let i of n) e.some((e) => e.findIndex((e) => t(e) === t(i)) === -1) || r.push(i);
138
+ return r;
139
+ }
140
+ async function xe(e) {
141
+ return !await U(e, S, j);
142
+ }
143
+ async function Se(e, t, n) {
144
+ let [r, i] = await Promise.all([A, j].map((t) => U(e, S, t)));
145
+ return r === n && i === t;
146
+ }
147
+ async function Ce(e, t) {
148
+ return z(e, x, M, (e, n, r) => {
149
+ let i, a = () => {
150
+ e.getAll(i && IDBKeyRange.lowerBound(i, !0), 50).onsuccess = (e) => {
151
+ let n = e.target.result;
152
+ for (let e of n) if (i = e.unicode, t(e)) return r(e);
153
+ if (n.length < 50) return r();
154
+ a();
155
+ };
156
+ };
157
+ a();
158
+ });
159
+ }
160
+ async function we(e, t, n, r) {
161
+ try {
162
+ let i = ge(t);
163
+ await z(e, [x, S], N, ([e, t], a) => {
164
+ let o, s, c = 0;
165
+ function l() {
166
+ ++c === 2 && u();
167
+ }
168
+ function u() {
169
+ if (!(o === r && s === n)) {
170
+ e.clear();
171
+ for (let t of i) e.put(t);
172
+ t.put(r, A), t.put(n, j), H(a);
173
+ }
174
+ }
175
+ V(t, A, (e) => {
176
+ o = e, l();
177
+ }), V(t, j, (e) => {
178
+ s = e, l();
179
+ });
180
+ });
181
+ } finally {}
182
+ }
183
+ async function Te(e, t) {
184
+ return z(e, x, M, (e, n, r) => {
185
+ let i = IDBKeyRange.bound([t, 0], [t + 1, 0], !1, !0);
186
+ ve(e.index(k), i, r);
187
+ });
188
+ }
189
+ async function Ee(e, t) {
190
+ let n = he(B(t));
191
+ return n.length ? z(e, x, M, (e, t, r) => {
192
+ let i = [], a = () => {
193
+ i.length === n.length && o();
194
+ }, o = () => {
195
+ r(be(i, (e) => e.unicode).sort((e, t) => e.order < t.order ? -1 : 1));
196
+ };
197
+ for (let t = 0; t < n.length; t++) {
198
+ let r = n[t], o = t === n.length - 1 ? IDBKeyRange.bound(r, r + "￿", !1, !0) : IDBKeyRange.only(r);
199
+ ve(e.index(T), o, (e) => {
200
+ i.push(e), a();
201
+ });
202
+ }
203
+ }) : [];
204
+ }
205
+ async function De(e, t) {
206
+ let n = await Ee(e, t);
207
+ return n.length ? n.filter((e) => (e.shortcodes || []).map((e) => e.toLowerCase()).includes(t.toLowerCase()))[0] || null : await Ce(e, (e) => (e.shortcodes || []).includes(t.toLowerCase())) || null;
208
+ }
209
+ async function Oe(e, t) {
210
+ return z(e, x, M, (e, n, r) => V(e, t, (n) => {
211
+ if (n) return r(n);
212
+ V(e.index(ne), t, (e) => r(e || null));
213
+ }));
214
+ }
215
+ function U(e, t, n) {
216
+ return z(e, t, M, (e, t, r) => V(e, n, r));
217
+ }
218
+ function ke(e, t, n, r) {
219
+ return z(e, t, N, (e, t) => {
220
+ e.put(r, n), H(t);
221
+ });
222
+ }
223
+ function Ae(e, t) {
224
+ return z(e, C, N, (e, n) => V(e, t, (r) => {
225
+ e.put((r || 0) + 1, t), H(n);
226
+ }));
227
+ }
228
+ function je(e, t, n) {
229
+ return n === 0 ? [] : z(e, [C, x], M, ([e, r], i, a) => {
230
+ let o = [];
231
+ e.index(D).openCursor(void 0, "prev").onsuccess = (e) => {
232
+ let i = e.target.result;
233
+ if (!i) return a(o);
234
+ function s(e) {
235
+ if (o.push(e), o.length === n) return a(o);
236
+ i.continue();
237
+ }
238
+ let c = i.primaryKey, l = t.byName(c);
239
+ if (l) return s(l);
240
+ V(r, c, (e) => {
241
+ if (e) return s(e);
242
+ i.continue();
243
+ });
244
+ };
245
+ });
246
+ }
247
+ var W = "";
248
+ function Me(e, t) {
249
+ let n = /* @__PURE__ */ new Map();
250
+ for (let r of e) {
251
+ let e = t(r);
252
+ for (let t of e) {
253
+ let e = n;
254
+ for (let n = 0; n < t.length; n++) {
255
+ let r = t.charAt(n), i = e.get(r);
256
+ i || (i = /* @__PURE__ */ new Map(), e.set(r, i)), e = i;
257
+ }
258
+ let i = e.get(W);
259
+ i || (i = [], e.set(W, i)), i.push(r);
260
+ }
261
+ }
262
+ return (e, t) => {
263
+ let r = n;
264
+ for (let t = 0; t < e.length; t++) {
265
+ let n = e.charAt(t), i = r.get(n);
266
+ if (i) r = i;
267
+ else return [];
268
+ }
269
+ if (t) return r.get(W) || [];
270
+ let i = [], a = [r];
271
+ for (; a.length;) {
272
+ let e = [...a.shift().entries()].sort((e, t) => e[0] < t[0] ? -1 : 1);
273
+ for (let [t, n] of e) t === W ? i.push(...n) : a.push(n);
274
+ }
275
+ return i;
276
+ };
277
+ }
278
+ var Ne = ["name", "url"];
279
+ function Pe(e) {
280
+ let t = e && Array.isArray(e), n = t && e.length && (!e[0] || Ne.some((t) => !(t in e[0])));
281
+ if (!t || n) throw Error("Custom emojis are in the wrong format");
282
+ }
283
+ function Fe(e) {
284
+ Pe(e);
285
+ let t = (e, t) => e.name.toLowerCase() < t.name.toLowerCase() ? -1 : 1, n = e.sort(t), r = Me(e, (e) => {
286
+ let t = /* @__PURE__ */ new Set();
287
+ if (e.shortcodes) for (let n of e.shortcodes) for (let e of B(n)) t.add(e);
288
+ return t;
289
+ }), i = (e) => r(e, !0), a = (e) => r(e, !1), o = (e) => {
290
+ let n = B(e);
291
+ return be(n.map((e, t) => (t < n.length - 1 ? i : a)(e)), (e) => e.name).sort(t);
292
+ }, s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map();
293
+ for (let t of e) {
294
+ c.set(t.name.toLowerCase(), t);
295
+ for (let e of t.shortcodes || []) s.set(e.toLowerCase(), t);
296
+ }
297
+ return {
298
+ all: n,
299
+ search: o,
300
+ byShortcode: (e) => s.get(e.toLowerCase()),
301
+ byName: (e) => c.get(e.toLowerCase())
302
+ };
303
+ }
304
+ var Ie = typeof wrappedJSObject < "u";
305
+ function G(e) {
306
+ if (!e) return e;
307
+ if (Ie && (e = structuredClone(e)), delete e.tokens, e.skinTones) {
308
+ let t = e.skinTones.length;
309
+ e.skins = Array(t);
310
+ for (let n = 0; n < t; n++) e.skins[n] = {
311
+ tone: e.skinTones[n],
312
+ unicode: e.skinUnicodes[n],
313
+ version: e.skinVersions[n]
314
+ };
315
+ delete e.skinTones, delete e.skinUnicodes, delete e.skinVersions;
316
+ }
317
+ return e;
318
+ }
319
+ function Le(e) {
320
+ e || console.warn("emoji-picker-element is more efficient if the dataSource server exposes an ETag header.");
321
+ }
322
+ var Re = [
323
+ "annotation",
324
+ "emoji",
325
+ "group",
326
+ "order",
327
+ "version"
328
+ ];
329
+ function ze(e) {
330
+ if (!e || !Array.isArray(e) || !e[0] || typeof e[0] != "object" || Re.some((t) => !(t in e[0]))) throw Error("Emoji data is in the wrong format");
331
+ }
332
+ function Be(e, t) {
333
+ if (Math.floor(e.status / 100) !== 2) throw Error("Failed to fetch: " + t + ": " + e.status);
334
+ }
335
+ async function Ve(e) {
336
+ let t = await fetch(e, { method: "HEAD" });
337
+ Be(t, e);
338
+ let n = t.headers.get("etag");
339
+ return Le(n), n;
340
+ }
341
+ async function He(e) {
342
+ let t = await fetch(e);
343
+ Be(t, e);
344
+ let n = t.headers.get("etag");
345
+ Le(n);
346
+ let r = await t.json();
347
+ return ze(r), [n, r];
348
+ }
349
+ function Ue(e) {
350
+ for (var t = "", n = new Uint8Array(e), r = n.byteLength, i = -1; ++i < r;) t += String.fromCharCode(n[i]);
351
+ return t;
352
+ }
353
+ function We(e) {
354
+ for (var t = e.length, n = new ArrayBuffer(t), r = new Uint8Array(n), i = -1; ++i < t;) r[i] = e.charCodeAt(i);
355
+ return n;
356
+ }
357
+ async function Ge(e) {
358
+ let t = We(JSON.stringify(e)), n = Ue(await crypto.subtle.digest("SHA-1", t));
359
+ return btoa(n);
360
+ }
361
+ async function Ke(e, t) {
362
+ let n, r = await Ve(t);
363
+ if (!r) {
364
+ let e = await He(t);
365
+ r = e[0], n = e[1], r ||= await Ge(n);
366
+ }
367
+ await Se(e, t, r) || (n ||= (await He(t))[1], await we(e, n, t, r));
368
+ }
369
+ async function qe(e, t) {
370
+ let [n, r] = await He(t);
371
+ n ||= await Ge(r), await we(e, r, t, n);
372
+ }
373
+ async function Je(e, t) {
374
+ try {
375
+ await Ke(e, t);
376
+ } catch (e) {
377
+ if (e.name !== "InvalidStateError") throw e;
378
+ }
379
+ }
380
+ var Ye = class {
381
+ constructor({ dataSource: e = re, locale: t = ie, customEmoji: n = [] } = {}) {
382
+ this.dataSource = e, this.locale = t, this._dbName = `emoji-picker-element-${this.locale}`, this._db = void 0, this._lazyUpdate = void 0, this._custom = Fe(n), this._clear = this._clear.bind(this), this._ready = this._init();
383
+ }
384
+ async _init() {
385
+ let e = this._db = await le(this._dbName);
386
+ fe(this._dbName, this._clear);
387
+ let t = this.dataSource;
388
+ await xe(e) ? await qe(e, t) : this._lazyUpdate = Je(e, t);
389
+ }
390
+ async ready() {
391
+ let e = async () => (this._ready ||= this._init(), this._ready);
392
+ await e(), this._db || await e();
393
+ }
394
+ async getEmojiByGroup(e) {
395
+ return v(e), await this.ready(), F(await Te(this._db, e)).map(G);
396
+ }
397
+ async getEmojiBySearchQuery(e) {
398
+ _(e), await this.ready();
399
+ let t = this._custom.search(e), n = F(await Ee(this._db, e)).map(G);
400
+ return [...t, ...n];
401
+ }
402
+ async getEmojiByShortcode(e) {
403
+ return _(e), await this.ready(), this._custom.byShortcode(e) || G(await De(this._db, e));
404
+ }
405
+ async getEmojiByUnicodeOrName(e) {
406
+ return _(e), await this.ready(), this._custom.byName(e) || G(await Oe(this._db, e));
407
+ }
408
+ async getPreferredSkinTone() {
409
+ return await this.ready(), await U(this._db, S, te) || 0;
410
+ }
411
+ async setPreferredSkinTone(e) {
412
+ return v(e), await this.ready(), ke(this._db, S, te, e);
413
+ }
414
+ async incrementFavoriteEmojiCount(e) {
415
+ return _(e), await this.ready(), Ae(this._db, e);
416
+ }
417
+ async getTopFavoriteEmoji(e) {
418
+ return v(e), await this.ready(), (await je(this._db, this._custom, e)).map(G);
419
+ }
420
+ set customEmoji(e) {
421
+ this._custom = Fe(e);
422
+ }
423
+ get customEmoji() {
424
+ return this._custom.all;
425
+ }
426
+ async _shutdown() {
427
+ await this.ready();
428
+ try {
429
+ await this._lazyUpdate;
430
+ } catch {}
431
+ }
432
+ _clear() {
433
+ this._db = this._ready = this._lazyUpdate = void 0;
434
+ }
435
+ async close() {
436
+ await this._shutdown(), await ue(this._dbName);
437
+ }
438
+ async delete() {
439
+ await this._shutdown(), await de(this._dbName);
440
+ }
441
+ }, Xe = [
442
+ [
443
+ -1,
444
+ "✨",
445
+ "custom"
446
+ ],
447
+ [
448
+ 0,
449
+ "😀",
450
+ "smileys-emotion"
451
+ ],
452
+ [
453
+ 1,
454
+ "👋",
455
+ "people-body"
456
+ ],
457
+ [
458
+ 3,
459
+ "🐱",
460
+ "animals-nature"
461
+ ],
462
+ [
463
+ 4,
464
+ "🍎",
465
+ "food-drink"
466
+ ],
467
+ [
468
+ 5,
469
+ "🏠️",
470
+ "travel-places"
471
+ ],
472
+ [
473
+ 6,
474
+ "⚽",
475
+ "activities"
476
+ ],
477
+ [
478
+ 7,
479
+ "📝",
480
+ "objects"
481
+ ],
482
+ [
483
+ 8,
484
+ "⛔️",
485
+ "symbols"
486
+ ],
487
+ [
488
+ 9,
489
+ "🏁",
490
+ "flags"
491
+ ]
492
+ ].map(([e, t, n]) => ({
493
+ id: e,
494
+ emoji: t,
495
+ name: n
496
+ })), Ze = Xe.slice(1), Qe = 2, $e = 6, et = typeof requestIdleCallback == "function" ? requestIdleCallback : setTimeout;
497
+ function tt(e) {
498
+ return e.unicode.includes("‍");
499
+ }
500
+ var nt = {
501
+ "🫪": 17,
502
+ "🫩": 16,
503
+ "🫨": 15.1,
504
+ "🫠": 14,
505
+ "🥲": 13.1,
506
+ "🥻": 12.1,
507
+ "🥰": 11,
508
+ "🤩": 5,
509
+ "👱‍♀️": 4,
510
+ "🤣": 3,
511
+ "👁️‍🗨️": 2,
512
+ "😀": 1,
513
+ "😐️": .7,
514
+ "😃": .6
515
+ }, rt = 1e3, it = "🖐️", at = 8, ot = [
516
+ "😊",
517
+ "😒",
518
+ "❤️",
519
+ "👍️",
520
+ "😍",
521
+ "😂",
522
+ "😭",
523
+ "☺️",
524
+ "😔",
525
+ "😩",
526
+ "😏",
527
+ "💕",
528
+ "🙌",
529
+ "😘"
530
+ ], st = "\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif", ct = (e, t) => e < t ? -1 : +(e > t), lt = (e, t) => {
531
+ let n = document.createElement("canvas");
532
+ n.width = n.height = 1;
533
+ let r = n.getContext("2d", { willReadFrequently: !0 });
534
+ return r.textBaseline = "top", r.font = `100px ${st}`, r.fillStyle = t, r.scale(.01, .01), r.fillText(e, 0, 0), r.getImageData(0, 0, 1, 1).data;
535
+ }, ut = (e, t) => {
536
+ let n = [...e].join(",");
537
+ return n === [...t].join(",") && !n.startsWith("0,0,0,");
538
+ };
539
+ function dt(e) {
540
+ let t = lt(e, "#000"), n = lt(e, "#fff");
541
+ return t && n && ut(t, n);
542
+ }
543
+ function ft() {
544
+ let e = Object.entries(nt);
545
+ try {
546
+ for (let [t, n] of e) if (dt(t)) return n;
547
+ } catch {}
548
+ return e[0][1];
549
+ }
550
+ var pt, mt = () => (pt ||= new Promise((e) => et(() => e(ft()))), pt), ht = /* @__PURE__ */ new Map(), gt = "️", _t = "\ud83c", vt = "‍", yt = 127995, bt = 57339;
551
+ function xt(e, t) {
552
+ if (t === 0) return e;
553
+ let n = e.indexOf(vt);
554
+ return n === -1 ? (e.endsWith(gt) && (e = e.substring(0, e.length - 1)), e + _t + String.fromCodePoint(bt + t - 1)) : e.substring(0, n) + String.fromCodePoint(yt + t - 1) + e.substring(n);
555
+ }
556
+ function K(e) {
557
+ e.preventDefault(), e.stopPropagation();
558
+ }
559
+ function St(e, t, n) {
560
+ return t += e ? -1 : 1, t < 0 ? t = n.length - 1 : t >= n.length && (t = 0), t;
561
+ }
562
+ function Ct(e, t) {
563
+ let n = /* @__PURE__ */ new Set(), r = [];
564
+ for (let i of e) {
565
+ let e = t(i);
566
+ n.has(e) || (n.add(e), r.push(i));
567
+ }
568
+ return r;
569
+ }
570
+ function wt(e, t) {
571
+ let n = (e) => {
572
+ let n = {};
573
+ for (let r of e) typeof r.tone == "number" && r.version <= t && (n[r.tone] = r.unicode);
574
+ return n;
575
+ };
576
+ return e.map(({ unicode: e, skins: t, shortcodes: r, url: i, name: a, category: o, annotation: s }) => ({
577
+ unicode: e,
578
+ name: a,
579
+ shortcodes: r,
580
+ url: i,
581
+ category: o,
582
+ annotation: s,
583
+ id: e || a,
584
+ skins: t && n(t)
585
+ }));
586
+ }
587
+ var q = requestAnimationFrame, Tt = typeof ResizeObserver == "function";
588
+ function Et(e, t, n) {
589
+ let r;
590
+ Tt ? (r = new ResizeObserver(n), r.observe(e)) : q(n), t.addEventListener("abort", () => {
591
+ r && r.disconnect();
592
+ });
593
+ }
594
+ function Dt(e) {
595
+ /* istanbul ignore else */
596
+ {
597
+ let t = document.createRange();
598
+ return t.selectNode(e.firstChild), t.getBoundingClientRect().width;
599
+ }
600
+ }
601
+ var Ot = "😀", kt, J;
602
+ function At(e, t, n) {
603
+ let r = Dt(t);
604
+ /* istanbul ignore if */
605
+ if (!r) {
606
+ if (!J) {
607
+ J = n.cloneNode(!0);
608
+ let e = getComputedStyle(n);
609
+ for (let t of [
610
+ "font-family",
611
+ "line-height",
612
+ "width",
613
+ "height",
614
+ "font-size",
615
+ "display",
616
+ "align-items",
617
+ "justify-content"
618
+ ]) J.style.setProperty(t, e.getPropertyValue(t), "important");
619
+ }
620
+ try {
621
+ return document.body.appendChild(J), J.firstChild.nodeValue = e, Dt(J);
622
+ } finally {
623
+ J.remove();
624
+ }
625
+ }
626
+ return r;
627
+ }
628
+ function jt(e, t, n) {
629
+ let r = !0;
630
+ for (let i of e) {
631
+ let e = n(i);
632
+ /* istanbul ignore if */
633
+ if (!e) continue;
634
+ kt === void 0 && (kt = At(Ot, t, t));
635
+ let a = At(i.unicode, e, t) / 1.8 < kt;
636
+ ht.set(i.unicode, a), a || (r = !1);
637
+ }
638
+ return r;
639
+ }
640
+ function Mt(e) {
641
+ return Ct(e, (e) => e);
642
+ }
643
+ function Nt(e) {
644
+ /* istanbul ignore else */
645
+ e && (e.scrollTop = 0);
646
+ }
647
+ function Y(e, t, n) {
648
+ let r = e.get(t);
649
+ return r || (r = n(), e.set(t, r)), r;
650
+ }
651
+ function Pt(e) {
652
+ return "" + e;
653
+ }
654
+ function Ft(e) {
655
+ let t = document.createElement("template");
656
+ return t.innerHTML = e, t;
657
+ }
658
+ var It = /* @__PURE__ */ new WeakMap(), Lt = /* @__PURE__ */ new WeakMap(), Rt = Symbol("un-keyed"), zt = "replaceChildren" in Element.prototype;
659
+ function Bt(e, t) {
660
+ /* istanbul ignore else */
661
+ zt ? e.replaceChildren(...t) : (e.innerHTML = "", e.append(...t));
662
+ }
663
+ function Vt(e, t) {
664
+ let n = e.firstChild, r = 0;
665
+ for (; n;) {
666
+ if (t[r] !== n) return !0;
667
+ n = n.nextSibling, r++;
668
+ }
669
+ return r !== t.length;
670
+ }
671
+ function Ht(e, t) {
672
+ let { targetNode: n } = t, { targetParentNode: r } = t, i = !1;
673
+ r ? i = Vt(r, e) : (i = !0, t.targetNode = void 0, t.targetParentNode = r = n.parentNode), i && Bt(r, e);
674
+ }
675
+ function Ut(e, t) {
676
+ for (let n of t) {
677
+ let { targetNode: t, currentExpression: r, binding: { expressionIndex: i, attributeName: a, attributeValuePre: o, attributeValuePost: s } } = n, c = e[i];
678
+ if (r !== c) if (n.currentExpression = c, a) if (c === null) t.removeAttribute(a);
679
+ else {
680
+ let e = o + Pt(c) + s;
681
+ t.setAttribute(a, e);
682
+ }
683
+ else {
684
+ let e;
685
+ Array.isArray(c) ? Ht(c, n) : c instanceof Element ? (e = c, t.replaceWith(e)) : t.nodeValue = Pt(c), e && (n.targetNode = e);
686
+ }
687
+ }
688
+ }
689
+ function Wt(e) {
690
+ let t = "", n = !1, r = !1, i = -1, a = /* @__PURE__ */ new Map(), o = [], s = 0;
691
+ for (let c = 0, l = e.length; c < l; c++) {
692
+ let u = e[c];
693
+ if (t += u.slice(s), c === l - 1) break;
694
+ for (let e = 0; e < u.length; e++) switch (u.charAt(e)) {
695
+ case "<":
696
+ u.charAt(e + 1) === "/" ? o.pop() : (n = !0, o.push(++i));
697
+ break;
698
+ case ">":
699
+ n = !1, r = !1;
700
+ break;
701
+ case "=":
702
+ r = !0;
703
+ break;
704
+ }
705
+ let d = o[o.length - 1], f = Y(a, d, () => []), p, m, h;
706
+ if (r) {
707
+ let n = /(\S+)="?([^"=]*)$/.exec(u);
708
+ p = n[1], m = n[2];
709
+ let r = /^([^">]*)("?)/.exec(e[c + 1]);
710
+ h = r[1], t = t.slice(0, -1 * n[0].length), s = r[0].length;
711
+ } else s = 0;
712
+ let g = {
713
+ attributeName: p,
714
+ attributeValuePre: m,
715
+ attributeValuePost: h,
716
+ expressionIndex: c
717
+ };
718
+ f.push(g), !n && !r && (t += " ");
719
+ }
720
+ return {
721
+ template: Ft(t),
722
+ elementsToBindings: a
723
+ };
724
+ }
725
+ function Gt(e, t, n) {
726
+ for (let r = 0; r < e.length; r++) {
727
+ let i = e[r], a = {
728
+ binding: i,
729
+ targetNode: i.attributeName ? t : t.firstChild,
730
+ targetParentNode: void 0,
731
+ currentExpression: void 0
732
+ };
733
+ n.push(a);
734
+ }
735
+ }
736
+ function Kt(e, t) {
737
+ let n = [], r;
738
+ if (t.size === 1 && (r = t.get(0))) Gt(r, e, n);
739
+ else {
740
+ let r = document.createTreeWalker(e, NodeFilter.SHOW_ELEMENT), i = e, a = -1;
741
+ do {
742
+ let e = t.get(++a);
743
+ e && Gt(e, i, n);
744
+ } while (i = r.nextNode());
745
+ }
746
+ return n;
747
+ }
748
+ function qt(e) {
749
+ let { template: t, elementsToBindings: n } = Y(It, e, () => Wt(e)), r = t.cloneNode(!0).content.firstElementChild, i = Kt(r, n);
750
+ return function(e) {
751
+ return Ut(e, i), r;
752
+ };
753
+ }
754
+ function Jt(e) {
755
+ let t = Y(Lt, e, () => /* @__PURE__ */ new Map()), n = Rt;
756
+ function r(e, ...r) {
757
+ return Y(Y(t, e, () => /* @__PURE__ */ new Map()), n, () => qt(e))(r);
758
+ }
759
+ function i(e, t, r) {
760
+ return e.map((e, i) => {
761
+ let a = n;
762
+ n = r(e);
763
+ try {
764
+ return t(e, i);
765
+ } finally {
766
+ n = a;
767
+ }
768
+ });
769
+ }
770
+ return {
771
+ map: i,
772
+ html: r
773
+ };
774
+ }
775
+ function Yt(e, t, n, r, i, a, o, s, c) {
776
+ let { labelWithSkin: l, titleForEmoji: u, unicodeWithSkin: d } = n, { html: f, map: p } = Jt(t);
777
+ function m(e, n, r) {
778
+ return p(e, (e, i) => f`<button role="${n ? "option" : "menuitem"}" aria-selected="${n ? i === t.activeSearchItem : null}" aria-label="${l(e, t.currentSkinTone)}" title="${u(e)}" class="${"emoji" + (n && i === t.activeSearchItem ? " active" : "") + (e.unicode ? "" : " custom-emoji")}" id="${`${r}-${e.id}`}" style="${e.unicode ? null : `--custom-emoji-background: url(${JSON.stringify(e.url)})`}">${e.unicode ? d(e, t.currentSkinTone) : ""}</button>`, (e) => `${r}-${e.id}`);
779
+ }
780
+ let h = f`<section data-ref="rootElement" class="picker" aria-label="${t.i18n.regionLabel}" style="${t.pickerStyle || ""}"><div class="pad-top"></div><div class="search-row"><div class="search-wrapper"><input id="search" class="search" type="search" role="combobox" enterkeyhint="search" placeholder="${t.i18n.searchLabel}" autocapitalize="none" autocomplete="off" spellcheck="true" aria-expanded="${!!(t.searchMode && t.currentEmojis.length)}" aria-controls="search-results" aria-describedby="search-description" aria-autocomplete="list" aria-activedescendant="${t.activeSearchItemId ? `emo-${t.activeSearchItemId}` : null}" data-ref="searchElement" data-on-input="onSearchInput" data-on-keydown="onSearchKeydown"><label class="sr-only" for="search">${t.i18n.searchLabel}</label> <span id="search-description" class="sr-only">${t.i18n.searchDescription}</span></div><div class="skintone-button-wrapper ${t.skinTonePickerExpandedAfterAnimation ? "expanded" : ""}"><button id="skintone-button" class="emoji ${t.skinTonePickerExpanded ? "hide-focus" : ""}" aria-label="${t.skinToneButtonLabel}" title="${t.skinToneButtonLabel}" aria-describedby="skintone-description" aria-haspopup="listbox" aria-expanded="${t.skinTonePickerExpanded}" aria-controls="skintone-list" data-on-click="onClickSkinToneButton">${t.skinToneButtonText || ""}</button></div><span id="skintone-description" class="sr-only">${t.i18n.skinToneDescription}</span><div data-ref="skinToneDropdown" id="skintone-list" class="skintone-list hide-focus ${t.skinTonePickerExpanded ? "" : "hidden no-animate"}" style="transform:translateY(${t.skinTonePickerExpanded ? 0 : "calc(-1 * var(--num-skintones) * var(--total-emoji-size))"})" role="listbox" aria-label="${t.i18n.skinTonesLabel}" aria-activedescendant="skintone-${t.activeSkinTone}" aria-hidden="${!t.skinTonePickerExpanded}" tabIndex="-1" data-on-focusout="onSkinToneOptionsFocusOut" data-on-click="onSkinToneOptionsClick" data-on-keydown="onSkinToneOptionsKeydown" data-on-keyup="onSkinToneOptionsKeyup">${p(t.skinTones, (e, n) => f`<div id="skintone-${n}" class="emoji ${n === t.activeSkinTone ? "active" : ""}" aria-selected="${n === t.activeSkinTone}" role="option" title="${t.i18n.skinTones[n]}" aria-label="${t.i18n.skinTones[n]}">${e}</div>`, (e) => e)}</div></div><div class="nav" role="tablist" style="grid-template-columns:repeat(${t.groups.length},1fr)" aria-label="${t.i18n.categoriesLabel}" data-on-keydown="onNavKeydown" data-on-click="onNavClick">${p(t.groups, (e) => f`<button role="tab" class="nav-button" aria-controls="tab-${e.id}" aria-label="${t.i18n.categories[e.name]}" aria-selected="${!t.searchMode && t.currentGroup.id === e.id}" title="${t.i18n.categories[e.name]}" data-group-id="${e.id}"><div class="nav-emoji emoji">${e.emoji}</div></button>`, (e) => e.id)}</div><div class="indicator-wrapper"><div class="indicator" style="transform:translateX(${(t.isRtl ? -1 : 1) * t.currentGroupIndex * 100}%)"></div></div><div class="message ${t.message ? "" : "gone"}" role="alert" aria-live="polite">${t.message || ""}</div><div data-ref="tabpanelElement" class="tabpanel ${!t.databaseLoaded || t.message ? "gone" : ""}" role="${t.searchMode ? "region" : "tabpanel"}" aria-label="${t.searchMode ? t.i18n.searchResultsLabel : t.i18n.categories[t.currentGroup.name]}" id="${t.searchMode ? null : `tab-${t.currentGroup.id}`}" tabIndex="0" data-on-click="onEmojiClick"><div data-action="calculateEmojiGridStyle">${p(t.currentEmojisWithCategories, (e, n) => f`<div><div id="menu-label-${n}" class="category ${t.currentEmojisWithCategories.length === 1 && t.currentEmojisWithCategories[0].category === "" ? "gone" : ""}" aria-hidden="true">${t.searchMode ? t.i18n.searchResultsLabel : e.category ? e.category : t.currentEmojisWithCategories.length > 1 ? t.i18n.categories.custom : t.i18n.categories[t.currentGroup.name]}</div><div class="emoji-menu ${n !== 0 && !t.searchMode && t.currentGroup.id === -1 ? "visibility-auto" : ""}" style="${`--num-rows: ${Math.ceil(e.emojis.length / t.numColumns)}`}" data-action="updateOnIntersection" role="${t.searchMode ? "listbox" : "menu"}" aria-labelledby="menu-label-${n}" id="${t.searchMode ? "search-results" : null}">${m(e.emojis, t.searchMode, "emo")}</div></div>`, (e) => e.category)}</div></div><div class="favorites onscreen emoji-menu ${t.message ? "gone" : ""}" role="menu" aria-label="${t.i18n.favoritesLabel}" data-on-click="onEmojiClick">${m(t.currentFavorites, !1, "fav")}</div><button data-ref="baselineEmoji" aria-hidden="true" tabindex="-1" class="abs-pos hidden emoji baseline-emoji">😀</button></section>`, g = (t, n) => {
781
+ for (let r of e.querySelectorAll(`[${t}]`)) n(r, r.getAttribute(t));
782
+ };
783
+ if (c) {
784
+ e.appendChild(h);
785
+ for (let e of [
786
+ "click",
787
+ "focusout",
788
+ "input",
789
+ "keydown",
790
+ "keyup"
791
+ ]) g(`data-on-${e}`, (t, n) => {
792
+ t.addEventListener(e, r[n]);
793
+ });
794
+ g("data-ref", (e, t) => {
795
+ a[t] = e;
796
+ }), o.addEventListener("abort", () => {
797
+ e.removeChild(h);
798
+ });
799
+ }
800
+ g("data-action", (e, t) => {
801
+ let n = s.get(t);
802
+ n || s.set(t, n = /* @__PURE__ */ new WeakSet()), n.has(e) || (n.add(e), i[t](e));
803
+ });
804
+ }
805
+ /* istanbul ignore next */
806
+ var X = typeof queueMicrotask == "function" ? queueMicrotask : (e) => Promise.resolve().then(e);
807
+ function Xt(e) {
808
+ let t = !1, n, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), a, o = () => {
809
+ if (t) return;
810
+ let e = [...i];
811
+ i.clear();
812
+ try {
813
+ for (let t of e) t();
814
+ } finally {
815
+ a = !1, i.size && (a = !0, X(o));
816
+ }
817
+ }, s = new Proxy({}, {
818
+ get(e, t) {
819
+ if (n) {
820
+ let e = r.get(t);
821
+ e || (e = /* @__PURE__ */ new Set(), r.set(t, e)), e.add(n);
822
+ }
823
+ return e[t];
824
+ },
825
+ set(e, t, n) {
826
+ if (e[t] !== n) {
827
+ e[t] = n;
828
+ let s = r.get(t);
829
+ if (s) {
830
+ for (let e of s) i.add(e);
831
+ a || (a = !0, X(o));
832
+ }
833
+ }
834
+ return !0;
835
+ }
836
+ });
837
+ return e.addEventListener("abort", () => {
838
+ t = !0;
839
+ }), {
840
+ state: s,
841
+ createEffect: (e) => {
842
+ let t = () => {
843
+ let r = n;
844
+ n = t;
845
+ try {
846
+ return e();
847
+ } finally {
848
+ n = r;
849
+ }
850
+ };
851
+ return t();
852
+ }
853
+ };
854
+ }
855
+ function Z(e, t, n) {
856
+ if (e.length !== t.length) return !1;
857
+ for (let r = 0; r < e.length; r++) if (!n(e[r], t[r])) return !1;
858
+ return !0;
859
+ }
860
+ var Zt = /* @__PURE__ */ new WeakMap();
861
+ function Qt(e, t, n) {
862
+ /* istanbul ignore else */
863
+ {
864
+ let r = e.closest(".tabpanel"), i = Zt.get(r);
865
+ i || (i = new IntersectionObserver(n, {
866
+ root: r,
867
+ rootMargin: "50% 0px 50% 0px",
868
+ threshold: 0
869
+ }), Zt.set(r, i), t.addEventListener("abort", () => {
870
+ i.disconnect();
871
+ })), i.observe(e);
872
+ }
873
+ }
874
+ var $t = [], { assign: Q } = Object;
875
+ function en(e, t) {
876
+ let n = {}, r = new AbortController(), i = r.signal, { state: a, createEffect: o } = Xt(i), s = /* @__PURE__ */ new Map();
877
+ Q(a, {
878
+ skinToneEmoji: void 0,
879
+ i18n: void 0,
880
+ database: void 0,
881
+ customEmoji: void 0,
882
+ customCategorySorting: void 0,
883
+ emojiVersion: void 0
884
+ }), Q(a, t), Q(a, {
885
+ initialLoad: !0,
886
+ currentEmojis: [],
887
+ currentEmojisWithCategories: [],
888
+ rawSearchText: "",
889
+ searchText: "",
890
+ searchMode: !1,
891
+ activeSearchItem: -1,
892
+ message: void 0,
893
+ skinTonePickerExpanded: !1,
894
+ skinTonePickerExpandedAfterAnimation: !1,
895
+ currentSkinTone: 0,
896
+ activeSkinTone: 0,
897
+ skinToneButtonText: void 0,
898
+ pickerStyle: void 0,
899
+ skinToneButtonLabel: "",
900
+ skinTones: [],
901
+ currentFavorites: [],
902
+ defaultFavoriteEmojis: void 0,
903
+ numColumns: at,
904
+ isRtl: !1,
905
+ currentGroupIndex: 0,
906
+ groups: Ze,
907
+ databaseLoaded: !1,
908
+ activeSearchItemId: void 0
909
+ }), o(() => {
910
+ a.currentGroup !== a.groups[a.currentGroupIndex] && (a.currentGroup = a.groups[a.currentGroupIndex]);
911
+ });
912
+ let c = (t) => {
913
+ e.getElementById(t).focus();
914
+ }, l = (t) => e.getElementById(`emo-${t.id}`), u = (e, t) => {
915
+ n.rootElement.dispatchEvent(new CustomEvent(e, {
916
+ detail: t,
917
+ bubbles: !0,
918
+ composed: !0
919
+ }));
920
+ }, d = (e, t) => e.id === t.id, f = (e, t) => {
921
+ let { category: n, emojis: r } = e, { category: i, emojis: a } = t;
922
+ return n === i ? Z(r, a, d) : !1;
923
+ }, p = (e) => {
924
+ Z(a.currentEmojis, e, d) || (a.currentEmojis = e);
925
+ }, m = (e) => {
926
+ a.searchMode !== e && (a.searchMode = e);
927
+ }, h = (e) => {
928
+ Z(a.currentEmojisWithCategories, e, f) || (a.currentEmojisWithCategories = e);
929
+ }, g = (e, t) => t && e.skins && e.skins[t] || e.unicode, _ = {
930
+ labelWithSkin: (e, t) => Mt([
931
+ e.name || g(e, t),
932
+ e.annotation,
933
+ ...e.shortcodes || $t
934
+ ].filter(Boolean)).join(", "),
935
+ titleForEmoji: (e) => e.annotation || (e.shortcodes || $t).join(", "),
936
+ unicodeWithSkin: g
937
+ }, v = {
938
+ onClickSkinToneButton: ie,
939
+ onEmojiClick: ne,
940
+ onNavClick: j,
941
+ onNavKeydown: te,
942
+ onSearchKeydown: A,
943
+ onSkinToneOptionsClick: re,
944
+ onSkinToneOptionsFocusOut: oe,
945
+ onSkinToneOptionsKeydown: ae,
946
+ onSkinToneOptionsKeyup: F,
947
+ onSearchInput: I
948
+ }, y = {
949
+ calculateEmojiGridStyle: S,
950
+ updateOnIntersection: C
951
+ }, b = !0;
952
+ o(() => {
953
+ Yt(e, a, _, v, y, n, i, s, b), b = !1;
954
+ }), a.emojiVersion || mt().then((e) => {
955
+ /* istanbul ignore next */
956
+ e || (a.message = a.i18n.emojiUnsupportedMessage);
957
+ }), o(() => {
958
+ async function e() {
959
+ let e = !1, t = setTimeout(() => {
960
+ e = !0, a.message = a.i18n.loadingMessage;
961
+ }, rt);
962
+ try {
963
+ await a.database.ready(), a.databaseLoaded = !0;
964
+ } catch (e) {
965
+ console.error(e), a.message = a.i18n.networkErrorMessage;
966
+ } finally {
967
+ clearTimeout(t), e && (e = !1, a.message = "");
968
+ }
969
+ }
970
+ a.database && e();
971
+ }), o(() => {
972
+ a.pickerStyle = `
973
+ --num-groups: ${a.groups.length};
974
+ --indicator-opacity: ${+!a.searchMode};
975
+ --num-skintones: ${$e};`;
976
+ }), o(() => {
977
+ a.customEmoji && a.database && x();
978
+ }), o(() => {
979
+ a.customEmoji && a.customEmoji.length ? a.groups !== Xe && (a.groups = Xe) : a.groups !== Ze && (a.currentGroupIndex && a.currentGroupIndex--, a.groups = Ze);
980
+ }), o(() => {
981
+ async function e() {
982
+ a.databaseLoaded && (a.currentSkinTone = await a.database.getPreferredSkinTone());
983
+ }
984
+ e();
985
+ }), o(() => {
986
+ a.skinTones = Array($e).fill().map((e, t) => xt(a.skinToneEmoji, t));
987
+ }), o(() => {
988
+ a.skinToneButtonText = a.skinTones[a.currentSkinTone];
989
+ }), o(() => {
990
+ a.skinToneButtonLabel = a.i18n.skinToneLabel.replace("{skinTone}", a.i18n.skinTones[a.currentSkinTone]);
991
+ }), o(() => {
992
+ async function e() {
993
+ let { database: e } = a;
994
+ a.defaultFavoriteEmojis = (await Promise.all(ot.map((t) => e.getEmojiByUnicodeOrName(t)))).filter(Boolean);
995
+ }
996
+ a.databaseLoaded && e();
997
+ });
998
+ function x() {
999
+ let { customEmoji: e, database: t } = a, n = e || $t;
1000
+ t.customEmoji !== n && (t.customEmoji = n);
1001
+ }
1002
+ o(() => {
1003
+ async function e() {
1004
+ x();
1005
+ let { database: e, defaultFavoriteEmojis: t, numColumns: n } = a;
1006
+ a.currentFavorites = await O(Ct([...await e.getTopFavoriteEmoji(n), ...t], (e) => e.unicode || e.name).slice(0, n));
1007
+ }
1008
+ a.databaseLoaded && a.defaultFavoriteEmojis && e();
1009
+ });
1010
+ function S(e) {
1011
+ Et(e, i, () => {
1012
+ /* istanbul ignore next */
1013
+ {
1014
+ let e = getComputedStyle(n.rootElement), t = parseInt(e.getPropertyValue("--num-columns"), 10), r = e.getPropertyValue("direction") === "rtl";
1015
+ a.numColumns = t, a.isRtl = r;
1016
+ }
1017
+ });
1018
+ }
1019
+ function C(e) {
1020
+ Qt(e, i, (e) => {
1021
+ for (let { target: t, isIntersecting: n } of e) t.classList.toggle("onscreen", n);
1022
+ });
1023
+ }
1024
+ o(() => {
1025
+ async function e() {
1026
+ let { searchText: e, currentGroup: t, databaseLoaded: n, customEmoji: r } = a;
1027
+ if (!n) a.currentEmojis = [], a.searchMode = !1;
1028
+ else if (e.length >= Qe) {
1029
+ let t = await k(e);
1030
+ a.searchText === e && (p(t), m(!0));
1031
+ } else {
1032
+ let { id: e } = t;
1033
+ if (e !== -1 || r && r.length) {
1034
+ let t = await ee(e);
1035
+ a.currentGroup.id === e && (p(t), m(!1));
1036
+ }
1037
+ }
1038
+ }
1039
+ e();
1040
+ });
1041
+ let w = () => {
1042
+ q(() => Nt(n.tabpanelElement));
1043
+ };
1044
+ o(() => {
1045
+ let { currentEmojis: e, emojiVersion: t } = a, n = e.filter((e) => e.unicode).filter((e) => tt(e) && !ht.has(e.unicode));
1046
+ !t && n.length ? (p(e), q(() => T(n))) : (p(t ? e : e.filter(E)), w());
1047
+ });
1048
+ function T(e) {
1049
+ jt(e, n.baselineEmoji, l) ? w() : a.currentEmojis = [...a.currentEmojis];
1050
+ }
1051
+ function E(e) {
1052
+ return !e.unicode || !tt(e) || ht.get(e.unicode);
1053
+ }
1054
+ async function D(e) {
1055
+ let t = a.emojiVersion || await mt();
1056
+ return e.filter(({ version: e }) => !e || e <= t);
1057
+ }
1058
+ async function O(e) {
1059
+ return wt(e, a.emojiVersion || await mt());
1060
+ }
1061
+ async function ee(e) {
1062
+ return O(await D(e === -1 ? a.customEmoji : await a.database.getEmojiByGroup(e)));
1063
+ }
1064
+ async function k(e) {
1065
+ return O(await D(await a.database.getEmojiBySearchQuery(e)));
1066
+ }
1067
+ o(() => {}), o(() => {
1068
+ function e() {
1069
+ let { searchMode: e, currentEmojis: t } = a;
1070
+ if (e) return [{
1071
+ category: "",
1072
+ emojis: t
1073
+ }];
1074
+ let n = /* @__PURE__ */ new Map();
1075
+ for (let e of t) {
1076
+ let t = e.category || "", r = n.get(t);
1077
+ r || (r = [], n.set(t, r)), r.push(e);
1078
+ }
1079
+ return [...n.entries()].map(([e, t]) => ({
1080
+ category: e,
1081
+ emojis: t
1082
+ })).sort((e, t) => a.customCategorySorting(e.category, t.category));
1083
+ }
1084
+ h(e());
1085
+ }), o(() => {
1086
+ a.activeSearchItemId = a.activeSearchItem !== -1 && a.currentEmojis[a.activeSearchItem].id;
1087
+ }), o(() => {
1088
+ let { rawSearchText: e } = a;
1089
+ et(() => {
1090
+ a.searchText = (e || "").trim(), a.activeSearchItem = -1;
1091
+ });
1092
+ });
1093
+ function A(e) {
1094
+ if (!a.searchMode || !a.currentEmojis.length) return;
1095
+ let t = (t) => {
1096
+ K(e), a.activeSearchItem = St(t, a.activeSearchItem, a.currentEmojis);
1097
+ };
1098
+ switch (e.key) {
1099
+ case "ArrowDown": return t(!1);
1100
+ case "ArrowUp": return t(!0);
1101
+ case "Enter": if (a.activeSearchItem === -1) a.activeSearchItem = 0;
1102
+ else return K(e), N(a.currentEmojis[a.activeSearchItem].id);
1103
+ }
1104
+ }
1105
+ function j(e) {
1106
+ let { target: t } = e, r = t.closest(".nav-button");
1107
+ /* istanbul ignore if */
1108
+ if (!r) return;
1109
+ let i = parseInt(r.dataset.groupId, 10);
1110
+ n.searchElement.value = "", a.rawSearchText = "", a.searchText = "", a.activeSearchItem = -1, a.currentGroupIndex = a.groups.findIndex((e) => e.id === i);
1111
+ }
1112
+ function te(e) {
1113
+ let { target: t, key: n } = e, r = (t) => {
1114
+ t && (K(e), t.focus());
1115
+ };
1116
+ switch (n) {
1117
+ case "ArrowLeft": return r(t.previousElementSibling);
1118
+ case "ArrowRight": return r(t.nextElementSibling);
1119
+ case "Home": return r(t.parentElement.firstElementChild);
1120
+ case "End": return r(t.parentElement.lastElementChild);
1121
+ }
1122
+ }
1123
+ async function M(e) {
1124
+ let t = await a.database.getEmojiByUnicodeOrName(e), n = [...a.currentEmojis, ...a.currentFavorites].find((t) => t.id === e), r = n.unicode && g(n, a.currentSkinTone);
1125
+ return await a.database.incrementFavoriteEmojiCount(e), {
1126
+ emoji: t,
1127
+ skinTone: a.currentSkinTone,
1128
+ ...r && { unicode: r },
1129
+ ...n.name && { name: n.name }
1130
+ };
1131
+ }
1132
+ async function N(e) {
1133
+ let t = M(e);
1134
+ u("emoji-click-sync", t), u("emoji-click", await t);
1135
+ }
1136
+ function ne(e) {
1137
+ let { target: t } = e;
1138
+ t.classList.contains("emoji") && (K(e), N(t.id.substring(4)));
1139
+ }
1140
+ function P(e) {
1141
+ a.currentSkinTone = e, a.skinTonePickerExpanded = !1, c("skintone-button"), u("skin-tone-change", { skinTone: e }), a.database.setPreferredSkinTone(e);
1142
+ }
1143
+ function re(e) {
1144
+ let { target: { id: t } } = e, n = t && t.match(/^skintone-(\d)/);
1145
+ n && (K(e), P(parseInt(n[1], 10)));
1146
+ }
1147
+ function ie(e) {
1148
+ a.skinTonePickerExpanded = !a.skinTonePickerExpanded, a.activeSkinTone = a.currentSkinTone, a.skinTonePickerExpanded && (K(e), q(() => c("skintone-list")));
1149
+ }
1150
+ o(() => {
1151
+ a.skinTonePickerExpanded ? n.skinToneDropdown.addEventListener("transitionend", () => {
1152
+ a.skinTonePickerExpandedAfterAnimation = !0;
1153
+ }, { once: !0 }) : a.skinTonePickerExpandedAfterAnimation = !1;
1154
+ });
1155
+ function ae(e) {
1156
+ /* istanbul ignore if */
1157
+ if (!a.skinTonePickerExpanded) return;
1158
+ let t = async (t) => {
1159
+ K(e), a.activeSkinTone = t;
1160
+ };
1161
+ switch (e.key) {
1162
+ case "ArrowUp": return t(St(!0, a.activeSkinTone, a.skinTones));
1163
+ case "ArrowDown": return t(St(!1, a.activeSkinTone, a.skinTones));
1164
+ case "Home": return t(0);
1165
+ case "End": return t(a.skinTones.length - 1);
1166
+ case "Enter": return K(e), P(a.activeSkinTone);
1167
+ case "Escape": return K(e), a.skinTonePickerExpanded = !1, c("skintone-button");
1168
+ }
1169
+ }
1170
+ function F(e) {
1171
+ if (a.skinTonePickerExpanded) switch (e.key) {
1172
+ case " ": return K(e), P(a.activeSkinTone);
1173
+ }
1174
+ }
1175
+ async function oe(e) {
1176
+ let { relatedTarget: t } = e;
1177
+ /* istanbul ignore else */
1178
+ (!t || t.id !== "skintone-list") && (a.skinTonePickerExpanded = !1);
1179
+ }
1180
+ function I(e) {
1181
+ a.rawSearchText = e.target.value;
1182
+ }
1183
+ return {
1184
+ $set(e) {
1185
+ Q(a, e);
1186
+ },
1187
+ $destroy() {
1188
+ r.abort();
1189
+ }
1190
+ };
1191
+ }
1192
+ var tn = "https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json", nn = "en", rn = {
1193
+ categoriesLabel: "Categories",
1194
+ emojiUnsupportedMessage: "Your browser does not support color emoji.",
1195
+ favoritesLabel: "Favorites",
1196
+ loadingMessage: "Loading…",
1197
+ networkErrorMessage: "Could not load emoji.",
1198
+ regionLabel: "Emoji picker",
1199
+ searchDescription: "When search results are available, press up or down to select and enter to choose.",
1200
+ searchLabel: "Search",
1201
+ searchResultsLabel: "Search results",
1202
+ skinToneDescription: "When expanded, press up or down to select and enter to choose.",
1203
+ skinToneLabel: "Choose a skin tone (currently {skinTone})",
1204
+ skinTonesLabel: "Skin tones",
1205
+ skinTones: [
1206
+ "Default",
1207
+ "Light",
1208
+ "Medium-Light",
1209
+ "Medium",
1210
+ "Medium-Dark",
1211
+ "Dark"
1212
+ ],
1213
+ categories: {
1214
+ custom: "Custom",
1215
+ "smileys-emotion": "Smileys and emoticons",
1216
+ "people-body": "People and body",
1217
+ "animals-nature": "Animals and nature",
1218
+ "food-drink": "Food and drink",
1219
+ "travel-places": "Travel and places",
1220
+ activities: "Activities",
1221
+ objects: "Objects",
1222
+ symbols: "Symbols",
1223
+ flags: "Flags"
1224
+ }
1225
+ }, an = ":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--border-radius:0;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);border-radius:var(--border-radius);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.emoji-menu.visibility-auto{content-visibility:auto;contain-intrinsic-size:calc(var(--num-columns)*var(--total-emoji-size)) calc(var(--num-rows)*var(--total-emoji-size))}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;height:var(--total-emoji-size);width:var(--total-emoji-size);line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.onscreen .custom-emoji::after{content:\"\";width:var(--emoji-size);height:var(--emoji-size);background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:var(--custom-emoji-background)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}", on = [
1226
+ "customEmoji",
1227
+ "customCategorySorting",
1228
+ "database",
1229
+ "dataSource",
1230
+ "i18n",
1231
+ "locale",
1232
+ "skinToneEmoji",
1233
+ "emojiVersion"
1234
+ ], sn = `:host{--emoji-font-family:${st}}`, $ = class extends HTMLElement {
1235
+ constructor(e) {
1236
+ super(), this.attachShadow({ mode: "open" });
1237
+ let t = document.createElement("style");
1238
+ t.textContent = an + sn, this.shadowRoot.appendChild(t), this._ctx = {
1239
+ locale: nn,
1240
+ dataSource: tn,
1241
+ skinToneEmoji: it,
1242
+ customCategorySorting: ct,
1243
+ customEmoji: null,
1244
+ i18n: rn,
1245
+ emojiVersion: null,
1246
+ ...e
1247
+ };
1248
+ for (let e of on) e !== "database" && Object.prototype.hasOwnProperty.call(this, e) && (this._ctx[e] = this[e], delete this[e]);
1249
+ this._dbFlush();
1250
+ }
1251
+ connectedCallback() {
1252
+ ln(this), this._cmp ||= en(this.shadowRoot, this._ctx);
1253
+ }
1254
+ disconnectedCallback() {
1255
+ ln(this), X(() => {
1256
+ if (!this.isConnected && this._cmp) {
1257
+ this._cmp.$destroy(), this._cmp = void 0;
1258
+ let { database: e } = this._ctx;
1259
+ e.close().catch((e) => console.error(e));
1260
+ }
1261
+ });
1262
+ }
1263
+ static get observedAttributes() {
1264
+ return [
1265
+ "locale",
1266
+ "data-source",
1267
+ "skin-tone-emoji",
1268
+ "emoji-version"
1269
+ ];
1270
+ }
1271
+ attributeChangedCallback(e, t, n) {
1272
+ this._set(e.replace(/-([a-z])/g, (e, t) => t.toUpperCase()), e === "emoji-version" ? parseFloat(n) : n);
1273
+ }
1274
+ _set(e, t) {
1275
+ this._ctx[e] = t, this._cmp && this._cmp.$set({ [e]: t }), ["locale", "dataSource"].includes(e) && this._dbFlush();
1276
+ }
1277
+ _dbCreate() {
1278
+ let { locale: e, dataSource: t, database: n } = this._ctx;
1279
+ (!n || n.locale !== e || n.dataSource !== t) && this._set("database", new Ye({
1280
+ locale: e,
1281
+ dataSource: t
1282
+ }));
1283
+ }
1284
+ _dbFlush() {
1285
+ X(() => this._dbCreate());
1286
+ }
1287
+ }, cn = {};
1288
+ for (let e of on) cn[e] = {
1289
+ get() {
1290
+ return e === "database" && this._dbCreate(), this._ctx[e];
1291
+ },
1292
+ set(t) {
1293
+ if (e === "database") throw Error("database is read-only");
1294
+ this._set(e, t);
1295
+ }
1296
+ };
1297
+ Object.defineProperties($.prototype, cn);
1298
+ function ln(e) {
1299
+ /* istanbul ignore if */
1300
+ e instanceof $ || Object.setPrototypeOf(e, customElements.get(e.tagName.toLowerCase()).prototype);
1301
+ }
1302
+ /* istanbul ignore else */
1303
+ customElements.get("emoji-picker") || customElements.define("emoji-picker", $);
1304
+ //#endregion
1305
+ //#region src/components/on-demand/wt-chat-emoji/wt-chat-emoji.vue
1306
+ var un = { class: "wt-chat-emoji" }, dn = /*#__PURE__*/ e({
1307
+ __name: "wt-chat-emoji",
1308
+ props: {
1309
+ size: {
1310
+ type: String,
1311
+ default: t.MD
1312
+ },
1313
+ popupTeleportTo: {
1314
+ type: String,
1315
+ default: ""
1316
+ },
1317
+ filled: {
1318
+ type: Boolean,
1319
+ default: !1
1320
+ },
1321
+ rounded: {
1322
+ type: Boolean,
1323
+ default: !0
1324
+ }
1325
+ },
1326
+ emits: ["insert-emoji"],
1327
+ setup(e, { emit: t }) {
1328
+ let _ = e, v = t, y = p(null), b = p(!1), x = p(null), S = a(() => _.popupTeleportTo || "body"), C = a(() => _.filled || b.value ? "active" : "outlined"), w = async () => {
1329
+ x.value || (x.value = document.createElement("emoji-picker"), T(), x.value.addEventListener("emoji-click", E));
1330
+ }, T = () => {
1331
+ y.value && x.value && y.value.appendChild(x.value);
1332
+ }, E = (e) => {
1333
+ let { unicode: t } = e.detail;
1334
+ v("insert-emoji", t), D();
1335
+ }, D = () => {
1336
+ b.value = !1, x.value && y.value && (x.value.removeEventListener("emoji-click", E), y.value.removeChild(x.value), x.value = null);
1337
+ }, O = (e) => {
1338
+ y.value?.contains(e.target) || D();
1339
+ }, ee = async () => {
1340
+ k(), b.value = !b.value, b.value ? (await u(), await w()) : D();
1341
+ }, k = () => r.$emit("chat-input-focus");
1342
+ return d(() => {
1343
+ D();
1344
+ }), (t, r) => {
1345
+ let a = m("clickaway");
1346
+ return g((f(), c("div", un, [l(h(n), {
1347
+ size: e.size,
1348
+ variant: C.value,
1349
+ color: "secondary",
1350
+ icon: "chat-emoji",
1351
+ rounded: e.rounded,
1352
+ wide: "",
1353
+ onClick: ee
1354
+ }, null, 8, [
1355
+ "size",
1356
+ "variant",
1357
+ "rounded"
1358
+ ]), (f(), o(i, {
1359
+ defer: "",
1360
+ disabled: !e.popupTeleportTo,
1361
+ to: S.value
1362
+ }, [b.value ? (f(), c("div", {
1363
+ key: 0,
1364
+ ref_key: "emojiPickerWrapper",
1365
+ ref: y,
1366
+ class: "wt-chat-emoji__wrapper"
1367
+ }, null, 512)) : s("", !0)], 8, ["disabled", "to"]))])), [[a, O]]);
1368
+ };
1369
+ }
1370
+ }, [["__scopeId", "data-v-d6ce560a"]]);
1371
+ //#endregion
1372
+ export { dn as default };