@schwarzdavid/ui-kit 0.0.1-alpha.2 → 0.0.1-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js ADDED
@@ -0,0 +1,1412 @@
1
+ import { Fragment as e, Teleport as t, TransitionGroup as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createSlots as c, createVNode as l, defineComponent as u, getCurrentScope as d, hasInjectionContext as f, inject as p, isRef as m, markRaw as h, mergeProps as g, nextTick as _, normalizeClass as v, normalizeProps as y, normalizeStyle as b, onBeforeUnmount as x, onBeforeUpdate as S, onMounted as C, onScopeDispose as w, openBlock as T, provide as E, readonly as D, ref as O, renderList as k, renderSlot as A, resolveDynamicComponent as j, shallowReadonly as M, shallowRef as N, toDisplayString as P, toValue as ee, unref as F, useAttrs as te, useSlots as ne, useTemplateRef as re, vShow as ie, watch as I, watchEffect as L, withCtx as R, withDirectives as ae, withKeys as oe, withModifiers as se } from "vue";
2
+ import { useDisplay as z } from "vuetify";
3
+ import { useI18n as ce } from "vue-i18n";
4
+ import { VAlert as le, VBottomSheet as ue, VBtn as B, VCard as V, VDialog as de, VIcon as fe, VOverlay as pe, VProgressCircular as H } from "vuetify/components";
5
+ import { merge as U } from "lodash-es";
6
+ import me from "@vuelidate/core";
7
+ //#region lib/internal/createId.ts
8
+ function he(e) {
9
+ let t = Array.from(e, (e) => e.toString(16).padStart(2, "0")).join("");
10
+ return `${t.slice(0, 8)}-${t.slice(8, 12)}-${t.slice(12, 16)}-${t.slice(16, 20)}-${t.slice(20)}`;
11
+ }
12
+ function ge() {
13
+ let e = globalThis.crypto;
14
+ if (e.randomUUID) return e.randomUUID();
15
+ let t = globalThis.crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
16
+ return t[6] = t[6] & 15 | 64, t[8] = t[8] & 63 | 128, he(t);
17
+ }
18
+ //#endregion
19
+ //#region lib/plugin/constants/errors.ts
20
+ var W = {
21
+ NOT_INSTALLED: "@schwarzdavid/ui-kit is not available in this context. Install it with app.use(createUIKit()) and call its composables inside setup() or app.runWithContext().",
22
+ DIALOG_ENTRY_CONTEXT_MISSING: "useDialogEntry() must be called inside a dialog preset rendered by UiKitOutlet.",
23
+ FORM_DIALOG_CONTEXT_MISSING: "useFormDialog() and onDialogFinish() must be called inside a component rendered by the form dialog preset.",
24
+ TOAST_ENTRY_CONTEXT_MISSING: "useToastEntry() must be called inside a toast component rendered by UiKitOutlet."
25
+ }, G = Symbol("@schwarzdavid/ui-kit");
26
+ //#endregion
27
+ //#region lib/plugin/composables/usePluginContext.ts
28
+ function K() {
29
+ let e = f() ? p(G, null) : null;
30
+ if (!e) throw Error(W.NOT_INSTALLED);
31
+ return e;
32
+ }
33
+ //#endregion
34
+ //#region lib/composables/dialog/internal/useDialogQueue.ts
35
+ function q() {
36
+ let { dialogQueue: e } = K();
37
+ function t(t) {
38
+ let r = ge(), i = (e) => {
39
+ n(r), t.resolve(e);
40
+ }, a = (e) => {
41
+ n(r), t.reject(e);
42
+ }, o = h({
43
+ ...t,
44
+ id: r,
45
+ resolve: i,
46
+ reject: a
47
+ });
48
+ return e.value.push(o), o;
49
+ }
50
+ function n(t) {
51
+ let n = typeof t == "string" ? t : t.id, r = e.value.findIndex((e) => e.id === n);
52
+ r >= 0 && e.value.splice(r, 1);
53
+ }
54
+ return {
55
+ queue: M(e),
56
+ addToQueue: t,
57
+ removeFromQueue: n
58
+ };
59
+ }
60
+ //#endregion
61
+ //#region lib/composables/dialog/constants/injectionKeys.ts
62
+ var _e = Symbol("@schwarzdavid/ui-kit:dialog-entry"), J = Symbol("@schwarzdavid/ui-kit:form-dialog"), ve = /* @__PURE__ */ u({
63
+ __name: "DialogEntryProvider",
64
+ props: { entry: {} },
65
+ setup(e) {
66
+ let t = e;
67
+ return E(_e, {
68
+ id: t.entry.id,
69
+ data: t.entry.data,
70
+ resolve: t.entry.resolve,
71
+ reject: t.entry.reject
72
+ }), (t, n) => (T(), i(j(e.entry.component)));
73
+ }
74
+ }), ye = /* @__PURE__ */ u({
75
+ __name: "DialogOutlet",
76
+ setup(t) {
77
+ let { queue: n } = q();
78
+ return (t, r) => (T(!0), o(e, null, k(F(n), (e) => (T(), i(ve, {
79
+ key: e.id,
80
+ entry: e
81
+ }, null, 8, ["entry"]))), 128));
82
+ }
83
+ });
84
+ //#endregion
85
+ //#region lib/composables/internal/useMaybeTranslation.ts
86
+ function Y() {
87
+ let e = ce({ useScope: "global" }), t = (t) => e.availableLocales.some((n) => e.te(t, n));
88
+ return (n, r = !0) => r && t(n) ? e.t(n) : n;
89
+ }
90
+ //#endregion
91
+ //#region lib/components/internal/MaybeTranslation.vue
92
+ var X = /* @__PURE__ */ u({
93
+ __name: "MaybeTranslation",
94
+ props: {
95
+ content: {},
96
+ translate: {
97
+ type: Boolean,
98
+ default: !0
99
+ }
100
+ },
101
+ setup(e) {
102
+ let t = e, n = Y(), i = r(() => n(t.content, t.translate));
103
+ return (e, t) => P(i.value);
104
+ }
105
+ });
106
+ //#endregion
107
+ //#region lib/composables/toast/internal/useToastQueue.ts
108
+ function be() {
109
+ let { toastQueue: e, toastTimers: t } = K();
110
+ function n(t) {
111
+ return e.value.find((e) => e.id === t);
112
+ }
113
+ function r(e, t) {
114
+ t.startedAt = Date.now(), t.handle = setTimeout(() => {
115
+ o(e);
116
+ }, t.remaining);
117
+ }
118
+ function i(e) {
119
+ let n = t.get(e);
120
+ n !== void 0 && (clearTimeout(n.handle), t.delete(e));
121
+ }
122
+ function a(t) {
123
+ let n = typeof t == "string" ? t : t.id;
124
+ i(n);
125
+ let r = e.value.findIndex((e) => e.id === n);
126
+ r >= 0 && e.value.splice(r, 1);
127
+ }
128
+ function o(e) {
129
+ let t = n(e);
130
+ t && (a(e), t.resolve(!1));
131
+ }
132
+ function s(e) {
133
+ let t = n(e);
134
+ t && (a(e), t.resolve(!0), t.action?.handler?.());
135
+ }
136
+ function c(e, n) {
137
+ let r = t.get(e);
138
+ r && (r.handle !== void 0 && (clearTimeout(r.handle), r.handle = void 0, r.remaining = Math.max(0, r.remaining - (Date.now() - r.startedAt))), r.holds.add(n));
139
+ }
140
+ function l(e, n) {
141
+ let i = t.get(e);
142
+ !i?.holds.delete(n) || i.holds.size > 0 || r(e, i);
143
+ }
144
+ function u(n) {
145
+ let i = ge(), a = h({
146
+ ...n,
147
+ id: i
148
+ });
149
+ if (e.value.push(a), typeof n.timeout == "number" && n.timeout > 0) {
150
+ let e = {
151
+ remaining: n.timeout,
152
+ startedAt: 0,
153
+ handle: void 0,
154
+ holds: /* @__PURE__ */ new Set()
155
+ };
156
+ t.set(i, e), r(i, e);
157
+ }
158
+ return a;
159
+ }
160
+ return {
161
+ queue: M(e),
162
+ addToQueue: u,
163
+ removeFromQueue: a,
164
+ close: o,
165
+ trigger: s,
166
+ pause: c,
167
+ resume: l
168
+ };
169
+ }
170
+ //#endregion
171
+ //#region lib/composables/toast/constants/injectionKey.ts
172
+ var xe = Symbol("@schwarzdavid/ui-kit:toast-entry"), Se = /* @__PURE__ */ u({
173
+ __name: "ToastEntryProvider",
174
+ props: { entry: {} },
175
+ setup(e) {
176
+ let t = e, { options: n } = K(), { close: a, trigger: o, pause: s, resume: c } = be(), l = r(() => n.components.toast);
177
+ function u(e) {
178
+ let n = e.currentTarget;
179
+ n instanceof Node && e.relatedTarget instanceof Node && n.contains(e.relatedTarget) || c(t.entry.id, "focus");
180
+ }
181
+ return E(xe, {
182
+ entry: t.entry,
183
+ close: () => {
184
+ a(t.entry.id);
185
+ },
186
+ trigger: () => {
187
+ o(t.entry.id);
188
+ }
189
+ }), (t, n) => (T(), i(j(l.value), {
190
+ onMouseenter: n[0] ||= (t) => F(s)(e.entry.id, "hover"),
191
+ onMouseleave: n[1] ||= (t) => F(c)(e.entry.id, "hover"),
192
+ onFocusin: n[2] ||= (t) => F(s)(e.entry.id, "focus"),
193
+ onFocusout: u
194
+ }, null, 32));
195
+ }
196
+ }), Z = /* @__PURE__ */ function(e) {
197
+ return e.SUCCESS = "success", e.INFO = "info", e.WARNING = "warning", e.ERROR = "error", e;
198
+ }({}), Ce = {
199
+ class: "ui-toast-outlet__announcer",
200
+ "aria-live": "polite",
201
+ "aria-atomic": "true"
202
+ }, we = /* @__PURE__ */ u({
203
+ __name: "ToastOutlet",
204
+ setup(t) {
205
+ let { queue: r, pause: c, resume: u } = be(), { xs: d } = z(), f = N(null), p = /* @__PURE__ */ new WeakSet();
206
+ I(() => r.value.at(-1), (e) => {
207
+ e && e.type !== Z.ERROR && !p.has(e) && (p.add(e), f.value = null, _(() => {
208
+ f.value = e;
209
+ }));
210
+ });
211
+ let m = N(!1);
212
+ function h() {
213
+ m.value = document.visibilityState === "hidden";
214
+ }
215
+ C(() => {
216
+ h(), document.addEventListener("visibilitychange", h);
217
+ }), x(() => {
218
+ document.removeEventListener("visibilitychange", h);
219
+ }), L(() => {
220
+ for (let e of r.value) m.value ? c(e.id, "hidden") : u(e.id, "hidden");
221
+ });
222
+ function g(e) {
223
+ if (e instanceof HTMLElement) {
224
+ let { width: t } = e.getBoundingClientRect();
225
+ e.style.width = `${t.toFixed()}px`;
226
+ }
227
+ }
228
+ return (t, c) => (T(), o(e, null, [s("div", Ce, [f.value ? (T(), i(X, {
229
+ key: 0,
230
+ content: f.value.message,
231
+ translate: f.value.translateMessage
232
+ }, null, 8, ["content", "translate"])) : a("", !0)]), l(n, {
233
+ name: "ui-toast",
234
+ tag: "div",
235
+ class: v(["ui-toast-outlet", { "ui-toast-outlet--mobile": F(d) }]),
236
+ onBeforeLeave: g
237
+ }, {
238
+ default: R(() => [(T(!0), o(e, null, k(F(r), (e) => (T(), i(Se, {
239
+ key: e.id,
240
+ entry: e
241
+ }, null, 8, ["entry"]))), 128))]),
242
+ _: 1
243
+ }, 8, ["class"])], 64));
244
+ }
245
+ });
246
+ //#endregion
247
+ //#region lib/composables/loading-overlay/useLoadingOverlay.ts
248
+ function Te() {
249
+ return K().loadingOverlay;
250
+ }
251
+ //#endregion
252
+ //#region lib/composables/loading-overlay/components/LoadingOverlay.vue
253
+ var Ee = /* @__PURE__ */ u({
254
+ __name: "LoadingOverlay",
255
+ setup(e) {
256
+ let t = Te();
257
+ return (e, n) => (T(), i(F(pe), {
258
+ modelValue: F(t),
259
+ "onUpdate:modelValue": n[0] ||= (e) => m(t) ? t.value = e : null,
260
+ persistent: "",
261
+ class: "d-flex align-center justify-center"
262
+ }, {
263
+ default: R(() => [l(F(H), {
264
+ indeterminate: "",
265
+ color: "primary",
266
+ size: "100"
267
+ })]),
268
+ _: 1
269
+ }, 8, ["modelValue"]));
270
+ }
271
+ }), De = /* @__PURE__ */ u({
272
+ __name: "UiKitOutlet",
273
+ setup(t) {
274
+ return (t, n) => (T(), o(e, null, [
275
+ l(ye),
276
+ l(we),
277
+ l(Ee)
278
+ ], 64));
279
+ }
280
+ });
281
+ //#endregion
282
+ //#region lib/components/sheet/internal/resolveSheetStages.ts
283
+ function Oe(e, t) {
284
+ return t ? [e ? "preview" : "content", "fullscreen"] : e ? ["preview", "content"] : ["content"];
285
+ }
286
+ //#endregion
287
+ //#region lib/components/sheet/internal/resolveSheetRelease.ts
288
+ var ke = .5, Ae = 1.5, je = .6;
289
+ function Me(e) {
290
+ let { heights: t, current: n, delta: r, velocity: i, dismissible: a } = e, o = t.length - 1, s = t[n] - r;
291
+ if (a && (i > Ae || s < t[0] * je)) return { type: "dismiss" };
292
+ if (i > ke) return n === 0 ? a ? { type: "dismiss" } : {
293
+ type: "stage",
294
+ index: 0
295
+ } : {
296
+ type: "stage",
297
+ index: n - 1
298
+ };
299
+ if (i < -.5) return {
300
+ type: "stage",
301
+ index: Math.min(n + 1, o)
302
+ };
303
+ let c = 0;
304
+ for (let e = 1; e <= o; e++) Math.abs(t[e] - s) < Math.abs(t[c] - s) && (c = e);
305
+ return {
306
+ type: "stage",
307
+ index: c
308
+ };
309
+ }
310
+ //#endregion
311
+ //#region lib/components/sheet/internal/useSheetDrag.ts
312
+ var Ne = 8, Pe = 100, Fe = "input, textarea, select, [contenteditable]";
313
+ function Ie(e) {
314
+ let t = O(!1), n = O(0), r = null, i = 0, a = 0, o = !1, s = [], c = null, l = !1;
315
+ function u(e) {
316
+ let t = performance.now();
317
+ s = s.filter((e) => t - e.time <= Pe), s.push({
318
+ y: e,
319
+ time: t
320
+ });
321
+ }
322
+ function d() {
323
+ let e = s[0], t = s[s.length - 1];
324
+ return e === t || t.time === e.time ? 0 : (t.y - e.y) / (t.time - e.time);
325
+ }
326
+ function f(e, t) {
327
+ return Math.abs(e) > Math.abs(t);
328
+ }
329
+ function p(e, t) {
330
+ return Math.max(Math.abs(e), Math.abs(t)) >= Ne;
331
+ }
332
+ function m() {
333
+ window.removeEventListener("pointermove", v), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", b);
334
+ }
335
+ function h() {
336
+ r !== null && m(), r = null, s = [], c = null, t.value = !1, n.value = 0;
337
+ }
338
+ function g(t) {
339
+ if (r !== null || t.button > 0) return;
340
+ l = !1;
341
+ let n = t.target;
342
+ n instanceof Element && n.closest(Fe) || (o = n instanceof Node && !!e.body.value?.contains(n), !(o && t.pointerType !== "touch" && t.pointerType !== "pen") && (r = t.pointerId, i = t.clientX, a = t.clientY, s = [], u(t.clientY), window.addEventListener("pointermove", v), window.addEventListener("pointerup", y), window.addEventListener("pointercancel", b)));
343
+ }
344
+ function _(t) {
345
+ return o ? t > 0 ? (e.body.value?.scrollTop ?? 0) === 0 : e.current.value < e.heights().length - 1 : !0;
346
+ }
347
+ function v(o) {
348
+ if (o.pointerId !== r) return;
349
+ let s = o.clientY - a;
350
+ if (!t.value) {
351
+ let n = o.clientX - i;
352
+ if (!p(n, s)) return;
353
+ if (f(n, s) || !_(s)) {
354
+ h();
355
+ return;
356
+ }
357
+ t.value = !0;
358
+ let r = e.surface.value;
359
+ r && typeof r.setPointerCapture == "function" && r.setPointerCapture(o.pointerId);
360
+ }
361
+ n.value = s, u(o.clientY);
362
+ }
363
+ function y(n) {
364
+ if (n.pointerId !== r) return;
365
+ if (!t.value) {
366
+ h();
367
+ return;
368
+ }
369
+ u(n.clientY);
370
+ let i = Me({
371
+ heights: e.heights(),
372
+ current: e.current.value,
373
+ delta: n.clientY - a,
374
+ velocity: d(),
375
+ dismissible: e.dismissible.value
376
+ });
377
+ h(), l = !0, i.type === "dismiss" ? e.onDismiss() : e.current.value = i.index;
378
+ }
379
+ function b(e) {
380
+ e.pointerId === r && h();
381
+ }
382
+ function x(e) {
383
+ if (r !== null) {
384
+ if (!o) e.preventDefault();
385
+ else {
386
+ if (c === null) {
387
+ let t = e.touches[0], n = t.clientX - i, r = t.clientY - a;
388
+ if (!p(n, r)) return;
389
+ if (f(n, r)) {
390
+ h();
391
+ return;
392
+ }
393
+ c = _(r);
394
+ }
395
+ c && e.preventDefault();
396
+ }
397
+ }
398
+ }
399
+ function S() {
400
+ c = null;
401
+ }
402
+ function C(e) {
403
+ l && (l = !1, e.detail !== 0 && (e.preventDefault(), e.stopPropagation()));
404
+ }
405
+ return I(e.surface, (e, t, n) => {
406
+ e && (e.addEventListener("pointerdown", g), e.addEventListener("touchmove", x, { passive: !1 }), e.addEventListener("touchend", S), e.addEventListener("touchcancel", S), e.addEventListener("click", C, !0), n(() => {
407
+ e.removeEventListener("pointerdown", g), e.removeEventListener("touchmove", x), e.removeEventListener("touchend", S), e.removeEventListener("touchcancel", S), e.removeEventListener("click", C, !0), h();
408
+ }));
409
+ }, {
410
+ immediate: !0,
411
+ flush: "sync"
412
+ }), w(h), {
413
+ dragging: D(t),
414
+ offset: D(n)
415
+ };
416
+ }
417
+ //#endregion
418
+ //#region node_modules/@mdi/js/mdi.js
419
+ var Le = "M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z", Re = "M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16", ze = "M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M12 20C7.59 20 4 16.41 4 12S7.59 4 12 4 20 7.59 20 12 16.41 20 12 20M16.59 7.58L10 14.17L7.41 11.59L6 13L10 17L18 9L16.59 7.58Z", Be = "M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z", Ve = "M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z";
420
+ //#endregion
421
+ //#region lib/internal/icons.ts
422
+ function He(e) {
423
+ return `svg:${e}`;
424
+ }
425
+ var Q = {
426
+ close: He(Be),
427
+ success: He(ze),
428
+ error: He(Le),
429
+ warning: He(Re),
430
+ info: He(Ve)
431
+ }, Ue = ["aria-label"], We = {
432
+ key: 1,
433
+ class: "ui-sheet__handle",
434
+ "aria-hidden": "true"
435
+ }, Ge = { class: "ui-sheet__header" }, Ke = {
436
+ key: 0,
437
+ class: "ui-sheet__title"
438
+ }, qe = {
439
+ key: 0,
440
+ ref: "preview",
441
+ class: "ui-sheet__preview"
442
+ }, Je = {
443
+ ref: "content",
444
+ class: "ui-sheet__content"
445
+ }, Ye = {
446
+ key: 2,
447
+ class: "ui-sheet__footer"
448
+ }, Xe = .9, Ze = .2, Qe = /* @__PURE__ */ u({
449
+ __name: "UiBottomSheet",
450
+ props: {
451
+ modelValue: { type: Boolean },
452
+ stage: { default: void 0 },
453
+ title: { default: void 0 },
454
+ translateTitle: {
455
+ type: Boolean,
456
+ default: !0
457
+ },
458
+ expandable: {
459
+ type: Boolean,
460
+ default: !0
461
+ },
462
+ closable: {
463
+ type: Boolean,
464
+ default: !0
465
+ },
466
+ persistent: {
467
+ type: Boolean,
468
+ default: !1
469
+ },
470
+ form: {
471
+ type: Boolean,
472
+ default: !1
473
+ }
474
+ },
475
+ emits: [
476
+ "update:modelValue",
477
+ "update:stage",
478
+ "close",
479
+ "submit",
480
+ "opened",
481
+ "closed"
482
+ ],
483
+ setup(e, { emit: t }) {
484
+ let n = e, c = t, u = ne(), { options: d } = K(), f = Y(), p = re("surface"), m = re("body"), h = re("preview"), _ = re("content"), y = O(!!u.preview);
485
+ S(() => {
486
+ y.value = !!u.preview;
487
+ });
488
+ let w = r(() => Oe(y.value, n.expandable)), E = O(N()), D = r(() => w.value.includes(E.value) ? E.value : w.value[0]), k = r({
489
+ get: () => w.value.indexOf(D.value),
490
+ set: (e) => {
491
+ E.value = w.value[e];
492
+ }
493
+ }), M = r(() => k.value >= w.value.length - 1);
494
+ function N() {
495
+ return n.stage && w.value.includes(n.stage) ? n.stage : w.value[0];
496
+ }
497
+ let P = r(() => d.i18n.messages), ee = r(() => f(M.value ? P.value.collapse : P.value.expand)), te = r(() => f(P.value.close)), L = O({
498
+ chrome: 0,
499
+ preview: 0,
500
+ content: 0
501
+ }), z = O(0);
502
+ function ce(e) {
503
+ let t = getComputedStyle(e);
504
+ return (parseFloat(t.paddingTop) || 0) + (parseFloat(t.paddingBottom) || 0);
505
+ }
506
+ function le(e) {
507
+ if (!e) return 0;
508
+ if (e.style.display !== "none") return e.offsetHeight;
509
+ e.style.display = "";
510
+ let t = e.offsetHeight;
511
+ return e.style.display = "none", t;
512
+ }
513
+ function V() {
514
+ let e = p.value, t = m.value;
515
+ z.value = window.innerHeight, e && t && (L.value = {
516
+ chrome: e.offsetHeight - t.offsetHeight + ce(t),
517
+ preview: le(h.value),
518
+ content: le(_.value)
519
+ });
520
+ }
521
+ function de(e) {
522
+ let { chrome: t, preview: n, content: r } = L.value;
523
+ return e === "fullscreen" ? z.value : e === "preview" ? t + n : Math.min(t + r, Xe * z.value);
524
+ }
525
+ function fe() {
526
+ return V(), w.value.map(de);
527
+ }
528
+ let pe = null, H = O(null), U = r(() => n.modelValue ? null : H.value);
529
+ function me(e) {
530
+ H.value = e, c("update:modelValue", !1), c("close");
531
+ }
532
+ function he() {
533
+ me(null);
534
+ }
535
+ function ge() {
536
+ me(pe);
537
+ }
538
+ let { dragging: W, offset: G } = Ie({
539
+ surface: p,
540
+ body: m,
541
+ heights: fe,
542
+ current: k,
543
+ dismissible: r(() => !n.persistent),
544
+ onDismiss: ge
545
+ }), q = O([]);
546
+ I(W, (e) => {
547
+ q.value = e ? fe() : [], e && (pe = null, H.value = null);
548
+ }, { flush: "sync" }), I(G, (e) => {
549
+ W.value && q.value.length && (pe = {
550
+ height: q.value[k.value],
551
+ offset: Math.max(e, 0)
552
+ });
553
+ }, { flush: "sync" });
554
+ let _e = r(() => {
555
+ if (U.value) {
556
+ let { height: e, offset: t } = U.value;
557
+ return {
558
+ height: `${String(e)}px`,
559
+ transform: `translateY(${String(t)}px)`
560
+ };
561
+ }
562
+ if (W.value && q.value.length) {
563
+ let e = q.value[k.value];
564
+ if (G.value >= 0) return {
565
+ height: `${String(e)}px`,
566
+ transform: `translateY(${String(G.value)}px)`
567
+ };
568
+ let t = q.value[q.value.length - 1], n = e - G.value, r = Math.min(n, t) + Math.max(n - t, 0) * Ze;
569
+ return { height: `${String(r)}px` };
570
+ }
571
+ let { chrome: e, preview: t, content: n } = L.value;
572
+ return D.value === "preview" && e + t > 0 ? { height: `${String(e + t)}px` } : D.value === "content" && e + n > 0 ? { height: `min(${String(e + n)}px, 90dvh)` } : {};
573
+ }), J = null;
574
+ function ve() {
575
+ J?.disconnect(), J = null;
576
+ let e = [h.value, _.value].filter((e) => !!e);
577
+ e.length && typeof ResizeObserver < "u" && (J = new ResizeObserver(() => {
578
+ W.value || V();
579
+ }), e.forEach((e) => {
580
+ J?.observe(e);
581
+ }));
582
+ }
583
+ I([h, _], ve, { flush: "post" }), C(() => {
584
+ z.value = window.innerHeight, window.addEventListener("resize", V);
585
+ }), x(() => {
586
+ J?.disconnect(), window.removeEventListener("resize", V);
587
+ });
588
+ function ye() {
589
+ D.value !== n.stage && c("update:stage", D.value);
590
+ }
591
+ I(() => n.stage, (e) => {
592
+ e && w.value.includes(e) ? E.value = e : ye();
593
+ }), I(w, (e) => {
594
+ e.includes(E.value) || (E.value = e[0]);
595
+ }), I(() => n.modelValue, (e) => {
596
+ e && (H.value = null, E.value = N());
597
+ }), I(D, ye, { immediate: !0 }), I(D, V, { flush: "post" });
598
+ function be() {
599
+ k.value = M.value ? 0 : w.value.length - 1;
600
+ }
601
+ function xe() {
602
+ H.value = null, c("closed");
603
+ }
604
+ function Se() {
605
+ n.persistent || he();
606
+ }
607
+ function Z() {
608
+ d.dialog.closeOnOverlayClick && !n.persistent && he();
609
+ }
610
+ function Ce() {
611
+ n.form && c("submit");
612
+ }
613
+ return (t, n) => (T(), i(F(ue), {
614
+ "model-value": e.modelValue,
615
+ width: "100%",
616
+ "max-width": "100%",
617
+ persistent: "",
618
+ "no-click-animation": "",
619
+ scrollable: !1,
620
+ "retain-focus": "",
621
+ "content-class": "ui-sheet-overlay",
622
+ "onClick:outside": Z,
623
+ onKeydown: oe(se(Se, ["stop", "prevent"]), ["esc"]),
624
+ onAfterEnter: n[0] ||= (e) => c("opened"),
625
+ onAfterLeave: xe
626
+ }, {
627
+ default: R(() => [s("div", {
628
+ ref_key: "surface",
629
+ ref: p,
630
+ class: v(["ui-sheet", [`ui-sheet--${D.value}`, {
631
+ "ui-sheet--dragging": F(W),
632
+ "ui-sheet--dismissing": !!U.value
633
+ }]]),
634
+ style: b(_e.value)
635
+ }, [(T(), i(j(e.form ? "form" : "div"), g({ class: "ui-sheet__layout" }, e.form ? { novalidate: !0 } : {}, { onSubmit: se(Ce, ["prevent"]) }), {
636
+ default: R(() => [
637
+ w.value.length > 1 ? (T(), o("button", {
638
+ key: 0,
639
+ type: "button",
640
+ class: "ui-sheet__handle",
641
+ "aria-label": ee.value,
642
+ onClick: be
643
+ }, [...n[1] ||= [s("span", { class: "ui-sheet__grip" }, null, -1)]], 8, Ue)) : (T(), o("div", We, [...n[2] ||= [s("span", { class: "ui-sheet__grip" }, null, -1)]])),
644
+ s("header", Ge, [
645
+ e.title ? (T(), o("h2", Ke, [l(X, {
646
+ content: e.title,
647
+ translate: e.translateTitle
648
+ }, null, 8, ["content", "translate"])])) : a("", !0),
649
+ A(t.$slots, "header"),
650
+ e.closable && D.value !== "preview" ? (T(), i(F(B), {
651
+ key: 1,
652
+ variant: "text",
653
+ density: "comfortable",
654
+ icon: F(Q).close,
655
+ "aria-label": te.value,
656
+ disabled: e.persistent,
657
+ class: "ui-sheet__close",
658
+ onClick: he
659
+ }, null, 8, [
660
+ "icon",
661
+ "aria-label",
662
+ "disabled"
663
+ ])) : a("", !0)
664
+ ]),
665
+ s("div", {
666
+ ref_key: "body",
667
+ ref: m,
668
+ class: "ui-sheet__body"
669
+ }, [y.value ? ae((T(), o("div", qe, [A(t.$slots, "preview")], 512)), [[ie, D.value === "preview"]]) : a("", !0), ae(s("div", Je, [A(t.$slots, "default")], 512), [[ie, D.value !== "preview"]])], 512),
670
+ F(u).actions ? (T(), o("footer", Ye, [A(t.$slots, "actions")])) : a("", !0)
671
+ ]),
672
+ _: 3
673
+ }, 16))], 6)]),
674
+ _: 3
675
+ }, 8, ["model-value", "onKeydown"]));
676
+ }
677
+ });
678
+ //#endregion
679
+ //#region lib/composables/dialog/internal/useDialogCta.ts
680
+ function $(e, t) {
681
+ let n = {
682
+ text: K().options.i18n.messages[t],
683
+ translateText: !0
684
+ };
685
+ return U(n, e);
686
+ }
687
+ //#endregion
688
+ //#region lib/composables/dialog/internal/dialogWidths.ts
689
+ var $e = {
690
+ sm: 440,
691
+ md: 560,
692
+ lg: 720
693
+ };
694
+ function et(e) {
695
+ return typeof e == "number" ? e : $e[e];
696
+ }
697
+ //#endregion
698
+ //#region lib/components/sheet/UiResponsiveDialog.vue?vue&type=script&setup=true&lang.ts
699
+ var tt = { class: "ui-responsive-dialog__sheet-section" }, nt = { class: "ui-dialog__header" }, rt = { class: "ui-dialog__title" }, it = { class: "ui-dialog__body" }, at = {
700
+ key: 0,
701
+ class: "ui-dialog__footer"
702
+ }, ot = /* @__PURE__ */ u({
703
+ inheritAttrs: !1,
704
+ __name: "UiResponsiveDialog",
705
+ props: {
706
+ modelValue: { type: Boolean },
707
+ title: {},
708
+ translateTitle: {
709
+ type: Boolean,
710
+ default: !0
711
+ },
712
+ width: { default: "md" },
713
+ closable: {
714
+ type: Boolean,
715
+ default: !0
716
+ },
717
+ persistent: {
718
+ type: Boolean,
719
+ default: !1
720
+ },
721
+ form: {
722
+ type: Boolean,
723
+ default: !1
724
+ },
725
+ expandable: {
726
+ type: Boolean,
727
+ default: !0
728
+ },
729
+ stage: { default: void 0 }
730
+ },
731
+ emits: [
732
+ "update:modelValue",
733
+ "close",
734
+ "submit",
735
+ "opened",
736
+ "closed",
737
+ "update:stage"
738
+ ],
739
+ setup(n, { emit: u }) {
740
+ let d = n, f = u, p = ne(), m = te(), { options: h } = K(), { mobile: _ } = z(), v = Y(), y = $(void 0, "close"), b = r(() => v(y.text, y.translateText)), x = r(() => et(d.width)), S = N(null), C = !1;
741
+ function w(e) {
742
+ e instanceof HTMLElement && (S.value = e);
743
+ }
744
+ I(() => d.modelValue, (e, t) => {
745
+ C = !e && t;
746
+ }), I(_, () => {
747
+ C && !d.modelValue && E();
748
+ });
749
+ function E() {
750
+ C = !1, d.modelValue || (S.value = null), f("closed");
751
+ }
752
+ function D() {
753
+ f("update:modelValue", !1), f("close");
754
+ }
755
+ function O() {
756
+ d.persistent || D();
757
+ }
758
+ function k() {
759
+ h.dialog.closeOnOverlayClick && !d.persistent && D();
760
+ }
761
+ function M() {
762
+ d.form && f("submit");
763
+ }
764
+ return (r, u) => (T(), o(e, null, [F(_) ? (T(), i(Qe, g({ key: 0 }, F(m), {
765
+ "model-value": n.modelValue,
766
+ stage: n.stage,
767
+ title: n.title,
768
+ "translate-title": n.translateTitle,
769
+ expandable: n.expandable,
770
+ closable: n.closable,
771
+ persistent: n.persistent,
772
+ form: n.form,
773
+ "onUpdate:modelValue": u[0] ||= (e) => f("update:modelValue", e),
774
+ "onUpdate:stage": u[1] ||= (e) => f("update:stage", e),
775
+ onClose: u[2] ||= (e) => f("close"),
776
+ onSubmit: u[3] ||= (e) => f("submit"),
777
+ onOpened: u[4] ||= (e) => f("opened"),
778
+ onClosed: E
779
+ }), c({
780
+ default: R(() => [s("div", {
781
+ ref: w,
782
+ class: "ui-responsive-dialog__sheet-section"
783
+ }, null, 512)]),
784
+ _: 2
785
+ }, [
786
+ F(p).preview ? {
787
+ name: "preview",
788
+ fn: R(() => [s("div", tt, [A(r.$slots, "preview")])]),
789
+ key: "0"
790
+ } : void 0,
791
+ F(p).header ? {
792
+ name: "header",
793
+ fn: R(() => [A(r.$slots, "header")]),
794
+ key: "1"
795
+ } : void 0,
796
+ F(p).actions ? {
797
+ name: "actions",
798
+ fn: R(() => [A(r.$slots, "actions")]),
799
+ key: "2"
800
+ } : void 0
801
+ ]), 1040, [
802
+ "model-value",
803
+ "stage",
804
+ "title",
805
+ "translate-title",
806
+ "expandable",
807
+ "closable",
808
+ "persistent",
809
+ "form"
810
+ ])) : (T(), i(F(de), g({ key: 1 }, F(m), {
811
+ "model-value": n.modelValue,
812
+ "max-width": x.value,
813
+ persistent: "",
814
+ "no-click-animation": "",
815
+ scrollable: !1,
816
+ "retain-focus": "",
817
+ "onClick:outside": k,
818
+ onKeydown: oe(se(O, ["stop", "prevent"]), ["esc"]),
819
+ onAfterEnter: u[5] ||= (e) => f("opened"),
820
+ onAfterLeave: E
821
+ }), {
822
+ default: R(() => [l(F(V), {
823
+ variant: "flat",
824
+ border: !1,
825
+ rounded: !1,
826
+ class: "ui-dialog"
827
+ }, {
828
+ default: R(() => [(T(), i(j(n.form ? "form" : "div"), g({ class: "ui-dialog__layout" }, n.form ? { novalidate: !0 } : {}, { onSubmit: se(M, ["prevent"]) }), {
829
+ default: R(() => [
830
+ s("header", nt, [
831
+ s("h2", rt, [l(X, {
832
+ content: n.title,
833
+ translate: n.translateTitle
834
+ }, null, 8, ["content", "translate"])]),
835
+ A(r.$slots, "header"),
836
+ n.closable ? (T(), i(F(B), {
837
+ key: 0,
838
+ variant: "text",
839
+ density: "comfortable",
840
+ icon: F(Q).close,
841
+ "aria-label": b.value,
842
+ disabled: n.persistent,
843
+ class: "ui-dialog__close",
844
+ onClick: D
845
+ }, null, 8, [
846
+ "icon",
847
+ "aria-label",
848
+ "disabled"
849
+ ])) : a("", !0)
850
+ ]),
851
+ s("div", it, [s("div", {
852
+ ref: w,
853
+ class: "ui-responsive-dialog__slot"
854
+ }, null, 512)]),
855
+ F(p).actions ? (T(), o("footer", at, [A(r.$slots, "actions")])) : a("", !0)
856
+ ]),
857
+ _: 3
858
+ }, 16))]),
859
+ _: 3
860
+ })]),
861
+ _: 3
862
+ }, 16, [
863
+ "model-value",
864
+ "max-width",
865
+ "onKeydown"
866
+ ])), S.value ? (T(), i(t, {
867
+ key: 2,
868
+ to: S.value
869
+ }, [A(r.$slots, "default")], 8, ["to"])) : a("", !0)], 64));
870
+ }
871
+ });
872
+ //#endregion
873
+ //#region lib/composables/dialog/useDialog.ts
874
+ function st() {
875
+ let e = q(), { options: { components: { dialog: t } } } = K();
876
+ function n(n, r) {
877
+ let i = typeof n == "string" ? {
878
+ title: n,
879
+ content: r ?? ""
880
+ } : n;
881
+ return new Promise((n) => {
882
+ let r = {
883
+ component: t.info,
884
+ data: i,
885
+ resolve: n,
886
+ reject: () => {
887
+ n(null);
888
+ }
889
+ };
890
+ e.addToQueue(r);
891
+ });
892
+ }
893
+ function r(n, r, i) {
894
+ let a = typeof n == "string" ? {
895
+ title: n,
896
+ content: r ?? "",
897
+ level: i
898
+ } : n;
899
+ return new Promise((n, r) => {
900
+ let i = {
901
+ component: t.confirm,
902
+ data: a,
903
+ resolve: n,
904
+ reject: r
905
+ };
906
+ e.addToQueue(i);
907
+ });
908
+ }
909
+ function i(n) {
910
+ return new Promise((r, i) => {
911
+ let a = {
912
+ component: t.form,
913
+ data: n,
914
+ resolve: r,
915
+ reject: i
916
+ };
917
+ e.addToQueue(a);
918
+ });
919
+ }
920
+ return {
921
+ info: n,
922
+ confirm: r,
923
+ form: i
924
+ };
925
+ }
926
+ //#endregion
927
+ //#region lib/composables/dialog/useDialogEntry.ts
928
+ function ct() {
929
+ let e = f() ? p(_e, null) : null;
930
+ if (!e) throw Error(W.DIALOG_ENTRY_CONTEXT_MISSING);
931
+ return e;
932
+ }
933
+ //#endregion
934
+ //#region lib/composables/dialog/useFormDialog.ts
935
+ function lt() {
936
+ let e = f() ? p(J, null) : null;
937
+ if (!e) throw Error(W.FORM_DIALOG_CONTEXT_MISSING);
938
+ let t = e;
939
+ function n(e) {
940
+ let n = t.addFinishHandler(e);
941
+ return d() && w(n), n;
942
+ }
943
+ return {
944
+ submit: t.submit,
945
+ close: t.close,
946
+ onFinish: n,
947
+ loading: t.loading
948
+ };
949
+ }
950
+ //#endregion
951
+ //#region lib/composables/dialog/onDialogFinish.ts
952
+ function ut(e) {
953
+ return lt().onFinish(e);
954
+ }
955
+ //#endregion
956
+ //#region lib/composables/dialog/presets/ConfirmDialogProps.ts
957
+ var dt = /* @__PURE__ */ function(e) {
958
+ return e.DEFAULT = "primary", e.WARNING = "warning", e.DANGER = "error", e;
959
+ }({});
960
+ //#endregion
961
+ //#region lib/composables/toast/useToast.ts
962
+ function ft() {
963
+ let e = be(), { options: { toast: t } } = K();
964
+ function n(e) {
965
+ return e === Z.ERROR ? t.errorTimeout : t.timeout;
966
+ }
967
+ function r(t) {
968
+ return (r, i) => new Promise((a) => {
969
+ e.addToQueue({
970
+ message: r,
971
+ resolve: a,
972
+ timeout: i?.timeout ?? n(t),
973
+ translateMessage: i?.translateMessage ?? !0,
974
+ action: i?.action,
975
+ type: t
976
+ });
977
+ });
978
+ }
979
+ return {
980
+ info: r(Z.INFO),
981
+ warn: r(Z.WARNING),
982
+ error: r(Z.ERROR),
983
+ success: r(Z.SUCCESS)
984
+ };
985
+ }
986
+ //#endregion
987
+ //#region lib/composables/toast/useToastEntry.ts
988
+ function pt() {
989
+ let e = f() ? p(xe, null) : null;
990
+ if (!e) throw Error(W.TOAST_ENTRY_CONTEXT_MISSING);
991
+ return e;
992
+ }
993
+ //#endregion
994
+ //#region lib/composables/loading/useLoading.ts
995
+ function mt(e) {
996
+ return e ? new Promise((t) => {
997
+ setTimeout(t, e);
998
+ }) : Promise.resolve();
999
+ }
1000
+ function ht(e, t = {}) {
1001
+ let { options: { loading: n } } = K(), r = t.delay ?? n.delay, i = t.overlay ?? n.overlay, a = O(!1), o = Te(), s = e;
1002
+ async function c(...e) {
1003
+ a.value = !0, i && (o.value = !0);
1004
+ try {
1005
+ let [t] = await Promise.all([s(...e), mt(r)]);
1006
+ return t;
1007
+ } finally {
1008
+ a.value = !1, i && (o.value = !1);
1009
+ }
1010
+ }
1011
+ return {
1012
+ loading: D(a),
1013
+ action: c
1014
+ };
1015
+ }
1016
+ //#endregion
1017
+ //#region lib/composables/dialog/components/dialog/presets/InfoDialog.vue?vue&type=script&setup=true&lang.ts
1018
+ var gt = {
1019
+ key: 0,
1020
+ class: "ui-dialog__text"
1021
+ }, _t = /* @__PURE__ */ u({
1022
+ __name: "InfoDialog",
1023
+ setup(t) {
1024
+ let { data: n, resolve: s } = ct(), u = n.defaultCta === !1 ? null : $(n.defaultCta, "close"), d = r(() => n.additionalCta ?? []), { mobile: f } = z(), p = r(() => u !== null && !f.value), m = r(() => p.value || d.value.length > 0), h = O(!0), _ = r(() => "props" in n ? n.props : {}), v = null;
1025
+ function b(e) {
1026
+ "action" in e ? e.action() : x(e.value);
1027
+ }
1028
+ function x(e) {
1029
+ h.value &&= (v = e, !1);
1030
+ }
1031
+ function S() {
1032
+ x(null);
1033
+ }
1034
+ function C() {
1035
+ s(v);
1036
+ }
1037
+ return (t, r) => (T(), i(ot, {
1038
+ "model-value": h.value,
1039
+ title: F(n).title,
1040
+ "translate-title": F(n).translateTitle,
1041
+ width: F(n).width ?? "sm",
1042
+ onClose: S,
1043
+ onClosed: C
1044
+ }, c({
1045
+ default: R(() => ["content" in F(n) ? (T(), o("p", gt, [l(X, {
1046
+ content: F(n).content,
1047
+ translate: F(n).translateContent
1048
+ }, null, 8, ["content", "translate"])])) : (T(), i(j(F(n).component), y(g({ key: 1 }, _.value)), null, 16))]),
1049
+ _: 2
1050
+ }, [m.value ? {
1051
+ name: "actions",
1052
+ fn: R(() => [(T(!0), o(e, null, k(d.value, (e, t) => (T(), i(F(B), {
1053
+ key: t,
1054
+ variant: "text",
1055
+ onClick: () => b(e)
1056
+ }, {
1057
+ default: R(() => [l(X, {
1058
+ content: e.text,
1059
+ translate: e.translateText
1060
+ }, null, 8, ["content", "translate"])]),
1061
+ _: 2
1062
+ }, 1032, ["onClick"]))), 128)), p.value && F(u) ? (T(), i(F(B), {
1063
+ key: 0,
1064
+ variant: "flat",
1065
+ color: "primary",
1066
+ onClick: S
1067
+ }, {
1068
+ default: R(() => [l(X, {
1069
+ content: F(u).text,
1070
+ translate: F(u).translateText
1071
+ }, null, 8, ["content", "translate"])]),
1072
+ _: 1
1073
+ })) : a("", !0)]),
1074
+ key: "0"
1075
+ } : void 0]), 1032, [
1076
+ "model-value",
1077
+ "title",
1078
+ "translate-title",
1079
+ "width"
1080
+ ]));
1081
+ }
1082
+ }), vt = {
1083
+ key: 0,
1084
+ class: "ui-dialog__text"
1085
+ }, yt = /* @__PURE__ */ u({
1086
+ __name: "ConfirmDialog",
1087
+ setup(t) {
1088
+ let { data: n, resolve: a, reject: s } = ct(), c = $(n.confirmCta, "yes"), u = $(n.rejectCta, "no"), d = O(!0), f = {
1089
+ reject: null,
1090
+ confirm: null
1091
+ }, p = r(() => n.highlightCta ?? "confirm"), m = r(() => n.level ?? "primary"), h = r(() => "props" in n ? n.props : {}), _ = r(() => {
1092
+ let e = p.value, t = [{
1093
+ key: "reject",
1094
+ cta: u,
1095
+ variant: e === "reject" ? "flat" : "text",
1096
+ color: e === "reject" ? m.value : void 0,
1097
+ onClick: x
1098
+ }, {
1099
+ key: "confirm",
1100
+ cta: c,
1101
+ variant: e === "confirm" ? "flat" : "text",
1102
+ color: e === "confirm" ? m.value : void 0,
1103
+ onClick: S
1104
+ }];
1105
+ return e === "reject" ? t.reverse() : t;
1106
+ }), v = !1;
1107
+ function b(e, t) {
1108
+ t && "$el" in t ? f[e] = t.$el : f[e] = null;
1109
+ }
1110
+ function x() {
1111
+ d.value &&= (v = !1, !1);
1112
+ }
1113
+ function S() {
1114
+ d.value &&= (v = !0, !1);
1115
+ }
1116
+ function C() {
1117
+ f[n.level === dt.DANGER ? "reject" : "confirm"]?.focus();
1118
+ }
1119
+ function w() {
1120
+ !v && n.throwOnReject ? s() : a(v);
1121
+ }
1122
+ return (t, r) => (T(), i(ot, {
1123
+ "model-value": d.value,
1124
+ title: F(n).title,
1125
+ "translate-title": F(n).translateTitle,
1126
+ width: F(n).width ?? "sm",
1127
+ closable: !1,
1128
+ persistent: !!F(n).permanent,
1129
+ onClose: x,
1130
+ onOpened: C,
1131
+ onClosed: w
1132
+ }, {
1133
+ actions: R(() => [(T(!0), o(e, null, k(_.value, (e) => (T(), i(F(B), {
1134
+ key: e.key,
1135
+ ref_for: !0,
1136
+ ref: (t) => b(e.key, t),
1137
+ variant: e.variant,
1138
+ color: e.color,
1139
+ onClick: e.onClick
1140
+ }, {
1141
+ default: R(() => [l(X, {
1142
+ content: e.cta.text,
1143
+ translate: e.cta.translateText
1144
+ }, null, 8, ["content", "translate"])]),
1145
+ _: 2
1146
+ }, 1032, [
1147
+ "variant",
1148
+ "color",
1149
+ "onClick"
1150
+ ]))), 128))]),
1151
+ default: R(() => ["content" in F(n) ? (T(), o("p", vt, [l(X, {
1152
+ content: F(n).content,
1153
+ translate: F(n).translateContent
1154
+ }, null, 8, ["content", "translate"])])) : (T(), i(j(F(n).component), y(g({ key: 1 }, h.value)), null, 16))]),
1155
+ _: 1
1156
+ }, 8, [
1157
+ "model-value",
1158
+ "title",
1159
+ "translate-title",
1160
+ "width",
1161
+ "persistent"
1162
+ ]));
1163
+ }
1164
+ });
1165
+ //#endregion
1166
+ //#region lib/composables/dialog/internal/declaresProp.ts
1167
+ function bt(e, t) {
1168
+ let n = e.props;
1169
+ return Array.isArray(n) ? n.includes(t) : typeof n == "object" && !!n && t in n;
1170
+ }
1171
+ //#endregion
1172
+ //#region lib/composables/dialog/internal/isEmptyValue.ts
1173
+ function xt(e) {
1174
+ let t = Object.getPrototypeOf(e);
1175
+ return t === Object.prototype || t === null;
1176
+ }
1177
+ function St(e) {
1178
+ return e == null || e === "" ? !0 : Array.isArray(e) ? e.length === 0 : e instanceof Date ? Number.isNaN(e.getTime()) : e instanceof Map || e instanceof Set ? e.size === 0 : typeof e == "object" && xt(e) && Object.keys(e).length === 0;
1179
+ }
1180
+ //#endregion
1181
+ //#region lib/internal/toErrorMessage.ts
1182
+ function Ct(e, t) {
1183
+ return e instanceof Error ? e.message : typeof e == "string" ? e : typeof e == "object" && e && "message" in e && typeof e.message == "string" ? e.message : t;
1184
+ }
1185
+ //#endregion
1186
+ //#region lib/composables/dialog/components/dialog/presets/FormDialog.vue
1187
+ var wt = /* @__PURE__ */ u({
1188
+ __name: "FormDialog",
1189
+ setup(e) {
1190
+ let { data: t, resolve: n, reject: o } = ct(), { options: c } = K(), u = Y(), d = $(t.saveCta, "save"), f = $(t.abortCta, "cancel"), p = r(() => u(c.i18n.messages.saveFailed, !0)), m = r(() => u(c.i18n.messages.unknownError, !0)), h = O(!0), _ = O(null), v = O(ee(t.initialValue) ?? null), b = N(null), x = re("content"), S = me(), { loading: C, action: w } = ht(ie), D = O(!1), k = r(() => !!t.required && St(v.value)), A = r(() => {
1191
+ let e = { ...t.props };
1192
+ return bt(t.component, "modelValue") && (e.modelValue = v.value, e["onUpdate:modelValue"] = (e) => {
1193
+ v.value = e;
1194
+ }), bt(t.component, "toolbar") && (e.toolbar = b.value), e;
1195
+ }), M = /* @__PURE__ */ new Set(), P = null;
1196
+ function te(e) {
1197
+ e instanceof HTMLDivElement && (b.value = e);
1198
+ }
1199
+ E(J, {
1200
+ addFinishHandler(e) {
1201
+ return M.add(e), () => {
1202
+ M.delete(e);
1203
+ };
1204
+ },
1205
+ submit: ne,
1206
+ close: I,
1207
+ loading: C
1208
+ });
1209
+ async function ne() {
1210
+ if (!(C.value || D.value || k.value)) {
1211
+ D.value = !0;
1212
+ try {
1213
+ if (!await S.value.$validate() || !h.value) return;
1214
+ _.value = null, await w();
1215
+ } catch (e) {
1216
+ _.value = Ct(e, m.value);
1217
+ } finally {
1218
+ D.value = !1;
1219
+ }
1220
+ }
1221
+ }
1222
+ async function ie() {
1223
+ for (let e of [...M]) if (await e() === !1) return;
1224
+ let e = v.value;
1225
+ P = t.action ? await t.action(e) : e, h.value = !1;
1226
+ }
1227
+ function I() {
1228
+ C.value || D.value || (h.value = !1);
1229
+ }
1230
+ function L() {
1231
+ x.value?.querySelector("input:not([type=hidden]), textarea, select")?.focus();
1232
+ }
1233
+ function ae() {
1234
+ t.required && P === null ? o() : n(P);
1235
+ }
1236
+ return (e, n) => (T(), i(ot, {
1237
+ "model-value": h.value,
1238
+ title: F(t).title,
1239
+ "translate-title": F(t).translateTitle,
1240
+ width: F(t).width ?? "md",
1241
+ persistent: F(C) || D.value,
1242
+ form: "",
1243
+ onClose: I,
1244
+ onSubmit: ne,
1245
+ onOpened: L,
1246
+ onClosed: ae
1247
+ }, {
1248
+ header: R(() => [s("div", {
1249
+ ref: te,
1250
+ class: "ui-dialog__toolbar"
1251
+ }, null, 512)]),
1252
+ actions: R(() => [l(F(B), {
1253
+ variant: "text",
1254
+ disabled: F(C),
1255
+ onClick: I
1256
+ }, {
1257
+ default: R(() => [l(X, {
1258
+ content: F(f).text,
1259
+ translate: F(f).translateText
1260
+ }, null, 8, ["content", "translate"])]),
1261
+ _: 1
1262
+ }, 8, ["disabled"]), l(F(B), {
1263
+ variant: "flat",
1264
+ color: "primary",
1265
+ type: "submit",
1266
+ disabled: k.value,
1267
+ loading: F(C)
1268
+ }, {
1269
+ default: R(() => [l(X, {
1270
+ content: F(d).text,
1271
+ translate: F(d).translateText
1272
+ }, null, 8, ["content", "translate"])]),
1273
+ _: 1
1274
+ }, 8, ["disabled", "loading"])]),
1275
+ default: R(() => [_.value === null ? a("", !0) : (T(), i(F(le), {
1276
+ key: 0,
1277
+ type: "error",
1278
+ variant: "tonal",
1279
+ density: "compact",
1280
+ icon: F(Q).error,
1281
+ title: p.value,
1282
+ text: _.value
1283
+ }, null, 8, [
1284
+ "icon",
1285
+ "title",
1286
+ "text"
1287
+ ])), s("div", {
1288
+ ref_key: "content",
1289
+ ref: x,
1290
+ class: "ui-dialog__content"
1291
+ }, [b.value ? (T(), i(j(F(t).component), y(g({ key: 0 }, A.value)), null, 16)) : a("", !0)], 512)]),
1292
+ _: 1
1293
+ }, 8, [
1294
+ "model-value",
1295
+ "title",
1296
+ "translate-title",
1297
+ "width",
1298
+ "persistent"
1299
+ ]));
1300
+ }
1301
+ }), Tt = ["role"], Et = { class: "ui-toast__message" }, Dt = /* @__PURE__ */ u({
1302
+ __name: "ToastEntry",
1303
+ setup(e) {
1304
+ let t = {
1305
+ [Z.ERROR]: Q.error,
1306
+ [Z.SUCCESS]: Q.success,
1307
+ [Z.INFO]: Q.info,
1308
+ [Z.WARNING]: Q.warning
1309
+ }, { entry: n, close: c, trigger: u } = pt(), { options: d } = K(), f = Y(), p = r(() => f(d.i18n.messages.close, !0)), m = r(() => t[n.type]), h = r(() => n.type === Z.ERROR ? "alert" : void 0);
1310
+ return (e, t) => (T(), o("div", {
1311
+ class: "ui-toast",
1312
+ role: h.value
1313
+ }, [
1314
+ l(F(fe), {
1315
+ icon: m.value,
1316
+ size: "20",
1317
+ class: "ui-toast__icon"
1318
+ }, null, 8, ["icon"]),
1319
+ s("span", Et, [l(X, {
1320
+ content: F(n).message,
1321
+ translate: F(n).translateMessage
1322
+ }, null, 8, ["content", "translate"])]),
1323
+ F(n).action ? (T(), i(F(B), {
1324
+ key: 0,
1325
+ variant: "text",
1326
+ size: "small",
1327
+ class: "ui-toast__action",
1328
+ onClick: F(u)
1329
+ }, {
1330
+ default: R(() => [l(X, {
1331
+ content: F(n).action.text,
1332
+ translate: F(n).action.translateText ?? !0
1333
+ }, null, 8, ["content", "translate"])]),
1334
+ _: 1
1335
+ }, 8, ["onClick"])) : a("", !0),
1336
+ l(F(B), {
1337
+ variant: "text",
1338
+ size: "small",
1339
+ icon: F(Q).close,
1340
+ "aria-label": p.value,
1341
+ class: "ui-toast__close",
1342
+ onClick: F(c)
1343
+ }, null, 8, [
1344
+ "icon",
1345
+ "aria-label",
1346
+ "onClick"
1347
+ ])
1348
+ ], 8, Tt));
1349
+ }
1350
+ }), Ot = () => ({
1351
+ loading: {
1352
+ delay: 2e3,
1353
+ overlay: !1
1354
+ },
1355
+ toast: {
1356
+ timeout: 4e3,
1357
+ errorTimeout: !1
1358
+ },
1359
+ dialog: { closeOnOverlayClick: !0 },
1360
+ i18n: { messages: {
1361
+ yes: "common.yes",
1362
+ no: "common.no",
1363
+ cancel: "action.cancel",
1364
+ close: "action.close",
1365
+ save: "action.save",
1366
+ saveFailed: "dialog.saveFailed",
1367
+ unknownError: "error.unknown",
1368
+ expand: "action.expand",
1369
+ collapse: "action.collapse"
1370
+ } },
1371
+ components: {
1372
+ dialog: {
1373
+ info: h(_t),
1374
+ confirm: h(yt),
1375
+ form: h(wt)
1376
+ },
1377
+ toast: h(Dt)
1378
+ }
1379
+ });
1380
+ //#endregion
1381
+ //#region lib/plugin/helper/resolvePluginOptions.ts
1382
+ function kt(e = {}) {
1383
+ let { components: t, ...n } = e, r = Ot(), i = U(r, n);
1384
+ return i.components = {
1385
+ dialog: {
1386
+ info: h(t?.dialog?.info ?? r.components.dialog.info),
1387
+ confirm: h(t?.dialog?.confirm ?? r.components.dialog.confirm),
1388
+ form: h(t?.dialog?.form ?? r.components.dialog.form)
1389
+ },
1390
+ toast: h(t?.toast ?? r.components.toast)
1391
+ }, i;
1392
+ }
1393
+ //#endregion
1394
+ //#region lib/plugin/helper/createPluginContext.ts
1395
+ function At(e) {
1396
+ return {
1397
+ dialogQueue: O([]),
1398
+ toastQueue: O([]),
1399
+ toastTimers: /* @__PURE__ */ new Map(),
1400
+ loadingOverlay: O(!1),
1401
+ options: e
1402
+ };
1403
+ }
1404
+ //#endregion
1405
+ //#region lib/plugin/createUIKit.ts
1406
+ function jt(e) {
1407
+ return (t) => {
1408
+ t.provide(G, At(kt(e)));
1409
+ };
1410
+ }
1411
+ //#endregion
1412
+ export { dt as ConfirmDialogLevel, Z as ToastType, Qe as UiBottomSheet, De as UiKitOutlet, ot as UiResponsiveDialog, jt as createUIKit, ut as onDialogFinish, st as useDialog, ct as useDialogEntry, lt as useFormDialog, ht as useLoading, Te as useLoadingOverlay, ft as useToast, pt as useToastEntry };