@eodash/eodash 5.0.0-rc.1.6 → 5.0.0-rc.2.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.
Files changed (56) hide show
  1. package/core/client/composables/EodashMap.js +30 -25
  2. package/core/client/composables/EodashProcess.js +1 -1
  3. package/core/client/composables/index.js +8 -1
  4. package/core/client/eodash.js +14 -1
  5. package/core/client/eodashSTAC/EodashCollection.js +9 -5
  6. package/core/client/eodashSTAC/createLayers.js +1 -1
  7. package/core/client/eodashSTAC/helpers.js +10 -2
  8. package/core/client/eodashSTAC/triggers.js +56 -1
  9. package/core/client/store/stac.js +7 -2
  10. package/core/client/types.ts +3 -1
  11. package/core/client/utils/index.js +12 -0
  12. package/core/client/utils/states.js +16 -2
  13. package/core/client/views/Dashboard.vue +3 -1
  14. package/dist/client/{DashboardLayout-SZfMDUoR.js → DashboardLayout-BjUs7mYs.js} +2 -2
  15. package/dist/client/{DynamicWebComponent-I9gzMY0L.js → DynamicWebComponent-rIFx5c0f.js} +1 -1
  16. package/dist/client/{EodashDatePicker-B9_u6TTm.js → EodashDatePicker-brJlj1aQ.js} +60 -35
  17. package/dist/client/{EodashItemFilter-G7YsYO3B.js → EodashItemFilter-C2i4lnM1.js} +1 -1
  18. package/dist/client/{EodashLayerControl-CJ94ul63.js → EodashLayerControl-DNQzPQQ4.js} +1 -1
  19. package/dist/client/{EodashLayoutSwitcher-DRKm8A8U.js → EodashLayoutSwitcher-gLe7G8Qn.js} +2 -2
  20. package/dist/client/{EodashMap-Dp44Ajbi.js → EodashMap-LOzTlvrM.js} +50 -72
  21. package/dist/client/{EodashMapBtns-BlPFwhPc.js → EodashMapBtns-UXOupU5J.js} +4 -4
  22. package/dist/client/{EodashProcess-BLmIgUGT.js → EodashProcess-BlkqUdzj.js} +33 -11
  23. package/dist/client/{EodashStacInfo-BIRcfcMo.js → EodashStacInfo-Df3LXKAw.js} +1 -1
  24. package/dist/client/{EodashTools-PNfJ-Cw3.js → EodashTools-BrqH4IDP.js} +4 -4
  25. package/dist/client/{ExportState-5JyTshJH.js → ExportState-DVosrSNY.js} +4 -4
  26. package/dist/client/{Footer-CM9hgdQP.js → Footer-tjsscQ7O.js} +1 -1
  27. package/dist/client/{Header-BTq4DW1x.js → Header-DYMnh4of.js} +3 -3
  28. package/dist/client/{MobileLayout-Atfoxf8d.js → MobileLayout-Df4Z1bMl.js} +17 -7
  29. package/dist/client/{PopUp-Bmfn3N_4.js → PopUp-BFcSuX3b.js} +3 -3
  30. package/dist/client/{VImg-CUF4S39i.js → VImg-BO2Ysvsu.js} +2 -2
  31. package/dist/client/{VMain-CQpXnzDR.js → VMain-fx1gaM7Y.js} +1 -1
  32. package/dist/client/{VOverlay-DUnITwM1.js → VOverlay-CiQn3F6n.js} +3 -3
  33. package/dist/client/{VTooltip-BYTlbKer.js → VTooltip-DKOCofTl.js} +3 -3
  34. package/dist/client/{WidgetsContainer-BPbgxdb0.js → WidgetsContainer-DL0bdnjh.js} +1 -1
  35. package/dist/client/{asWebComponent-DW1XzZkL.js → asWebComponent-N7ChSAQG.js} +306 -154
  36. package/dist/client/eo-dash.css +1 -1
  37. package/dist/client/eo-dash.js +1 -1
  38. package/dist/client/{forwardRefs-gx1Fzngc.js → forwardRefs-C2UOEnvr.js} +1 -1
  39. package/dist/client/{index-DvFppNyk.js → index-BXi80Gr9.js} +1 -1
  40. package/dist/client/{transition-j2eWJYMg.js → transition-w_2EtUxa.js} +1 -1
  41. package/dist/node/cli.js +2 -2
  42. package/dist/types/core/client/composables/EodashMap.d.ts +2 -2
  43. package/dist/types/core/client/composables/index.d.ts +1 -1
  44. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +2 -0
  45. package/dist/types/core/client/eodashSTAC/helpers.d.ts +4 -2
  46. package/dist/types/core/client/eodashSTAC/triggers.d.ts +6 -0
  47. package/dist/types/core/client/types.d.ts +3 -1
  48. package/dist/types/core/client/utils/index.d.ts +1 -0
  49. package/dist/types/core/client/utils/states.d.ts +8 -1
  50. package/dist/types/widgets/EodashDatePicker.vue.d.ts +455 -0
  51. package/dist/types/widgets/EodashMap.vue.d.ts +2 -0
  52. package/dist/types/widgets/EodashProcess.vue.d.ts +1 -0
  53. package/package.json +19 -19
  54. package/widgets/EodashDatePicker.vue +51 -17
  55. package/widgets/EodashMap.vue +14 -2
  56. package/widgets/EodashProcess.vue +25 -11
@@ -1,5 +1,5 @@
1
1
  import { computed, ref, openBlock, createElementBlock, mergeProps, unref, createElementVNode, toDisplayString } from 'vue';
2
- import { t as useDisplay, $ as useSTAcStore } from './asWebComponent-DW1XzZkL.js';
2
+ import { t as useDisplay, $ as useSTAcStore } from './asWebComponent-N7ChSAQG.js';
3
3
  import '@eox/itemfilter';
