@eodash/eodash 5.0.0-alpha.2.1 → 5.0.0-alpha.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +11 -1
  2. package/bin/types.d.ts +1 -0
  3. package/bin/utils.js +1 -1
  4. package/core/App.vue +12 -4
  5. package/core/SuspensedDashboard.ce.vue +13 -5
  6. package/core/components/DashboardLayout.vue +14 -22
  7. package/core/components/ErrorAlert.vue +19 -0
  8. package/core/components/Loading.vue +12 -1
  9. package/core/components/MobileLayout.vue +19 -11
  10. package/core/composables/DefineWidgets.js +11 -5
  11. package/core/composables/index.js +16 -13
  12. package/core/eodash.js +0 -2
  13. package/core/plugins/vuetify.js +9 -3
  14. package/core/store/stac.js +6 -2
  15. package/core/types.d.ts +9 -23
  16. package/core/views/Dashboard.vue +13 -2
  17. package/dist/DashboardLayout-lzEvtalW.js +148 -0
  18. package/dist/{DynamicWebComponent-BrHVTesn.js → DynamicWebComponent-CgDh2csQ.js} +12 -12
  19. package/dist/EodashDatePicker-bIyNUYaG.js +1653 -0
  20. package/dist/{EodashItemFilter-BLAGx2UD.js → EodashItemFilter-CpgyrJRX.js} +2 -2
  21. package/dist/{EodashMap-Bxl_aqY2.js → EodashMap-CyR-Ldpk.js} +4 -4
  22. package/dist/Footer-C2sIHSym.js +118 -0
  23. package/dist/{Header-DC50S6GR.js → Header-DFz2BUnp.js} +222 -226
  24. package/dist/{IframeWrapper-Dd9zrX9s.js → IframeWrapper-Csep3rMg.js} +1 -1
  25. package/dist/MobileLayout-CXNJL_q6.js +984 -0
  26. package/dist/VMain-COrg6UtF.js +39 -0
  27. package/dist/{WidgetsContainer-DxfCu0I3.js → WidgetsContainer-XA6_dKOm.js} +16 -16
  28. package/dist/asWebComponent-fqvymeM-.js +13092 -0
  29. package/dist/{decoder-kAoyGIq9-BBR5CgzS.js → decoder-kAoyGIq9-DjQanfeo.js} +1 -1
  30. package/dist/eo-dash.js +2 -2
  31. package/dist/{index-DTkOfh2g.js → index-Cskxla5D.js} +75 -43
  32. package/dist/index-Zv5eTiB6.js +34 -0
  33. package/dist/{lerc-C9VL9kri-cIdbW0sg.js → lerc-C9VL9kri-O4muG-MO.js} +1 -1
  34. package/dist/{ssrBoot-D-b4-M19.js → ssrBoot-DCCAW5xY.js} +3 -3
  35. package/dist/style.css +2 -2
  36. package/package.json +3 -3
  37. package/widgets/EodashDatePicker.vue +1 -0
  38. package/widgets/WidgetsContainer.vue +7 -5
  39. package/dist/DashboardLayout-Dp8AnYD9.js +0 -141
  40. package/dist/EodashDatePicker-D_udZ26j.js +0 -1645
  41. package/dist/Footer-AohCH8U7.js +0 -118
  42. package/dist/MobileLayout-CgToA7Gp.js +0 -523
  43. package/dist/VBtn-Bz7ruRUg.js +0 -1106
  44. package/dist/VMain-BHfWJU2j.js +0 -35
  45. package/dist/asWebComponent-C8rb3b1D.js +0 -11323
  46. package/dist/color-DpYEub1f.js +0 -115
  47. package/dist/dimensions-CJaGeSrj.js +0 -53
  48. package/dist/index-Sa2Vg_gx.js +0 -65
