@webitel/ui-sdk 26.6.56 → 26.6.57

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 (69) hide show
  1. package/dist/{clients-BylvVtUg.js → clients-Wwy51tyT.js} +1 -1
  2. package/dist/{components-Ceu_o5QZ.js → components-DfHInAL6.js} +2038 -1133
  3. package/dist/{enums-DW1oVune.js → enums-CBWwTuq7.js} +14 -10
  4. package/dist/ui-sdk.js +15 -15
  5. package/dist/ui-sdk.umd.cjs +676 -643
  6. package/dist/{useValidation-NX7UjlXi.js → useValidation-C43ysfVZ.js} +1 -1
  7. package/dist/{wt-action-bar-BHg0dHh-.js → wt-action-bar-B6AJf7QX.js} +2 -2
  8. package/dist/{wt-button-Cv7wRtF5.js → wt-button-BieXVsvP.js} +30 -30
  9. package/dist/wt-chat-emoji-CLfk3JVt.js +1347 -0
  10. package/dist/{wt-datepicker-DmmqWre1.js → wt-datepicker-BhOalZat.js} +2 -2
  11. package/dist/{wt-display-chip-items-CIW2Kmd1.js → wt-display-chip-items-BUWlvHn2.js} +1 -1
  12. package/dist/{wt-dual-panel-Cnzr4m-k.js → wt-dual-panel-C5LZm1Tr.js} +1 -1
  13. package/dist/{wt-expansion-card-B3J3dMdV.js → wt-expansion-card-CJr62Q0Q.js} +2 -2
  14. package/dist/{wt-expansion-panel-CYZR6tYG.js → wt-expansion-panel-Dvzj9PTk.js} +1 -1
  15. package/dist/{wt-galleria-AICD8wZ_.js → wt-galleria-B34y1Swo.js} +1 -1
  16. package/dist/{wt-icon-CqEgBu_3.js → wt-icon-0grToL89.js} +4 -1
  17. package/dist/{wt-icon-action-DlZx4RV6.js → wt-icon-action-D1Vq_ixS.js} +1 -1
  18. package/dist/{wt-icon-btn-B66HR8qM.js → wt-icon-btn-Czg40DXn.js} +1 -1
  19. package/dist/{wt-notifications-bar-Bbzp4mi1.js → wt-notifications-bar-OGD1cukw.js} +5 -6
  20. package/dist/{wt-player-CFL51-s6.js → wt-player-YrvPar8x.js} +3 -3
  21. package/dist/{wt-search-bar--ACLsoNo.js → wt-search-bar-gN_xHkW3.js} +4 -4
  22. package/dist/{wt-send-message-popup-D5_uap5F.js → wt-send-message-popup-pvipgSrX.js} +2 -2
  23. package/dist/{wt-table-2AC3hrK9.js → wt-table-DK0LjVC0.js} +1 -1
  24. package/dist/{wt-timepicker-DpZmWZdv.js → wt-timepicker-FhXfhuFl.js} +2 -2
  25. package/dist/wt-toast-DrD3sFlE.js +71 -0
  26. package/dist/{wt-tree-table-DkK3EyzZ.js → wt-tree-table-D1XoKDVw.js} +40 -40
  27. package/dist/{wt-type-extension-value-input-f5i8mReW.js → wt-type-extension-value-input-B2fSsZQc.js} +3 -3
  28. package/dist/{wt-vidstack-player-Ba6-mEdW.js → wt-vidstack-player-DwCYvtSh.js} +4 -4
  29. package/package.json +1 -1
  30. package/src/assets/icons/sprite/index.ts +7 -0
  31. package/src/assets/icons/sprite/ws-signal-high.svg +11 -0
  32. package/src/assets/icons/sprite/ws-signal-low.svg +11 -0
  33. package/src/assets/icons/sprite/ws-signal-medium.svg +11 -0
  34. package/src/components/index.js +3 -0
  35. package/src/components/wt-call-media-metric/wt-call-media-metric.vue +41 -0
  36. package/src/enums/ConnectionQualityLevel/ConnectionQualityLevel.enum.ts +8 -0
  37. package/src/enums/index.ts +6 -0
  38. package/src/locale/en/en.js +5 -0
  39. package/src/locale/es/es.js +5 -0
  40. package/src/locale/kz/kz.js +5 -0
  41. package/src/locale/pl/pl.js +5 -0
  42. package/src/locale/ro/ro.js +5 -0
  43. package/src/locale/ru/ru.js +5 -0
  44. package/src/locale/uk/uk.js +5 -0
  45. package/src/locale/uz/uz.js +5 -0
  46. package/src/locale/vi/vi.js +5 -0
  47. package/src/scripts/getConnectionQuality.ts +13 -0
  48. package/src/scripts/index.js +2 -0
  49. package/types/components/wt-call-media-metric/wt-call-media-metric.vue.d.ts +13 -0
  50. package/types/enums/ConnectionQualityLevel/ConnectionQualityLevel.enum.d.ts +6 -0
  51. package/types/enums/index.d.ts +3 -2
  52. package/types/locale/en/en.d.ts +5 -0
  53. package/types/locale/es/es.d.ts +5 -0
  54. package/types/locale/i18n.d.ts +45 -0
  55. package/types/locale/index.d.ts +45 -0
  56. package/types/locale/kz/kz.d.ts +5 -0
  57. package/types/locale/pl/pl.d.ts +5 -0
  58. package/types/locale/ro/ro.d.ts +5 -0
  59. package/types/locale/ru/ru.d.ts +5 -0
  60. package/types/locale/uk/uk.d.ts +5 -0
  61. package/types/locale/uz/uz.d.ts +5 -0
  62. package/types/locale/vi/vi.d.ts +5 -0
  63. package/types/modules/Flow/lookups/FlowTypeApplications.lookup.d.ts +5 -5
  64. package/types/scripts/getConnectionQuality.d.ts +2 -0
  65. package/types/scripts/index.d.ts +2 -1
  66. package/dist/eventBus-By3thVlR.js +0 -31
  67. package/dist/wt-chat-emoji-Dnu07Or5.js +0 -2226
  68. package/dist/wt-toast-gaZL33Am.js +0 -44
  69. package/dist/{composables-DJlgUtl5.js → composables-C2o78NEs.js} +1 -1
