@dialpad/dialtone-vue 3.64.1 → 3.65.2

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.
package/dist/emoji.js ADDED
@@ -0,0 +1,721 @@
1
+ import { _ as N, t as Q, D as B, H as W, J as X, a6 as k, w as Y } from "./emoji_text_wrapper-7edbe839.js";
2
+ import { as as Je, x as Ge, ao as Ke, a9 as Qe, a8 as We, ad as Xe, ab as Ye, ac as Ze, aa as et, ae as tt, a7 as lt, aq as ot, ar as st, ap as nt, af as at, aj as it, ai as rt, ah as ct, ag as ut, al as dt, an as mt, am as bt, ak as _t } from "./emoji_text_wrapper-7edbe839.js";
3
+ import { openBlock as i, createElementBlock as d, createVNode as T, createSlots as Z, withCtx as F, createElementVNode as v, computed as D, ref as f, toRefs as ee, watch as w, Fragment as U, renderList as R, unref as h, createBlock as te, withModifiers as le, nextTick as oe, onMounted as se, onUnmounted as ne, toDisplayString as A, withDirectives as M, createCommentVNode as O, vShow as x, watchEffect as ae, normalizeClass as ie, createTextVNode as P } from "vue";
4
+ const re = { class: "d-emoji-picker__search d-emoji-picker__alignment" }, ce = { class: "d-emoji-picker__search-button" }, ue = {
5
+ __name: "emoji_search",
6
+ props: {
7
+ searchPlaceholderLabel: {
8
+ type: String,
9
+ required: !0
10
+ },
11
+ modelValue: {
12
+ type: String,
13
+ default: ""
14
+ }
15
+ },
16
+ emits: ["update:modelValue"],
17
+ setup(e) {
18
+ return (_, l) => (i(), d("div", re, [
19
+ T(Q, {
20
+ placeholder: e.searchPlaceholderLabel,
21
+ "model-value": e.modelValue,
22
+ "onUpdate:modelValue": l[1] || (l[1] = (s) => _.$emit("update:modelValue", s))
23
+ }, Z({
24
+ leftIcon: F(() => [
25
+ T(B, { name: "search" })
26
+ ]),
27
+ _: 2
28
+ }, [
29
+ e.modelValue.length > 0 ? {
30
+ name: "rightIcon",
31
+ fn: F(() => [
32
+ v("button", ce, [
33
+ T(B, {
34
+ name: "close",
35
+ onClick: l[0] || (l[0] = (s) => _.$emit("update:modelValue", ""))
36
+ })
37
+ ])
38
+ ]),
39
+ key: "0"
40
+ } : void 0
41
+ ]), 1032, ["placeholder", "model-value"])
42
+ ]));
43
+ }
44
+ }, de = /* @__PURE__ */ N(ue, [["__scopeId", "data-v-20dd73b1"]]);
45
+ const me = { class: "d-emoji-picker__tabset" }, be = {
46
+ __name: "emoji_tabset",
47
+ props: {
48
+ /**
49
+ * Whether to show the recently used tab or not
50
+ * @type {Boolean}
51
+ * @default false
52
+ */
53
+ showRecentlyUsedTab: {
54
+ type: Boolean,
55
+ default: !1
56
+ },
57
+ scrollIntoTab: {
58
+ type: Number,
59
+ required: !0
60
+ },
61
+ isScrolling: {
62
+ type: Boolean,
63
+ default: !1
64
+ },
65
+ emojiFilter: {
66
+ type: String,
67
+ default: ""
68
+ },
69
+ /**
70
+ * The labels for the aria-label
71
+ * @type {Array}
72
+ * @required
73
+ */
74
+ tabsetLabels: {
75
+ type: Array,
76
+ required: !0
77
+ }
78
+ },
79
+ emits: [
80
+ /**
81
+ * Emitted when a tab is selected
82
+ * @event selected-tabset
83
+ * @param {String} tabId - The name of the tab that was selected
84
+ */
85
+ "selected-tabset"
86
+ ],
87
+ setup(e, { emit: _ }) {
88
+ const l = e, s = [
89
+ { label: "Recently used", icon: "clock" },
90
+ { label: "Smiley’s and people", icon: "satisfied" },
91
+ { label: "Nature", icon: "living-thing" },
92
+ { label: "Food", icon: "food" },
93
+ { label: "Activity", icon: "object" },
94
+ { label: "Travel", icon: "transportation" },
95
+ { label: "Objects", icon: "lightbulb" },
96
+ { label: "Symbols", icon: "heart" },
97
+ { label: "Flags", icon: "flag" }
98
+ ], b = D(() => (l.showRecentlyUsedTab ? s : s.slice(1)).map(($, p) => ({
99
+ ...$,
100
+ label: l.tabsetLabels[p],
101
+ id: (p + 1).toString(),
102
+ panelId: (p + 1).toString()
103
+ }))), r = D(() => l.emojiFilter.length > 0), g = f("1"), { isScrolling: c } = ee(l);
104
+ w(
105
+ () => l.scrollIntoTab,
106
+ () => {
107
+ !c.value && !r.value && (g.value = (l.scrollIntoTab + 1).toString());
108
+ }
109
+ ), w(
110
+ r,
111
+ () => {
112
+ r.value && (g.value = null);
113
+ }
114
+ );
115
+ function y(u) {
116
+ c.value || (g.value = u), _("selected-tabset", u);
117
+ }
118
+ return (u, $) => (i(), d("div", me, [
119
+ T(W, {
120
+ "tab-list-class": "d-emoji-picker__tabset-list",
121
+ selected: g.value
122
+ }, {
123
+ tabs: F(() => [
124
+ (i(!0), d(U, null, R(h(b), (p) => (i(), te(X, {
125
+ id: p.id,
126
+ key: p.id,
127
+ "panel-id": p.panelId,
128
+ label: p.label,
129
+ "aria-controls": "d-emoji-picker-list",
130
+ onClickCapture: le((V) => y(p.id), ["stop"])
131
+ }, {
132
+ default: F(() => [
133
+ T(B, {
134
+ size: "400",
135
+ name: p.icon
136
+ }, null, 8, ["name"])
137
+ ]),
138
+ _: 2
139
+ }, 1032, ["id", "panel-id", "label", "onClickCapture"]))), 128))
140
+ ]),
141
+ _: 1
142
+ }, 8, ["selected"])
143
+ ]));
144
+ }
145
+ }, q = "https://static.dialpadcdn.com/joypixels/png/unicode/32/";
146
+ const _e = { class: "d-emoji-picker__selector" }, ve = {
147
+ key: 0,
148
+ class: "d-emoji-picker__search-label d-emoji-picker__alignment"
149
+ }, pe = { key: 0 }, fe = { class: "d-emoji-picker__tab" }, he = ["aria-label", "onClick", "onFocusin", "onMouseover"], ge = ["alt", "aria-label", "title", "src"], je = {
150
+ key: 2,
151
+ class: "d-emoji-picker__alignment"
152
+ }, ke = { class: "d-emoji-picker__tab" }, ye = ["aria-label", "onClick", "onFocusin", "onMouseover"], Te = ["alt", "aria-label", "title", "src"], Se = {
153
+ __name: "emoji_selector",
154
+ props: {
155
+ /**
156
+ * The filter to apply to the emoji list
157
+ * @type {String}
158
+ * @default ''
159
+ */
160
+ emojiFilter: {
161
+ type: String,
162
+ default: ""
163
+ },
164
+ /**
165
+ * The skin tone to apply to the emoji list
166
+ * @type {String}
167
+ * @required
168
+ */
169
+ skinTone: {
170
+ type: String,
171
+ required: !0
172
+ },
173
+ /**
174
+ * The labels for the tabset
175
+ * @type {Array}
176
+ * @required
177
+ */
178
+ tabsetLabels: {
179
+ type: Array,
180
+ required: !0
181
+ },
182
+ selectedTabset: {
183
+ type: Object,
184
+ required: !0
185
+ },
186
+ /**
187
+ * The label for the search results tab
188
+ * @type {String}
189
+ * @required
190
+ */
191
+ searchResultsLabel: {
192
+ type: String,
193
+ required: !0
194
+ },
195
+ searchNoResultsLabel: {
196
+ type: String,
197
+ required: !0
198
+ },
199
+ /**
200
+ * The list of recently used emojis
201
+ * @type {Array}
202
+ */
203
+ recentlyUsedEmojis: {
204
+ type: Array,
205
+ default: () => []
206
+ }
207
+ },
208
+ emits: [
209
+ /**
210
+ * Emitted when the user hover over an emoji
211
+ * @event highlighted-emoji
212
+ * @param {Object} emoji - The emoji data that was hovered
213
+ */
214
+ "highlighted-emoji",
215
+ /**
216
+ * Emitted when the user select an emoji
217
+ * @event selected-emoji
218
+ * @param {Object} emoji - The emoji data that was selected
219
+ */
220
+ "selected-emoji",
221
+ /**
222
+ * Emitted when the user scroll into an emoji tab
223
+ * @event scroll-into-tab
224
+ * @param {Number} tab-index - The tab that was scrolled into
225
+ */
226
+ "scroll-into-tab",
227
+ /**
228
+ * Emitted when the scrollTo function starts scrolling and stops scrolling
229
+ * @event is-scrolling
230
+ * @param {Boolean} is-scrolling - Whether the user is scrolling with the scroll-to
231
+ */
232
+ "is-scrolling"
233
+ ],
234
+ setup(e, { emit: _ }) {
235
+ const l = e, s = f(null), b = f(null), r = f(null), g = ["Recently used", "People", "Nature", "Food", "Activity", "Travel", "Objects", "Symbols", "Flags"], c = D(() => l.recentlyUsedEmojis.length ? l.tabsetLabels.map((t) => ({ label: t, ref: f(null) })) : l.tabsetLabels.slice(1).map((t) => ({ label: t, ref: f(null) }))), y = f(c.value[0].label), u = D(() => l.recentlyUsedEmojis.length ? g : g.slice(1)), $ = f([]), p = D(() => [
236
+ ...k[`People${l.skinTone}`],
237
+ ...k.Nature,
238
+ ...k.Food,
239
+ ...k[`Activity${l.skinTone}`],
240
+ ...k.Travel,
241
+ ...k[`Objects${l.skinTone}`],
242
+ ...k.Symbols,
243
+ ...k.Flags
244
+ ]), V = E(() => {
245
+ j();
246
+ });
247
+ w(p, () => {
248
+ j();
249
+ }, { immediate: !0 }), w(
250
+ () => l.recentlyUsedEmojis,
251
+ () => {
252
+ k["Recently used"] = l.recentlyUsedEmojis;
253
+ },
254
+ { immediate: !0 }
255
+ ), w(() => l.emojiFilter, () => {
256
+ G(), V();
257
+ }), w(
258
+ () => l.selectedTabset,
259
+ (t) => {
260
+ J(t.tabId);
261
+ },
262
+ { deep: !0 }
263
+ );
264
+ function j() {
265
+ const t = l.emojiFilter.toLowerCase();
266
+ $.value = p.value.filter((a) => {
267
+ const n = a.name.toLowerCase().includes(t), o = a.keywords.some((m) => m.toLowerCase().includes(t));
268
+ return n || o;
269
+ });
270
+ }
271
+ function E(t, a = 300) {
272
+ let n;
273
+ return (...o) => {
274
+ clearTimeout(n), n = setTimeout(() => t(...o), a);
275
+ };
276
+ }
277
+ function C(t) {
278
+ return `${q + t}.png`;
279
+ }
280
+ function H(t) {
281
+ t.target.parentNode.style.display = "none";
282
+ }
283
+ function J(t) {
284
+ const n = c.value[t - 1].ref.value[0];
285
+ oe(() => {
286
+ const o = b.value, m = t === "1" ? 0 : n.offsetTop - 20;
287
+ let S = !0, I = o.scrollTop;
288
+ _("is-scrolling", !0), o.addEventListener("scroll", () => {
289
+ if (S) {
290
+ const L = o.scrollTop;
291
+ (I < L && L >= m || I > L && L <= m) && (S = !1, _("is-scrolling", !1)), I = L;
292
+ }
293
+ }), o.scrollTop = m;
294
+ });
295
+ }
296
+ function G() {
297
+ const t = b.value;
298
+ t.scrollTop = 0;
299
+ }
300
+ function K() {
301
+ r.value = new IntersectionObserver((t) => {
302
+ t.forEach((a) => {
303
+ var m, S, I, L, z;
304
+ const { target: n } = a, o = parseInt(n.dataset.index);
305
+ a.isIntersecting && n.offsetTop <= s.value.offsetTop + 50 ? (y.value = ((m = c.value[o - 1]) == null ? void 0 : m.label) ?? ((S = c.value[0]) == null ? void 0 : S.label), _("scroll-into-tab", o - 1)) : a.boundingClientRect.bottom <= ((I = s.value) == null ? void 0 : I.getBoundingClientRect().bottom) ? (_("scroll-into-tab", o), y.value = (L = c.value[o]) == null ? void 0 : L.label) : o === 1 && (_("scroll-into-tab", o), y.value = (z = c.value[0]) == null ? void 0 : z.label);
306
+ });
307
+ }), r.value.observe(s.value), Array.from(b.value.children).forEach((t, a) => {
308
+ r.value.observe(t), t.dataset.index = a;
309
+ });
310
+ }
311
+ return se(() => {
312
+ K();
313
+ }), ne(() => {
314
+ r.value.disconnect();
315
+ }), (t, a) => (i(), d("div", _e, [
316
+ v("div", {
317
+ id: "d-emoji-picker-list",
318
+ ref_key: "listRef",
319
+ ref: b,
320
+ class: "d-emoji-picker__list"
321
+ }, [
322
+ e.emojiFilter ? (i(), d("p", ve, A($.value.length > 0 ? e.searchResultsLabel : e.searchNoResultsLabel), 1)) : (i(), d("div", {
323
+ key: 1,
324
+ ref_key: "tabCategoryRef",
325
+ ref: s,
326
+ class: "d-emoji-picker__category d-emoji-picker__alignment"
327
+ }, [
328
+ v("p", null, A(y.value), 1)
329
+ ], 512)),
330
+ (i(!0), d(U, null, R(h(c), (n, o) => M((i(), d("div", {
331
+ key: o,
332
+ ref_for: !0,
333
+ ref: n.ref,
334
+ class: "d-emoji-picker__alignment"
335
+ }, [
336
+ o ? (i(), d("p", pe, A(n.label), 1)) : O("", !0),
337
+ v("div", fe, [
338
+ (i(!0), d(U, null, R(h(k)[h(u)[o] + e.skinTone] ? h(k)[h(u)[o] + e.skinTone] : h(k)[h(u)[o]], (m) => (i(), d("button", {
339
+ key: m.shortname,
340
+ type: "button",
341
+ "aria-label": m.name,
342
+ onClick: (S) => t.$emit("selected-emoji", m),
343
+ onFocusin: (S) => t.$emit("highlighted-emoji", m),
344
+ onFocusout: a[0] || (a[0] = (S) => t.$emit("highlighted-emoji", null)),
345
+ onMouseover: (S) => t.$emit("highlighted-emoji", m),
346
+ onMouseleave: a[1] || (a[1] = (S) => t.$emit("highlighted-emoji", null))
347
+ }, [
348
+ v("img", {
349
+ class: "d-icon d-icon--size-500",
350
+ alt: m.name,
351
+ "aria-label": m.name,
352
+ title: m.name,
353
+ src: C(m.unicode_character),
354
+ onError: H
355
+ }, null, 40, ge)
356
+ ], 40, he))), 128))
357
+ ])
358
+ ])), [
359
+ [x, !e.emojiFilter]
360
+ ])), 128)),
361
+ e.emojiFilter ? (i(), d("div", je, [
362
+ v("div", ke, [
363
+ (i(!0), d(U, null, R($.value, (n) => (i(), d("button", {
364
+ key: n.shortname,
365
+ type: "button",
366
+ "aria-label": n.name,
367
+ onClick: (o) => t.$emit("selected-emoji", n),
368
+ onFocusin: (o) => t.$emit("highlighted-emoji", n),
369
+ onFocusout: a[2] || (a[2] = (o) => t.$emit("highlighted-emoji", null)),
370
+ onMouseover: (o) => t.$emit("highlighted-emoji", n),
371
+ onMouseleave: a[3] || (a[3] = (o) => t.$emit("highlighted-emoji", null))
372
+ }, [
373
+ v("img", {
374
+ class: "d-icon d-icon--size-500",
375
+ alt: n.name,
376
+ "aria-label": n.name,
377
+ title: n.name,
378
+ src: `${h(q) + n.unicode_character}.png`
379
+ }, null, 8, Te)
380
+ ], 40, ye))), 128))
381
+ ])
382
+ ])) : O("", !0)
383
+ ], 512)
384
+ ]));
385
+ }
386
+ }, $e = /* @__PURE__ */ N(Se, [["__scopeId", "data-v-183240d8"]]);
387
+ const Ee = { class: "d-emoji-picker__skin-list" }, Le = ["onClick"], Ce = ["alt", "aria-label", "title", "src"], Ie = { class: "d-emoji-picker__skin-selected" }, we = ["alt", "aria-label", "title", "src"], De = {
388
+ __name: "emoji_skin_selector",
389
+ props: {
390
+ /**
391
+ * The skin tone to apply to the emoji list
392
+ * @type {String}
393
+ * @required
394
+ */
395
+ skinTone: {
396
+ type: String,
397
+ required: !0
398
+ },
399
+ isHovering: {
400
+ type: Boolean,
401
+ default: !1
402
+ },
403
+ skinSelectorButtonTooltipLabel: {
404
+ type: String,
405
+ required: !0
406
+ }
407
+ },
408
+ emits: [
409
+ /**
410
+ * The skin tone that was selected
411
+ * @event skin-tone
412
+ * @type {Number}
413
+ */
414
+ "skin-tone"
415
+ ],
416
+ setup(e, { emit: _ }) {
417
+ const l = e, s = [
418
+ {
419
+ name: ":wave_tone1:",
420
+ unicode_output: "1f44b-1f3fb",
421
+ skinTone: "Light",
422
+ skinCode: "_tone1"
423
+ },
424
+ {
425
+ name: ":wave_tone2:",
426
+ unicode_output: "1f44b-1f3fc",
427
+ skinTone: "MediumLight",
428
+ skinCode: "_tone2"
429
+ },
430
+ {
431
+ name: ":wave_tone3:",
432
+ unicode_output: "1f44b-1f3fd",
433
+ skinTone: "Medium",
434
+ skinCode: "_tone3"
435
+ },
436
+ {
437
+ name: ":wave_tone4:",
438
+ unicode_output: "1f44b-1f3fe",
439
+ skinTone: "MediumDark",
440
+ skinCode: "_tone4"
441
+ },
442
+ {
443
+ name: ":wave_tone5:",
444
+ unicode_output: "1f44b-1f3ff",
445
+ skinTone: "Dark",
446
+ skinCode: "_tone5"
447
+ },
448
+ {
449
+ name: ":wave:",
450
+ unicode_output: "1f44b",
451
+ skinTone: "Default",
452
+ skinCode: ""
453
+ }
454
+ ], b = f(s.find((c) => c.skinTone === l.skinTone)), r = f(!1);
455
+ ae(
456
+ () => l.isHovering && (r.value = !1)
457
+ );
458
+ function g(c) {
459
+ b.value = c, r.value = !1, _("skin-tone", c.skinTone);
460
+ }
461
+ return (c, y) => (i(), d("div", null, [
462
+ M(v("div", Ee, [
463
+ (i(), d(U, null, R(s, (u) => v("button", {
464
+ key: u.name,
465
+ class: ie({
466
+ selected: b.value.skinCode === u.skinCode
467
+ }),
468
+ onClick: ($) => g(u)
469
+ }, [
470
+ v("img", {
471
+ class: "d-icon d-icon--size-500",
472
+ alt: u.name,
473
+ "aria-label": u.name,
474
+ title: u.name,
475
+ src: `${h(q) + u.unicode_output}.png`
476
+ }, null, 8, Ce)
477
+ ], 10, Le)), 64))
478
+ ], 512), [
479
+ [x, r.value]
480
+ ]),
481
+ M(v("div", Ie, [
482
+ T(Y, { placement: "top-end" }, {
483
+ anchor: F(() => [
484
+ v("button", {
485
+ onClick: y[0] || (y[0] = (u) => r.value = !0)
486
+ }, [
487
+ v("img", {
488
+ class: "d-icon d-icon--size-500",
489
+ alt: b.value.name,
490
+ "aria-label": b.value.name,
491
+ title: b.value.name,
492
+ src: `${h(q) + b.value.unicode_output}.png`
493
+ }, null, 8, we)
494
+ ])
495
+ ]),
496
+ default: F(() => [
497
+ P(A(e.skinSelectorButtonTooltipLabel) + " ", 1)
498
+ ]),
499
+ _: 1
500
+ })
501
+ ], 512), [
502
+ [x, !r.value]
503
+ ])
504
+ ]));
505
+ }
506
+ }, Fe = /* @__PURE__ */ N(De, [["__scopeId", "data-v-5c3fd4f6"]]);
507
+ const Ue = { class: "d-emoji-picker__data" }, Re = ["alt", "aria-label", "title", "src"], Ae = {
508
+ __name: "emoji_description",
509
+ props: {
510
+ /**
511
+ * Emoji data
512
+ * @type {Object}
513
+ * @default null
514
+ */
515
+ emoji: {
516
+ type: Object,
517
+ default: null
518
+ }
519
+ },
520
+ setup(e) {
521
+ return (_, l) => {
522
+ var s;
523
+ return i(), d("div", Ue, [
524
+ e.emoji ? (i(), d("img", {
525
+ key: 0,
526
+ class: "d-icon d-icon--size-500",
527
+ alt: e.emoji.name,
528
+ "aria-label": e.emoji.name,
529
+ title: e.emoji.name,
530
+ src: `${h(q) + e.emoji.unicode_character}.png`
531
+ }, null, 8, Re)) : O("", !0),
532
+ P(" " + A((s = e.emoji) == null ? void 0 : s.name), 1)
533
+ ]);
534
+ };
535
+ }
536
+ }, qe = /* @__PURE__ */ N(Ae, [["__scopeId", "data-v-48c61881"]]);
537
+ const Ve = { class: "d-emoji-picker" }, Ne = { class: "d-emoji-picker--header" }, Be = { class: "d-emoji-picker--body" }, Me = { class: "d-emoji-picker--footer" }, ze = {
538
+ __name: "emoji_picker",
539
+ props: {
540
+ /**
541
+ * The array with recently used emoji object
542
+ * This list is necessary to fill the recently used tab
543
+ * @type {Array}
544
+ * @default []
545
+ * @example
546
+ * <dt-emoji-picker :recentlyUsedEmojis="[emojiObject, emojiObject]" />
547
+ */
548
+ // TODO try to simplify this to achieve an array of unicode characters and not an entire emoji data object
549
+ recentlyUsedEmojis: {
550
+ type: Array,
551
+ default: () => []
552
+ },
553
+ /**
554
+ * The placeholder text for the search input
555
+ * @type {String}
556
+ * @required
557
+ * @example
558
+ * <dt-emoji-picker :searchPlaceholderLabel="'Search...'" />
559
+ */
560
+ searchPlaceholderLabel: {
561
+ type: String,
562
+ required: !0
563
+ },
564
+ /**
565
+ * The label for the search results tab
566
+ * @type {String}
567
+ * @required
568
+ * @example
569
+ * <dt-emoji-picker :searchResultsLabel="'Search results'" />
570
+ */
571
+ searchResultsLabel: {
572
+ type: String,
573
+ required: !0
574
+ },
575
+ /**
576
+ * The label for the search no results
577
+ * @type {String}
578
+ * @required
579
+ * @example
580
+ * <dt-emoji-picker :searchNoResultsLabel="'No results'" />
581
+ */
582
+ searchNoResultsLabel: {
583
+ type: String,
584
+ required: !0
585
+ },
586
+ /**
587
+ * The list of tabsets to show, it is necessary to be updated with the correct language
588
+ * It must respect the provided order.
589
+ * @type {Array}
590
+ * @required
591
+ * @example
592
+ * <dt-emoji-picker
593
+ * :tabSetLabels="['Most recently used', 'Smileys and people', 'Nature',
594
+ * 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags']" />
595
+ */
596
+ tabSetLabels: {
597
+ type: Array,
598
+ required: !0
599
+ },
600
+ /**
601
+ * The skin tone to show the emojis
602
+ * This prop gives the possibility to use the skin tone selected by the user previously
603
+ * @type {String}
604
+ * @default 'Default'
605
+ * @values 'Default', 'Light', 'MediumLight', 'Medium', 'MediumDark', 'Dark'
606
+ * @example
607
+ * <dt-emoji-picker :skinTone="'Default'" />
608
+ */
609
+ skinTone: {
610
+ type: String,
611
+ default: "Default"
612
+ },
613
+ /**
614
+ * Tooltip shown when skin selector button is hovered.
615
+ * @type {String}
616
+ * @required
617
+ * @example
618
+ * <dt-emoji-picker :skin-selector-button-tooltip-label="'Change default skin tone'" />
619
+ */
620
+ skinSelectorButtonTooltipLabel: {
621
+ type: String,
622
+ required: !0
623
+ }
624
+ },
625
+ emits: [
626
+ /**
627
+ * It will emit the selected emoji
628
+ * @event selected-emoji
629
+ * @param {Object} emoji - The selected emoji from the emoji selector
630
+ */
631
+ "selected-emoji",
632
+ /**
633
+ * It will emit the selected skin tone
634
+ * @event skin-tone
635
+ * @param {String} skin - The selected skin tone from the skin selector
636
+ */
637
+ "skin-tone"
638
+ ],
639
+ setup(e, { emit: _ }) {
640
+ const l = e, s = f(""), b = f(null), r = f({}), g = f(0), c = f(!1), y = D(() => l.recentlyUsedEmojis.length > 0);
641
+ function u(j) {
642
+ s.value = "", r.value = j, r.value = { ...r.value, tabId: j };
643
+ }
644
+ function $(j) {
645
+ g.value = j;
646
+ }
647
+ function p(j) {
648
+ c.value = j;
649
+ }
650
+ function V(j) {
651
+ b.value = j;
652
+ }
653
+ return (j, E) => (i(), d("div", Ve, [
654
+ v("div", Ne, [
655
+ T(be, {
656
+ "emoji-filter": s.value,
657
+ "show-recently-used-tab": h(y),
658
+ "scroll-into-tab": g.value,
659
+ "tabset-labels": e.tabSetLabels,
660
+ "is-scrolling": c.value,
661
+ onSelectedTabset: u
662
+ }, null, 8, ["emoji-filter", "show-recently-used-tab", "scroll-into-tab", "tabset-labels", "is-scrolling"])
663
+ ]),
664
+ v("div", Be, [
665
+ T(de, {
666
+ modelValue: s.value,
667
+ "onUpdate:modelValue": E[0] || (E[0] = (C) => s.value = C),
668
+ "search-placeholder-label": e.searchPlaceholderLabel
669
+ }, null, 8, ["modelValue", "search-placeholder-label"]),
670
+ T($e, {
671
+ "emoji-filter": s.value,
672
+ "skin-tone": e.skinTone,
673
+ "tabset-labels": e.tabSetLabels,
674
+ "search-results-label": e.searchResultsLabel,
675
+ "search-no-results-label": e.searchNoResultsLabel,
676
+ "recently-used-emojis": e.recentlyUsedEmojis,
677
+ "selected-tabset": r.value,
678
+ onScrollIntoTab: $,
679
+ onIsScrolling: p,
680
+ onHighlightedEmoji: V,
681
+ onSelectedEmoji: E[1] || (E[1] = (C) => _("selected-emoji", C))
682
+ }, null, 8, ["emoji-filter", "skin-tone", "tabset-labels", "search-results-label", "search-no-results-label", "recently-used-emojis", "selected-tabset"])
683
+ ]),
684
+ v("div", Me, [
685
+ T(qe, { emoji: b.value }, null, 8, ["emoji"]),
686
+ T(Fe, {
687
+ "is-hovering": !!b.value,
688
+ "skin-selector-button-tooltip-label": e.skinSelectorButtonTooltipLabel,
689
+ "skin-tone": e.skinTone,
690
+ onSkinTone: E[2] || (E[2] = (C) => _("skin-tone", C))
691
+ }, null, 8, ["is-hovering", "skin-selector-button-tooltip-label", "skin-tone"])
692
+ ])
693
+ ]));
694
+ }
695
+ };
696
+ export {
697
+ Je as DtEmoji,
698
+ ze as DtEmojiPicker,
699
+ Ge as DtEmojiTextWrapper,
700
+ Ke as codeToEmojiData,
701
+ Qe as customEmojiAssetUrl,
702
+ We as defaultEmojiAssetUrl,
703
+ Xe as emojiFileExtensionLarge,
704
+ Ye as emojiFileExtensionSmall,
705
+ Ze as emojiImageUrlLarge,
706
+ et as emojiImageUrlSmall,
707
+ tt as emojiJson,
708
+ lt as emojiVersion,
709
+ ot as filterValidShortCodes,
710
+ st as findEmojis,
711
+ nt as findShortCodes,
712
+ at as getEmojiData,
713
+ it as setCustomEmojiJson,
714
+ rt as setCustomEmojiUrl,
715
+ ct as setEmojiAssetUrlLarge,
716
+ ut as setEmojiAssetUrlSmall,
717
+ dt as shortcodeToEmojiData,
718
+ mt as stringToUnicode,
719
+ bt as unicodeToString,
720
+ _t as validateCustomEmojiJson
721
+ };