@@ -0,0 +1,984 @@
1
+ import { p as P, o as ze, m as Ye, g as M, u as Ge, r as $, c as g, a as H, V as G, b as v, F as L, d as E, k as Be, e as ie, f as ue, h as De, i as Ue, j as Ee, l as je, n as Pe, s as I, w as re, q as Ne, t as q, v as qe, x as ce, y as We, z as Ke, A as Qe, B as le, C as ae, D as Je, I as he, E as Ze, G as et, H as tt, J as me, K as nt, L as ge, M as ye, N as ot, O as st, P as lt, Q as at, R as it, S as W, T as ut, U as rt, W as ct, X as be, Y as dt, Z as vt, _ as C, $ as F, a0 as O, a1 as Se, a2 as R, a3 as we, a4 as se, a5 as Y, a6 as xe, a7 as ke, a8 as Te, a9 as ft, aa as ht } from "./asWebComponent-fqvymeM-.js";
2
+ import { f as mt, a as gt, s as yt } from "./forwardRefs-Bxeu9Obx.js";
3
+ import { u as bt } from "./ssrBoot-DCCAW5xY.js";
4
+ import { M as St, V as Ve } from "./index-Cskxla5D.js";
5
+ import { V as wt } from "./VMain-COrg6UtF.js";
6
+ const de = Symbol.for("vuetify:v-tabs"), xt = P({
7
+ fixed: Boolean,
8
+ sliderColor: String,
9
+ hideSlider: Boolean,
10
+ direction: {
11
+ type: String,
12
+ default: "horizontal"
13
+ },
14
+ ...ze(Ye({
15
+ selectedClass: "v-tab--selected",
16
+ variant: "text"
17
+ }), ["active", "block", "flat", "location", "position", "symbol"])
18
+ }, "VTab"), Re = M()({
19
+ name: "VTab",
20
+ props: xt(),
21
+ setup(e, t) {
22
+ let {
23
+ slots: o,
24
+ attrs: n
25
+ } = t;
26
+ const {
27
+ textColorClasses: l,
28
+ textColorStyles: u
29
+ } = Ge(e, "sliderColor"), s = $(), f = $(), c = g(() => e.direction === "horizontal"), m = g(() => s.value?.group?.isSelected.value ?? !1);
30
+ function S(r) {
31
+ let {
32
+ value: a
33
+ } = r;
34
+ if (a) {
35
+ const x = s.value?.$el.parentElement?.querySelector(".v-tab--selected .v-tab__slider"), h = f.value;
36
+ if (!x || !h)
37
+ return;
38
+ const _ = getComputedStyle(x).color, T = x.getBoundingClientRect(), V = h.getBoundingClientRect(), p = c.value ? "x" : "y", z = c.value ? "X" : "Y", y = c.value ? "right" : "bottom", b = c.value ? "width" : "height", k = T[p], A = V[p], B = k > A ? T[y] - V[y] : T[p] - V[p], K = Math.sign(B) > 0 ? c.value ? "right" : "bottom" : Math.sign(B) < 0 ? c.value ? "left" : "top" : "center", Q = (Math.abs(B) + (Math.sign(B) < 0 ? T[b] : V[b])) / Math.max(T[b], V[b]) || 0, j = T[b] / V[b] || 0, N = 1.5;
39
+ gt(h, {
40
+ backgroundColor: [_, "currentcolor"],
41
+ transform: [`translate${z}(${B}px) scale${z}(${j})`, `translate${z}(${B / N}px) scale${z}(${(Q - 1) / N + 1})`, "none"],
42
+ transformOrigin: Array(3).fill(K)
43
+ }, {
44
+ duration: 225,
45
+ easing: yt
46
+ });
47
+ }
48
+ }
49
+ return H(() => {
50
+ const r = G.filterProps(e);
51
+ return v(G, E({
52
+ symbol: de,
53
+ ref: s,
54
+ class: ["v-tab", e.class],
55
+ style: e.style,
56
+ tabindex: m.value ? 0 : -1,
57
+ role: "tab",
58
+ "aria-selected": String(m.value),
59
+ active: !1
60
+ }, r, n, {
61
+ block: e.fixed,
62
+ maxWidth: e.fixed ? 300 : void 0,
63
+ "onGroup:selected": S
64
+ }), {
65
+ ...o,
66
+ default: () => v(L, null, [o.default?.() ?? e.text, !e.hideSlider && v("div", {
67
+ ref: f,
68
+ class: ["v-tab__slider", l.value],
69
+ style: u.value
70
+ }, null)])
71
+ });
72
+ }), mt({}, s);
73
+ }
74
+ }), kt = (e) => {
75
+ const {
76
+ touchstartX: t,
77
+ touchendX: o,
78
+ touchstartY: n,
79
+ touchendY: l
80
+ } = e, u = 0.5, s = 16;
81
+ e.offsetX = o - t, e.offsetY = l - n, Math.abs(e.offsetY) < u * Math.abs(e.offsetX) && (e.left && o < t - s && e.left(e), e.right && o > t + s && e.right(e)), Math.abs(e.offsetX) < u * Math.abs(e.offsetY) && (e.up && l < n - s && e.up(e), e.down && l > n + s && e.down(e));
82
+ };
83
+ function Tt(e, t) {
84
+ const o = e.changedTouches[0];
85
+ t.touchstartX = o.clientX, t.touchstartY = o.clientY, t.start?.({
86
+ originalEvent: e,
87
+ ...t
88
+ });
89
+ }
90
+ function Vt(e, t) {
91
+ const o = e.changedTouches[0];
92
+ t.touchendX = o.clientX, t.touchendY = o.clientY, t.end?.({
93
+ originalEvent: e,
94
+ ...t
95
+ }), kt(t);
96
+ }
97
+ function Ct(e, t) {
98
+ const o = e.changedTouches[0];
99
+ t.touchmoveX = o.clientX, t.touchmoveY = o.clientY, t.move?.({
100
+ originalEvent: e,
101
+ ...t
102
+ });
103
+ }
104
+ function It() {
105
+ let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
106
+ const t = {
107
+ touchstartX: 0,
108
+ touchstartY: 0,
109
+ touchendX: 0,
110
+ touchendY: 0,
111
+ touchmoveX: 0,
112
+ touchmoveY: 0,
113
+ offsetX: 0,
114
+ offsetY: 0,
115
+ left: e.left,
116
+ right: e.right,
117
+ up: e.up,
118
+ down: e.down,
119
+ start: e.start,
120
+ move: e.move,
121
+ end: e.end
122
+ };
123
+ return {
124
+ touchstart: (o) => Tt(o, t),
125
+ touchend: (o) => Vt(o, t),
126
+ touchmove: (o) => Ct(o, t)
127
+ };
128
+ }
129
+ function _t(e, t) {
130
+ const o = t.value, n = o?.parent ? e.parentElement : e, l = o?.options ?? {
131
+ passive: !0
132
+ }, u = t.instance?.$.uid;
133
+ if (!n || !u)
134
+ return;
135
+ const s = It(t.value);
136
+ n._touchHandlers = n._touchHandlers ?? /* @__PURE__ */ Object.create(null), n._touchHandlers[u] = s, Be(s).forEach((f) => {
137
+ n.addEventListener(f, s[f], l);
138
+ });
139
+ }
140
+ function pt(e, t) {
141
+ const o = t.value?.parent ? e.parentElement : e, n = t.instance?.$.uid;
142
+ if (!o?._touchHandlers || !n)
143
+ return;
144
+ const l = o._touchHandlers[n];
145
+ Be(l).forEach((u) => {
146
+ o.removeEventListener(u, l[u]);
147
+ }), delete o._touchHandlers[n];
148
+ }
149
+ const $e = {
150
+ mounted: _t,
151
+ unmounted: pt
152
+ }, zt = $e, Me = Symbol.for("vuetify:v-window"), He = Symbol.for("vuetify:v-window-group"), Ae = P({
153
+ continuous: Boolean,
154
+ nextIcon: {
155
+ type: [Boolean, String, Function, Object],
156
+ default: "$next"
157
+ },
158
+ prevIcon: {
159
+ type: [Boolean, String, Function, Object],
160
+ default: "$prev"
161
+ },
162
+ reverse: Boolean,
163
+ showArrows: {
164
+ type: [Boolean, String],
165
+ validator: (e) => typeof e == "boolean" || e === "hover"
166
+ },
167
+ touch: {
168
+ type: [Object, Boolean],
169
+ default: void 0
170
+ },
171
+ direction: {
172
+ type: String,
173
+ default: "horizontal"
174
+ },
175
+ modelValue: null,
176
+ disabled: Boolean,
177
+ selectedClass: {
178
+ type: String,
179
+ default: "v-window-item--active"
180
+ },
181
+ // TODO: mandatory should probably not be exposed but do this for now
182
+ mandatory: {
183
+ type: [Boolean, String],
184
+ default: "force"
185
+ },
186
+ ...ie(),
187
+ ...ue(),
188
+ ...De()
189
+ }, "VWindow"), Ce = M()({
190
+ name: "VWindow",
191
+ directives: {
192
+ Touch: $e
193
+ },
194
+ props: Ae(),
195
+ emits: {
196
+ "update:modelValue": (e) => !0
197
+ },
198
+ setup(e, t) {
199
+ let {
200
+ slots: o
201
+ } = t;
202
+ const {
203
+ themeClasses: n
204
+ } = Ue(e), {
205
+ isRtl: l
206
+ } = Ee(), {
207
+ t: u
208
+ } = je(), s = Pe(e, He), f = $(), c = g(() => l.value ? !e.reverse : e.reverse), m = I(!1), S = g(() => {
209
+ const y = e.direction === "vertical" ? "y" : "x", k = (c.value ? !m.value : m.value) ? "-reverse" : "";
210
+ return `v-window-${y}${k}-transition`;
211
+ }), r = I(0), a = $(void 0), x = g(() => s.items.value.findIndex((y) => s.selected.value.includes(y.id)));
212
+ re(x, (y, b) => {
213
+ const k = s.items.value.length, A = k - 1;
214
+ k <= 2 ? m.value = y < b : y === A && b === 0 ? m.value = !0 : y === 0 && b === A ? m.value = !1 : m.value = y < b;
215
+ }), Ne(Me, {
216
+ transition: S,
217
+ isReversed: m,
218
+ transitionCount: r,
219
+ transitionHeight: a,
220
+ rootRef: f
221
+ });
222
+ const h = g(() => e.continuous || x.value !== 0), _ = g(() => e.continuous || x.value !== s.items.value.length - 1);
223
+ function T() {
224
+ h.value && s.prev();
225
+ }
226
+ function V() {
227
+ _.value && s.next();
228
+ }
229
+ const p = g(() => {
230
+ const y = [], b = {
231
+ icon: l.value ? e.nextIcon : e.prevIcon,
232
+ class: `v-window__${c.value ? "right" : "left"}`,
233
+ onClick: s.prev,
234
+ "aria-label": u("$vuetify.carousel.prev")
235
+ };
236
+ y.push(h.value ? o.prev ? o.prev({
237
+ props: b
238
+ }) : v(G, b, null) : v("div", null, null));
239
+ const k = {
240
+ icon: l.value ? e.prevIcon : e.nextIcon,
241
+ class: `v-window__${c.value ? "left" : "right"}`,
242
+ onClick: s.next,
243
+ "aria-label": u("$vuetify.carousel.next")
244
+ };
245
+ return y.push(_.value ? o.next ? o.next({
246
+ props: k
247
+ }) : v(G, k, null) : v("div", null, null)), y;
248
+ }), z = g(() => e.touch === !1 ? e.touch : {
249
+ ...{
250
+ left: () => {
251
+ c.value ? T() : V();
252
+ },
253
+ right: () => {
254
+ c.value ? V() : T();
255
+ },
256
+ start: (b) => {
257
+ let {
258
+ originalEvent: k
259
+ } = b;
260
+ k.stopPropagation();
261
+ }
262
+ },
263
+ ...e.touch === !0 ? {} : e.touch
264
+ });
265
+ return H(() => q(v(e.tag, {
266
+ ref: f,
267
+ class: ["v-window", {
268
+ "v-window--show-arrows-on-hover": e.showArrows === "hover"
269
+ }, n.value, e.class],
270
+ style: e.style
271
+ }, {
272
+ default: () => [v("div", {
273
+ class: "v-window__container",
274
+ style: {
275
+ height: a.value
276
+ }
277
+ }, [o.default?.({
278
+ group: s
279
+ }), e.showArrows !== !1 && v("div", {
280
+ class: "v-window__controls"
281
+ }, [p.value])]), o.additional?.({
282
+ group: s
283
+ })]
284
+ }), [[qe("touch"), z.value]])), {
285
+ group: s
286
+ };
287
+ }
288
+ }), Bt = P({
289
+ ...ze(Ae(), ["continuous", "nextIcon", "prevIcon", "showArrows", "touch", "mandatory"])
290
+ }, "VTabsWindow"), Et = M()({
291
+ name: "VTabsWindow",
292
+ props: Bt(),
293
+ emits: {
294
+ "update:modelValue": (e) => !0
295
+ },
296
+ setup(e, t) {
297
+ let {
298
+ slots: o
299
+ } = t;
300
+ const n = ce(de, null), l = We(e, "modelValue"), u = g({
301
+ get() {
302
+ return l.value != null || !n ? l.value : n.items.value.find((s) => n.selected.value.includes(s.id))?.value;
303
+ },
304
+ set(s) {
305
+ l.value = s;
306
+ }
307
+ });
308
+ return H(() => {
309
+ const s = Ce.filterProps(e);
310
+ return v(Ce, E({
311
+ _as: "VTabsWindow"
312
+ }, s, {
313
+ modelValue: u.value,
314
+ "onUpdate:modelValue": (f) => u.value = f,
315
+ class: ["v-tabs-window", e.class],
316
+ style: e.style,
317
+ mandatory: !1,
318
+ touch: !1
319
+ }), o);
320
+ }), {};
321
+ }
322
+ }), Pt = P({
323
+ eager: Boolean
324
+ }, "lazy");
325
+ function Wt(e, t) {
326
+ const o = I(!1), n = g(() => o.value || e.eager || t.value);
327
+ re(t, () => o.value = !0);
328
+ function l() {
329
+ e.eager || (o.value = !1);
330
+ }
331
+ return {
332
+ isBooted: o,
333
+ hasContent: n,
334
+ onAfterLeave: l
335
+ };
336
+ }
337
+ const Fe = P({
338
+ reverseTransition: {
339
+ type: [Boolean, String],
340
+ default: void 0
341
+ },
342
+ transition: {
343
+ type: [Boolean, String],
344
+ default: void 0
345
+ },
346
+ ...ie(),
347
+ ...Ke(),
348
+ ...Pt()
349
+ }, "VWindowItem"), Ie = M()({
350
+ name: "VWindowItem",
351
+ directives: {
352
+ Touch: zt
353
+ },
354
+ props: Fe(),
355
+ emits: {
356
+ "group:selected": (e) => !0
357
+ },
358
+ setup(e, t) {
359
+ let {
360
+ slots: o
361
+ } = t;
362
+ const n = ce(Me), l = Qe(e, He), {
363
+ isBooted: u
364
+ } = bt();
365
+ if (!n || !l)
366
+ throw new Error("[Vuetify] VWindowItem must be used inside VWindow");
367
+ const s = I(!1), f = g(() => u.value && (n.isReversed.value ? e.reverseTransition !== !1 : e.transition !== !1));
368
+ function c() {
369
+ !s.value || !n || (s.value = !1, n.transitionCount.value > 0 && (n.transitionCount.value -= 1, n.transitionCount.value === 0 && (n.transitionHeight.value = void 0)));
370
+ }
371
+ function m() {
372
+ s.value || !n || (s.value = !0, n.transitionCount.value === 0 && (n.transitionHeight.value = ae(n.rootRef.value?.clientHeight)), n.transitionCount.value += 1);
373
+ }
374
+ function S() {
375
+ c();
376
+ }
377
+ function r(h) {
378
+ s.value && Je(() => {
379
+ !f.value || !s.value || !n || (n.transitionHeight.value = ae(h.clientHeight));
380
+ });
381
+ }
382
+ const a = g(() => {
383
+ const h = n.isReversed.value ? e.reverseTransition : e.transition;
384
+ return f.value ? {
385
+ name: typeof h != "string" ? n.transition.value : h,
386
+ onBeforeEnter: m,
387
+ onAfterEnter: c,
388
+ onEnterCancelled: S,
389
+ onBeforeLeave: m,
390
+ onAfterLeave: c,
391
+ onLeaveCancelled: S,
392
+ onEnter: r
393
+ } : !1;
394
+ }), {
395
+ hasContent: x
396
+ } = Wt(e, l.isSelected);
397
+ return H(() => v(St, {
398
+ transition: a.value,
399
+ disabled: !u.value
400
+ }, {
401
+ default: () => [q(v("div", {
402
+ class: ["v-window-item", l.selectedClass.value, e.class],
403
+ style: e.style
404
+ }, [x.value && o.default?.()]), [[le, l.isSelected.value]])]
405
+ })), {
406
+ groupItem: l
407
+ };
408
+ }
409
+ }), Rt = P({
410
+ ...Fe()
411
+ }, "VTabsWindowItem"), $t = M()({
412
+ name: "VTabsWindowItem",
413
+ props: Rt(),
414
+ setup(e, t) {
415
+ let {
416
+ slots: o
417
+ } = t;
418
+ return H(() => {
419
+ const n = Ie.filterProps(e);
420
+ return v(Ie, E({
421
+ _as: "VTabsWindowItem"
422
+ }, n, {
423
+ class: ["v-tabs-window-item", e.class],
424
+ style: e.style
425
+ }), o);
426
+ }), {};
427
+ }
428
+ });
429
+ function Mt(e) {
430
+ let {
431
+ selectedElement: t,
432
+ containerElement: o,
433
+ isRtl: n,
434
+ isHorizontal: l
435
+ } = e;
436
+ const u = D(l, o), s = Oe(l, n, o), f = D(l, t), c = Le(l, t), m = f * 0.4;
437
+ return s > c ? c - m : s + u < c + f ? c - u + f + m : s;
438
+ }
439
+ function Ht(e) {
440
+ let {
441
+ selectedElement: t,
442
+ containerElement: o,
443
+ isHorizontal: n
444
+ } = e;
445
+ const l = D(n, o), u = Le(n, t), s = D(n, t);
446
+ return u - l / 2 + s / 2;
447
+ }
448
+ function _e(e, t) {
449
+ return t?.[e ? "scrollWidth" : "scrollHeight"] || 0;
450
+ }
451
+ function At(e, t) {
452
+ return t?.[e ? "clientWidth" : "clientHeight"] || 0;
453
+ }
454
+ function Oe(e, t, o) {
455
+ if (!o)
456
+ return 0;
457
+ const {
458
+ scrollLeft: n,
459
+ offsetWidth: l,
460
+ scrollWidth: u
461
+ } = o;
462
+ return e ? t ? u - l + n : n : o.scrollTop;
463
+ }
464
+ function D(e, t) {
465
+ return t?.[e ? "offsetWidth" : "offsetHeight"] || 0;
466
+ }
467
+ function Le(e, t) {
468
+ return t?.[e ? "offsetLeft" : "offsetTop"] || 0;
469
+ }
470
+ const Ft = Symbol.for("vuetify:v-slide-group"), Xe = P({
471
+ centerActive: Boolean,
472
+ direction: {
473
+ type: String,
474
+ default: "horizontal"
475
+ },
476
+ symbol: {
477
+ type: null,
478
+ default: Ft
479
+ },
480
+ nextIcon: {
481
+ type: he,
482
+ default: "$next"
483
+ },
484
+ prevIcon: {
485
+ type: he,
486
+ default: "$prev"
487
+ },
488
+ showArrows: {
489
+ type: [Boolean, String],
490
+ validator: (e) => typeof e == "boolean" || ["always", "desktop", "mobile"].includes(e)
491
+ },
492
+ ...ie(),
493
+ ...Ze(),
494
+ ...ue(),
495
+ ...et({
496
+ selectedClass: "v-slide-group-item--active"
497
+ })
498
+ }, "VSlideGroup"), pe = M()({
499
+ name: "VSlideGroup",
500
+ props: Xe(),
501
+ emits: {
502
+ "update:modelValue": (e) => !0
503
+ },
504
+ setup(e, t) {
505
+ let {
506
+ slots: o
507
+ } = t;
508
+ const {
509
+ isRtl: n
510
+ } = Ee(), {
511
+ displayClasses: l,
512
+ mobile: u
513
+ } = tt(e), s = Pe(e, e.symbol), f = I(!1), c = I(0), m = I(0), S = I(0), r = g(() => e.direction === "horizontal"), {
514
+ resizeRef: a,
515
+ contentRect: x
516
+ } = me(), {
517
+ resizeRef: h,
518
+ contentRect: _
519
+ } = me(), T = nt(), V = g(() => ({
520
+ container: a.el,
521
+ duration: 200,
522
+ easing: "easeOutQuart"
523
+ })), p = g(() => s.selected.value.length ? s.items.value.findIndex((i) => i.id === s.selected.value[0]) : -1), z = g(() => s.selected.value.length ? s.items.value.findIndex((i) => i.id === s.selected.value[s.selected.value.length - 1]) : -1);
524
+ if (ge) {
525
+ let i = -1;
526
+ re(() => [s.selected.value, x.value, _.value, r.value], () => {
527
+ cancelAnimationFrame(i), i = requestAnimationFrame(() => {
528
+ if (x.value && _.value) {
529
+ const d = r.value ? "width" : "height";
530
+ m.value = x.value[d], S.value = _.value[d], f.value = m.value + 1 < S.value;
531
+ }
532
+ if (p.value >= 0 && h.el) {
533
+ const d = h.el.children[z.value];
534
+ b(d, e.centerActive);
535
+ }
536
+ });
537
+ });
538
+ }
539
+ const y = I(!1);
540
+ function b(i, d) {
541
+ let w = 0;
542
+ d ? w = Ht({
543
+ containerElement: a.el,
544
+ isHorizontal: r.value,
545
+ selectedElement: i
546
+ }) : w = Mt({
547
+ containerElement: a.el,
548
+ isHorizontal: r.value,
549
+ isRtl: n.value,
550
+ selectedElement: i
551
+ }), k(w);
552
+ }
553
+ function k(i) {
554
+ if (!ge || !a.el)
555
+ return;
556
+ const d = D(r.value, a.el), w = Oe(r.value, n.value, a.el);
557
+ if (!(_e(r.value, a.el) <= d || // Prevent scrolling by only a couple of pixels, which doesn't look smooth
558
+ Math.abs(i - w) < 16)) {
559
+ if (r.value && n.value && a.el) {
560
+ const {
561
+ scrollWidth: ne,
562
+ offsetWidth: oe
563
+ } = a.el;
564
+ i = ne - oe - i;
565
+ }
566
+ r.value ? T.horizontal(i, V.value) : T(i, V.value);
567
+ }
568
+ }
569
+ function A(i) {
570
+ const {
571
+ scrollTop: d,
572
+ scrollLeft: w
573
+ } = i.target;
574
+ c.value = r.value ? w : d;
575
+ }
576
+ function B(i) {
577
+ if (y.value = !0, !(!f.value || !h.el)) {
578
+ for (const d of i.composedPath())
579
+ for (const w of h.el.children)
580
+ if (w === d) {
581
+ b(w);
582
+ return;
583
+ }
584
+ }
585
+ }
586
+ function K(i) {
587
+ y.value = !1;
588
+ }
589
+ let U = !1;
590
+ function Q(i) {
591
+ !U && !y.value && !(i.relatedTarget && h.el?.contains(i.relatedTarget)) && X(), U = !1;
592
+ }
593
+ function j() {
594
+ U = !0;
595
+ }
596
+ function N(i) {
597
+ if (!h.el)
598
+ return;
599
+ function d(w) {
600
+ i.preventDefault(), X(w);
601
+ }
602
+ r.value ? i.key === "ArrowRight" ? d(n.value ? "prev" : "next") : i.key === "ArrowLeft" && d(n.value ? "next" : "prev") : i.key === "ArrowDown" ? d("next") : i.key === "ArrowUp" && d("prev"), i.key === "Home" ? d("first") : i.key === "End" && d("last");
603
+ }
604
+ function X(i) {
605
+ if (!h.el)
606
+ return;
607
+ let d;
608
+ if (!i)
609
+ d = ot(h.el)[0];
610
+ else if (i === "next") {
611
+ if (d = h.el.querySelector(":focus")?.nextElementSibling, !d)
612
+ return X("first");
613
+ } else if (i === "prev") {
614
+ if (d = h.el.querySelector(":focus")?.previousElementSibling, !d)
615
+ return X("last");
616
+ } else
617
+ i === "first" ? d = h.el.firstElementChild : i === "last" && (d = h.el.lastElementChild);
618
+ d && d.focus({
619
+ preventScroll: !0
620
+ });
621
+ }
622
+ function J(i) {
623
+ const d = r.value && n.value ? -1 : 1, w = (i === "prev" ? -d : d) * m.value;
624
+ let te = c.value + w;
625
+ if (r.value && n.value && a.el) {
626
+ const {
627
+ scrollWidth: ne,
628
+ offsetWidth: oe
629
+ } = a.el;
630
+ te += ne - oe;
631
+ }
632
+ k(te);
633
+ }
634
+ const Z = g(() => ({
635
+ next: s.next,
636
+ prev: s.prev,
637
+ select: s.select,
638
+ isSelected: s.isSelected
639
+ })), ee = g(() => {
640
+ switch (e.showArrows) {
641
+ case "always":
642
+ return !0;
643
+ case "desktop":
644
+ return !u.value;
645
+ case !0:
646
+ return f.value || Math.abs(c.value) > 0;
647
+ case "mobile":
648
+ return u.value || f.value || Math.abs(c.value) > 0;
649
+ default:
650
+ return !u.value && (f.value || Math.abs(c.value) > 0);
651
+ }
652
+ }), ve = g(() => Math.abs(c.value) > 1), fe = g(() => {
653
+ if (!a.value)
654
+ return !1;
655
+ const i = _e(r.value, a.el), d = At(r.value, a.el);
656
+ return i - d - Math.abs(c.value) > 1;
657
+ });
658
+ return H(() => v(e.tag, {
659
+ class: ["v-slide-group", {
660
+ "v-slide-group--vertical": !r.value,
661
+ "v-slide-group--has-affixes": ee.value,
662
+ "v-slide-group--is-overflowing": f.value
663
+ }, l.value, e.class],
664
+ style: e.style,
665
+ tabindex: y.value || s.selected.value.length ? -1 : 0,
666
+ onFocus: Q
667
+ }, {
668
+ default: () => [ee.value && v("div", {
669
+ key: "prev",
670
+ class: ["v-slide-group__prev", {
671
+ "v-slide-group__prev--disabled": !ve.value
672
+ }],
673
+ onMousedown: j,
674
+ onClick: () => ve.value && J("prev")
675
+ }, [o.prev?.(Z.value) ?? v(Ve, null, {
676
+ default: () => [v(ye, {
677
+ icon: n.value ? e.nextIcon : e.prevIcon
678
+ }, null)]
679
+ })]), v("div", {
680
+ key: "container",
681
+ ref: a,
682
+ class: "v-slide-group__container",
683
+ onScroll: A
684
+ }, [v("div", {
685
+ ref: h,
686
+ class: "v-slide-group__content",
687
+ onFocusin: B,
688
+ onFocusout: K,
689
+ onKeydown: N
690
+ }, [o.default?.(Z.value)])]), ee.value && v("div", {
691
+ key: "next",
692
+ class: ["v-slide-group__next", {
693
+ "v-slide-group__next--disabled": !fe.value
694
+ }],
695
+ onMousedown: j,
696
+ onClick: () => fe.value && J("next")
697
+ }, [o.next?.(Z.value) ?? v(Ve, null, {
698
+ default: () => [v(ye, {
699
+ icon: n.value ? e.prevIcon : e.nextIcon
700
+ }, null)]
701
+ })])]
702
+ })), {
703
+ selected: s.selected,
704
+ scrollTo: J,
705
+ scrollOffset: c,
706
+ focus: X
707
+ };
708
+ }
709
+ });
710
+ function Ot() {
711
+ const t = st("useScopeId").vnode.scopeId;
712
+ return {
713
+ scopeId: t ? {
714
+ [t]: ""
715
+ } : void 0
716
+ };
717
+ }
718
+ function Lt(e) {
719
+ return e ? e.map((t) => rt(t) ? t : {
720
+ text: t,
721
+ value: t
722
+ }) : [];
723
+ }
724
+ const Xt = P({
725
+ alignTabs: {
726
+ type: String,
727
+ default: "start"
728
+ },
729
+ color: String,
730
+ fixedTabs: Boolean,
731
+ items: {
732
+ type: Array,
733
+ default: () => []
734
+ },
735
+ stacked: Boolean,
736
+ bgColor: String,
737
+ grow: Boolean,
738
+ height: {
739
+ type: [Number, String],
740
+ default: void 0
741
+ },
742
+ hideSlider: Boolean,
743
+ sliderColor: String,
744
+ ...Xe({
745
+ mandatory: "force",
746
+ selectedClass: "v-tab-item--selected"
747
+ }),
748
+ ...lt(),
749
+ ...ue()
750
+ }, "VTabs"), Yt = M()({
751
+ name: "VTabs",
752
+ props: Xt(),
753
+ emits: {
754
+ "update:modelValue": (e) => !0
755
+ },
756
+ setup(e, t) {
757
+ let {
758
+ attrs: o,
759
+ slots: n
760
+ } = t;
761
+ const l = We(e, "modelValue"), u = g(() => Lt(e.items)), {
762
+ densityClasses: s
763
+ } = at(e), {
764
+ backgroundColorClasses: f,
765
+ backgroundColorStyles: c
766
+ } = it(W(e, "bgColor")), {
767
+ scopeId: m
768
+ } = Ot();
769
+ return ut({
770
+ VTab: {
771
+ color: W(e, "color"),
772
+ direction: W(e, "direction"),
773
+ stacked: W(e, "stacked"),
774
+ fixed: W(e, "fixedTabs"),
775
+ sliderColor: W(e, "sliderColor"),
776
+ hideSlider: W(e, "hideSlider")
777
+ }
778
+ }), H(() => {
779
+ const S = pe.filterProps(e), r = !!(n.window || e.items.length > 0);
780
+ return v(L, null, [v(pe, E(S, {
781
+ modelValue: l.value,
782
+ "onUpdate:modelValue": (a) => l.value = a,
783
+ class: ["v-tabs", `v-tabs--${e.direction}`, `v-tabs--align-tabs-${e.alignTabs}`, {
784
+ "v-tabs--fixed-tabs": e.fixedTabs,
785
+ "v-tabs--grow": e.grow,
786
+ "v-tabs--stacked": e.stacked
787
+ }, s.value, f.value, e.class],
788
+ style: [{
789
+ "--v-tabs-height": ae(e.height)
790
+ }, c.value, e.style],
791
+ role: "tablist",
792
+ symbol: de
793
+ }, m, o), {
794
+ default: () => [n.default?.() ?? u.value.map((a) => n.tab?.({
795
+ item: a
796
+ }) ?? v(Re, E(a, {
797
+ key: a.text,
798
+ value: a.value
799
+ }), {
800
+ default: () => n[`tab.${a.value}`]?.({
801
+ item: a
802
+ })
803
+ }))]
804
+ }), r && v(Et, E({
805
+ modelValue: l.value,
806
+ "onUpdate:modelValue": (a) => l.value = a,
807
+ key: "tabs-window"
808
+ }, m), {
809
+ default: () => [u.value.map((a) => n.item?.({
810
+ item: a
811
+ }) ?? v($t, {
812
+ value: a.value
813
+ }, {
814
+ default: () => n[`item.${a.value}`]?.({
815
+ item: a
816
+ })
817
+ })), n.window?.()]
818
+ })]);
819
+ }), {};
820
+ }
821
+ }), Gt = { style: { height: "90% !important" } }, Kt = {
822
+ __name: "MobileLayout",
823
+ setup(e) {
824
+ const t = (
825
+ /** @type {import("@/types").Eodash} */
826
+ ce(ct)
827
+ ), o = t.template.widgets, n = be(o), [l] = be([t.template?.background]), { mainRect: u } = dt(), s = $(-1), f = $(null), c = $("");
828
+ return vt(() => {
829
+ c.value = u.value.bottom + /** @type {HTMLElement} */
830
+ (f.value?.$el?.clientHeight ?? 0) + "px";
831
+ }), (m, S) => (C(), F(wt, {
832
+ class: "overflow-hidden",
833
+ style: { height: "91dvh" }
834
+ }, {
835
+ default: O(() => [
836
+ (C(), F(Se, { suspensible: "" }, {
837
+ default: O(() => [
838
+ R(l).component ? (C(), F(
839
+ we(R(l).component),
840
+ E({
841
+ key: 0,
842
+ id: "bg-widget"
843
+ }, R(l).props),
844
+ null,
845
+ 16
846
+ /* FULL_PROPS */
847
+ )) : se("v-if", !0)
848
+ ]),
849
+ _: 1
850
+ /* STABLE */
851
+ })),
852
+ (C(!0), Y(
853
+ L,
854
+ null,
855
+ xe(R(n), (r, a) => (C(), Y(
856
+ L,
857
+ { key: a },
858
+ [
859
+ r.value.component ? q((C(), Y(
860
+ "div",
861
+ {
862
+ key: 0,
863
+ id: "overlay",
864
+ class: "pa-2",
865
+ style: ke({
866
+ bottom: c.value,
867
+ position: "absolute",
868
+ overflow: "hidden",
869
+ width: "100%",
870
+ left: 0,
871
+ top: R(u).top + "px",
872
+ zIndex: 1,
873
+ background: "rgb(var(--v-theme-surface))"
874
+ })
875
+ },
876
+ [
877
+ v(G, {
878
+ icon: "",
879
+ variant: "text",
880
+ style: { height: "5%", position: "relative" },
881
+ onClick: S[0] || (S[0] = (x) => s.value = -1)
882
+ }, {
883
+ default: O(() => [
884
+ Te("✕")
885
+ ]),
886
+ _: 1
887
+ /* STABLE */
888
+ }),
889
+ (C(), F(
890
+ Se,
891
+ { suspensible: "" },
892
+ {
893
+ default: O(() => [
894
+ q(ft(
895
+ "div",
896
+ Gt,
897
+ [
898
+ (C(), F(
899
+ we(r.value.component),
900
+ E({
901
+ key: r.value.id
902
+ }, r.value.props),
903
+ null,
904
+ 16
905
+ /* FULL_PROPS */
906
+ ))
907
+ ],
908
+ 512
909
+ /* NEED_PATCH */
910
+ ), [
911
+ [le, s.value === a]
912
+ ])
913
+ ]),
914
+ _: 2
915
+ /* DYNAMIC */
916
+ },
917
+ 1024
918
+ /* DYNAMIC_SLOTS */
919
+ ))
920
+ ],
921
+ 4
922
+ /* STYLE */
923
+ )), [
924
+ [le, s.value === a]
925
+ ]) : se("v-if", !0)
926
+ ],
927
+ 64
928
+ /* STABLE_FRAGMENT */
929
+ ))),
930
+ 128
931
+ /* KEYED_FRAGMENT */
932
+ )),
933
+ v(Yt, {
934
+ ref_key: "tabs",
935
+ ref: f,
936
+ "align-tabs": "center",
937
+ "bg-color": "surface",
938
+ style: ke({ position: "relative", bottom: (R(u).bottom || 48) + "px", zIndex: 10 }),
939
+ "show-arrows": "",
940
+ modelValue: s.value,
941
+ "onUpdate:modelValue": S[1] || (S[1] = (r) => s.value = r)
942
+ }, {
943
+ default: O(() => [
944
+ (C(!0), Y(
945
+ L,
946
+ null,
947
+ xe(R(n), (r, a) => (C(), Y(
948
+ L,
949
+ { key: a },
950
+ [
951
+ r.value.component ? (C(), F(Re, {
952
+ key: 0,
953
+ value: a
954
+ }, {
955
+ default: O(() => [
956
+ Te(
957
+ ht(r.value.title),
958
+ 1
959
+ /* TEXT */
960
+ )
961
+ ]),
962
+ _: 2
963
+ /* DYNAMIC */
964
+ }, 1032, ["value"])) : se("v-if", !0)
965
+ ],
966
+ 64
967
+ /* STABLE_FRAGMENT */
968
+ ))),
969
+ 128
970
+ /* KEYED_FRAGMENT */
971
+ ))
972
+ ]),
973
+ _: 1
974
+ /* STABLE */
975
+ }, 8, ["style", "modelValue"])
976
+ ]),
977
+ _: 1
978
+ /* STABLE */
979
+ }));
980
+ }
981
+ };
982
+ export {
983
+ Kt as default
984
+ };