@@ -0,0 +1,1347 @@
1
+ import "./components-DfHInAL6.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-BieXVsvP.js";
5
+ import { n as r } from "./wt-toast-DrD3sFlE.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 = 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 K(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 He(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 Ue(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 We(e) {
358
+ let t = Ue(JSON.stringify(e)), n = He(await crypto.subtle.digest("SHA-1", t));
359
+ return btoa(n);
360
+ }
361
+ async function Ge(e, t) {
362
+ let n, r = await Ve(t);
363
+ if (!r) {
364
+ let e = await K(t);
365
+ r = e[0], n = e[1], r ||= await We(n);
366
+ }
367
+ await Se(e, t, r) || (n ||= (await K(t))[1], await we(e, n, t, r));
368
+ }
369
+ async function Ke(e, t) {
370
+ let [n, r] = await K(t);
371
+ n ||= await We(r), await we(e, r, t, n);
372
+ }
373
+ async function qe(e, t) {
374
+ try {
375
+ await Ge(e, t);
376
+ } catch (e) {
377
+ if (e.name !== "InvalidStateError") throw e;
378
+ }
379
+ }
380
+ var Je = 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 Ke(e, t) : this._lazyUpdate = qe(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
+ }, q = [
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
+ })), Ye = q.slice(1), Xe = 2, Ze = 6, Qe = typeof requestIdleCallback == "function" ? requestIdleCallback : setTimeout;
497
+ function $e(e) {
498
+ return e.unicode.includes("‍");
499
+ }
500
+ var et = {
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
+ }, tt = 1e3, nt = "🖐️", rt = 8, it = [
516
+ "😊",
517
+ "😒",
518
+ "❤️",
519
+ "👍️",
520
+ "😍",
521
+ "😂",
522
+ "😭",
523
+ "☺️",
524
+ "😔",
525
+ "😩",
526
+ "😏",
527
+ "💕",
528
+ "🙌",
529
+ "😘"
530
+ ], at = "\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif", ot = (e, t) => e < t ? -1 : +(e > t), st = (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 ${at}`, r.fillStyle = t, r.scale(.01, .01), r.fillText(e, 0, 0), r.getImageData(0, 0, 1, 1).data;
535
+ }, ct = (e, t) => {
536
+ let n = [...e].join(",");
537
+ return n === [...t].join(",") && !n.startsWith("0,0,0,");
538
+ };
539
+ function lt(e) {
540
+ let t = st(e, "#000"), n = st(e, "#fff");
541
+ return t && n && ct(t, n);
542
+ }
543
+ function ut() {
544
+ let e = Object.entries(et);
545
+ try {
546
+ for (let [t, n] of e) if (lt(t)) return n;
547
+ } catch {}
548
+ return e[0][1];
549
+ }
550
+ var dt, ft = () => (dt ||= new Promise((e) => Qe(() => e(ut()))), dt), pt = /* @__PURE__ */ new Map(), mt = "️", ht = "\ud83c", gt = "‍", _t = 127995, vt = 57339;
551
+ function yt(e, t) {
552
+ if (t === 0) return e;
553
+ let n = e.indexOf(gt);
554
+ return n === -1 ? (e.endsWith(mt) && (e = e.substring(0, e.length - 1)), e + ht + String.fromCodePoint(vt + t - 1)) : e.substring(0, n) + String.fromCodePoint(_t + t - 1) + e.substring(n);
555
+ }
556
+ function J(e) {
557
+ e.preventDefault(), e.stopPropagation();
558
+ }
559
+ function bt(e, t, n) {
560
+ return t += e ? -1 : 1, t < 0 ? t = n.length - 1 : t >= n.length && (t = 0), t;
561
+ }
562
+ function xt(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 St(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 Y = requestAnimationFrame, Ct = typeof ResizeObserver == "function";
588
+ function wt(e, t, n) {
589
+ let r;
590
+ Ct ? (r = new ResizeObserver(n), r.observe(e)) : Y(n), t.addEventListener("abort", () => {
591
+ r && r.disconnect();
592
+ });
593
+ }
594
+ function Tt(e) {
595
+ /* istanbul ignore else */
596
+ {
597
+ let t = document.createRange();
598
+ return t.selectNode(e.firstChild), t.getBoundingClientRect().width;
599
+ }
600
+ }
601
+ var Et;
602
+ function Dt(e, t, n) {
603
+ let r = !0;
604
+ for (let i of e) {
605
+ let e = n(i);
606
+ /* istanbul ignore if */
607
+ if (!e) continue;
608
+ let a = Tt(e);
609
+ Et === void 0 && (Et = Tt(t));
610
+ let o = a / 1.8 < Et;
611
+ pt.set(i.unicode, o), o || (r = !1);
612
+ }
613
+ return r;
614
+ }
615
+ function Ot(e) {
616
+ return xt(e, (e) => e);
617
+ }
618
+ function kt(e) {
619
+ /* istanbul ignore else */
620
+ e && (e.scrollTop = 0);
621
+ }
622
+ function X(e, t, n) {
623
+ let r = e.get(t);
624
+ return r || (r = n(), e.set(t, r)), r;
625
+ }
626
+ function At(e) {
627
+ return "" + e;
628
+ }
629
+ function jt(e) {
630
+ let t = document.createElement("template");
631
+ return t.innerHTML = e, t;
632
+ }
633
+ var Mt = /* @__PURE__ */ new WeakMap(), Nt = /* @__PURE__ */ new WeakMap(), Pt = Symbol("un-keyed"), Ft = "replaceChildren" in Element.prototype;
634
+ function It(e, t) {
635
+ /* istanbul ignore else */
636
+ Ft ? e.replaceChildren(...t) : (e.innerHTML = "", e.append(...t));
637
+ }
638
+ function Lt(e, t) {
639
+ let n = e.firstChild, r = 0;
640
+ for (; n;) {
641
+ if (t[r] !== n) return !0;
642
+ n = n.nextSibling, r++;
643
+ }
644
+ return r !== t.length;
645
+ }
646
+ function Rt(e, t) {
647
+ let { targetNode: n } = t, { targetParentNode: r } = t, i = !1;
648
+ r ? i = Lt(r, e) : (i = !0, t.targetNode = void 0, t.targetParentNode = r = n.parentNode), i && It(r, e);
649
+ }
650
+ function zt(e, t) {
651
+ for (let n of t) {
652
+ let { targetNode: t, currentExpression: r, binding: { expressionIndex: i, attributeName: a, attributeValuePre: o, attributeValuePost: s } } = n, c = e[i];
653
+ if (r !== c) if (n.currentExpression = c, a) if (c === null) t.removeAttribute(a);
654
+ else {
655
+ let e = o + At(c) + s;
656
+ t.setAttribute(a, e);
657
+ }
658
+ else {
659
+ let e;
660
+ Array.isArray(c) ? Rt(c, n) : c instanceof Element ? (e = c, t.replaceWith(e)) : t.nodeValue = At(c), e && (n.targetNode = e);
661
+ }
662
+ }
663
+ }
664
+ function Bt(e) {
665
+ let t = "", n = !1, r = !1, i = -1, a = /* @__PURE__ */ new Map(), o = [], s = 0;
666
+ for (let c = 0, l = e.length; c < l; c++) {
667
+ let u = e[c];
668
+ if (t += u.slice(s), c === l - 1) break;
669
+ for (let e = 0; e < u.length; e++) switch (u.charAt(e)) {
670
+ case "<":
671
+ u.charAt(e + 1) === "/" ? o.pop() : (n = !0, o.push(++i));
672
+ break;
673
+ case ">":
674
+ n = !1, r = !1;
675
+ break;
676
+ case "=":
677
+ r = !0;
678
+ break;
679
+ }
680
+ let d = o[o.length - 1], f = X(a, d, () => []), p, m, h;
681
+ if (r) {
682
+ let n = /(\S+)="?([^"=]*)$/.exec(u);
683
+ p = n[1], m = n[2];
684
+ let r = /^([^">]*)("?)/.exec(e[c + 1]);
685
+ h = r[1], t = t.slice(0, -1 * n[0].length), s = r[0].length;
686
+ } else s = 0;
687
+ let g = {
688
+ attributeName: p,
689
+ attributeValuePre: m,
690
+ attributeValuePost: h,
691
+ expressionIndex: c
692
+ };
693
+ f.push(g), !n && !r && (t += " ");
694
+ }
695
+ return {
696
+ template: jt(t),
697
+ elementsToBindings: a
698
+ };
699
+ }
700
+ function Vt(e, t, n) {
701
+ for (let r = 0; r < e.length; r++) {
702
+ let i = e[r], a = {
703
+ binding: i,
704
+ targetNode: i.attributeName ? t : t.firstChild,
705
+ targetParentNode: void 0,
706
+ currentExpression: void 0
707
+ };
708
+ n.push(a);
709
+ }
710
+ }
711
+ function Ht(e, t) {
712
+ let n = [], r;
713
+ if (t.size === 1 && (r = t.get(0))) Vt(r, e, n);
714
+ else {
715
+ let r = document.createTreeWalker(e, NodeFilter.SHOW_ELEMENT), i = e, a = -1;
716
+ do {
717
+ let e = t.get(++a);
718
+ e && Vt(e, i, n);
719
+ } while (i = r.nextNode());
720
+ }
721
+ return n;
722
+ }
723
+ function Ut(e) {
724
+ let { template: t, elementsToBindings: n } = X(Mt, e, () => Bt(e)), r = t.cloneNode(!0).content.firstElementChild, i = Ht(r, n);
725
+ return function(e) {
726
+ return zt(e, i), r;
727
+ };
728
+ }
729
+ function Wt(e) {
730
+ let t = X(Nt, e, () => /* @__PURE__ */ new Map()), n = Pt;
731
+ function r(e, ...r) {
732
+ return X(X(t, e, () => /* @__PURE__ */ new Map()), n, () => Ut(e))(r);
733
+ }
734
+ function i(e, t, r) {
735
+ return e.map((e, i) => {
736
+ let a = n;
737
+ n = r(e);
738
+ try {
739
+ return t(e, i);
740
+ } finally {
741
+ n = a;
742
+ }
743
+ });
744
+ }
745
+ return {
746
+ map: i,
747
+ html: r
748
+ };
749
+ }
750
+ function Gt(e, t, n, r, i, a, o, s, c) {
751
+ let { labelWithSkin: l, titleForEmoji: u, unicodeWithSkin: d } = n, { html: f, map: p } = Wt(t);
752
+ function m(e, n, r) {
753
+ 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}`);
754
+ }
755
+ 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) => {
756
+ for (let r of e.querySelectorAll(`[${t}]`)) n(r, r.getAttribute(t));
757
+ };
758
+ if (c) {
759
+ e.appendChild(h);
760
+ for (let e of [
761
+ "click",
762
+ "focusout",
763
+ "input",
764
+ "keydown",
765
+ "keyup"
766
+ ]) g(`data-on-${e}`, (t, n) => {
767
+ t.addEventListener(e, r[n]);
768
+ });
769
+ g("data-ref", (e, t) => {
770
+ a[t] = e;
771
+ }), o.addEventListener("abort", () => {
772
+ e.removeChild(h);
773
+ });
774
+ }
775
+ g("data-action", (e, t) => {
776
+ let n = s.get(t);
777
+ n || s.set(t, n = /* @__PURE__ */ new WeakSet()), n.has(e) || (n.add(e), i[t](e));
778
+ });
779
+ }
780
+ /* istanbul ignore next */
781
+ var Z = typeof queueMicrotask == "function" ? queueMicrotask : (e) => Promise.resolve().then(e);
782
+ function Kt(e) {
783
+ let t = !1, n, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), a, o = () => {
784
+ if (t) return;
785
+ let e = [...i];
786
+ i.clear();
787
+ try {
788
+ for (let t of e) t();
789
+ } finally {
790
+ a = !1, i.size && (a = !0, Z(o));
791
+ }
792
+ }, s = new Proxy({}, {
793
+ get(e, t) {
794
+ if (n) {
795
+ let e = r.get(t);
796
+ e || (e = /* @__PURE__ */ new Set(), r.set(t, e)), e.add(n);
797
+ }
798
+ return e[t];
799
+ },
800
+ set(e, t, n) {
801
+ if (e[t] !== n) {
802
+ e[t] = n;
803
+ let s = r.get(t);
804
+ if (s) {
805
+ for (let e of s) i.add(e);
806
+ a || (a = !0, Z(o));
807
+ }
808
+ }
809
+ return !0;
810
+ }
811
+ });
812
+ return e.addEventListener("abort", () => {
813
+ t = !0;
814
+ }), {
815
+ state: s,
816
+ createEffect: (e) => {
817
+ let t = () => {
818
+ let r = n;
819
+ n = t;
820
+ try {
821
+ return e();
822
+ } finally {
823
+ n = r;
824
+ }
825
+ };
826
+ return t();
827
+ }
828
+ };
829
+ }
830
+ function qt(e, t, n) {
831
+ if (e.length !== t.length) return !1;
832
+ for (let r = 0; r < e.length; r++) if (!n(e[r], t[r])) return !1;
833
+ return !0;
834
+ }
835
+ var Jt = /* @__PURE__ */ new WeakMap();
836
+ function Yt(e, t, n) {
837
+ /* istanbul ignore else */
838
+ {
839
+ let r = e.closest(".tabpanel"), i = Jt.get(r);
840
+ i || (i = new IntersectionObserver(n, {
841
+ root: r,
842
+ rootMargin: "50% 0px 50% 0px",
843
+ threshold: 0
844
+ }), Jt.set(r, i), t.addEventListener("abort", () => {
845
+ i.disconnect();
846
+ })), i.observe(e);
847
+ }
848
+ }
849
+ var Xt = [], { assign: Q } = Object;
850
+ function Zt(e, t) {
851
+ let n = {}, r = new AbortController(), i = r.signal, { state: a, createEffect: o } = Kt(i), s = /* @__PURE__ */ new Map();
852
+ Q(a, {
853
+ skinToneEmoji: void 0,
854
+ i18n: void 0,
855
+ database: void 0,
856
+ customEmoji: void 0,
857
+ customCategorySorting: void 0,
858
+ emojiVersion: void 0
859
+ }), Q(a, t), Q(a, {
860
+ initialLoad: !0,
861
+ currentEmojis: [],
862
+ currentEmojisWithCategories: [],
863
+ rawSearchText: "",
864
+ searchText: "",
865
+ searchMode: !1,
866
+ activeSearchItem: -1,
867
+ message: void 0,
868
+ skinTonePickerExpanded: !1,
869
+ skinTonePickerExpandedAfterAnimation: !1,
870
+ currentSkinTone: 0,
871
+ activeSkinTone: 0,
872
+ skinToneButtonText: void 0,
873
+ pickerStyle: void 0,
874
+ skinToneButtonLabel: "",
875
+ skinTones: [],
876
+ currentFavorites: [],
877
+ defaultFavoriteEmojis: void 0,
878
+ numColumns: rt,
879
+ isRtl: !1,
880
+ currentGroupIndex: 0,
881
+ groups: Ye,
882
+ databaseLoaded: !1,
883
+ activeSearchItemId: void 0
884
+ }), o(() => {
885
+ a.currentGroup !== a.groups[a.currentGroupIndex] && (a.currentGroup = a.groups[a.currentGroupIndex]);
886
+ });
887
+ let c = (t) => {
888
+ e.getElementById(t).focus();
889
+ }, l = (t) => e.getElementById(`emo-${t.id}`), u = (e, t) => {
890
+ n.rootElement.dispatchEvent(new CustomEvent(e, {
891
+ detail: t,
892
+ bubbles: !0,
893
+ composed: !0
894
+ }));
895
+ }, d = (e, t) => e.id === t.id, f = (e, t) => {
896
+ let { category: n, emojis: r } = e, { category: i, emojis: a } = t;
897
+ return n === i ? qt(r, a, d) : !1;
898
+ }, p = (e) => {
899
+ qt(a.currentEmojis, e, d) || (a.currentEmojis = e);
900
+ }, m = (e) => {
901
+ a.searchMode !== e && (a.searchMode = e);
902
+ }, h = (e) => {
903
+ qt(a.currentEmojisWithCategories, e, f) || (a.currentEmojisWithCategories = e);
904
+ }, g = (e, t) => t && e.skins && e.skins[t] || e.unicode, _ = {
905
+ labelWithSkin: (e, t) => Ot([
906
+ e.name || g(e, t),
907
+ e.annotation,
908
+ ...e.shortcodes || Xt
909
+ ].filter(Boolean)).join(", "),
910
+ titleForEmoji: (e) => e.annotation || (e.shortcodes || Xt).join(", "),
911
+ unicodeWithSkin: g
912
+ }, v = {
913
+ onClickSkinToneButton: ie,
914
+ onEmojiClick: ne,
915
+ onNavClick: j,
916
+ onNavKeydown: te,
917
+ onSearchKeydown: A,
918
+ onSkinToneOptionsClick: re,
919
+ onSkinToneOptionsFocusOut: oe,
920
+ onSkinToneOptionsKeydown: ae,
921
+ onSkinToneOptionsKeyup: F,
922
+ onSearchInput: I
923
+ }, y = {
924
+ calculateEmojiGridStyle: S,
925
+ updateOnIntersection: C
926
+ }, b = !0;
927
+ o(() => {
928
+ Gt(e, a, _, v, y, n, i, s, b), b = !1;
929
+ }), a.emojiVersion || ft().then((e) => {
930
+ /* istanbul ignore next */
931
+ e || (a.message = a.i18n.emojiUnsupportedMessage);
932
+ }), o(() => {
933
+ async function e() {
934
+ let e = !1, t = setTimeout(() => {
935
+ e = !0, a.message = a.i18n.loadingMessage;
936
+ }, tt);
937
+ try {
938
+ await a.database.ready(), a.databaseLoaded = !0;
939
+ } catch (e) {
940
+ console.error(e), a.message = a.i18n.networkErrorMessage;
941
+ } finally {
942
+ clearTimeout(t), e && (e = !1, a.message = "");
943
+ }
944
+ }
945
+ a.database && e();
946
+ }), o(() => {
947
+ a.pickerStyle = `
948
+ --num-groups: ${a.groups.length};
949
+ --indicator-opacity: ${+!a.searchMode};
950
+ --num-skintones: ${Ze};`;
951
+ }), o(() => {
952
+ a.customEmoji && a.database && x();
953
+ }), o(() => {
954
+ a.customEmoji && a.customEmoji.length ? a.groups !== q && (a.groups = q) : a.groups !== Ye && (a.currentGroupIndex && a.currentGroupIndex--, a.groups = Ye);
955
+ }), o(() => {
956
+ async function e() {
957
+ a.databaseLoaded && (a.currentSkinTone = await a.database.getPreferredSkinTone());
958
+ }
959
+ e();
960
+ }), o(() => {
961
+ a.skinTones = Array(Ze).fill().map((e, t) => yt(a.skinToneEmoji, t));
962
+ }), o(() => {
963
+ a.skinToneButtonText = a.skinTones[a.currentSkinTone];
964
+ }), o(() => {
965
+ a.skinToneButtonLabel = a.i18n.skinToneLabel.replace("{skinTone}", a.i18n.skinTones[a.currentSkinTone]);
966
+ }), o(() => {
967
+ async function e() {
968
+ let { database: e } = a;
969
+ a.defaultFavoriteEmojis = (await Promise.all(it.map((t) => e.getEmojiByUnicodeOrName(t)))).filter(Boolean);
970
+ }
971
+ a.databaseLoaded && e();
972
+ });
973
+ function x() {
974
+ let { customEmoji: e, database: t } = a, n = e || Xt;
975
+ t.customEmoji !== n && (t.customEmoji = n);
976
+ }
977
+ o(() => {
978
+ async function e() {
979
+ x();
980
+ let { database: e, defaultFavoriteEmojis: t, numColumns: n } = a;
981
+ a.currentFavorites = await O(xt([...await e.getTopFavoriteEmoji(n), ...t], (e) => e.unicode || e.name).slice(0, n));
982
+ }
983
+ a.databaseLoaded && a.defaultFavoriteEmojis && e();
984
+ });
985
+ function S(e) {
986
+ wt(e, i, () => {
987
+ /* istanbul ignore next */
988
+ {
989
+ let e = getComputedStyle(n.rootElement), t = parseInt(e.getPropertyValue("--num-columns"), 10), r = e.getPropertyValue("direction") === "rtl";
990
+ a.numColumns = t, a.isRtl = r;
991
+ }
992
+ });
993
+ }
994
+ function C(e) {
995
+ Yt(e, i, (e) => {
996
+ for (let { target: t, isIntersecting: n } of e) t.classList.toggle("onscreen", n);
997
+ });
998
+ }
999
+ o(() => {
1000
+ async function e() {
1001
+ let { searchText: e, currentGroup: t, databaseLoaded: n, customEmoji: r } = a;
1002
+ if (!n) a.currentEmojis = [], a.searchMode = !1;
1003
+ else if (e.length >= Xe) {
1004
+ let t = await k(e);
1005
+ a.searchText === e && (p(t), m(!0));
1006
+ } else {
1007
+ let { id: e } = t;
1008
+ if (e !== -1 || r && r.length) {
1009
+ let t = await ee(e);
1010
+ a.currentGroup.id === e && (p(t), m(!1));
1011
+ }
1012
+ }
1013
+ }
1014
+ e();
1015
+ });
1016
+ let w = () => {
1017
+ Y(() => kt(n.tabpanelElement));
1018
+ };
1019
+ o(() => {
1020
+ let { currentEmojis: e, emojiVersion: t } = a, n = e.filter((e) => e.unicode).filter((e) => $e(e) && !pt.has(e.unicode));
1021
+ !t && n.length ? (p(e), Y(() => T(n))) : (p(t ? e : e.filter(E)), w());
1022
+ });
1023
+ function T(e) {
1024
+ Dt(e, n.baselineEmoji, l) ? w() : a.currentEmojis = [...a.currentEmojis];
1025
+ }
1026
+ function E(e) {
1027
+ return !e.unicode || !$e(e) || pt.get(e.unicode);
1028
+ }
1029
+ async function D(e) {
1030
+ let t = a.emojiVersion || await ft();
1031
+ return e.filter(({ version: e }) => !e || e <= t);
1032
+ }
1033
+ async function O(e) {
1034
+ return St(e, a.emojiVersion || await ft());
1035
+ }
1036
+ async function ee(e) {
1037
+ return O(await D(e === -1 ? a.customEmoji : await a.database.getEmojiByGroup(e)));
1038
+ }
1039
+ async function k(e) {
1040
+ return O(await D(await a.database.getEmojiBySearchQuery(e)));
1041
+ }
1042
+ o(() => {}), o(() => {
1043
+ function e() {
1044
+ let { searchMode: e, currentEmojis: t } = a;
1045
+ if (e) return [{
1046
+ category: "",
1047
+ emojis: t
1048
+ }];
1049
+ let n = /* @__PURE__ */ new Map();
1050
+ for (let e of t) {
1051
+ let t = e.category || "", r = n.get(t);
1052
+ r || (r = [], n.set(t, r)), r.push(e);
1053
+ }
1054
+ return [...n.entries()].map(([e, t]) => ({
1055
+ category: e,
1056
+ emojis: t
1057
+ })).sort((e, t) => a.customCategorySorting(e.category, t.category));
1058
+ }
1059
+ h(e());
1060
+ }), o(() => {
1061
+ a.activeSearchItemId = a.activeSearchItem !== -1 && a.currentEmojis[a.activeSearchItem].id;
1062
+ }), o(() => {
1063
+ let { rawSearchText: e } = a;
1064
+ Qe(() => {
1065
+ a.searchText = (e || "").trim(), a.activeSearchItem = -1;
1066
+ });
1067
+ });
1068
+ function A(e) {
1069
+ if (!a.searchMode || !a.currentEmojis.length) return;
1070
+ let t = (t) => {
1071
+ J(e), a.activeSearchItem = bt(t, a.activeSearchItem, a.currentEmojis);
1072
+ };
1073
+ switch (e.key) {
1074
+ case "ArrowDown": return t(!1);
1075
+ case "ArrowUp": return t(!0);
1076
+ case "Enter": if (a.activeSearchItem === -1) a.activeSearchItem = 0;
1077
+ else return J(e), N(a.currentEmojis[a.activeSearchItem].id);
1078
+ }
1079
+ }
1080
+ function j(e) {
1081
+ let { target: t } = e, r = t.closest(".nav-button");
1082
+ /* istanbul ignore if */
1083
+ if (!r) return;
1084
+ let i = parseInt(r.dataset.groupId, 10);
1085
+ n.searchElement.value = "", a.rawSearchText = "", a.searchText = "", a.activeSearchItem = -1, a.currentGroupIndex = a.groups.findIndex((e) => e.id === i);
1086
+ }
1087
+ function te(e) {
1088
+ let { target: t, key: n } = e, r = (t) => {
1089
+ t && (J(e), t.focus());
1090
+ };
1091
+ switch (n) {
1092
+ case "ArrowLeft": return r(t.previousElementSibling);
1093
+ case "ArrowRight": return r(t.nextElementSibling);
1094
+ case "Home": return r(t.parentElement.firstElementChild);
1095
+ case "End": return r(t.parentElement.lastElementChild);
1096
+ }
1097
+ }
1098
+ async function M(e) {
1099
+ let t = await a.database.getEmojiByUnicodeOrName(e), n = [...a.currentEmojis, ...a.currentFavorites].find((t) => t.id === e), r = n.unicode && g(n, a.currentSkinTone);
1100
+ return await a.database.incrementFavoriteEmojiCount(e), {
1101
+ emoji: t,
1102
+ skinTone: a.currentSkinTone,
1103
+ ...r && { unicode: r },
1104
+ ...n.name && { name: n.name }
1105
+ };
1106
+ }
1107
+ async function N(e) {
1108
+ let t = M(e);
1109
+ u("emoji-click-sync", t), u("emoji-click", await t);
1110
+ }
1111
+ function ne(e) {
1112
+ let { target: t } = e;
1113
+ t.classList.contains("emoji") && (J(e), N(t.id.substring(4)));
1114
+ }
1115
+ function P(e) {
1116
+ a.currentSkinTone = e, a.skinTonePickerExpanded = !1, c("skintone-button"), u("skin-tone-change", { skinTone: e }), a.database.setPreferredSkinTone(e);
1117
+ }
1118
+ function re(e) {
1119
+ let { target: { id: t } } = e, n = t && t.match(/^skintone-(\d)/);
1120
+ n && (J(e), P(parseInt(n[1], 10)));
1121
+ }
1122
+ function ie(e) {
1123
+ a.skinTonePickerExpanded = !a.skinTonePickerExpanded, a.activeSkinTone = a.currentSkinTone, a.skinTonePickerExpanded && (J(e), Y(() => c("skintone-list")));
1124
+ }
1125
+ o(() => {
1126
+ a.skinTonePickerExpanded ? n.skinToneDropdown.addEventListener("transitionend", () => {
1127
+ a.skinTonePickerExpandedAfterAnimation = !0;
1128
+ }, { once: !0 }) : a.skinTonePickerExpandedAfterAnimation = !1;
1129
+ });
1130
+ function ae(e) {
1131
+ /* istanbul ignore if */
1132
+ if (!a.skinTonePickerExpanded) return;
1133
+ let t = async (t) => {
1134
+ J(e), a.activeSkinTone = t;
1135
+ };
1136
+ switch (e.key) {
1137
+ case "ArrowUp": return t(bt(!0, a.activeSkinTone, a.skinTones));
1138
+ case "ArrowDown": return t(bt(!1, a.activeSkinTone, a.skinTones));
1139
+ case "Home": return t(0);
1140
+ case "End": return t(a.skinTones.length - 1);
1141
+ case "Enter": return J(e), P(a.activeSkinTone);
1142
+ case "Escape": return J(e), a.skinTonePickerExpanded = !1, c("skintone-button");
1143
+ }
1144
+ }
1145
+ function F(e) {
1146
+ if (a.skinTonePickerExpanded) switch (e.key) {
1147
+ case " ": return J(e), P(a.activeSkinTone);
1148
+ }
1149
+ }
1150
+ async function oe(e) {
1151
+ let { relatedTarget: t } = e;
1152
+ /* istanbul ignore else */
1153
+ (!t || t.id !== "skintone-list") && (a.skinTonePickerExpanded = !1);
1154
+ }
1155
+ function I(e) {
1156
+ a.rawSearchText = e.target.value;
1157
+ }
1158
+ return {
1159
+ $set(e) {
1160
+ Q(a, e);
1161
+ },
1162
+ $destroy() {
1163
+ r.abort();
1164
+ }
1165
+ };
1166
+ }
1167
+ var Qt = "https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json", $t = "en", en = {
1168
+ categoriesLabel: "Categories",
1169
+ emojiUnsupportedMessage: "Your browser does not support color emoji.",
1170
+ favoritesLabel: "Favorites",
1171
+ loadingMessage: "Loading…",
1172
+ networkErrorMessage: "Could not load emoji.",
1173
+ regionLabel: "Emoji picker",
1174
+ searchDescription: "When search results are available, press up or down to select and enter to choose.",
1175
+ searchLabel: "Search",
1176
+ searchResultsLabel: "Search results",
1177
+ skinToneDescription: "When expanded, press up or down to select and enter to choose.",
1178
+ skinToneLabel: "Choose a skin tone (currently {skinTone})",
1179
+ skinTonesLabel: "Skin tones",
1180
+ skinTones: [
1181
+ "Default",
1182
+ "Light",
1183
+ "Medium-Light",
1184
+ "Medium",
1185
+ "Medium-Dark",
1186
+ "Dark"
1187
+ ],
1188
+ categories: {
1189
+ custom: "Custom",
1190
+ "smileys-emotion": "Smileys and emoticons",
1191
+ "people-body": "People and body",
1192
+ "animals-nature": "Animals and nature",
1193
+ "food-drink": "Food and drink",
1194
+ "travel-places": "Travel and places",
1195
+ activities: "Activities",
1196
+ objects: "Objects",
1197
+ symbols: "Symbols",
1198
+ flags: "Flags"
1199
+ }
1200
+ }, tn = ":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)}", nn = [
1201
+ "customEmoji",
1202
+ "customCategorySorting",
1203
+ "database",
1204
+ "dataSource",
1205
+ "i18n",
1206
+ "locale",
1207
+ "skinToneEmoji",
1208
+ "emojiVersion"
1209
+ ], rn = `:host{--emoji-font-family:${at}}`, $ = class extends HTMLElement {
1210
+ constructor(e) {
1211
+ super(), this.attachShadow({ mode: "open" });
1212
+ let t = document.createElement("style");
1213
+ t.textContent = tn + rn, this.shadowRoot.appendChild(t), this._ctx = {
1214
+ locale: $t,
1215
+ dataSource: Qt,
1216
+ skinToneEmoji: nt,
1217
+ customCategorySorting: ot,
1218
+ customEmoji: null,
1219
+ i18n: en,
1220
+ emojiVersion: null,
1221
+ ...e
1222
+ };
1223
+ for (let e of nn) e !== "database" && Object.prototype.hasOwnProperty.call(this, e) && (this._ctx[e] = this[e], delete this[e]);
1224
+ this._dbFlush();
1225
+ }
1226
+ connectedCallback() {
1227
+ on(this), this._cmp ||= Zt(this.shadowRoot, this._ctx);
1228
+ }
1229
+ disconnectedCallback() {
1230
+ on(this), Z(() => {
1231
+ if (!this.isConnected && this._cmp) {
1232
+ this._cmp.$destroy(), this._cmp = void 0;
1233
+ let { database: e } = this._ctx;
1234
+ e.close().catch((e) => console.error(e));
1235
+ }
1236
+ });
1237
+ }
1238
+ static get observedAttributes() {
1239
+ return [
1240
+ "locale",
1241
+ "data-source",
1242
+ "skin-tone-emoji",
1243
+ "emoji-version"
1244
+ ];
1245
+ }
1246
+ attributeChangedCallback(e, t, n) {
1247
+ this._set(e.replace(/-([a-z])/g, (e, t) => t.toUpperCase()), e === "emoji-version" ? parseFloat(n) : n);
1248
+ }
1249
+ _set(e, t) {
1250
+ this._ctx[e] = t, this._cmp && this._cmp.$set({ [e]: t }), ["locale", "dataSource"].includes(e) && this._dbFlush();
1251
+ }
1252
+ _dbCreate() {
1253
+ let { locale: e, dataSource: t, database: n } = this._ctx;
1254
+ (!n || n.locale !== e || n.dataSource !== t) && this._set("database", new Je({
1255
+ locale: e,
1256
+ dataSource: t
1257
+ }));
1258
+ }
1259
+ _dbFlush() {
1260
+ Z(() => this._dbCreate());
1261
+ }
1262
+ }, an = {};
1263
+ for (let e of nn) an[e] = {
1264
+ get() {
1265
+ return e === "database" && this._dbCreate(), this._ctx[e];
1266
+ },
1267
+ set(t) {
1268
+ if (e === "database") throw Error("database is read-only");
1269
+ this._set(e, t);
1270
+ }
1271
+ };
1272
+ Object.defineProperties($.prototype, an);
1273
+ function on(e) {
1274
+ /* istanbul ignore if */
1275
+ e instanceof $ || Object.setPrototypeOf(e, customElements.get(e.tagName.toLowerCase()).prototype);
1276
+ }
1277
+ /* istanbul ignore else */
1278
+ customElements.get("emoji-picker") || customElements.define("emoji-picker", $);
1279
+ //#endregion
1280
+ //#region src/components/on-demand/wt-chat-emoji/wt-chat-emoji.vue
1281
+ var sn = { class: "wt-chat-emoji" }, cn = /*#__PURE__*/ e({
1282
+ __name: "wt-chat-emoji",
1283
+ props: {
1284
+ size: {
1285
+ type: String,
1286
+ default: t.MD
1287
+ },
1288
+ popupTeleportTo: {
1289
+ type: String,
1290
+ default: ""
1291
+ },
1292
+ filled: {
1293
+ type: Boolean,
1294
+ default: !1
1295
+ },
1296
+ rounded: {
1297
+ type: Boolean,
1298
+ default: !0
1299
+ }
1300
+ },
1301
+ emits: ["insert-emoji"],
1302
+ setup(e, { emit: t }) {
1303
+ 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 () => {
1304
+ x.value || (x.value = document.createElement("emoji-picker"), T(), x.value.addEventListener("emoji-click", E));
1305
+ }, T = () => {
1306
+ y.value && x.value && y.value.appendChild(x.value);
1307
+ }, E = (e) => {
1308
+ let { unicode: t } = e.detail;
1309
+ v("insert-emoji", t), D();
1310
+ }, D = () => {
1311
+ b.value = !1, x.value && y.value && (x.value.removeEventListener("emoji-click", E), y.value.removeChild(x.value), x.value = null);
1312
+ }, O = (e) => {
1313
+ y.value?.contains(e.target) || D();
1314
+ }, ee = async () => {
1315
+ k(), b.value = !b.value, b.value ? (await u(), await w()) : D();
1316
+ }, k = () => r.$emit("chat-input-focus");
1317
+ return d(() => {
1318
+ D();
1319
+ }), (t, r) => {
1320
+ let a = m("clickaway");
1321
+ return g((f(), c("div", sn, [l(h(n), {
1322
+ size: e.size,
1323
+ variant: C.value,
1324
+ color: "secondary",
1325
+ icon: "chat-emoji",
1326
+ rounded: e.rounded,
1327
+ wide: "",
1328
+ onClick: ee
1329
+ }, null, 8, [
1330
+ "size",
1331
+ "variant",
1332
+ "rounded"
1333
+ ]), (f(), o(i, {
1334
+ defer: "",
1335
+ disabled: !e.popupTeleportTo,
1336
+ to: S.value
1337
+ }, [b.value ? (f(), c("div", {
1338
+ key: 0,
1339
+ ref_key: "emojiPickerWrapper",
1340
+ ref: y,
1341
+ class: "wt-chat-emoji__wrapper"
1342
+ }, null, 512)) : s("", !0)], 8, ["disabled", "to"]))])), [[a, O]]);
1343
+ };
1344
+ }
1345
+ }, [["__scopeId", "data-v-d6ce560a"]]);
1346
+ //#endregion
1347
+ export { cn as default };