4
4
 
5
5
  const _hoisted_1 = [".items"];
@@ -3,7 +3,7 @@ import '@eox/layercontrol';
3
3
  import '@eox/jsonform';
4
4
  import '@eox/timecontrol';
5
5
  import 'color-legend-element';
6
- import { $ as useSTAcStore, a2 as mapCompareEl, a3 as mapEl, a4 as eodashCompareCollections, a0 as eodashCollections, a5 as layerControlFormValue, a6 as getColFromLayer } from './asWebComponent-DW1XzZkL.js';
6
+ import { $ as useSTAcStore, a3 as mapCompareEl, a4 as mapEl, a5 as eodashCompareCollections, a0 as eodashCollections, a6 as layerControlFormValue, a7 as getColFromLayer } from './asWebComponent-N7ChSAQG.js';
7
7
  import { storeToRefs } from 'pinia';
8
8
 
9
9
  const _hoisted_1 = { class: "d-flex flex-column fill-height overflow-auto" };
@@ -1,7 +1,7 @@
1
1
  import { ref, openBlock, createElementBlock, createVNode, withCtx, mergeProps } from 'vue';
2
- import { a1 as makePanelTransparent, y as VIcon, al as activeTemplate } from './asWebComponent-DW1XzZkL.js';
2
+ import { a2 as makePanelTransparent, y as VIcon, al as activeTemplate } from './asWebComponent-N7ChSAQG.js';
3
3
  import { mdiViewDashboard } from '@mdi/js';
4
- import { V as VTooltip } from './VTooltip-BYTlbKer.js';
4
+ import { V as VTooltip } from './VTooltip-DKOCofTl.js';
5
5
 
