@eodash/eodash 5.0.0-rc.2.5 → 5.0.0

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 (77) hide show
  1. package/core/client/composables/DefineWidgets.js +8 -1
  2. package/core/client/eodash.js +9 -9
  3. package/core/client/eodashSTAC/createLayers.js +4 -18
  4. package/core/client/eodashSTAC/helpers.js +23 -0
  5. package/core/client/store/stac.js +3 -1
  6. package/core/client/types.ts +125 -19
  7. package/core/client/utils/states.js +9 -0
  8. package/dist/client/{DashboardLayout-BX3Sm_Vx.js → DashboardLayout-CkWvOMOW.js} +2 -2
  9. package/dist/client/{DynamicWebComponent-BqoHM1np.js → DynamicWebComponent-DYBbpvUK.js} +1 -1
  10. package/dist/client/{EodashDatePicker-BoWV2vc8.js → EodashDatePicker-CALmW3SI.js} +3 -83
  11. package/dist/client/{EodashItemFilter-127fZLyK.js → EodashItemFilter-DlQiE713.js} +1 -1
  12. package/dist/client/{EodashLayerControl-B-pZaizw.js → EodashLayerControl-DEzEbft7.js} +8 -2
  13. package/dist/client/{EodashLayoutSwitcher-DwexHfOD.js → EodashLayoutSwitcher-CDeCV8F-.js} +2 -2
  14. package/dist/client/{EodashMapBtns-Jfn3bpWD.js → EodashMapBtns-CktQCfa-.js} +36 -12
  15. package/dist/client/{EodashStacInfo-STq_bW7S.js → EodashStacInfo-DPPxDkF6.js} +7 -1
  16. package/dist/client/{EodashTools-uxSuJhVJ.js → EodashTools-CUaL9s4H.js} +5 -4
  17. package/dist/client/{ExportState-Ckcb6u01.js → ExportState-DjyIZVhl.js} +27 -12
  18. package/dist/client/{Footer-C8JP-coH.js → Footer-DyL0JoWt.js} +1 -1
  19. package/dist/client/{Header-Dxx7q9FW.js → Header-B5Dgty9l.js} +3 -3
  20. package/dist/client/{MobileLayout-BE19Peep.js → MobileLayout-CRsg_5Q4.js} +5 -5
  21. package/dist/client/{PopUp-D3IyjsN4.js → PopUp-BfB8s_ki.js} +3 -3
  22. package/dist/client/ProcessList-DTefwQZx.js +484 -0
  23. package/dist/client/{VImg-BmCNSu3X.js → VImg-FD1WVphJ.js} +2 -2
  24. package/dist/client/{VMain-eZDKIfmJ.js → VMain-DJKG4SvM.js} +1 -1
  25. package/dist/client/{VOverlay-BS-E4Z6g.js → VOverlay-BzOdRu9h.js} +15 -6
  26. package/dist/client/{VTooltip-BMsliOuh.js → VTooltip-CfeefrXI.js} +3 -3
  27. package/dist/client/{WidgetsContainer-Cl6M5R5c.js → WidgetsContainer-C2TaTdb6.js} +1 -1
  28. package/dist/client/{asWebComponent-Df8nUiLs.js → asWebComponent-CLhcT715.js} +100 -96
  29. package/dist/client/eo-dash.css +2 -2
  30. package/dist/client/eo-dash.js +1 -1
  31. package/dist/client/{forwardRefs-lhDuXD-N.js → forwardRefs-Bon_Kku1.js} +9 -9
  32. package/dist/client/index-4CT7Tz83.js +85 -0
  33. package/dist/client/{index-Bt5GEGxl.js → index-Bm9cbtx5.js} +1 -1
  34. package/dist/client/{EodashMap-BSR7_wRA.js → index-CIHH_3dW.js} +101 -80
  35. package/dist/client/{EodashProcess-CpbZPYBp.js → index-DiGDvTQU.js} +346 -468
  36. package/dist/client/{transition-DHEuQX4I.js → transition-C5I57hn6.js} +1 -1
  37. package/dist/types/core/client/components/MobileLayout.vue.d.ts +9 -9
  38. package/dist/types/core/client/eodashSTAC/helpers.d.ts +3 -2
  39. package/dist/types/core/client/types.d.ts +83 -17
  40. package/dist/types/core/client/utils/states.d.ts +7 -0
  41. package/dist/types/widgets/EodashDatePicker.vue.d.ts +4 -4
  42. package/dist/types/widgets/EodashItemFilter.vue.d.ts +18 -18
  43. package/dist/types/widgets/EodashLayerControl.vue.d.ts +2 -2
  44. package/dist/types/widgets/EodashLayoutSwitcher.vue.d.ts +2 -2
  45. package/dist/types/widgets/EodashMap/methods/create-layers-config.d.ts +9 -0
  46. package/dist/types/widgets/EodashMap/methods/index.d.ts +5 -0
  47. package/dist/types/widgets/EodashMapBtns.vue.d.ts +8 -2
  48. package/dist/types/widgets/EodashProcess/ProcessList.vue.d.ts +2 -0
  49. package/dist/types/widgets/EodashProcess/methods/async.d.ts +45 -0
  50. package/dist/types/widgets/EodashProcess/methods/composables.d.ts +19 -0
  51. package/dist/types/widgets/EodashProcess/methods/handling.d.ts +78 -0
  52. package/dist/types/widgets/EodashProcess/methods/outputs.d.ts +54 -0
  53. package/dist/types/widgets/EodashProcess/methods/utils.d.ts +42 -0
  54. package/dist/types/widgets/EodashStacInfo.vue.d.ts +12 -12
  55. package/dist/types/widgets/EodashTools.vue.d.ts +44 -6
  56. package/dist/types/widgets/PopUp.vue.d.ts +4 -4
  57. package/package.json +27 -27
  58. package/widgets/EodashLayerControl.vue +8 -1
  59. package/widgets/{EodashMap.vue → EodashMap/index.vue} +51 -31
  60. package/widgets/EodashMap/methods/create-layers-config.js +151 -0
  61. package/{core/client/composables/EodashMap.js → widgets/EodashMap/methods/index.js} +4 -153
  62. package/widgets/EodashMapBtns.vue +33 -7
  63. package/widgets/EodashProcess/ProcessList.vue +82 -0
  64. package/widgets/EodashProcess/index.vue +186 -0
  65. package/widgets/EodashProcess/methods/async.js +209 -0
  66. package/widgets/EodashProcess/methods/composables.js +129 -0
  67. package/widgets/EodashProcess/methods/handling.js +254 -0
  68. package/widgets/EodashProcess/methods/outputs.js +216 -0
  69. package/widgets/EodashProcess/methods/utils.js +138 -0
  70. package/widgets/EodashStacInfo.vue +6 -0
  71. package/widgets/EodashTools.vue +1 -0
  72. package/core/client/composables/EodashProcess.js +0 -654
  73. package/dist/types/core/client/composables/EodashMap.d.ts +0 -6
  74. package/dist/types/core/client/composables/EodashProcess.d.ts +0 -162
  75. package/widgets/EodashProcess.vue +0 -206
  76. /package/dist/types/widgets/{EodashMap.vue.d.ts → EodashMap/index.vue.d.ts} +0 -0
  77. /package/dist/types/widgets/{EodashProcess.vue.d.ts → EodashProcess/index.vue.d.ts} +0 -0
