@dialpad/dialtone-vue 3.73.0 → 3.73.1

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 CHANGED
@@ -1,925 +1,30 @@
1
- import { _ as W, s as be, D as Q, J as he, K as pe, a7 as C, t as ge } from "./emoji_text_wrapper-a99aed18.js";
2
- import { y as ft, w as dt, ap as mt, aa as vt, a9 as bt, ae as ht, ac as pt, ad as gt, ab as yt, af as kt, a8 as _t, ar as jt, as as St, aq as $t, ag as wt, ak as Tt, aj as Rt, ai as Et, ah as Lt, am as Ft, ao as It, an as Ct, al as At } from "./emoji_text_wrapper-a99aed18.js";
3
- import { ref as y, onMounted as te, openBlock as j, createElementBlock as S, createVNode as K, withKeys as q, withModifiers as oe, createSlots as ye, withCtx as B, createElementVNode as T, computed as V, toRefs as ke, watch as N, Fragment as M, renderList as O, unref as $, createBlock as _e, nextTick as G, onUnmounted as je, toDisplayString as P, withDirectives as X, createCommentVNode as Y, vShow as Z, normalizeClass as le, watchEffect as Se, createTextVNode as se } from "vue";
4
- const $e = { class: "d-emoji-picker__search d-emoji-picker__alignment" }, we = ["onKeydown"], Te = {
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", "focus-emoji-selector", "focus-tabset", "select-first-emoji"],
17
- setup(i, { expose: v, emit: d }) {
18
- const s = y(null);
19
- function u() {
20
- d("update:modelValue", ""), h();
21
- }
22
- function h() {
23
- s.value.focus();
24
- }
25
- return te(() => {
26
- h();
27
- }), v({
28
- focusSearchInput: h
29
- }), (g, p) => (j(), S("div", $e, [
30
- K(be, {
31
- id: "searchInput",
32
- ref_key: "searchInput",
33
- ref: s,
34
- placeholder: i.searchPlaceholderLabel,
35
- "model-value": i.modelValue,
36
- "onUpdate:modelValue": p[0] || (p[0] = (c) => g.$emit("update:modelValue", c)),
37
- onKeydown: [
38
- p[1] || (p[1] = q((c) => g.$emit("focus-tabset"), ["up"])),
39
- p[2] || (p[2] = q(oe((c) => g.$emit("focus-emoji-selector"), ["prevent"]), ["down"])),
40
- p[3] || (p[3] = q((c) => g.$emit("select-first-emoji"), ["enter"]))
41
- ]
42
- }, ye({
43
- leftIcon: B(() => [
44
- K(Q, { name: "search" })
45
- ]),
46
- _: 2
47
- }, [
48
- i.modelValue.length > 0 ? {
49
- name: "rightIcon",
50
- fn: B(() => [
51
- T("button", {
52
- class: "d-emoji-picker__search-button",
53
- onClick: u,
54
- onKeydown: q(u, ["enter"])
55
- }, [
56
- K(Q, { name: "close" })
57
- ], 40, we)
58
- ]),
59
- key: "0"
60
- } : void 0
61
- ]), 1032, ["placeholder", "model-value"])
62
- ]));
63
- }
64
- }, Re = /* @__PURE__ */ W(Te, [["__scopeId", "data-v-640002c1"]]);
65
- const Ee = { class: "d-emoji-picker__tabset" }, Le = {
66
- __name: "emoji_tabset",
67
- props: {
68
- /**
69
- * Whether to show the recently used tab or not
70
- * @type {Boolean}
71
- * @default false
72
- */
73
- showRecentlyUsedTab: {
74
- type: Boolean,
75
- default: !1
76
- },
77
- scrollIntoTab: {
78
- type: Number,
79
- required: !0
80
- },
81
- isScrolling: {
82
- type: Boolean,
83
- default: !1
84
- },
85
- emojiFilter: {
86
- type: String,
87
- default: ""
88
- },
89
- /**
90
- * The labels for the aria-label
91
- * @type {Array}
92
- * @required
93
- */
94
- tabsetLabels: {
95
- type: Array,
96
- required: !0
97
- }
98
- },
99
- emits: [
100
- /**
101
- * Emitted when a tab is selected
102
- * @event selected-tabset
103
- * @param {String} tabId - The name of the tab that was selected
104
- */
105
- "selected-tabset",
106
- "focus-search-input"
107
- ],
108
- setup(i, { expose: v, emit: d }) {
109
- const s = i, u = [
110
- { label: "Recently used", icon: "clock" },
111
- { label: "Smiley’s and people", icon: "satisfied" },
112
- { label: "Nature", icon: "living-thing" },
113
- { label: "Food", icon: "food" },
114
- { label: "Activity", icon: "object" },
115
- { label: "Travel", icon: "transportation" },
116
- { label: "Objects", icon: "lightbulb" },
117
- { label: "Symbols", icon: "heart" },
118
- { label: "Flags", icon: "flag" }
119
- ], h = V(() => (s.showRecentlyUsedTab ? u : u.slice(1)).map((t, n) => ({
120
- ...t,
121
- label: s.tabsetLabels[n],
122
- id: (n + 1).toString(),
123
- panelId: (n + 1).toString()
124
- }))), g = V(() => s.emojiFilter.length > 0), p = y("1"), { isScrolling: c } = ke(s), A = y([]);
125
- N(
126
- () => s.scrollIntoTab,
127
- () => {
128
- !c.value && !g.value && (p.value = (s.scrollIntoTab + 1).toString());
129
- }
130
- ), N(
131
- g,
132
- () => {
133
- g.value && (p.value = null);
134
- }
135
- );
136
- function L(e) {
137
- c.value || (p.value = e), d("selected-tabset", e);
138
- }
139
- function f(e) {
140
- A.value.push(e.$el);
141
- }
142
- function F() {
143
- A.value[0].focus();
144
- }
145
- function b(e, t) {
146
- e.key === "Enter" && (L(t), A.value[t - 1].blur()), e.key === "Tab" && (e.preventDefault(), d("focus-search-input")), e.key === "ArrowDown" && d("focus-search-input");
147
- }
148
- return v({
149
- focusTabset: F
150
- }), (e, t) => (j(), S("div", Ee, [
151
- K(he, {
152
- "tab-list-class": "d-emoji-picker__tabset-list",
153
- selected: p.value
154
- }, {
155
- tabs: B(() => [
156
- (j(!0), S(M, null, O($(h), (n, w) => (j(), _e(pe, {
157
- id: n.id,
158
- ref_for: !0,
159
- ref: (k) => {
160
- k && f(k);
161
- },
162
- key: n.id,
163
- "panel-id": n.panelId,
164
- label: n.label,
165
- "aria-controls": "d-emoji-picker-list",
166
- tabindex: w + 1,
167
- onClickCapture: oe((k) => L(n.id), ["stop"]),
168
- onKeydown: (k) => b(k, n.id)
169
- }, {
170
- default: B(() => [
171
- K(Q, {
172
- size: "400",
173
- name: n.icon
174
- }, null, 8, ["name"])
175
- ]),
176
- _: 2
177
- }, 1032, ["id", "panel-id", "label", "tabindex", "onClickCapture", "onKeydown"]))), 128))
178
- ]),
179
- _: 1
180
- }, 8, ["selected"])
181
- ]));
182
- }
183
- }, z = "https://static.dialpadcdn.com/joypixels/png/unicode/32/", E = 9;
184
- function Fe(i) {
185
- const v = y([]), d = y([]), s = y(!1), u = y(!0);
186
- function h(e, t = !1) {
187
- u.value = t, i("highlighted-emoji", e);
188
- }
189
- function g(e, t, n) {
190
- v.value[t] || (v.value[t] = []), v.value[t][n] = e;
191
- }
192
- function p(e, t) {
193
- d.value[t] = e;
194
- }
195
- function c(e, t) {
196
- var w, k, U;
197
- const n = s.value ? (w = d.value) == null ? void 0 : w[t] : (U = (k = v.value) == null ? void 0 : k[e]) == null ? void 0 : U[t];
198
- return n ? (n.focus(), !0) : !1;
199
- }
200
- function A(e, t) {
201
- c(e, t - 1) || (v.value[e - 1] ? c(e - 1, v.value[e - 1].length - 1) : c(v.value.length - 1, v.value[v.value.length - 1].length - 1));
202
- }
203
- function L(e, t) {
204
- c(e, t + 1) || c(e + 1, 0) || c(0, 0);
205
- }
206
- function f(e, t) {
207
- c(0, t - 1) || c(0, d.value.length - 1);
208
- }
209
- function F(e, t) {
210
- c(0, t + 1) || c(0, 0);
211
- }
212
- function b(e, t, n) {
213
- s.value ? e === "left" ? f(t, n) : e === "right" && F(t, n) : e === "left" ? A(t, n) : e === "right" && L(t, n);
214
- }
215
- return {
216
- emojiRefs: v,
217
- emojiFilteredRefs: d,
218
- isFiltering: s,
219
- hoverFirstEmoji: u,
220
- setEmojiRef: g,
221
- setFilteredRef: p,
222
- hoverEmoji: h,
223
- focusEmoji: c,
224
- handleHorizontalNavigation: b
225
- };
226
- }
227
- const Ie = { class: "d-emoji-picker__selector" }, Ce = {
228
- key: 0,
229
- class: "d-emoji-picker__search-label d-emoji-picker__alignment"
230
- }, Ae = { key: 0 }, De = { class: "d-emoji-picker__tab" }, Ke = ["aria-label", "onClick", "onFocusin", "onMouseover", "onKeydown"], Ue = ["alt", "aria-label", "title", "src"], qe = {
231
- key: 2,
232
- class: "d-emoji-picker__alignment"
233
- }, Ne = {
234
- class: "d-emoji-picker__tab",
235
- "data-qa": "filtered-emojis"
236
- }, Ve = ["aria-label", "onClick", "onFocusin", "onMouseover", "onKeydown"], Be = ["alt", "aria-label", "title", "src"], Me = {
237
- __name: "emoji_selector",
238
- props: {
239
- /**
240
- * The filter to apply to the emoji list
241
- * @type {String}
242
- * @default ''
243
- */
244
- emojiFilter: {
245
- type: String,
246
- default: ""
247
- },
248
- /**
249
- * The skin tone to apply to the emoji list
250
- * @type {String}
251
- * @required
252
- */
253
- skinTone: {
254
- type: String,
255
- required: !0
256
- },
257
- /**
258
- * The labels for the tabset
259
- * @type {Array}
260
- * @required
261
- */
262
- tabsetLabels: {
263
- type: Array,
264
- required: !0
265
- },
266
- selectedTabset: {
267
- type: Object,
268
- required: !0
269
- },
270
- /**
271
- * The label for the search results tab
272
- * @type {String}
273
- * @required
274
- */
275
- searchResultsLabel: {
276
- type: String,
277
- required: !0
278
- },
279
- searchNoResultsLabel: {
280
- type: String,
281
- required: !0
282
- },
283
- /**
284
- * The list of recently used emojis
285
- * @type {Array}
286
- */
287
- recentlyUsedEmojis: {
288
- type: Array,
289
- default: () => []
290
- }
291
- },
292
- emits: [
293
- /**
294
- * Emitted when the user hover over an emoji
295
- * @event highlighted-emoji
296
- * @param {Object} emoji - The emoji data that was hovered
297
- */
298
- "highlighted-emoji",
299
- /**
300
- * Emitted when the user select an emoji
301
- * @event selected-emoji
302
- * @param {Object} emoji - The emoji data that was selected
303
- */
304
- "selected-emoji",
305
- /**
306
- * Emitted when the user scroll into an emoji tab
307
- * @event scroll-into-tab
308
- * @param {Number} tab-index - The tab that was scrolled into
309
- */
310
- "scroll-into-tab",
311
- /**
312
- * Emitted when the scrollTo function starts scrolling and stops scrolling
313
- * @event is-scrolling
314
- * @param {Boolean} is-scrolling - Whether the user is scrolling with the scroll-to
315
- */
316
- "is-scrolling",
317
- /**
318
- * Emitted when the user reach the end of the emoji list
319
- * @event focus-skin-selector
320
- */
321
- "focus-skin-selector",
322
- /**
323
- * Emitted when the user shift tab in first tab of emoji selector
324
- * @event focus-search-input
325
- */
326
- "focus-search-input"
327
- ],
328
- setup(i, { expose: v, emit: d }) {
329
- const s = i, {
330
- emojiRefs: u,
331
- emojiFilteredRefs: h,
332
- isFiltering: g,
333
- hoverFirstEmoji: p,
334
- setEmojiRef: c,
335
- setFilteredRef: A,
336
- hoverEmoji: L,
337
- focusEmoji: f,
338
- handleHorizontalNavigation: F
339
- } = Fe(d), b = y(null), e = y(null), t = y(null), n = ["Recently used", "People", "Nature", "Food", "Activity", "Travel", "Objects", "Symbols", "Flags"], w = V(() => s.recentlyUsedEmojis.length ? s.tabsetLabels.map((o) => ({ label: o, ref: y(null) })) : s.tabsetLabels.slice(1).map((o) => ({ label: o, ref: y(null) }))), k = y(w.value[0].label), U = V(() => s.recentlyUsedEmojis.length ? n : n.slice(1)), H = y([]), x = V(() => [
340
- ...C[`People${s.skinTone}`],
341
- ...C.Nature,
342
- ...C.Food,
343
- ...C[`Activity${s.skinTone}`],
344
- ...C.Travel,
345
- ...C[`Objects${s.skinTone}`],
346
- ...C.Symbols,
347
- ...C.Flags
348
- ]), ne = ie(() => {
349
- h.value = [], ee();
350
- });
351
- N(x, () => {
352
- ee();
353
- }, { immediate: !0 }), N(
354
- () => s.recentlyUsedEmojis,
355
- () => {
356
- C["Recently used"] = s.recentlyUsedEmojis;
357
- },
358
- { immediate: !0 }
359
- ), N(() => s.emojiFilter, () => {
360
- ue(), s.emojiFilter ? g.value = !0 : (g.value = !1, d("highlighted-emoji", null)), ne();
361
- }), N(
362
- () => s.selectedTabset,
363
- (o) => {
364
- J(o.tabId);
365
- },
366
- { deep: !0 }
367
- );
368
- function ee() {
369
- const o = s.emojiFilter.toLowerCase();
370
- H.value = x.value.filter((l) => {
371
- const r = l.name.toLowerCase().includes(o), m = l.keywords.some((a) => a.toLowerCase().includes(o));
372
- return r || m;
373
- }), G(() => {
374
- o && L(H.value[0], !0);
375
- });
376
- }
377
- function ie(o, l = 300) {
378
- let r;
379
- return (...m) => {
380
- clearTimeout(r), r = setTimeout(() => o(...m), l);
381
- };
382
- }
383
- function ae(o) {
384
- return `${z + o}.png`;
385
- }
386
- function re(o) {
387
- o.target.parentNode.style.display = "none";
388
- }
389
- function J(o, l = !0) {
390
- const m = w.value[o - 1].ref.value[0];
391
- G(() => {
392
- const a = e.value, R = o === "1" ? 0 : m.offsetTop - 20;
393
- let _ = !0, D = a.scrollTop;
394
- d("is-scrolling", !0), a.addEventListener("scroll", () => {
395
- if (_) {
396
- const I = a.scrollTop;
397
- (D < I && I >= R || D > I && I <= R) && (_ = !1, d("is-scrolling", !1)), D = I;
398
- }
399
- }), a.scrollTop = R, l && f(o - 1, 0);
400
- });
401
- }
402
- function ue() {
403
- const o = e.value;
404
- o.scrollTop = 0;
405
- }
406
- function ce() {
407
- t.value = new IntersectionObserver((o) => {
408
- o.forEach((l) => {
409
- var a, R, _, D, I;
410
- const { target: r } = l, m = parseInt(r.dataset.index);
411
- l.isIntersecting && r.offsetTop <= b.value.offsetTop + 50 ? (k.value = ((a = w.value[m - 1]) == null ? void 0 : a.label) ?? ((R = w.value[0]) == null ? void 0 : R.label), d("scroll-into-tab", m - 1)) : l.boundingClientRect.bottom <= ((_ = b.value) == null ? void 0 : _.getBoundingClientRect().bottom) ? (d("scroll-into-tab", m), k.value = (D = w.value[m]) == null ? void 0 : D.label) : m === 1 && (d("scroll-into-tab", m), k.value = (I = w.value[0]) == null ? void 0 : I.label);
412
- });
413
- }), t.value.observe(b.value), Array.from(e.value.children).forEach((o, l) => {
414
- t.value.observe(o), o.dataset.index = l;
415
- });
416
- }
417
- const fe = (o, l, r) => {
418
- var m;
419
- if (o.preventDefault(), p.value = !1, o.key === "ArrowUp") {
420
- const a = l % E;
421
- if (!f(0, l - E)) {
422
- const R = h.value.length - h.value.length % E + a;
423
- f(0, R), f(0, R) || f(0, h.value.length - 1);
424
- }
425
- }
426
- if (o.key === "ArrowDown" && !f(0, l + E)) {
427
- const a = l % E;
428
- (m = h.value) != null && m[l + (E - a)] ? f(0, h.value.length - 1) : f(0, a);
429
- }
430
- o.key === "ArrowLeft" && F("left", 0, l), o.key === "ArrowRight" && F("right", 0, l), o.key === "Tab" && d("focus-skin-selector"), o.key === "Enter" && d("selected-emoji", r);
431
- }, de = (o, l, r, m) => {
432
- var a, R;
433
- if (o.preventDefault(), o.key === "ArrowUp") {
434
- const _ = r % E;
435
- if (l === 0) {
436
- const D = E - u.value[u.value.length - 1].length % E, I = u.value[u.value.length - 1].length + D - (E - _);
437
- f(u.value.length - 1, I) || f(u.value.length - 1, u.value[u.value.length - 1].length - 1);
438
- return;
439
- }
440
- if (!f(l, r - E)) {
441
- const D = l - 1 < 0 ? 0 : l - 1, I = u.value[D].length, ve = I - I % E + _;
442
- f(D, ve) || f(l - 1, u.value[l - 1].length - 1);
443
- }
444
- }
445
- if (o.key === "ArrowDown" && !f(l, r + E)) {
446
- const _ = r % E;
447
- (R = (a = u.value) == null ? void 0 : a[l]) != null && R[r + (E - _)] ? f(l, u.value[l].length - 1) : f(l + 1, _) || f(0, _) || f(0, u.value[0].length - 1);
448
- }
449
- o.key === "ArrowLeft" && F("left", l, r), o.key === "ArrowRight" && F("right", l, r), o.key === "Tab" && (f(l + 1, 0) ? J(l + 1 + 1, !1) : d("focus-skin-selector")), o.key === "Tab" && o.shiftKey && (f(l, 0) && l > 0 ? J(l, !0) : (J(1, !1), d("focus-search-input"))), o.key === "Enter" && d("selected-emoji", m);
450
- };
451
- function me() {
452
- f(0, 0);
453
- }
454
- return te(() => {
455
- ce();
456
- }), je(() => {
457
- t.value.disconnect();
458
- }), v({
459
- focusEmojiSelector: me
460
- }), (o, l) => (j(), S("div", Ie, [
461
- T("div", {
462
- id: "d-emoji-picker-list",
463
- ref_key: "listRef",
464
- ref: e,
465
- class: "d-emoji-picker__list"
466
- }, [
467
- i.emojiFilter ? (j(), S("p", Ce, P(H.value.length > 0 ? i.searchResultsLabel : i.searchNoResultsLabel), 1)) : (j(), S("div", {
468
- key: 1,
469
- ref_key: "tabCategoryRef",
470
- ref: b,
471
- class: "d-emoji-picker__category d-emoji-picker__alignment"
472
- }, [
473
- T("p", null, P(k.value), 1)
474
- ], 512)),
475
- (j(!0), S(M, null, O($(w), (r, m) => X((j(), S("div", {
476
- key: m,
477
- ref_for: !0,
478
- ref: r.ref,
479
- class: "d-emoji-picker__alignment"
480
- }, [
481
- m ? (j(), S("p", Ae, P(r.label), 1)) : Y("", !0),
482
- T("div", De, [
483
- (j(!0), S(M, null, O($(C)[$(U)[m] + i.skinTone] ? $(C)[$(U)[m] + i.skinTone] : $(C)[$(U)[m]], (a, R) => (j(), S("button", {
484
- key: a.shortname,
485
- ref_for: !0,
486
- ref: (_) => {
487
- _ && $(c)(_, m, R);
488
- },
489
- type: "button",
490
- "aria-label": a.name,
491
- onClick: (_) => o.$emit("selected-emoji", a),
492
- onFocusin: (_) => o.$emit("highlighted-emoji", a),
493
- onFocusout: l[0] || (l[0] = (_) => o.$emit("highlighted-emoji", null)),
494
- onMouseover: (_) => o.$emit("highlighted-emoji", a),
495
- onMouseleave: l[1] || (l[1] = (_) => o.$emit("highlighted-emoji", null)),
496
- onKeydown: (_) => de(_, m, R, a)
497
- }, [
498
- T("img", {
499
- class: "d-icon d-icon--size-500",
500
- alt: a.name,
501
- "aria-label": a.name,
502
- title: a.name,
503
- src: ae(a.unicode_character),
504
- onError: re
505
- }, null, 40, Ue)
506
- ], 40, Ke))), 128))
507
- ])
508
- ])), [
509
- [Z, !i.emojiFilter]
510
- ])), 128)),
511
- i.emojiFilter ? (j(), S("div", qe, [
512
- T("div", Ne, [
513
- (j(!0), S(M, null, O(H.value, (r, m) => (j(), S("button", {
514
- key: r.shortname,
515
- ref_for: !0,
516
- ref: (a) => {
517
- a && $(A)(a, m);
518
- },
519
- type: "button",
520
- "aria-label": r.name,
521
- class: le({
522
- "hover-emoji": m === 0 && $(p)
523
- }),
524
- onClick: (a) => o.$emit("selected-emoji", r),
525
- onFocusin: (a) => o.$emit("highlighted-emoji", r),
526
- onFocusout: l[2] || (l[2] = (a) => o.$emit("highlighted-emoji", null)),
527
- onMouseover: (a) => $(L)(r),
528
- onMouseleave: l[3] || (l[3] = (a) => $(L)(null)),
529
- onKeydown: (a) => fe(a, m, r)
530
- }, [
531
- T("img", {
532
- class: "d-icon d-icon--size-500",
533
- alt: r.name,
534
- "aria-label": r.name,
535
- title: r.name,
536
- src: `${$(z) + r.unicode_character}.png`
537
- }, null, 8, Be)
538
- ], 42, Ve))), 128))
539
- ])
540
- ])) : Y("", !0)
541
- ], 512)
542
- ]));
543
- }
544
- }, Oe = /* @__PURE__ */ W(Me, [["__scopeId", "data-v-067b0cfe"]]);
545
- const Pe = { "data-qa": "skin-selector" }, ze = { class: "d-emoji-picker__skin-list" }, He = ["onKeydown", "onClick"], Je = ["alt", "aria-label", "title", "src"], Ge = { class: "d-emoji-picker__skin-selected" }, We = ["aria-label"], Qe = ["alt", "aria-label", "title", "src"], Xe = {
546
- __name: "emoji_skin_selector",
547
- props: {
548
- /**
549
- * The skin tone to apply to the emoji list
550
- * @type {String}
551
- * @required
552
- */
553
- skinTone: {
554
- type: String,
555
- required: !0
556
- },
557
- isHovering: {
558
- type: Boolean,
559
- default: !1
560
- },
561
- skinSelectorButtonTooltipLabel: {
562
- type: String,
563
- required: !0
564
- }
565
- },
566
- emits: [
567
- /**
568
- * The skin tone that was selected
569
- * @event skin-tone
570
- * @type {Number}
571
- */
572
- "skin-tone",
573
- "focus-tabset"
574
- ],
575
- setup(i, { expose: v, emit: d }) {
576
- const s = i, u = [
577
- {
578
- name: ":wave_tone1:",
579
- unicode_output: "1f44b-1f3fb",
580
- skinTone: "Light",
581
- skinCode: "_tone1"
582
- },
583
- {
584
- name: ":wave_tone2:",
585
- unicode_output: "1f44b-1f3fc",
586
- skinTone: "MediumLight",
587
- skinCode: "_tone2"
588
- },
589
- {
590
- name: ":wave_tone3:",
591
- unicode_output: "1f44b-1f3fd",
592
- skinTone: "Medium",
593
- skinCode: "_tone3"
594
- },
595
- {
596
- name: ":wave_tone4:",
597
- unicode_output: "1f44b-1f3fe",
598
- skinTone: "MediumDark",
599
- skinCode: "_tone4"
600
- },
601
- {
602
- name: ":wave_tone5:",
603
- unicode_output: "1f44b-1f3ff",
604
- skinTone: "Dark",
605
- skinCode: "_tone5"
606
- },
607
- {
608
- name: ":wave:",
609
- unicode_output: "1f44b",
610
- skinTone: "Default",
611
- skinCode: ""
612
- }
613
- ], h = y(u.find((e) => e.skinTone === s.skinTone)), g = y(!1), p = y(null), c = y([]);
614
- Se(
615
- () => s.isHovering && (g.value = !1)
616
- );
617
- function A(e) {
618
- c.value.push(e);
619
- }
620
- function L() {
621
- p.value.focus();
622
- }
623
- function f(e) {
624
- h.value = e, g.value = !1, d("skin-tone", e.skinTone), G(() => L());
625
- }
626
- const F = (e, t, n) => {
627
- var w, k, U;
628
- e.preventDefault(), e.key === "ArrowLeft" && (n === 0 && ((w = c.value[c.value.length - 1]) == null || w.focus()), (k = c.value[n - 1]) == null || k.focus()), e.key === "ArrowRight" && ((U = c.value[n + 1]) == null || U.focus()), e.key === "Enter" && (t ? f(t) : b()), e.key === "Tab" && d("focus-tabset");
629
- };
630
- function b() {
631
- g.value = !g.value, G(() => c.value[0].focus());
632
- }
633
- return v({
634
- focusSkinSelector: L
635
- }), (e, t) => (j(), S("div", Pe, [
636
- X(T("div", ze, [
637
- (j(), S(M, null, O(u, (n, w) => T("button", {
638
- ref_for: !0,
639
- ref: (k) => {
640
- k && A(k);
641
- },
642
- key: n.name,
643
- class: le({
644
- selected: h.value.skinCode === n.skinCode
645
- }),
646
- onKeydown: (k) => F(k, n, w),
647
- onClick: (k) => f(n)
648
- }, [
649
- T("img", {
650
- class: "d-icon d-icon--size-500",
651
- alt: n.name,
652
- "aria-label": n.name,
653
- title: n.name,
654
- src: `${$(z) + n.unicode_output}.png`
655
- }, null, 8, Je)
656
- ], 42, He)), 64))
657
- ], 512), [
658
- [Z, g.value]
659
- ]),
660
- X(T("div", Ge, [
661
- K(ge, { placement: "top-end" }, {
662
- anchor: B(() => [
663
- T("button", {
664
- ref_key: "skinSelectorRef",
665
- ref: p,
666
- "aria-label": i.skinSelectorButtonTooltipLabel,
667
- tabindex: "-1",
668
- onClick: b,
669
- onKeydown: t[0] || (t[0] = (n) => F(n))
670
- }, [
671
- T("img", {
672
- class: "d-icon d-icon--size-500",
673
- alt: h.value.name,
674
- "aria-label": h.value.name,
675
- title: h.value.name,
676
- src: `${$(z) + h.value.unicode_output}.png`
677
- }, null, 8, Qe)
678
- ], 40, We)
679
- ]),
680
- default: B(() => [
681
- se(P(i.skinSelectorButtonTooltipLabel) + " ", 1)
682
- ]),
683
- _: 1
684
- })
685
- ], 512), [
686
- [Z, !g.value]
687
- ])
688
- ]));
689
- }
690
- }, Ye = /* @__PURE__ */ W(Xe, [["__scopeId", "data-v-3a6fb9c2"]]);
691
- const Ze = { class: "d-emoji-picker__data" }, xe = ["alt", "aria-label", "title", "src"], et = {
692
- __name: "emoji_description",
693
- props: {
694
- /**
695
- * Emoji data
696
- * @type {Object}
697
- * @default null
698
- */
699
- emoji: {
700
- type: Object,
701
- default: null
702
- }
703
- },
704
- setup(i) {
705
- return (v, d) => {
706
- var s;
707
- return j(), S("div", Ze, [
708
- i.emoji ? (j(), S("img", {
709
- key: 0,
710
- class: "d-icon d-icon--size-500",
711
- alt: i.emoji.name,
712
- "aria-label": i.emoji.name,
713
- title: i.emoji.name,
714
- src: `${$(z) + i.emoji.unicode_character}.png`
715
- }, null, 8, xe)) : Y("", !0),
716
- se(" " + P((s = i.emoji) == null ? void 0 : s.name), 1)
717
- ]);
718
- };
719
- }
720
- }, tt = /* @__PURE__ */ W(et, [["__scopeId", "data-v-48c61881"]]);
721
- const ot = { class: "d-emoji-picker" }, lt = { class: "d-emoji-picker--header" }, st = { class: "d-emoji-picker--body" }, nt = { class: "d-emoji-picker--footer" }, rt = {
722
- __name: "emoji_picker",
723
- props: {
724
- /**
725
- * The array with recently used emoji object
726
- * This list is necessary to fill the recently used tab
727
- * @type {Array}
728
- * @default []
729
- * @example
730
- * <dt-emoji-picker :recentlyUsedEmojis="[emojiObject, emojiObject]" />
731
- */
732
- // TODO try to simplify this to achieve an array of unicode characters and not an entire emoji data object
733
- recentlyUsedEmojis: {
734
- type: Array,
735
- default: () => []
736
- },
737
- /**
738
- * The placeholder text for the search input
739
- * @type {String}
740
- * @required
741
- * @example
742
- * <dt-emoji-picker :searchPlaceholderLabel="'Search...'" />
743
- */
744
- searchPlaceholderLabel: {
745
- type: String,
746
- required: !0
747
- },
748
- /**
749
- * The label for the search results tab
750
- * @type {String}
751
- * @required
752
- * @example
753
- * <dt-emoji-picker :searchResultsLabel="'Search results'" />
754
- */
755
- searchResultsLabel: {
756
- type: String,
757
- required: !0
758
- },
759
- /**
760
- * The label for the search no results
761
- * @type {String}
762
- * @required
763
- * @example
764
- * <dt-emoji-picker :searchNoResultsLabel="'No results'" />
765
- */
766
- searchNoResultsLabel: {
767
- type: String,
768
- required: !0
769
- },
770
- /**
771
- * The list of tabsets to show, it is necessary to be updated with the correct language
772
- * It must respect the provided order.
773
- * @type {Array}
774
- * @required
775
- * @example
776
- * <dt-emoji-picker
777
- * :tabSetLabels="['Most recently used', 'Smileys and people', 'Nature',
778
- * 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags']" />
779
- */
780
- tabSetLabels: {
781
- type: Array,
782
- required: !0
783
- },
784
- /**
785
- * The skin tone to show the emojis
786
- * This prop gives the possibility to use the skin tone selected by the user previously
787
- * @type {String}
788
- * @default 'Default'
789
- * @values 'Default', 'Light', 'MediumLight', 'Medium', 'MediumDark', 'Dark'
790
- * @example
791
- * <dt-emoji-picker :skinTone="'Default'" />
792
- */
793
- skinTone: {
794
- type: String,
795
- default: "Default"
796
- },
797
- /**
798
- * Tooltip shown when skin selector button is hovered.
799
- * @type {String}
800
- * @required
801
- * @example
802
- * <dt-emoji-picker :skin-selector-button-tooltip-label="'Change default skin tone'" />
803
- */
804
- skinSelectorButtonTooltipLabel: {
805
- type: String,
806
- required: !0
807
- }
808
- },
809
- emits: [
810
- /**
811
- * It will emit the selected emoji
812
- * @event selected-emoji
813
- * @param {Object} emoji - The selected emoji from the emoji selector
814
- */
815
- "selected-emoji",
816
- /**
817
- * It will emit the selected skin tone
818
- * @event skin-tone
819
- * @param {String} skin - The selected skin tone from the skin selector
820
- */
821
- "skin-tone",
822
- /**
823
- * Since the keyboard events are encapsulated, we emit this event to close the picker
824
- * @event close
825
- */
826
- "close"
827
- ],
828
- setup(i, { emit: v }) {
829
- const d = i, s = y(""), u = y(null), h = y({}), g = y(0), p = y(!1), c = V(() => d.recentlyUsedEmojis.length > 0);
830
- function A(b) {
831
- s.value = "", h.value = b, h.value = { ...h.value, tabId: b };
832
- }
833
- function L(b) {
834
- g.value = b;
835
- }
836
- function f(b) {
837
- p.value = b;
838
- }
839
- function F(b) {
840
- u.value = b;
841
- }
842
- return (b, e) => (j(), S("div", ot, [
843
- T("div", lt, [
844
- K(Le, {
845
- ref: "tabsetRef",
846
- "emoji-filter": s.value,
847
- "show-recently-used-tab": $(c),
848
- "scroll-into-tab": g.value,
849
- "tabset-labels": i.tabSetLabels,
850
- "is-scrolling": p.value,
851
- onFocusSearchInput: e[0] || (e[0] = (t) => b.$refs.searchInputRef.focusSearchInput()),
852
- onSelectedTabset: A,
853
- onKeydown: e[1] || (e[1] = q((t) => v("close"), ["esc"]))
854
- }, null, 8, ["emoji-filter", "show-recently-used-tab", "scroll-into-tab", "tabset-labels", "is-scrolling"])
855
- ]),
856
- T("div", st, [
857
- K(Re, {
858
- ref: "searchInputRef",
859
- modelValue: s.value,
860
- "onUpdate:modelValue": e[2] || (e[2] = (t) => s.value = t),
861
- "search-placeholder-label": i.searchPlaceholderLabel,
862
- onSelectFirstEmoji: e[3] || (e[3] = (t) => v("selected-emoji", u.value)),
863
- onFocusTabset: e[4] || (e[4] = (t) => b.$refs.tabsetRef.focusTabset()),
864
- onFocusEmojiSelector: e[5] || (e[5] = (t) => b.$refs.emojiSelectorRef.focusEmojiSelector()),
865
- onKeydown: e[6] || (e[6] = q((t) => v("close"), ["esc"]))
866
- }, null, 8, ["modelValue", "search-placeholder-label"]),
867
- K(Oe, {
868
- ref: "emojiSelectorRef",
869
- "emoji-filter": s.value,
870
- "skin-tone": i.skinTone,
871
- "tabset-labels": i.tabSetLabels,
872
- "search-results-label": i.searchResultsLabel,
873
- "search-no-results-label": i.searchNoResultsLabel,
874
- "recently-used-emojis": i.recentlyUsedEmojis,
875
- "selected-tabset": h.value,
876
- onScrollIntoTab: L,
877
- onIsScrolling: f,
878
- onHighlightedEmoji: F,
879
- onSelectedEmoji: e[7] || (e[7] = (t) => v("selected-emoji", t)),
880
- onFocusSkinSelector: e[8] || (e[8] = (t) => b.$refs.skinSelectorRef.focusSkinSelector()),
881
- onFocusSearchInput: e[9] || (e[9] = (t) => b.$refs.searchInputRef.focusSearchInput()),
882
- onKeydown: e[10] || (e[10] = q((t) => v("close"), ["esc"]))
883
- }, null, 8, ["emoji-filter", "skin-tone", "tabset-labels", "search-results-label", "search-no-results-label", "recently-used-emojis", "selected-tabset"])
884
- ]),
885
- T("div", nt, [
886
- K(tt, { emoji: u.value }, null, 8, ["emoji"]),
887
- K(Ye, {
888
- ref: "skinSelectorRef",
889
- "is-hovering": !!u.value,
890
- "skin-selector-button-tooltip-label": i.skinSelectorButtonTooltipLabel,
891
- "skin-tone": i.skinTone,
892
- onSkinTone: e[11] || (e[11] = (t) => v("skin-tone", t)),
893
- onFocusTabset: e[12] || (e[12] = (t) => b.$refs.tabsetRef.focusTabset()),
894
- onKeydown: e[13] || (e[13] = q((t) => v("close"), ["esc"]))
895
- }, null, 8, ["is-hovering", "skin-selector-button-tooltip-label", "skin-tone"])
896
- ])
897
- ]));
898
- }
899
- };
1
+ import { a as i, _ as t, A as m, l as r, k as j, p as l, n as E, o as n, m as d, q as g, j as U, C as p, E as u, B as c, r as f, v as x, u as C, t as D, s as S, x as A, z as T, y as h, w as J } from "./emoji_text_wrapper-124e7b04.js";
2
+ import { _ as k } from "./emoji_picker-8485a649.js";
3
+ import "./index-6b22d90d.js";
4
+ import "vue";
900
5
  export {
901
- ft as DtEmoji,
902
- rt as DtEmojiPicker,
903
- dt as DtEmojiTextWrapper,
904
- mt as codeToEmojiData,
905
- vt as customEmojiAssetUrl,
906
- bt as defaultEmojiAssetUrl,
907
- ht as emojiFileExtensionLarge,
908
- pt as emojiFileExtensionSmall,
909
- gt as emojiImageUrlLarge,
910
- yt as emojiImageUrlSmall,
911
- kt as emojiJson,
912
- _t as emojiVersion,
913
- jt as filterValidShortCodes,
914
- St as findEmojis,
915
- $t as findShortCodes,
916
- wt as getEmojiData,
917
- Tt as setCustomEmojiJson,
918
- Rt as setCustomEmojiUrl,
919
- Et as setEmojiAssetUrlLarge,
920
- Lt as setEmojiAssetUrlSmall,
921
- Ft as shortcodeToEmojiData,
922
- It as stringToUnicode,
923
- Ct as unicodeToString,
924
- At as validateCustomEmojiJson
6
+ i as DtEmoji,
7
+ k as DtEmojiPicker,
8
+ t as DtEmojiTextWrapper,
9
+ m as codeToEmojiData,
10
+ r as customEmojiAssetUrl,
11
+ j as defaultEmojiAssetUrl,
12
+ l as emojiFileExtensionLarge,
13
+ E as emojiFileExtensionSmall,
14
+ n as emojiImageUrlLarge,
15
+ d as emojiImageUrlSmall,
16
+ g as emojiJson,
17
+ U as emojiVersion,
18
+ p as filterValidShortCodes,
19
+ u as findEmojis,
20
+ c as findShortCodes,
21
+ f as getEmojiData,
22
+ x as setCustomEmojiJson,
23
+ C as setCustomEmojiUrl,
24
+ D as setEmojiAssetUrlLarge,
25
+ S as setEmojiAssetUrlSmall,
26
+ A as shortcodeToEmojiData,
27
+ T as stringToUnicode,
28
+ h as unicodeToString,
29
+ J as validateCustomEmojiJson
925
30
  };