6
6
  const _sfc_main = {
7
7
  __name: 'EodashLayoutSwitcher',
@@ -1,52 +1,12 @@
1
- import { onMounted, onUnmounted, watch, nextTick, ref, toRaw, computed, openBlock, createElementBlock, createElementVNode, unref, withDirectives, vShow } from 'vue';
1
+ import { onMounted, onUnmounted, watch, nextTick, ref, toRaw, computed, openBlock, createElementBlock, createElementVNode, unref, normalizeStyle } from 'vue';
2
2
  import '@eox/map';
3
3
  import '@eox/map/src/plugins/advancedLayersAndSources';
4
- import { a7 as registerProjection, a8 as getProjectionCode, a9 as availableMapProjection, aa as changeMapProjection, ab as eoxLayersKey, $ as useSTAcStore, ac as posIsSetFromUrl, ad as useOnLayersUpdate, ae as EodashCollection, af as mapPosition, a3 as mapEl, a2 as mapCompareEl, Z as datetime, a4 as eodashCompareCollections, a0 as eodashCollections, a5 as layerControlFormValue } from './asWebComponent-DW1XzZkL.js';
4
+ import { a8 as eoxLayersKey, $ as useSTAcStore, a9 as setMapProjFromCol, aa as posIsSetFromUrl, ab as useOnLayersUpdate, ac as EodashCollection, ad as mapPosition, a4 as mapEl, a3 as mapCompareEl, Z as datetime, a0 as eodashCollections, a5 as eodashCompareCollections, a6 as layerControlFormValue } from './asWebComponent-N7ChSAQG.js';
5
5
  import { storeToRefs } from 'pinia';
6
6
  import log from 'loglevel';
7
7
  import { useEventBus } from '@vueuse/core';
8
8
  import mustache from 'mustache';
9
9
 
10
- /*
11
- * eodashSTAC helpers that utilizes the app states or actions
12
- */
13
-
14
- /**
15
- * checks if there's a projection on the Collection and
16
- * updates {@link availableMapProjection}
17
- * @param {import('stac-ts').StacCollection} [STAcCollection]
18
- */
19
- const setMapProjFromCol = async (STAcCollection) => {
20
- // if a projection exists on the collection level
21
- log.debug("Checking for available map projection in indicator");
22
- const projection =
23
- /** @type {number | string | {name: string, def: string} | undefined} */
24
- (
25
- STAcCollection?.["eodash:mapProjection"] ||
26
- STAcCollection?.["proj:epsg"] ||
27
- STAcCollection?.["eodash:proj4_def"]
28
- );
29
- if (projection) {
30
- log.debug("Projection found", projection);
31
- await registerProjection(projection);
32
- const projectionCode = getProjectionCode(projection);
33
- if (availableMapProjection.value !== projectionCode) {
34
- log.debug(
35
- "Changing map projection",
36
- availableMapProjection.value,
37
- projectionCode,
38
- );
39
- await changeMapProjection(projection);
40
- }
41
- // set it for `EodashMapBtns`
42
- availableMapProjection.value = /** @type {string} */ (projectionCode);
43
- } else {
44
- // reset to default projection
45
- log.debug("Resetting projection to default EPSG:3857");
46
- await changeMapProjection((availableMapProjection.value = ""));
47
- }
48
- };
49
-
50
10
  /**
51
11
  * Holder for previous compare map view as it is overwritten by sync
52
12
  * @type { import("ol").View | null} mapElement
@@ -249,6 +209,7 @@ const createLayersConfig = async (
249
209
  * @param {import("vue").Ref<string>} datetime
250
210
  * @param {import("vue").Ref<Record<string,any>[]>} mapLayers
251
211
  * @param {import("vue").Ref<import("@eox/map").EOxMap| null>} partnerMap
212
+ * @param {boolean} zoomToExtent
252
213
  */
253
214
  const useInitMap = (
254
215
  mapElement,
@@ -257,6 +218,7 @@ const useInitMap = (
257
218
  datetime,
258
219
  mapLayers,
259
220
  partnerMap,
221
+ zoomToExtent,
260
222
  ) => {
261
223
  log.debug(
262
224
  "InitMap",
@@ -349,29 +311,31 @@ const useInitMap = (
349
311
  datetime.value = endInterval.toISOString();
350
312
  }
351
313
 
352
- // Try to move map view to extent only when main
353
- // indicator and map changes
354
- if (
355
- mapElement?.value?.id === "main" &&
356
- updatedStac.extent?.spatial.bbox &&
357
- !posIsSetFromUrl.value
358
- ) {
359
- // Sanitize extent,
360
- const b = updatedStac.extent?.spatial.bbox[0];
361
- const sanitizedExtent = [
362
- b?.[0] > -180 ? b?.[0] : -180,
363
- b?.[1] > -90 ? b?.[1] : -90,
364
- b?.[2] < 180 ? b?.[2] : 180,
365
- b?.[3] < 90 ? b?.[3] : 90,
366
- ];
367
-
368
- const reprojExtent = mapElement.value?.transformExtent(
369
- sanitizedExtent,
370
- "EPSG:4326",
371
- mapElement.value?.map?.getView().getProjection(),
372
- );
373
- /** @type {import("@eox/map").EOxMap} */
374
- (mapElement.value).zoomExtent = reprojExtent;
314
+ if (zoomToExtent) {
315
+ // Try to move map view to extent only when main
316
+ // indicator and map changes
317
+ if (
318
+ mapElement?.value?.id === "main" &&
319
+ updatedStac.extent?.spatial.bbox &&
320
+ !posIsSetFromUrl.value
321
+ ) {
322
+ // Sanitize extent,
323
+ const b = updatedStac.extent?.spatial.bbox[0];
324
+ const sanitizedExtent = [
325
+ b?.[0] > -180 ? b?.[0] : -180,
326
+ b?.[1] > -90 ? b?.[1] : -90,
327
+ b?.[2] < 180 ? b?.[2] : 180,
328
+ b?.[3] < 90 ? b?.[3] : 90,
329
+ ];
330
+
331
+ const reprojExtent = mapElement.value?.transformExtent(
332
+ sanitizedExtent,
333
+ "EPSG:4326",
334
+ mapElement.value?.map?.getView().getProjection(),
335
+ );
336
+ /** @type {import("@eox/map").EOxMap} */
337
+ (mapElement.value).zoomExtent = reprojExtent;
338
+ }
375
339
  }
376
340
  if (posIsSetFromUrl.value) {
377
341
  posIsSetFromUrl.value = false;
@@ -400,14 +364,15 @@ const useInitMap = (
400
364
  /**
401
365
  *
402
366
  * @param {EodashCollection[]} eodashCols
403
- * @param {import("vue").Ref<import("@/types").EodashStyleJson["tooltip"]>} tooltipProperties
367
+ * @param {import("vue").Ref<Exclude<import("@/types").EodashStyleJson["tooltip"],undefined>>} tooltipProperties
404
368
  */
405
369
  const useUpdateTooltipProperties = (eodashCols, tooltipProperties) => {
406
370
  useOnLayersUpdate(async () => {
407
- tooltipProperties.value = [];
371
+ const tooltips = [];
408
372
  for (const ec of eodashCols) {
409
- tooltipProperties.value.push(...(await ec.getToolTipProperties()));
373
+ tooltips.push(...(await ec.getToolTipProperties()));
410
374
  }
375
+ tooltipProperties.value = tooltips;
411
376
  log.debug("Updated tooltip properties", tooltipProperties.value);
412
377
  });
413
378
  };
@@ -449,11 +414,16 @@ const _sfc_main = {
449
414
  type: Number,
450
415
  default: 4,
451
416
  },
417
+ zoomToExtent: {
418
+ type: Boolean,
419
+ default: true,
420
+ },
452
421
  },
453
422
  setup(__props) {
454
423
 
455
424
  const props = __props;
456
- /** @type {import("vue").Ref<import("@/types").EodashStyleJson["tooltip"]>} */
425
+
426
+ /** @type {import("vue").Ref<Exclude<import("@/types").EodashStyleJson["tooltip"], undefined>>} */
457
427
  const tooltipProperties = ref([]);
458
428
 
459
429
  const initialCenter = toRaw([
@@ -519,6 +489,7 @@ onMounted(() => {
519
489
  datetime,
520
490
  eoxMapCompareLayers,
521
491
  eoxMap,
492
+ false,
522
493
  );
523
494
  }
524
495
 
@@ -530,9 +501,15 @@ onMounted(() => {
530
501
  datetime,
531
502
  eoxMapLayers,
532
503
  compareMap,
504
+ props.zoomToExtent,
533
505
  );
534
506
  });
507
+
535
508
  useUpdateTooltipProperties(eodashCollections, tooltipProperties);
509
+
510
+ const tooltipStyles = computed(() => ({
511
+ visibility: tooltipProperties.value.length ? "visible" : "hidden",
512
+ }));
536
513
  /**
537
514
  * @param {{key:string; value:string}} param
538
515
  * @returns {{key:string; value?:string} | undefined}
@@ -578,9 +555,10 @@ return (_ctx, _cache) => {
578
555
  ".zoom": unref(initialZoom),
579
556
  ".layers": eoxMapLayers.value
580
557
  }, [
581
- withDirectives(createElementVNode("eox-map-tooltip", { ".propertyTransform": tooltipPropertyTransform }, null, 544 /* NEED_HYDRATION, NEED_PATCH */), [
582
- [vShow, tooltipProperties.value?.length]
583
- ])
558
+ createElementVNode("eox-map-tooltip", {
559
+ style: normalizeStyle(tooltipStyles.value),
560
+ ".propertyTransform": tooltipPropertyTransform
561
+ }, null, 36 /* STYLE, NEED_HYDRATION */)
584
562
  ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_2),
585
563
  createElementVNode("eox-map", {
586
564
  class: "fill-height fill-width overflow-none",
@@ -1,9 +1,9 @@
1
1
  import { computed, ref, openBlock, createElementBlock, createBlock, unref, createCommentVNode, createVNode, withCtx } from 'vue';
2
- import { _ as _export_sfc, t as useDisplay, a1 as makePanelTransparent, V as VBtn, a9 as availableMapProjection, aa as changeMapProjection, ag as setActiveTemplate } from './asWebComponent-DW1XzZkL.js';
2
+ import { _ as _export_sfc, t as useDisplay, a2 as makePanelTransparent, V as VBtn, ae as availableMapProjection, af as changeMapProjection, ag as setActiveTemplate } from './asWebComponent-N7ChSAQG.js';
3
3
  import { mdiMapPlus, mdiEarthBox, mdiCompare } from '@mdi/js';
4
- import ExportState from './ExportState-5JyTshJH.js';
5
- import _sfc_main$1 from './PopUp-Bmfn3N_4.js';
6
- import _sfc_main$2 from './EodashItemFilter-G7YsYO3B.js';
4
+ import ExportState from './ExportState-DVosrSNY.js';
5
+ import _sfc_main$1 from './PopUp-BFcSuX3b.js';
6
+ import _sfc_main$2 from './EodashItemFilter-C2i4lnM1.js';
7
7
 
8
8
  const _sfc_main = {
9
9
  __name: 'EodashMapBtns',
@@ -1,8 +1,8 @@
1
- import { createVNode, watch, onMounted, nextTick, ref, openBlock, createElementBlock, createCommentVNode, toRaw, withCtx, createElementVNode, createBlock, createTextVNode } from 'vue';
1
+ import { createVNode, watch, onMounted, nextTick, ref, useTemplateRef, computed, openBlock, createElementBlock, createCommentVNode, toRaw, normalizeStyle, withCtx, createElementVNode, createBlock, createTextVNode } from 'vue';
2
2
  import '@eox/chart';
3
3
  import '@eox/drawtools';
4
4
  import '@eox/jsonform';
5
- import { p as propsFactory, b as makeComponentProps, H as makeDimensionProps, c as makeTagProps, g as genericComponent, f as useRtl, J as useDimension, a as useRender, ah as axios, ai as getLayers, a3 as mapEl, aj as extractLayerConfig, ab as eoxLayersKey, $ as useSTAcStore, ad as useOnLayersUpdate, V as VBtn } from './asWebComponent-DW1XzZkL.js';
5
+ import { p as propsFactory, b as makeComponentProps, H as makeDimensionProps, c as makeTagProps, g as genericComponent, f as useRtl, J as useDimension, a as useRender, ah as axios, ai as getLayers, a4 as mapEl, aj as extractLayerConfig, a8 as eoxLayersKey, $ as useSTAcStore, ab as useOnLayersUpdate, V as VBtn } from './asWebComponent-N7ChSAQG.js';
6
6
  import { storeToRefs } from 'pinia';
7
7
  import { useEventBus } from '@vueuse/core';
8
8
  import { isMulti } from '@eox/jsonform/src/custom-inputs/spatial/utils';
@@ -382,7 +382,7 @@ async function processGeoTiff(links, jsonformValue, layerId, isPolling) {
382
382
  /** @type {Record<string,any>|undefined} */
383
383
  let style;
384
384
  if (flatStyleJSON) {
385
- const extracted = extractLayerConfig(flatStyleJSON);
385
+ const extracted = extractLayerConfig(layerId ?? "", flatStyleJSON);
386
386
  layerConfig = extracted.layerConfig;
387
387
  style = extracted.style;
388
388
  }
@@ -653,7 +653,10 @@ async function initProcess({
653
653
  }
654
654
  }
655
655
 
656
- const _hoisted_1 = { class: "process-container" };
656
+ const _hoisted_1 = {
657
+ ref: "container",
658
+ class: "process-container"
659
+ };
657
660
  const _hoisted_2 = [".schema"];
658
661
  const _hoisted_3 = [".spec", ".dataValues"];
659
662
 
@@ -677,6 +680,9 @@ const jsonformSchema = ref(null);
677
680
 
678
681
  /** @type {import("vue").Ref<import("@eox/jsonform").EOxJSONForm | null>} */
679
682
  const jsonformEl = ref(null);
683
+
684
+ const containerEl = useTemplateRef("container");
685
+
680
686
  const loading = ref(false);
681
687
 
682
688
  const autoExec = ref(false);
@@ -746,8 +752,8 @@ onMounted(async () => {
746
752
  }
747
753
  });
748
754
 
749
- useOnLayersUpdate(
750
- async () =>
755
+ useOnLayersUpdate(async (evt, _payload) => {
756
+ if (evt === "layers:updated") {
751
757
  await initProcess({
752
758
  //@ts-expect-error TODO
753
759
  selectedStac,
@@ -758,8 +764,9 @@ useOnLayersUpdate(
758
764
  processResults,
759
765
  loading,
760
766
  isPolling,
761
- }),
762
- );
767
+ });
768
+ }
769
+ });
763
770
 
764
771
  const startProcess = async () => {
765
772
  const errors = jsonformEl.value?.editor.validate();
@@ -784,6 +791,20 @@ const startProcess = async () => {
784
791
  };
785
792
  useAutoExec(autoExec, jsonformEl, jsonformSchema, startProcess);
786
793
 
794
+ const chartStyles = computed(() => {
795
+ /** @type {Record<string,string> }*/
796
+ const styles = {};
797
+ if (!chartSpec.value?.["height"]) {
798
+ styles["height"] =
799
+ Math.max(
800
+ (containerEl.value?.offsetHeight ?? 0) -
801
+ (jsonformEl.value?.offsetHeight ?? 0),
802
+ 200,
803
+ ) + "px";
804
+ }
805
+ return styles;
806
+ });
807
+
787
808
  return (_ctx, _cache) => {
788
809
 
789
810
 
@@ -802,8 +823,9 @@ return (_ctx, _cache) => {
802
823
  key: 1,
803
824
  class: "chart",
804
825
  ".spec": toRaw(chartSpec.value),
805
- ".dataValues": toRaw(chartData.value)
806
- }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_3))
826
+ ".dataValues": toRaw(chartData.value),
827
+ style: normalizeStyle(chartStyles.value)
828
+ }, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_3))
807
829
  : createCommentVNode("v-if", true),
808
830
  createVNode(VContainer, null, {
809
831
  default: withCtx(() => [
@@ -838,7 +860,7 @@ return (_ctx, _cache) => {
838
860
  ]),
839
861
  _: 1 /* STABLE */
840
862
  })
841
- ]))
863
+ ], 512 /* NEED_PATCH */))
842
864
  }