@@ -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, g as genericComponent, p as propsFactory, H as useDimension, a as useRender, J as makeDimensionProps, i as makeComponentProps, B as useBackgroundColor, M as useRounded, aI as getCurrentInstance, q as convertToUnit, O as makeRoundedProps } from './asWebComponent-Df8nUiLs.js';
3
- import { m as makeTransitionProps, M as MaybeTransition } from './transition-DHEuQX4I.js';
2
+ import { aL as SUPPORTS_INTERSECTION, g as genericComponent, p as propsFactory, H as useDimension, a as useRender, J as makeDimensionProps, i as makeComponentProps, B as useBackgroundColor, M as useRounded, aM as getCurrentInstance, q as convertToUnit, O as makeRoundedProps } from './asWebComponent-CLhcT715.js';
3
+ import { m as makeTransitionProps, M as MaybeTransition } from './transition-C5I57hn6.js';
4
4
 
5
5
  // Utilities
6
6
  function mounted(el, binding) {
@@ -1,5 +1,5 @@
1
1
  import { createVNode } from 'vue';
2
- import { g as genericComponent, p as propsFactory, H as useDimension, G as useLayout, a as useRender, h as makeTagProps, J as makeDimensionProps, i as makeComponentProps } from './asWebComponent-Df8nUiLs.js';
2
+ import { g as genericComponent, p as propsFactory, H as useDimension, G as useLayout, a as useRender, h as makeTagProps, J as makeDimensionProps, i as makeComponentProps } from './asWebComponent-CLhcT715.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 { computed, watch, onScopeDispose, nextTick, ref, watchEffect, effectScope, inject, mergeProps, shallowRef, onMounted, reactive, provide, toRaw, readonly, warn, toRef, onBeforeUnmount, createVNode, Fragment, Teleport, withDirectives, vShow, resolveDirective, Transition } from 'vue';
2
- import { aK as isOn, aL as eventName, p as propsFactory, 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, I as IN_BROWSER, T as useToggleScope, aS as defer, aI as getCurrentInstance, aT as templateRef, aU as matchesSelector, r as useDisplay, f as makeThemeProps, J as makeDimensionProps, i as makeComponentProps, g as genericComponent, j as useProxiedModel, b as provideTheme, c as useRtl, B as useBackgroundColor, H as useDimension, aV as useRouter, aW as useBackButton, a as useRender } from './asWebComponent-Df8nUiLs.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-lhDuXD-N.js';
4
- import { m as makeTransitionProps, M as MaybeTransition } from './transition-DHEuQX4I.js';
2
+ import { aO as isOn, aP as eventName, p as propsFactory, aQ as destructComputed, aR as parseAnchor, aS as flipSide, aT as flipAlign, aU as flipCorner, an as consoleError, aV as getAxis, q as convertToUnit, R as clamp, I as IN_BROWSER, T as useToggleScope, aW as defer, aM as getCurrentInstance, aX as templateRef, aY as matchesSelector, r as useDisplay, f as makeThemeProps, J as makeDimensionProps, i as makeComponentProps, g as genericComponent, j as useProxiedModel, b as provideTheme, c as useRtl, B as useBackgroundColor, H as useDimension, aZ as useRouter, a_ as useBackButton, a as useRender } from './asWebComponent-CLhcT715.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-Bon_Kku1.js';
4
+ import { m as makeTransitionProps, M as MaybeTransition } from './transition-C5I57hn6.js';
5
5
 
6
6
  // Utilities
7
7
  const handlers = new WeakMap();
@@ -1112,10 +1112,10 @@ function useStack(isActive, zIndex, disableGlobalStack) {
1112
1112
  activeChildren: new Set()
1113
1113
  });
1114
1114
  provide(StackSymbol, stack);