843
865
  }
844
866
 
@@ -1,6 +1,6 @@
1
1
  import { openBlock, createElementBlock, createElementVNode, unref } from 'vue';
2
2
  import '@eox/stacinfo';
3
- import { ak as currentUrl } from './asWebComponent-DW1XzZkL.js';
3
+ import { ak as currentUrl } from './asWebComponent-N7ChSAQG.js';
4
4
 
5
5
  const _hoisted_1 = { class: "flex-grow-1 fill-height overflow-auto" };
6
6
  const _hoisted_2 = [".for", ".allowHtml", ".body", ".featured", ".footer", ".styleOverride", ".header", ".subheader", ".tags"];
@@ -1,9 +1,9 @@
1
1
  import { ref, computed, openBlock, createElementBlock, createElementVNode, createBlock, unref, createCommentVNode, createVNode, withCtx, mergeProps } from 'vue';
2
- import _sfc_main$2 from './PopUp-Bmfn3N_4.js';
3
- import _sfc_main$3 from './EodashItemFilter-G7YsYO3B.js';
4
- import _sfc_main$1 from './EodashLayoutSwitcher-DRKm8A8U.js';
2
+ import _sfc_main$2 from './PopUp-BFcSuX3b.js';
3
+ import _sfc_main$3 from './EodashItemFilter-C2i4lnM1.js';
4
+ import _sfc_main$1 from './EodashLayoutSwitcher-gLe7G8Qn.js';
5
5
  import { mdiViewDashboard, mdiPlus } from '@mdi/js';
6
- import { t as useDisplay, a1 as makePanelTransparent, V as VBtn } from './asWebComponent-DW1XzZkL.js';
6
+ import { t as useDisplay, a2 as makePanelTransparent, V as VBtn } from './asWebComponent-N7ChSAQG.js';
7
7
 
8
8
  const _hoisted_1 = { class: "d-flex flex-row justify-space-between pa-4 align-center" };
9
9
 
@@ -1,9 +1,9 @@
1
1
  import { createVNode, Fragment, computed, withDirectives, mergeProps, resolveDirective, toRef, mergeModels, useModel, ref, openBlock, createBlock, withCtx, createElementVNode, createTextVNode, toDisplayString, unref, createElementBlock, createCommentVNode, renderList } from 'vue';
2
2
  import { mdiClipboardCheckOutline, mdiContentCopy } from '@mdi/js';
3
- import _sfc_main$1 from './PopUp-Bmfn3N_4.js';
4
- import { an as createSimpleFunctional, g as genericComponent, b as makeComponentProps, D as provideDefaults, a as useRender, p as propsFactory, c as makeTagProps, I as IconValue, K as makeBorderProps, A as makeDensityProps, M as makeRoundedProps, ao as makeSizeProps, d as makeThemeProps, ap as makeVariantProps, e as provideTheme, N as useBorder, aq as useVariant, B as useDensity, P as useRounded, ar as useSize, y as VIcon, Q as VDefaultsProvider, as as genOverlays, H as makeDimensionProps, L as makeElevationProps, at as makeLoaderProps, au as makeLocationProps, av as makePositionProps, aw as makeRouterProps, ax as Ripple, J as useDimension, O as useElevation, ay as useLoader, az as useLocation, aA as usePosition, aB as useLink, aC as LoaderSlot, u as useTextColor, q as convertToUnit, _ as _export_sfc, ai as getLayers, aD as removeUnneededProperties, aE as VRow, aF as VCol, V as VBtn, aG as copyToClipBoard, af as mapPosition, a9 as availableMapProjection } from './asWebComponent-DW1XzZkL.js';
5
- import { a as VExpandTransition } from './index-DvFppNyk.js';
6
- import { V as VImg } from './VImg-CUF4S39i.js';
3
+ import _sfc_main$1 from './PopUp-BFcSuX3b.js';
4
+ import { an as createSimpleFunctional, g as genericComponent, b as makeComponentProps, D as provideDefaults, a as useRender, p as propsFactory, c as makeTagProps, I as IconValue, K as makeBorderProps, A as makeDensityProps, M as makeRoundedProps, ao as makeSizeProps, d as makeThemeProps, ap as makeVariantProps, e as provideTheme, N as useBorder, aq as useVariant, B as useDensity, P as useRounded, ar as useSize, y as VIcon, Q as VDefaultsProvider, as as genOverlays, H as makeDimensionProps, L as makeElevationProps, at as makeLoaderProps, au as makeLocationProps, av as makePositionProps, aw as makeRouterProps, ax as Ripple, J as useDimension, O as useElevation, ay as useLoader, az as useLocation, aA as usePosition, aB as useLink, aC as LoaderSlot, u as useTextColor, q as convertToUnit, _ as _export_sfc, ai as getLayers, aD as removeUnneededProperties, aE as VRow, aF as VCol, V as VBtn, aG as copyToClipBoard, ad as mapPosition, ae as availableMapProjection } from './asWebComponent-N7ChSAQG.js';
5
+ import { a as VExpandTransition } from './index-BXi80Gr9.js';
6
+ import { V as VImg } from './VImg-BO2Ysvsu.js';
7
7
 