1115
- const _zIndex = shallowRef(+zIndex.value);
1115
+ const _zIndex = shallowRef(Number(zIndex.value));
1116
1116
  useToggleScope(isActive, () => {
1117
1117
  const lastZIndex = globalStack.at(-1)?.[1];
1118
- _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
1118
+ _zIndex.value = lastZIndex ? lastZIndex + 10 : Number(zIndex.value);
1119
1119
  if (createStackEntry) {
1120
1120
  globalStack.push([vm.uid, _zIndex.value]);
1121
1121
  }
@@ -1229,6 +1229,7 @@ const VOverlay = genericComponent()({
1229
1229
  emits: {
1230
1230
  'click:outside': e => true,
1231
1231
  'update:modelValue': value => true,
1232
+ keydown: e => true,
1232
1233
  afterEnter: () => true,
1233
1234
  afterLeave: () => true
1234
1235
  },
@@ -1341,6 +1342,9 @@ const VOverlay = genericComponent()({
1341
1342
  });
1342
1343
  function onKeydown(e) {
1343
1344
  if (e.key === 'Escape' && globalTop.value) {
1345
+ if (!contentEl.value?.contains(document.activeElement)) {
1346
+ emit('keydown', e);
1347
+ }
1344
1348
  if (!props.persistent) {
1345
1349
  isActive.value = false;
1346
1350
  if (contentEl.value?.contains(document.activeElement)) {
@@ -1349,6 +1353,10 @@ const VOverlay = genericComponent()({
1349
1353
  } else animateClick();
1350
1354
  }
1351
1355
  }
1356
+ function onKeydownSelf(e) {
1357
+ if (e.key === 'Escape' && !globalTop.value) return;
1358
+ emit('keydown', e);
1359
+ }
1352
1360
  const router = useRouter();
1353
1361
  useToggleScope(() => props.closeOnBack, () => {
1354
1362
  useBackButton(router, next => {
@@ -1411,7 +1419,8 @@ const VOverlay = genericComponent()({
1411
1419
  '--v-overlay-opacity': props.opacity,
1412
1420
  top: convertToUnit(top.value)
1413
1421
  }, props.style],
1414
- "ref": root
1422
+ "ref": root,
1423
+ "onKeydown": onKeydownSelf
1415
1424
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
1416
1425
  "color": scrimColor,
1417
1426
  "modelValue": isActive.value && !!props.scrim,
@@ -1,7 +1,7 @@
1
1
  import { computed, ref, mergeProps, createVNode } from 'vue';
2
- import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-BS-E4Z6g.js';
3
- import { b as useScopeId, f as forwardRefs } from './forwardRefs-lhDuXD-N.js';
4
- import { g as genericComponent, p as propsFactory, j as useProxiedModel, am as getUid, a as useRender, o as omit } from './asWebComponent-Df8nUiLs.js';
2
+ import { m as makeVOverlayProps, V as VOverlay } from './VOverlay-BzOdRu9h.js';
3
+ import { b as useScopeId, f as forwardRefs } from './forwardRefs-Bon_Kku1.js';
4
+ import { g as genericComponent, p as propsFactory, j as useProxiedModel, aq as getUid, a as useRender, o as omit } from './asWebComponent-CLhcT715.js';
5
5
 
6
6
  const makeVTooltipProps = propsFactory({
7
7
  id: String,
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, nextTick, createElementBlock, openBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, normalizeStyle, createBlock, resolveDynamicComponent, mergeProps } from 'vue';
2
- import { aJ as useDefineWidgets, G as useLayout } from './asWebComponent-Df8nUiLs.js';
2
+ import { aN as useDefineWidgets, G as useLayout } from './asWebComponent-CLhcT715.js';
3
3
  import 'animated-details';
4
4
 
5
5
  const _sfc_main = {
@@ -1,8 +1,8 @@
1
- import { ref, reactive, watch, onScopeDispose, effectScope, capitalize, computed, watchEffect, toRefs, shallowRef, Fragment, warn, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, toRaw, createVNode, mergeProps, onBeforeUnmount, readonly, onMounted, onDeactivated, onActivated, nextTick, shallowReactive, onUnmounted, isRef, toRef, onUpdated, Text, Transition, resolveDynamicComponent, withDirectives, useModel, createBlock, createCommentVNode, openBlock, withCtx, createTextVNode, createElementVNode, toDisplayString, defineAsyncComponent, onErrorCaptured, Suspense, createElementBlock, normalizeProps, withAsyncContext, normalizeStyle, defineCustomElement } from 'vue';
1
+ import { ref, reactive, watch, onScopeDispose, effectScope, capitalize, computed, watchEffect, toRefs, shallowRef, Fragment, warn, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, toRaw, createVNode, mergeProps, onBeforeUnmount, readonly, onMounted, onDeactivated, onActivated, nextTick, shallowReactive, onUnmounted, isRef, toRef, onUpdated, Text, Transition, resolveDynamicComponent, withDirectives, toDisplayString, useModel, createBlock, createCommentVNode, openBlock, withCtx, createTextVNode, createElementVNode, defineAsyncComponent, onErrorCaptured, Suspense, createElementBlock, normalizeProps, withAsyncContext, normalizeStyle, defineCustomElement } from 'vue';
2
2
  import { defineStore, storeToRefs, createPinia } from 'pinia';
3
3
  import { setupCache } from 'axios-cache-interceptor';
4
4
  import log from 'loglevel';
5
- import { mdiViewDashboardVariant, mdiViewDashboard, mdiCurrencyEur, mdiWeatherWindy, mdiSetCenter, mdiHospitalBoxOutline, mdiImageFilterHdr, mdiWater, mdiBarley, mdiClose, mdiAlertCircle, mdiPlus, mdiMenuDown, mdiChevronLeft, mdiChevronRight } from '@mdi/js';
5
+ import { mdiViewDashboard, mdiViewDashboardVariant, mdiCurrencyEur, mdiWeatherWindy, mdiSetCenter, mdiHospitalBoxOutline, mdiImageFilterHdr, mdiWater, mdiBarley, mdiClose, mdiAlertCircle, mdiPlus, mdiMenuDown, mdiChevronLeft, mdiChevronRight } from '@mdi/js';
6
6
  import { useEventBus, createSharedComposable } from '@vueuse/core';
7
7
  import WebFontLoader from 'webfontloader';
8
8
  import { toAbsolute } from 'stac-js/src/http.js';
@@ -615,26 +615,6 @@ const toFiniteNumber = (value, defaultValue) => {
615
615
  return value != null && Number.isFinite(value = +value) ? value : defaultValue;
616
616
  };
617
617
 
618
- const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
619
-
620
- const DIGIT = '0123456789';
621
-
622
- const ALPHABET = {
623
- DIGIT,
624
- ALPHA,
625
- ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
626
- };
627
-
628
- const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
629
- let str = '';
630
- const {length} = alphabet;
631
- while (size--) {
632
- str += alphabet[Math.random() * length|0];
633
- }
634
-
635
- return str;
636
- };
637
-
638
618
  /**
639
619
  * If the thing is a FormData object, return true, otherwise return false.
640
620
  *
@@ -762,8 +742,6 @@ const utils$1 = {
762
742
  findKey,
763
743
  global: _global,
764
744
  isContextDefined,
765
- ALPHABET,
766
- generateString,
767
745
  isSpecCompliantForm,
768
746
  toJSONObject,
769
747
  isAsyncFn,
@@ -2250,8 +2228,9 @@ function combineURLs(baseURL, relativeURL) {
2250
2228
  *
2251
2229
  * @returns {string} The combined full path
2252
2230
  */
2253
- function buildFullPath(baseURL, requestedURL) {
2254
- if (baseURL && !isAbsoluteURL(requestedURL)) {
2231
+ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
2232
+ let isRelativeUrl = !isAbsoluteURL(requestedURL);
2233
+ if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
2255
2234
  return combineURLs(baseURL, requestedURL);
2256
2235
  }
2257
2236
  return requestedURL;
@@ -2366,7 +2345,7 @@ const resolveConfig = (config) => {
2366
2345
 
2367
2346
  newConfig.headers = headers = AxiosHeaders$1.from(headers);
2368
2347
 
2369
- newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
2348
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);
2370
2349
 
2371
2350
  // HTTP basic authentication
2372
2351
  if (auth) {
@@ -3089,7 +3068,7 @@ function dispatchRequest(config) {
3089
3068
  });
3090
3069
  }
3091
3070
 
3092
- const VERSION$1 = "1.7.9";
3071
+ const VERSION$1 = "1.8.4";
3093
3072
 
3094
3073
  const validators$1 = {};
3095
3074
 
@@ -3274,6 +3253,13 @@ let Axios$1 = class Axios {
3274
3253
  }
3275
3254
  }
3276
3255
 
3256
+ // Set config.allowAbsoluteUrls
3257
+ if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {
3258
+ config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
3259
+ } else {
3260
+ config.allowAbsoluteUrls = true;
3261
+ }
3262
+
3277
3263
  validator.assertOptions(config, {
3278
3264
  baseUrl: validators.spelling('baseURL'),
3279
3265
  withXsrfToken: validators.spelling('withXSRFToken')
@@ -3369,7 +3355,7 @@ let Axios$1 = class Axios {
3369
3355
 
3370
3356
  getUri(config) {
3371
3357
  config = mergeConfig$1(this.defaults, config);
3372
- const fullPath = buildFullPath(config.baseURL, config.url);
3358
+ const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
3373
3359
  return buildURL(fullPath, config.params, config.paramsSerializer);
3374
3360
  }
3375
3361
  };
@@ -3800,10 +3786,9 @@ const eodash = reactive({
3800
3786
  // "https://gtif-cerulean.github.io/catalog/cerulean/catalog.json",
3801
3787
  // "https://eodashcatalog.eox.at/samplecatalog/samples/catalog.json",
3802
3788
  // "https://eodashcatalog.eox.at/test-style/trilateral/catalog.json",
3803
- // "https://gtif-cerulean.github.io/catalog/cerulean/catalog.json",
3804
3789
  // "https://gtif-cerulean.github.io/deside-catalog/deside/catalog.json",
3805
- // "https://gtif-cerulean.github.io/cerulean-catalog/cerulean/catalog.json",
3806
- "https://gtif-austria.github.io/public-catalog/GTIF-Austria/catalog.json",
3790
+ "https://gtif-cerulean.github.io/cerulean-catalog/cerulean/catalog.json",
3791
+ // "https://gtif-austria.github.io/public-catalog/GTIF-Austria/catalog.json",
3807
3792
  brand: {
3808
3793
  noLayout: true,
3809
3794
  name: "Demo",
@@ -3949,7 +3934,7 @@ const eodash = reactive({
3949
3934
  defineWidget: (selectedSTAC) => {
3950
3935
  return selectedSTAC
3951
3936
  ? {
3952
- id: "Datepicker",
3937
+ id: "light-datepicker",
3953
3938
  type: "internal",
3954
3939
  layout: { x: 5, y: 8, w: 2, h: 4 },
3955
3940
  title: "Date",
@@ -4043,7 +4028,7 @@ const eodash = reactive({
4043
4028
  defineWidget: (selectedSTAC) => {
4044
4029
  return selectedSTAC
4045
4030
  ? {
4046
- id: "Datepicker",
4031
+ id: "expert-datepicker",
4047
4032
  type: "internal",
4048
4033
  layout: { x: 5, y: 11, w: 2, h: 1 },
4049
4034
  title: "Date",
@@ -4126,8 +4111,7 @@ const eodash = reactive({
4126
4111
  widget: {
4127
4112
  name: "EodashTools",
4128
4113
  properties: {
4129
- layoutTarget: "expert",
4130
- layoutIcon: mdiViewDashboardVariant,
4114
+ showLayoutSwitcher: false,
4131
4115
  itemFilterConfig: {
4132
4116
  cssVars: {
4133
4117
  "--form-flex-direction": "row",
@@ -4205,7 +4189,9 @@ const eodash = reactive({
4205
4189
  widget: {
4206
4190
  name: "EodashMapBtns",
4207
4191
  properties: {
4208
- compareIndicators: false,
4192
+ compareIndicators: {
4193
+ fallbackTemplate: "expert",
4194
+ },
4209
4195
  },
4210
4196
  },
4211
4197
  }
@@ -4216,7 +4202,7 @@ const eodash = reactive({
4216
4202
  defineWidget: (selectedSTAC) => {
4217
4203
  return selectedSTAC
4218
4204
  ? {
4219
- id: "Datepicker",
4205
+ id: "expert-Datepicker",
4220
4206
  type: "internal",
4221
4207
  layout: { x: 5, y: 8, w: 2, h: 4 },
4222
4208
  title: "Date",
@@ -4322,12 +4308,14 @@ function convertToUnit(str) {
4322
4308
  let unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'px';
4323
4309
  if (str == null || str === '') {
4324
4310
  return undefined;
4325
- } else if (isNaN(+str)) {
4311
+ }
4312
+ const num = Number(str);
4313
+ if (isNaN(num)) {
4326
4314
  return String(str);
4327
- } else if (!isFinite(+str)) {
4315
+ } else if (!isFinite(num)) {
4328
4316
  return undefined;
4329
4317
  } else {
4330
- return `${Number(str)}${unit}`;
4318
+ return `${num}${unit}`;
4331
4319
  }
4332
4320
  }
4333
4321
  function isObject(obj) {
@@ -5419,7 +5407,7 @@ const en = {
5419
5407
  const LANG_PREFIX = '$vuetify.';
5420
5408
  const replace = (str, params) => {
5421
5409
  return str.replace(/\{(\d+)\}/g, (match, index) => {
5422
- return String(params[+index]);
5410
+ return String(params[Number(index)]);
5423
5411
  });
5424
5412
  };
5425
5413
  const createTranslateFunction = (current, fallback, messages) => {
@@ -5940,16 +5928,13 @@ function format(value, formatString, locale, formats) {
5940
5928
  case 'fullTime':
5941
5929
  options = {
5942
5930
  hour: 'numeric',
5943
- minute: 'numeric',
5944
- second: 'numeric',
5945
- hour12: true
5931
+ minute: 'numeric'
5946
5932
  };
5947
5933
  break;
5948
5934
  case 'fullTime12h':
5949
5935
  options = {
5950
5936
  hour: 'numeric',
5951
5937
  minute: 'numeric',
5952
- second: 'numeric',
5953
5938
  hour12: true
5954
5939
  };
5955
5940
  break;
@@ -5957,40 +5942,35 @@ function format(value, formatString, locale, formats) {
5957
5942
  options = {
5958
5943
  hour: 'numeric',
5959
5944
  minute: 'numeric',
5960
- second: 'numeric',
5961
5945
  hour12: false
5962
5946
  };
5963
5947
  break;
5964
5948
  case 'fullDateTime':
5965
5949
  options = {
5966
5950
  year: 'numeric',
5967
- month: 'long',
5951
+ month: 'short',
5968
5952
  day: 'numeric',
5969
5953
  hour: 'numeric',
5970
- minute: 'numeric',
5971
- second: 'numeric',
5972
- hour12: true
5954
+ minute: 'numeric'
5973
5955
  };
5974
5956
  break;
5975
5957
  case 'fullDateTime12h':
5976
5958
  options = {
5977
5959
  year: 'numeric',
5978
- month: 'long',
5960
+ month: 'short',
5979
5961
  day: 'numeric',
5980
5962
  hour: 'numeric',
5981
5963
  minute: 'numeric',
5982
- second: 'numeric',
5983
5964
  hour12: true
5984
5965
  };
5985
5966
  break;
5986
5967
  case 'fullDateTime24h':
5987
5968
  options = {
5988
5969
  year: 'numeric',
5989
- month: 'long',
5970
+ month: 'short',
5990
5971
  day: 'numeric',
5991
5972
  hour: 'numeric',
5992
5973
  minute: 'numeric',
5993
- second: 'numeric',
5994
5974
  hour12: false
5995
5975
  };
5996
5976
  break;
@@ -6007,11 +5987,9 @@ function format(value, formatString, locale, formats) {
6007
5987
  month: '2-digit',
6008
5988
  day: '2-digit',
6009
5989
  hour: 'numeric',
6010
- minute: 'numeric',
6011
- second: 'numeric',
6012
- hour12: false
5990
+ minute: 'numeric'
6013
5991
  };
6014
- break;
5992
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
6015
5993
  case 'keyboardDateTime12h':
6016
5994
  options = {
6017
5995
  year: 'numeric',
@@ -6019,10 +5997,9 @@ function format(value, formatString, locale, formats) {
6019
5997
  day: '2-digit',
6020
5998
  hour: 'numeric',
6021
5999
  minute: 'numeric',
6022
- second: 'numeric',
6023
6000
  hour12: true
6024
6001
  };
6025
- break;
6002
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
6026
6003
  case 'keyboardDateTime24h':
6027
6004
  options = {
6028
6005
  year: 'numeric',
@@ -6030,10 +6007,9 @@ function format(value, formatString, locale, formats) {
6030
6007
  day: '2-digit',
6031
6008
  hour: 'numeric',
6032
6009
  minute: 'numeric',
6033
- second: 'numeric',
6034
6010
  hour12: false
6035
6011
  };
6036
- break;
6012
+ return new Intl.DateTimeFormat(locale, options).format(newDate).replace(/, /g, ' ');
6037
6013
  default:
6038
6014
  options = customFormat ?? {
6039
6015
  timeZone: 'UTC',
@@ -7066,7 +7042,7 @@ function createTheme(options) {
7066
7042
  function getHead() {
7067
7043
  return {
7068
7044
  style: [{
7069
- children: styles.value,
7045
+ textContent: styles.value,
7070
7046
  id: 'vuetify-theme-stylesheet',
7071
7047
  nonce: parsedOptions.cspNonce || false
7072
7048
  }]
@@ -7568,7 +7544,7 @@ function createVuetify() {
7568
7544
  goTo
7569
7545
  };
7570
7546
  }
7571
- const version$1 = "3.7.13";
7547
+ const version$1 = "3.7.18";
7572
7548
  createVuetify.version = version$1;
7573
7549
  function inject(key) {
7574
7550
  const vm = this.$;
@@ -7613,6 +7589,13 @@ const posIsSetFromUrl = ref(false);
7613
7589
  * @type {import("vue").Ref<Record<string, any> | undefined>}
7614
7590
  */
7615
7591
  const layerControlFormValue = ref({});
7592
+
7593
+ /**
7594
+ * Current value of the layer control JSON form for the latest layer the user interacted with.
7595
+ * @type {import("vue").Ref<Record<string, any> | undefined>}
7596
+ */
7597
+ const layerControlFormValueCompare = ref({});
7598
+
7616
7599
  /**
7617
7600
  * STAC indicators color palette, defaults to Bank-Wong palette
7618
7601
  * @type {string[]} */
@@ -7658,6 +7641,8 @@ const dataThemesBrands = {
7658
7641
  color: "#8E81AF",
7659
7642
  },
7660
7643
  };
7644
+ /** used for switching in and out of compare mode @see {@link widgets/EodashMapBtns.vue} */
7645
+ const switchToCompare = ref(true);
7661
7646
 
7662
7647
  /**
7663
7648
  * Loads font in the app using `webfontloader`
@@ -8589,6 +8574,29 @@ async function mergeGeojsons(geojsonUrls) {
8589
8574
  );
8590
8575
  }
8591
8576
 
8577
+ /**
8578
+ * adds tooltip to the layer if the style has tooltip property
8579
+ * @param {Record<string,any>} layer
8580
+ * @param {import("@/types").EodashStyleJson} [style]
8581
+ */
8582
+ const addTooltipInteraction = (layer, style) => {
8583
+ if (style?.tooltip) {
8584
+ layer.interactions = [
8585
+ {
8586
+ type: "select",
8587
+ options: {
8588
+ id: (Math.random() * 10000).toFixed() + "_selectInteraction",
8589
+ condition: "pointermove",
8590
+ style: {
8591
+ "stroke-color": "#335267",
8592
+ "stroke-width": 4,
8593
+ },
8594
+ },
8595
+ },
8596
+ ];
8597
+ }
8598
+ };
8599
+
8592
8600
  /**
8593
8601
  * @param {string} collectionId
8594
8602
  * @param {string} title
@@ -8661,22 +8669,7 @@ async function createLayersFromAssets(
8661
8669
  interactions: [],
8662
8670
  };
8663
8671
  // add tooltip interaction if style has tooltip
8664
- if (style?.tooltip) {
8665
- layer.interactions = [
8666
- // @ts-expect-error no type for eox-map layer
8667
- {
8668
- type: "select",
8669
- options: {
8670
- id: (Math.random() * 10000).toFixed() + "_selectInteraction",
8671
- condition: "pointermove",
8672
- style: {
8673
- "stroke-color": "#335267",
8674
- "stroke-width": 4,
8675
- },
8676
- },
8677
- },
8678
- ];
8679
- }
8672
+ addTooltipInteraction(layer, style);
8680
8673
 
8681
8674
  extractRoles(layer.properties, assets[ast]);
8682
8675
 
@@ -8717,11 +8710,11 @@ async function createLayersFromAssets(
8717
8710
  }),
8718
8711
  },
8719
8712
  ...(!style?.variables && { style }),
8720
- interactions:[],
8713
+ interactions: [],
8721
8714
  };
8722
8715
 
8723
8716
  layer.properties = { ...layer.properties, ...(extraProperties ?? {}) };
8724
-
8717
+ addTooltipInteraction(layer, style);
8725
8718
  jsonArray.push(layer);
8726
8719
  }
8727
8720
  if (geoTIFFSources.length && typeof geoTIFFIdx === "number") {
@@ -9529,6 +9522,7 @@ const useSTAcStore = defineStore("stac", () => {
9529
9522
 
9530
9523
  selectedStac.value = resp.data;
9531
9524
  indicator.value = selectedStac.value?.id ?? "";
9525
+ switchToCompare.value = true;
9532
9526
  });
9533
9527
  })
9534
9528
  .catch((err) => {
@@ -9545,7 +9539,6 @@ const useSTAcStore = defineStore("stac", () => {
9545
9539
  */
9546
9540
  async function loadSelectedCompareSTAC(relativePath = "") {
9547
9541
  const absoluteUrl = useCompareAbsoluteUrl(relativePath);
9548
-
9549
9542
  await axios
9550
9543
  .get(absoluteUrl.value)
9551
9544
  .then(async (resp) => {
@@ -9568,6 +9561,7 @@ const useSTAcStore = defineStore("stac", () => {
9568
9561
  eodashCompareCollections.push(...collections);
9569
9562
 
9570
9563
  selectedCompareStac.value = resp.data;
9564
+ switchToCompare.value = false;
9571
9565
  });
9572
9566
  })
9573
9567
  .catch((err) => {
@@ -9696,7 +9690,7 @@ function useBorder(props) {
9696
9690
  // Utilities
9697
9691
  const allowedDensities = [null, 'default', 'comfortable', 'compact'];
9698
9692
 
9699
- // typeof allowedDensities[number] evalutes to any
9693
+ // typeof allowedDensities[number] evaluates to any
9700
9694
  // when generating api types for whatever reason.
9701
9695
 
9702
9696
  // Composables
@@ -11218,7 +11212,10 @@ const makeVBtnProps = propsFactory({
11218
11212
  type: [Boolean, Object],
11219
11213
  default: true
11220
11214
  },
11221
- text: String,
11215
+ text: {
11216
+ type: [String, Number, Boolean],
11217
+ default: undefined
11218
+ },
11222
11219
  ...makeBorderProps(),
11223
11220
  ...makeComponentProps(),
11224
11221
  ...makeDensityProps(),
@@ -11374,7 +11371,7 @@ const VBtn = genericComponent()({
11374
11371
  }
11375
11372
  }
11376
11373
  }, {
11377
- default: () => [slots.default?.() ?? props.text]
11374
+ default: () => [slots.default?.() ?? toDisplayString(props.text)]
11378
11375
  })]), !props.icon && hasAppend && createVNode("span", {
11379
11376
  "key": "append",
11380
11377
  "class": "v-btn__append"
@@ -11654,11 +11651,18 @@ const ErrorAlert = /*#__PURE__*/_export_sfc(_sfc_main$4, [['__scopeId',"data-v-a
11654
11651
  const internalWidgets = (() => {
11655
11652
  /** @type {Record<string, () => Promise<import("vue").Component>>} */
11656
11653
  const importMap = {
11657
- .../* #__PURE__ */ Object.assign({"/widgets/EodashDatePicker.vue": () => import('./EodashDatePicker-BoWV2vc8.js'),"/widgets/EodashItemFilter.vue": () => import('./EodashItemFilter-127fZLyK.js'),"/widgets/EodashLayerControl.vue": () => import('./EodashLayerControl-B-pZaizw.js'),"/widgets/EodashLayoutSwitcher.vue": () => import('./EodashLayoutSwitcher-DwexHfOD.js'),"/widgets/EodashMap.vue": () => import('./EodashMap-BSR7_wRA.js'),"/widgets/EodashMapBtns.vue": () => import('./EodashMapBtns-Jfn3bpWD.js'),"/widgets/EodashProcess.vue": () => import('./EodashProcess-CpbZPYBp.js'),"/widgets/EodashStacInfo.vue": () => import('./EodashStacInfo-STq_bW7S.js'),"/widgets/EodashTools.vue": () => import('./EodashTools-uxSuJhVJ.js'),"/widgets/ExportState.vue": () => import('./ExportState-Ckcb6u01.js'),"/widgets/PopUp.vue": () => import('./PopUp-D3IyjsN4.js'),"/widgets/WidgetsContainer.vue": () => import('./WidgetsContainer-Cl6M5R5c.js')}),
11654
+ .../* #__PURE__ */ Object.assign({"/widgets/EodashDatePicker.vue": () => import('./EodashDatePicker-CALmW3SI.js'),"/widgets/EodashItemFilter.vue": () => import('./EodashItemFilter-DlQiE713.js'),"/widgets/EodashLayerControl.vue": () => import('./EodashLayerControl-DEzEbft7.js'),"/widgets/EodashLayoutSwitcher.vue": () => import('./EodashLayoutSwitcher-CDeCV8F-.js'),"/widgets/EodashMap/index.vue": () => import('./index-CIHH_3dW.js'),"/widgets/EodashMapBtns.vue": () => import('./EodashMapBtns-CktQCfa-.js'),"/widgets/EodashProcess/ProcessList.vue": () => import('./ProcessList-DTefwQZx.js').then(n => n.P),"/widgets/EodashProcess/index.vue": () => import('./index-DiGDvTQU.js'),"/widgets/EodashStacInfo.vue": () => import('./EodashStacInfo-DPPxDkF6.js'),"/widgets/EodashTools.vue": () => import('./EodashTools-CUaL9s4H.js'),"/widgets/ExportState.vue": () => import('./ExportState-DjyIZVhl.js'),"/widgets/PopUp.vue": () => import('./PopUp-BfB8s_ki.js'),"/widgets/WidgetsContainer.vue": () => import('./WidgetsContainer-C2TaTdb6.js')}),
11658
11655
  .../* #__PURE__ */ Object.assign({}),
11659
11656
  };
11660
11657
  for (const key in importMap) {
11661
- const newKey = /** @type {string} */ (key.split("/").at(-1)).slice(0, -4);
11658
+ // Remove the extention and "widgets" from the key path
11659
+ const path = key.split("/");
11660
+ path.splice(0, path.findIndex((el) => el === "widgets") + 1);
11661
+ const lastIdx = path.length - 1;
11662
+ path[lastIdx] = path[lastIdx].split(".")[0];
11663
+ const newKey =
11664
+ path[lastIdx] == "index" ? path[lastIdx - 1] : path.join("/");
11665
+
11662
11666
  Object.defineProperty(
11663
11667
  importMap,
11664
11668
  newKey,
@@ -11767,7 +11771,7 @@ const getWidgetDefinition = (config) => {
11767
11771
 
11768
11772
  case "web-component":
11769
11773
  importedWidget.component = defineAsyncComponent({
11770
- loader: () => import('./DynamicWebComponent-BqoHM1np.js'),
11774
+ loader: () => import('./DynamicWebComponent-DYBbpvUK.js'),
11771
11775
  suspensible: true,
11772
11776
  });
11773
11777
  importedWidget.props = reactive(config.widget);
@@ -12162,7 +12166,7 @@ return (_ctx, _cache) => {
12162
12166
 
12163
12167
  };
12164
12168
 
12165
- const version = "5.0.0-rc.2.5";
12169
+ const version = "5.0.0";
12166
12170
  const pkgJson = {
12167
12171
  version};
12168
12172
 
@@ -12264,15 +12268,15 @@ const { loadSTAC } = useSTAcStore();
12264
12268
  const { smAndDown } = useDisplay();
12265
12269
  const TemplateComponent = computed(() =>
12266
12270
  smAndDown.value
12267
- ? defineAsyncComponent(() => import('./MobileLayout-BE19Peep.js'))
12268
- : defineAsyncComponent(() => import('./DashboardLayout-BX3Sm_Vx.js')),
12271
+ ? defineAsyncComponent(() => import('./MobileLayout-CRsg_5Q4.js'))
12272
+ : defineAsyncComponent(() => import('./DashboardLayout-CkWvOMOW.js')),
12269
12273
  );
12270
12274
 
12271
12275
  const HeaderComponent = defineAsyncComponent(
12272
- () => import('./Header-Dxx7q9FW.js'),
12276
+ () => import('./Header-B5Dgty9l.js'),
12273
12277
  );
12274
12278
  const FooterComponent = defineAsyncComponent(
12275
- () => import('./Footer-C8JP-coH.js'),
12279
+ () => import('./Footer-DyL0JoWt.js'),
12276
12280
  );
12277
12281
 
12278
12282
  const templateHeight = props.isWebComponent ? "100%" : "100dvh";
@@ -12472,4 +12476,4 @@ function register() {
12472
12476
 
12473
12477
  register();
12474
12478
 
12475
- export { useSTAcStore as $, useDensity as A, useBackgroundColor as B, provideDefaults as C, makeDensityProps as D, isObject as E, useDefineTemplate as F, useLayout as G, useDimension as H, IN_BROWSER as I, makeDimensionProps as J, useBorder as K, useElevation as L, useRounded as M, VDefaultsProvider as N, makeRoundedProps as O, makeElevationProps as P, makeBorderProps as Q, clamp as R, consoleWarn as S, useToggleScope as T, useLayoutItem as U, VBtn as V, makeLayoutItemProps as W, eodashKey as X, consoleError as Y, datetime as Z, _export_sfc as _, useRender as a, eodashCollections as a0, collectionsPalette as a1, makePanelTransparent as a2, mapCompareEl as a3, mapEl as a4, eodashCompareCollections as a5, layerControlFormValue as a6, getColFromLayer as a7, eoxLayersKey as a8, setMapProjFromCol as a9, makeLocationProps as aA, makeLoaderProps as aB, LoaderSlot as aC, removeUnneededProperties as aD, VRow as aE, VCol as aF, copyToClipBoard as aG, SUPPORTS_INTERSECTION as aH, getCurrentInstance as aI, useDefineWidgets as aJ, isOn as aK, eventName as aL, destructComputed as aM, parseAnchor as aN, flipSide as aO, flipAlign as aP, flipCorner as aQ, getAxis as aR, defer as aS, templateRef as aT, matchesSelector as aU, useRouter as aV, useBackButton as aW, EodashConstructor as aX, register as aY, store as aZ, posIsSetFromUrl as aa, useOnLayersUpdate as ab, EodashCollection as ac, mapPosition as ad, availableMapProjection as ae, changeMapProjection as af, setActiveTemplate as ag, axios$1 as ah, getLayers as ai, extractLayerConfig as aj, currentUrl as ak, activeTemplate as al, getUid as am, createSimpleFunctional as an, useVariant as ao, useSize as ap, genOverlays as aq, makeVariantProps as ar, makeSizeProps as as, Ripple as at, useLoader as au, useLocation as av, usePosition as aw, useLink as ax, makeRouterProps as ay, makePositionProps as az, provideTheme as b, useRtl as c, useLocale as d, useGroup as e, makeThemeProps as f, genericComponent as g, makeTagProps as h, makeComponentProps as i, useProxiedModel as j, keys as k, useGroupItem as l, makeVBtnProps as m, makeGroupItemProps as n, omit as o, propsFactory as p, convertToUnit as q, useDisplay as r, useResizeObserver as s, useGoTo as t, useTextColor as u, VIcon as v, makeGroupProps as w, makeDisplayProps as x, IconValue as y, focusableChildren as z };
12479
+ export { eodashCollections as $, useDensity as A, useBackgroundColor as B, provideDefaults as C, makeDensityProps as D, isObject as E, useDefineTemplate as F, useLayout as G, useDimension as H, IN_BROWSER as I, makeDimensionProps as J, useBorder as K, useElevation as L, useRounded as M, VDefaultsProvider as N, makeRoundedProps as O, makeElevationProps as P, makeBorderProps as Q, clamp as R, consoleWarn as S, useToggleScope as T, useLayoutItem as U, VBtn as V, makeLayoutItemProps as W, eodashKey as X, datetime as Y, useSTAcStore as Z, _export_sfc as _, useRender as a, EodashConstructor as a$, collectionsPalette as a0, makePanelTransparent as a1, mapCompareEl as a2, mapEl as a3, eodashCompareCollections as a4, layerControlFormValueCompare as a5, layerControlFormValue as a6, getColFromLayer as a7, EodashCollection as a8, eoxLayersKey as a9, usePosition as aA, useLink as aB, makeRouterProps as aC, makePositionProps as aD, makeLocationProps as aE, makeLoaderProps as aF, LoaderSlot as aG, removeUnneededProperties as aH, VRow as aI, VCol as aJ, copyToClipBoard as aK, SUPPORTS_INTERSECTION as aL, getCurrentInstance as aM, useDefineWidgets as aN, isOn as aO, eventName as aP, destructComputed as aQ, parseAnchor as aR, flipSide as aS, flipAlign as aT, flipCorner as aU, getAxis as aV, defer as aW, templateRef as aX, matchesSelector as aY, useRouter as aZ, useBackButton as a_, setMapProjFromCol as aa, posIsSetFromUrl as ab, useOnLayersUpdate as ac, mapPosition as ad, switchToCompare as ae, availableMapProjection as af, changeMapProjection as ag, setActiveTemplate as ah, axios as ai, indicator as aj, extractLayerConfig as ak, getLayers as al, axios$1 as am, consoleError as an, currentUrl as ao, activeTemplate as ap, getUid as aq, createSimpleFunctional as ar, useVariant as as, useSize as at, genOverlays as au, makeVariantProps as av, makeSizeProps as aw, Ripple as ax, useLoader as ay, useLocation as az, provideTheme as b, register as b0, store as b1, useRtl as c, useLocale as d, useGroup as e, makeThemeProps as f, genericComponent as g, makeTagProps as h, makeComponentProps as i, useProxiedModel as j, keys as k, useGroupItem as l, makeVBtnProps as m, makeGroupItemProps as n, omit as o, propsFactory as p, convertToUnit as q, useDisplay as r, useResizeObserver as s, useGoTo as t, useTextColor as u, VIcon as v, makeGroupProps as w, makeDisplayProps as x, IconValue as y, focusableChildren as z };