8
8
  // Styles
9
9
  const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer');
@@ -1,5 +1,5 @@
1
1
  import { ref, toRef, shallowRef, computed, createVNode, watchEffect, inject, openBlock, createBlock, unref, withCtx, createElementVNode, toDisplayString, createTextVNode } from 'vue';
2
- import { p as propsFactory, K as makeBorderProps, b as makeComponentProps, L as makeElevationProps, T as makeLayoutItemProps, M as makeRoundedProps, c as makeTagProps, d as makeThemeProps, g as genericComponent, e as provideTheme, C as useBackgroundColor, N as useBorder, O as useElevation, P as useRounded, v as useResizeObserver, U as useToggleScope, a as useRender, q as convertToUnit, W as useLayoutItem, _ as _export_sfc, X as eodashKey, t as useDisplay } from './asWebComponent-DW1XzZkL.js';
2
+ import { p as propsFactory, K as makeBorderProps, b as makeComponentProps, L as makeElevationProps, T as makeLayoutItemProps, M as makeRoundedProps, c as makeTagProps, d as makeThemeProps, g as genericComponent, e as provideTheme, C as useBackgroundColor, N as useBorder, O as useElevation, P as useRounded, v as useResizeObserver, U as useToggleScope, a as useRender, q as convertToUnit, W as useLayoutItem, _ as _export_sfc, X as eodashKey, t as useDisplay } from './asWebComponent-N7ChSAQG.js';
3
3
 
4
4
  const makeVFooterProps = propsFactory({
5
5
  app: Boolean,
@@ -1,7 +1,7 @@
1
1
  import { createVNode, toRef, shallowRef, computed, ref, watch, onMounted, onBeforeUnmount, mergeProps, watchEffect, inject, openBlock, createBlock, withCtx, createTextVNode, toDisplayString, unref } from 'vue';
2
- import { p as propsFactory, b as makeComponentProps, c as makeTagProps, g as genericComponent, a as useRender, K as makeBorderProps, L as makeElevationProps, M as makeRoundedProps, d as makeThemeProps, C as useBackgroundColor, N as useBorder, O as useElevation, P as useRounded, e as provideTheme, f as useRtl, D as provideDefaults, Q as VDefaultsProvider, q as convertToUnit, R as clamp, S as consoleWarn, T as makeLayoutItemProps, j as useProxiedModel, U as useToggleScope, W as useLayoutItem, _ as _export_sfc, X as eodashKey } from './asWebComponent-DW1XzZkL.js';
3
- import { a as VExpandTransition } from './index-DvFppNyk.js';
4
- import { V as VImg } from './VImg-CUF4S39i.js';
2
+ import { p as propsFactory, b as makeComponentProps, c as makeTagProps, g as genericComponent, a as useRender, K as makeBorderProps, L as makeElevationProps, M as makeRoundedProps, d as makeThemeProps, C as useBackgroundColor, N as useBorder, O as useElevation, P as useRounded, e as provideTheme, f as useRtl, D as provideDefaults, Q as VDefaultsProvider, q as convertToUnit, R as clamp, S as consoleWarn, T as makeLayoutItemProps, j as useProxiedModel, U as useToggleScope, W as useLayoutItem, _ as _export_sfc, X as eodashKey } from './asWebComponent-N7ChSAQG.js';
3
+ import { a as VExpandTransition } from './index-BXi80Gr9.js';
4
+ import { V as VImg } from './VImg-BO2Ysvsu.js';
5
5
  import { u as useSsrBoot } from './ssrBoot-BP7SYRyC.js';
6
6
 
7
7
  const makeVToolbarTitleProps = propsFactory({
@@ -1,10 +1,10 @@
1
1
  import { ref, computed, createVNode, mergeProps, Fragment, shallowRef, watch, provide, withDirectives, resolveDirective, inject, vShow, nextTick, toRef, useCssVars, onMounted, openBlock, createBlock, withCtx, Suspense, unref, resolveDynamicComponent, createCommentVNode, createElementBlock, renderList, createElementVNode, createTextVNode, toDisplayString } from 'vue';
2
- import { k as keys, p as propsFactory, o as omit, m as makeVBtnProps, g as genericComponent, u as useTextColor, a as useRender, V as VBtn, b as makeComponentProps, c as makeTagProps, d as makeThemeProps, e as provideTheme, f as useRtl, h as useLocale, i as useGroup, j as useProxiedModel, l as makeGroupItemProps, n as useGroupItem, q as convertToUnit, I as IconValue, r as makeDisplayProps, s as makeGroupProps, t as useDisplay, v as useResizeObserver, w as useGoTo, x as IN_BROWSER, y as VIcon, z as focusableChildren, A as makeDensityProps, B as useDensity, C as useBackgroundColor, D as provideDefaults, E as isObject, _ as _export_sfc, F as useDefineTemplate, G as useLayout } from './asWebComponent-DW1XzZkL.js';
3
- import { V as VMain } from './VMain-CQpXnzDR.js';
4
- import { f as forwardRefs, a as animate, s as standardEasing, m as makeLazyProps, u as useLazy, b as useScopeId } from './forwardRefs-gx1Fzngc.js';
2
+ import { k as keys, p as propsFactory, o as omit, m as makeVBtnProps, g as genericComponent, u as useTextColor, a as useRender, V as VBtn, b as makeComponentProps, c as makeTagProps, d as makeThemeProps, e as provideTheme, f as useRtl, h as useLocale, i as useGroup, j as useProxiedModel, l as makeGroupItemProps, n as useGroupItem, q as convertToUnit, I as IconValue, r as makeDisplayProps, s as makeGroupProps, t as useDisplay, v as useResizeObserver, w as useGoTo, x as IN_BROWSER, y as VIcon, z as focusableChildren, A as makeDensityProps, B as useDensity, C as useBackgroundColor, D as provideDefaults, E as isObject, _ as _export_sfc, F as useDefineTemplate, G as useLayout } from './asWebComponent-N7ChSAQG.js';
3
+ import { V as VMain } from './VMain-fx1gaM7Y.js';
4
+ import { f as forwardRefs, a as animate, s as standardEasing, m as makeLazyProps, u as useLazy, b as useScopeId } from './forwardRefs-C2UOEnvr.js';
5
5
  import { u as useSsrBoot } from './ssrBoot-BP7SYRyC.js';
6
- import { M as MaybeTransition } from './transition-j2eWJYMg.js';
7
- import { V as VFadeTransition } from './index-DvFppNyk.js';
6
+ import { M as MaybeTransition } from './transition-w_2EtUxa.js';
7
+ import { V as VFadeTransition } from './index-BXi80Gr9.js';
8
8
 
9
9
  // Utilities
10
10
  const handleGesture = wrapper => {
@@ -818,6 +818,14 @@ const VSlideGroup = genericComponent()({
818
818
  toFocus('last');
819
819
  }
820
820
  }
821
+ function getSiblingElement(el, location) {
822
+ if (!el) return undefined;
823
+ let sibling = el;
824
+ do {
825
+ sibling = sibling?.[location === 'next' ? 'nextElementSibling' : 'previousElementSibling'];
826
+ } while (sibling?.hasAttribute('disabled'));
827
+ return sibling;
828
+ }
821
829
  function focus(location) {
822
830
  if (!contentRef.el) return;
823
831
  let el;
@@ -825,15 +833,17 @@ const VSlideGroup = genericComponent()({
825
833
  const focusable = focusableChildren(contentRef.el);
826
834
  el = focusable[0];
827
835
  } else if (location === 'next') {
828
- el = contentRef.el.querySelector(':focus')?.nextElementSibling;
836
+ el = getSiblingElement(contentRef.el.querySelector(':focus'), location);
829
837
  if (!el) return focus('first');
830
838
  } else if (location === 'prev') {
831
- el = contentRef.el.querySelector(':focus')?.previousElementSibling;
839
+ el = getSiblingElement(contentRef.el.querySelector(':focus'), location);
832
840
  if (!el) return focus('last');
833
841
  } else if (location === 'first') {
834
842
  el = contentRef.el.firstElementChild;
843
+ if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'next');
835
844
  } else if (location === 'last') {
836
845
  el = contentRef.el.lastElementChild;
846
+ if (el?.hasAttribute('disabled')) el = getSiblingElement(el, 'prev');
837
847
  }
838
848
  if (el) {
839
849
  el.focus({
@@ -1,7 +1,7 @@
1
1
  import { createVNode, Transition, mergeProps, ref, onBeforeUnmount, watch, nextTick, toRef, mergeModels, useModel, openBlock, createElementBlock, withCtx, createBlock, resolveDynamicComponent, unref, createCommentVNode, renderSlot } from 'vue';
2
- import { g as genericComponent, p as propsFactory, j as useProxiedModel, x as IN_BROWSER, a as useRender, z as focusableChildren, Q as VDefaultsProvider, K as makeBorderProps, b as makeComponentProps, H as makeDimensionProps, L as makeElevationProps, au as makeLocationProps, av as makePositionProps, M as makeRoundedProps, c as makeTagProps, d as makeThemeProps, e as provideTheme, C as useBackgroundColor, N as useBorder, J as useDimension, O as useElevation, az as useLocation, aA as usePosition, P as useRounded, aJ as useDefineWidgets } from './asWebComponent-DW1XzZkL.js';
3
- import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-DUnITwM1.js';
4
- import { a as animate, d as deceleratedEasing, s as standardEasing, c as acceleratedEasing, g as getTargetBox, n as nullifyTransforms, b as useScopeId, f as forwardRefs } from './forwardRefs-gx1Fzngc.js';
2
+ import { g as genericComponent, p as propsFactory, j as useProxiedModel, x as IN_BROWSER, a as useRender, z as focusableChildren, Q as VDefaultsProvider, K as makeBorderProps, b as makeComponentProps, H as makeDimensionProps, L as makeElevationProps, au as makeLocationProps, av as makePositionProps, M as makeRoundedProps, c as makeTagProps, d as makeThemeProps, e as provideTheme, C as useBackgroundColor, N as useBorder, J as useDimension, O as useElevation, az as useLocation, aA as usePosition, P as useRounded, aJ as useDefineWidgets } from './asWebComponent-N7ChSAQG.js';
3
+ import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-CiQn3F6n.js';
4
+ import { a as animate, d as deceleratedEasing, s as standardEasing, c as acceleratedEasing, g as getTargetBox, n as nullifyTransforms, b as useScopeId, f as forwardRefs } from './forwardRefs-C2UOEnvr.js';
5
5
 
6
6
  const makeVDialogTransitionProps = propsFactory({
7
7
  target: [Object, Array]
@@ -1,6 +1,6 @@
1
1
  import { createVNode, computed, toRef, shallowRef, ref, watch, onBeforeMount, nextTick, onBeforeUnmount, withDirectives, mergeProps, Fragment, resolveDirective, vShow } from 'vue';
2
- import { aH as SUPPORTS_INTERSECTION, p as propsFactory, b as makeComponentProps, H as makeDimensionProps, g as genericComponent, J as useDimension, a as useRender, M as makeRoundedProps, C as useBackgroundColor, P as useRounded, aI as getCurrentInstance, q as convertToUnit } from './asWebComponent-DW1XzZkL.js';
3
- import { m as makeTransitionProps, M as MaybeTransition } from './transition-j2eWJYMg.js';
2
+ import { aH as SUPPORTS_INTERSECTION, p as propsFactory, b as makeComponentProps, H as makeDimensionProps, g as genericComponent, J as useDimension, a as useRender, M as makeRoundedProps, C as useBackgroundColor, P as useRounded, aI as getCurrentInstance, q as convertToUnit } from './asWebComponent-N7ChSAQG.js';
3
+ import { m as makeTransitionProps, M as MaybeTransition } from './transition-w_2EtUxa.js';
4
4
 
5
5
  // Utilities
6
6
  function mounted(el, binding) {
@@ -1,5 +1,5 @@
1
1
  import { createVNode } from 'vue';
2
- import { p as propsFactory, b as makeComponentProps, H as makeDimensionProps, c as makeTagProps, g as genericComponent, J as useDimension, G as useLayout, a as useRender } from './asWebComponent-DW1XzZkL.js';
2
+ import { p as propsFactory, b as makeComponentProps, H as makeDimensionProps, c as makeTagProps, g as genericComponent, J as useDimension, G as useLayout, a as useRender } from './asWebComponent-N7ChSAQG.js';
3
3
  import { u as useSsrBoot } from './ssrBoot-BP7SYRyC.js';
4
4
 
5
5
  const makeVMainProps = propsFactory({
@@ -1,7 +1,7 @@
1
1
  import { ref, watch, onScopeDispose, computed, nextTick, watchEffect, effectScope, inject, mergeProps, shallowRef, onMounted, reactive, provide, readonly, toRaw, warn, toRef, onBeforeUnmount, createVNode, Fragment, Teleport, withDirectives, vShow, resolveDirective, Transition } from 'vue';
2
- import { aK as isOn, aL as eventName, p as propsFactory, x as IN_BROWSER, U as useToggleScope, aM as destructComputed, aN as parseAnchor, aO as flipSide, aP as flipAlign, aQ as flipCorner, Y as consoleError, aR as getAxis, q as convertToUnit, R as clamp, aS as defer, aI as getCurrentInstance, aT as templateRef, aU as matchesSelector, t as useDisplay, b as makeComponentProps, H as makeDimensionProps, d as makeThemeProps, g as genericComponent, j as useProxiedModel, e as provideTheme, f as useRtl, C as useBackgroundColor, J as useDimension, aV as useRouter, a as useRender, aW as useBackButton } from './asWebComponent-DW1XzZkL.js';
3
- import { g as getTargetBox, B as Box, e as getOverflow, n as nullifyTransforms, m as makeLazyProps, u as useLazy, b as useScopeId, a as animate, s as standardEasing } from './forwardRefs-gx1Fzngc.js';
4
- import { m as makeTransitionProps, M as MaybeTransition } from './transition-j2eWJYMg.js';
2
+ import { aK as isOn, aL as eventName, p as propsFactory, x as IN_BROWSER, U as useToggleScope, aM as destructComputed, aN as parseAnchor, aO as flipSide, aP as flipAlign, aQ as flipCorner, Y as consoleError, aR as getAxis, q as convertToUnit, R as clamp, aS as defer, aI as getCurrentInstance, aT as templateRef, aU as matchesSelector, t as useDisplay, b as makeComponentProps, H as makeDimensionProps, d as makeThemeProps, g as genericComponent, j as useProxiedModel, e as provideTheme, f as useRtl, C as useBackgroundColor, J as useDimension, aV as useRouter, a as useRender, aW as useBackButton } from './asWebComponent-N7ChSAQG.js';
3
+ import { g as getTargetBox, B as Box, e as getOverflow, n as nullifyTransforms, m as makeLazyProps, u as useLazy, b as useScopeId, a as animate, s as standardEasing } from './forwardRefs-C2UOEnvr.js';
4
+ import { m as makeTransitionProps, M as MaybeTransition } from './transition-w_2EtUxa.js';
5
5
 
6
6
  // Utilities
7
7
  const handlers = new WeakMap();
@@ -1,7 +1,7 @@
1
1
  import { computed, ref, mergeProps, createVNode } from 'vue';
2
- import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-DUnITwM1.js';
3
- import { b as useScopeId, f as forwardRefs } from './forwardRefs-gx1Fzngc.js';
4
- import { p as propsFactory, o as omit, g as genericComponent, j as useProxiedModel, am as getUid, a as useRender } from './asWebComponent-DW1XzZkL.js';
2
+ import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-CiQn3F6n.js';
3
+ import { b as useScopeId, f as forwardRefs } from './forwardRefs-C2UOEnvr.js';
4
+ import { p as propsFactory, o as omit, g as genericComponent, j as useProxiedModel, am as getUid, a as useRender } from './asWebComponent-N7ChSAQG.js';
5
5
 
6
6
  const makeVTooltipProps = propsFactory({
7
7
  id: String,
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, nextTick, openBlock, createElementBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, normalizeStyle, createBlock, resolveDynamicComponent, mergeProps } from 'vue';
2
- import { aJ as useDefineWidgets, G as useLayout } from './asWebComponent-DW1XzZkL.js';
2
+ import { aJ as useDefineWidgets, G as useLayout } from './asWebComponent-N7ChSAQG.js';
3
3
  import 'animated-details';
4
4
 
5
5
  const _sfc_main = {