@eodash/eodash 5.1.0 → 5.2.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 (65) hide show
  1. package/core/client/components/DashboardLayout.vue +1 -1
  2. package/core/client/components/EodashOverlay.vue +4 -5
  3. package/core/client/components/MobileLayout.vue +42 -21
  4. package/core/client/composables/index.js +1 -1
  5. package/core/client/eodashSTAC/EodashCollection.js +4 -15
  6. package/core/client/eodashSTAC/createLayers.js +30 -0
  7. package/core/client/eodashSTAC/helpers.js +23 -1
  8. package/dist/client/{DashboardLayout-ByVs1DrY.js → DashboardLayout-Dq9Kfe6O.js} +5 -5
  9. package/dist/client/{DynamicWebComponent-C3W7HSQm.js → DynamicWebComponent-DCBMXskE.js} +1 -1
  10. package/dist/client/{EodashDatePicker-BIAf1sMT.js → EodashDatePicker-DtngxU6s.js} +3 -3
  11. package/dist/client/{EodashItemFilter-DPznh8UB.js → EodashItemFilter-ClQebJQt.js} +1 -1
  12. package/dist/client/{EodashLayerControl-Bhxjw4V2.js → EodashLayerControl-BLBds28C.js} +2 -2
  13. package/dist/client/{EodashLayoutSwitcher-C5qTEffW.js → EodashLayoutSwitcher-DQ8SfVDd.js} +3 -3
  14. package/dist/client/EodashMapBtns-B89_YBDw.js +326 -0
  15. package/dist/client/{EodashStacInfo-CSvvF2jI.js → EodashStacInfo-Dt1nF06x.js} +1 -1
  16. package/dist/client/{EodashTools-Cv1SXQ5y.js → EodashTools-DV5ykmWc.js} +4 -4
  17. package/dist/client/{ExportState-D-iuwaad.js → ExportState-B6zZQUmE.js} +4 -5
  18. package/dist/client/{Footer-CyF0zRAk.js → Footer-DNhXs8k6.js} +1 -1
  19. package/dist/client/{Header-CgD8jDKU.js → Header-BjhN5JY4.js} +2 -3
  20. package/dist/client/MobileLayout-JelB6w1G.js +118 -0
  21. package/dist/client/{PopUp-BsYLvWch.js → PopUp-CgpvNr3o.js} +2 -3
  22. package/dist/client/{ProcessList-C2xsLU2_.js → ProcessList-vecpxThi.js} +17 -10
  23. package/dist/client/{VImg-OHe8YTs2.js → VImg-CETuikH2.js} +200 -5
  24. package/dist/client/{VMain-PryTLU4a.js → VMain-Ci9DyaGU.js} +1 -1
  25. package/dist/client/{VTooltip-DZ0fjpB3.js → VTooltip-J4ac48X7.js} +2 -3
  26. package/dist/client/{WidgetsContainer-B9LBadcC.js → WidgetsContainer-CCML4TyV.js} +1 -1
  27. package/dist/client/{asWebComponent-By_7_JjS.js → asWebComponent-ZyEzWOOf.js} +59 -160
  28. package/dist/client/{async-DkSu_u2K.js → async-B7jIrM53.js} +69 -5
  29. package/dist/client/eo-dash.js +1 -1
  30. package/dist/client/{VOverlay-yUn7p-Uf.js → forwardRefs-BQclvjMq.js} +272 -5
  31. package/dist/client/{handling-CgmFXkW6.js → handling-BS24aG1q.js} +20 -5
  32. package/dist/client/{helpers-Dy0Q13tP.js → helpers-wXK7Ywio.js} +24 -2
  33. package/dist/client/{index-skjhlH8u.js → index-4UCzZi8B.js} +5 -5
  34. package/dist/client/{index-Dqj4tbx2.js → index-9KR-G20t.js} +2 -2
  35. package/dist/client/{index-Ch_HchK3.js → index-B2XpdgR6.js} +191 -57
  36. package/dist/client/material-symbols-outlined.woff2 +0 -0
  37. package/dist/client/material-symbols-rounded.woff2 +0 -0
  38. package/dist/client/material-symbols-sharp.woff2 +0 -0
  39. package/dist/client/material-symbols-subset.woff2 +0 -0
  40. package/dist/client/templates.js +27 -37
  41. package/dist/client/{transition-C98Yn4Vo.js → transition-yBii4fu6.js} +1 -1
  42. package/dist/node/cli.js +1 -1
  43. package/dist/types/core/client/eodashSTAC/helpers.d.ts +5 -0
  44. package/dist/types/core/client/types.d.ts +1 -1
  45. package/dist/types/templates/compare.d.ts +0 -25
  46. package/dist/types/templates/expert.d.ts +16 -20
  47. package/dist/types/templates/light.d.ts +9 -0
  48. package/dist/types/widgets/{EodashMapBtns.vue.d.ts → EodashMap/EodashMapBtns.vue.d.ts} +4 -0
  49. package/dist/types/widgets/EodashMap/index.vue.d.ts +8 -0
  50. package/dist/types/widgets/EodashProcess/methods/async.d.ts +1 -0
  51. package/package.json +4 -2
  52. package/templates/compare.js +0 -20
  53. package/templates/expert.js +16 -15
  54. package/templates/light.js +10 -1
  55. package/widgets/EodashMap/EodashMapBtns.vue +269 -0
  56. package/widgets/EodashMap/index.vue +252 -37
  57. package/widgets/EodashProcess/ProcessList.vue +13 -1
  58. package/widgets/EodashProcess/methods/async.js +22 -1
  59. package/widgets/EodashProcess/methods/custom-endpoints/chart/veda-endpoint.js +19 -3
  60. package/widgets/EodashProcess/methods/utils.js +45 -1
  61. package/dist/client/EodashMapBtns-WoGq8MuV.js +0 -173
  62. package/dist/client/MobileLayout-EKQ_kpSh.js +0 -1226
  63. package/dist/client/forwardRefs-BXxrv98s.js +0 -272
  64. package/dist/client/index-BuhOHXKv.js +0 -199
  65. package/widgets/EodashMapBtns.vue +0 -155
@@ -1,5 +1,5 @@
1
- import { n as getCompareLayers, l as getLayers, p as replaceLayer, h as extractLayerConfig, m as mergeGeojsons, f as axios, N as axios$1, C as compareIndicator, B as indicator } from './helpers-Dy0Q13tP.js';
2
- import { a4 as useEmitLayersUpdate } from './asWebComponent-By_7_JjS.js';
1
+ import { n as getCompareLayers, l as getLayers, p as replaceLayer, h as extractLayerConfig, s as extractLayerLegend, m as mergeGeojsons, f as axios, O as axios$1, D as compareIndicator, C as indicator } from './helpers-wXK7Ywio.js';
2
+ import { N as useEmitLayersUpdate } from './asWebComponent-ZyEzWOOf.js';
3
3
  import { isMulti } from '@eox/jsonform/src/custom-inputs/spatial/utils';
4
4
  import log from 'loglevel';
5
5
 
@@ -285,7 +285,10 @@ async function creatAsyncProcessLayerDefinitions(
285
285
 
286
286
  for (const resultItem of processResults) {
287
287
  const flatStyleJSON = extractStyleFromResult(resultItem, flatStyles);
288
- let style, layerConfig;
288
+ /** @type {import("@/types").EodashStyleJson | undefined} */
289
+ let style;
290
+ /** @type {Record<string, unknown> | undefined} */
291
+ let layerConfig;
289
292
  if (flatStyleJSON) {
290
293
  const extracted = extractLayerConfig(
291
294
  selectedStac?.id ?? "",
@@ -295,6 +298,9 @@ async function creatAsyncProcessLayerDefinitions(
295
298
  style = extracted.style;
296
299
  }
297
300
 
301
+ // Check if collection has eox:colorlegend definition, if yes overwrite legend description
302
+ let extraProperties = extractLayerLegend(selectedStac);
303
+
298
304
  switch (resultItem.type) {
299
305
  case "image/tiff": {
300
306
  layers.push({
@@ -308,6 +314,7 @@ async function creatAsyncProcessLayerDefinitions(
308
314
  (resultItem.id ?? ""),
309
315
  layerControlToolsExpand: true,
310
316
  ...(layerConfig && { layerConfig }),
317
+ ...extraProperties,
311
318
  },
312
319
  source: {
313
320
  type: "GeoTIFF",
@@ -345,12 +352,48 @@ async function creatAsyncProcessLayerDefinitions(
345
352
  style,
346
353
  },
347
354
  }),
355
+ ...extraProperties,
348
356
  },
349
357
  ...(!style?.variables && { style }),
350
358
  interactions: [],
351
359
  });
352
360
  break;
353
361
  }
362
+ case "application/vnd.flatgeobuf": {
363
+ // TODO after more flatgeobuf urls are possible in EOxMap https://github.com/EOX-A/EOxElements/issues/1789
364
+ // we should change this handler to only create one layer instead of many
365
+ resultItem.urls.forEach((url, i) => {
366
+ layers.push({
367
+ type: "Vector",
368
+ source: {
369
+ type: "FlatGeoBuf",
370
+ url,
371
+ },
372
+ properties: {
373
+ id:
374
+ endpointLink.id +
375
+ "_process_" +
376
+ resultItem.id +
377
+ postfixId +
378
+ `_${i}`,
379
+ title:
380
+ "Results " +
381
+ (selectedStac?.id ?? "") +
382
+ " " +
383
+ (resultItem.id ?? ""),
384
+ layerControlToolsExpand: true,
385
+ ...(layerConfig && {
386
+ layerConfig: {
387
+ ...layerConfig,
388
+ style,
389
+ },
390
+ }),
391
+ ...extraProperties,
392
+ },
393
+ });
394
+ });
395
+ break;
396
+ }
354
397
  default:
355
398
  console.warn(
356
399
  `[eodash] Unsupported result type "${resultItem.type}" for ${resultItem.id} layer creation.`,
@@ -661,7 +704,15 @@ const downloadPreviousResults = async (jobObject, selectedStac) => {
661
704
  .get(link.href)
662
705
  .then((response) => response.data)
663
706
  .then((data) => {
664
- results.push(...data.urls);
707
+ // either urls is an Array
708
+ if (data.urls) {
709
+ results.push(...data.urls);
710
+ } else {
711
+ // or urls need to be aggregated from mapping objects
712
+ for (const outputMappingObject of Object.values(data)) {
713
+ results.push(...outputMappingObject.urls);
714
+ }
715
+ }
665
716
  });
666
717
  results.forEach((result) => {
667
718
  if (!result) {
@@ -737,4 +788,17 @@ async function loadPreviousProcess({
737
788
  applyProcessLayersToMap(mapElement, layers);
738
789
  }
739
790
 
740
- export { creatAsyncProcessLayerDefinitions as a, generateTimePairs as b, createTiffLayerDefinition as c, download as d, extractAsyncResults as e, updateJsonformSchemaTarget as f, getBboxProperty as g, extractGeometries as h, applyProcessLayersToMap as i, downloadPreviousResults as j, deleteJob as k, loadProcess as l, pollProcessStatus as p, separateEndpointLinks as s, updateJobsStatus as u };
791
+ /**
792
+ * extracts job status url from local storage based on identifier
793
+ *
794
+ * @param {string} jobID
795
+ * @param {string} indicator
796
+ */
797
+ const getJobStatusUrl = (jobID, indicator) => {
798
+ /** @type {string[]} */
799
+ const jobsUrls = JSON.parse(localStorage.getItem(indicator) || "[]");
800
+ const jobUrl = jobsUrls.find((url) => url.includes(jobID));
801
+ return jobUrl;
802
+ };
803
+
804
+ export { creatAsyncProcessLayerDefinitions as a, generateTimePairs as b, createTiffLayerDefinition as c, download as d, extractAsyncResults as e, updateJsonformSchemaTarget as f, getBboxProperty as g, extractGeometries as h, applyProcessLayersToMap as i, getJobStatusUrl as j, downloadPreviousResults as k, loadProcess as l, deleteJob as m, pollProcessStatus as p, separateEndpointLinks as s, updateJobsStatus as u };
@@ -1,2 +1,2 @@
1
- export { aN as EodashConstructor, aM as register, aO as store } from './asWebComponent-By_7_JjS.js';
1
+ export { aF as EodashConstructor, aE as register, aG as store } from './asWebComponent-ZyEzWOOf.js';
2
2
  import 'vue';
@@ -1,7 +1,144 @@
1
- import { computed, watch, onScopeDispose, nextTick, ref, watchEffect, effectScope, inject, mergeProps, shallowRef, onMounted, reactive, provide, toValue, toRaw, toRef, readonly, warn, onBeforeUnmount, createElementVNode, Fragment, createVNode, Teleport, withDirectives, vShow, Transition } from 'vue';
2
- import { aw as isOn, ax as eventName, p as propsFactory, ay as destructComputed, az as parseAnchor, aA as flipSide, aB as flipAlign, aC as flipCorner, aD as CircularBuffer, aE as deepEqual, a9 as consoleError, aF as getAxis, q as convertToUnit, R as clamp, I as IN_BROWSER, T as useToggleScope, aG as defer, au as getCurrentInstance, aH as templateRef, aI 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, aJ as useRouter, aK as useBackButton, a as useRender } from './asWebComponent-By_7_JjS.js';
3
- import { g as getTargetBox, e as getElementBox, B as Box, h as getOverflow, n as nullifyTransforms, m as makeLazyProps, u as useLazy, b as useScopeId, a as animate, s as standardEasing } from './forwardRefs-BXxrv98s.js';
4
- import { m as makeTransitionProps, M as MaybeTransition } from './transition-C98Yn4Vo.js';
1
+ import { computed, watch, onScopeDispose, nextTick, ref, watchEffect, effectScope, inject, mergeProps, shallowRef, onMounted, toRef, reactive, provide, toValue, toRaw, readonly, warn, onBeforeUnmount, createElementVNode, Fragment, createVNode, Teleport, withDirectives, vShow, Transition } from 'vue';
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, av as CircularBuffer, aw as deepEqual, W as consoleError, ax as getAxis, o as convertToUnit, v as clamp, al as IN_BROWSER, y as useToggleScope, ay as defer, ak as getCurrentInstance, az as templateRef, aA as matchesSelector, D as useDisplay, q as makeThemeProps, d as makeDimensionProps, e as makeComponentProps, g as genericComponent, x as useProxiedModel, k as provideTheme, l as useRtl, f as useBackgroundColor, b as useDimension, aB as useRouter, aC as useBackButton, c as useRender } from './asWebComponent-ZyEzWOOf.js';
3
+ import { m as makeTransitionProps, M as MaybeTransition } from './transition-yBii4fu6.js';
4
+
5
+ class Box {
6
+ constructor(_ref) {
7
+ let {
8
+ x,
9
+ y,
10
+ width,
11
+ height
12
+ } = _ref;
13
+ this.x = x;
14
+ this.y = y;
15
+ this.width = width;
16
+ this.height = height;
17
+ }
18
+ get top() {
19
+ return this.y;
20
+ }
21
+ get bottom() {
22
+ return this.y + this.height;
23
+ }
24
+ get left() {
25
+ return this.x;
26
+ }
27
+ get right() {
28
+ return this.x + this.width;
29
+ }
30
+ }
31
+ function getOverflow(a, b) {
32
+ return {
33
+ x: {
34
+ before: Math.max(0, b.left - a.left),
35
+ after: Math.max(0, a.right - b.right)
36
+ },
37
+ y: {
38
+ before: Math.max(0, b.top - a.top),
39
+ after: Math.max(0, a.bottom - b.bottom)
40
+ }
41
+ };
42
+ }
43
+ function getTargetBox(target) {
44
+ if (Array.isArray(target)) {
45
+ return new Box({
46
+ x: target[0],
47
+ y: target[1],
48
+ width: 0,
49
+ height: 0
50
+ });
51
+ } else {
52
+ return target.getBoundingClientRect();
53
+ }
54
+ }
55
+ function getElementBox(el) {
56
+ if (el === document.documentElement) {
57
+ if (!visualViewport) {
58
+ return new Box({
59
+ x: 0,
60
+ y: 0,
61
+ width: document.documentElement.clientWidth,
62
+ height: document.documentElement.clientHeight
63
+ });
64
+ } else {
65
+ return new Box({
66
+ x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
67
+ y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
68
+ width: visualViewport.width * visualViewport.scale,
69
+ height: visualViewport.height * visualViewport.scale
70
+ });
71
+ }
72
+ } else {
73
+ const rect = el.getBoundingClientRect();
74
+ return new Box({
75
+ x: rect.x,
76
+ y: rect.y,
77
+ width: el.clientWidth,
78
+ height: el.clientHeight
79
+ });
80
+ }
81
+ }
82
+
83
+ // Utilities
84
+ /** @see https://stackoverflow.com/a/57876601/2074736 */
85
+ function nullifyTransforms(el) {
86
+ const rect = el.getBoundingClientRect();
87
+ const style = getComputedStyle(el);
88
+ const tx = style.transform;
89
+ if (tx) {
90
+ let ta, sx, sy, dx, dy;
91
+ if (tx.startsWith('matrix3d(')) {
92
+ ta = tx.slice(9, -1).split(/, /);
93
+ sx = Number(ta[0]);
94
+ sy = Number(ta[5]);
95
+ dx = Number(ta[12]);
96
+ dy = Number(ta[13]);
97
+ } else if (tx.startsWith('matrix(')) {
98
+ ta = tx.slice(7, -1).split(/, /);
99
+ sx = Number(ta[0]);
100
+ sy = Number(ta[3]);
101
+ dx = Number(ta[4]);
102
+ dy = Number(ta[5]);
103
+ } else {
104
+ return new Box(rect);
105
+ }
106
+ const to = style.transformOrigin;
107
+ const x = rect.x - dx - (1 - sx) * parseFloat(to);
108
+ const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1));
109
+ const w = sx ? rect.width / sx : el.offsetWidth + 1;
110
+ const h = sy ? rect.height / sy : el.offsetHeight + 1;
111
+ return new Box({
112
+ x,
113
+ y,
114
+ width: w,
115
+ height: h
116
+ });
117
+ } else {
118
+ return new Box(rect);
119
+ }
120
+ }
121
+ function animate(el, keyframes, options) {
122
+ if (typeof el.animate === 'undefined') return {
123
+ finished: Promise.resolve()
124
+ };
125
+ let animation;
126
+ try {
127
+ animation = el.animate(keyframes, options);
128
+ } catch (err) {
129
+ return {
130
+ finished: Promise.resolve()
131
+ };
132
+ }
133
+ if (typeof animation.finished === 'undefined') {
134
+ animation.finished = new Promise(resolve => {
135
+ animation.onfinish = () => {
136
+ resolve(animation);
137
+ };
138
+ });
139
+ }
140
+ return animation;
141
+ }
5
142
 
6
143
  // Utilities
7
144
  const handlers = new WeakMap();
@@ -75,6 +212,10 @@ function attachedRoot(node) {
75
212
  return root;
76
213
  }
77
214
 
215
+ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
216
+ const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
217
+ const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
218
+
78
219
  function getScrollParent(el) {
79
220
  let includeHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
80
221
  while (el) {
@@ -1138,6 +1279,35 @@ function useHydration() {
1138
1279
  }
1139
1280
  }
1140
1281
 
1282
+ // Utilities
1283
+ const makeLazyProps = propsFactory({
1284
+ eager: Boolean
1285
+ }, 'lazy');
1286
+ function useLazy(props, active) {
1287
+ const isBooted = shallowRef(false);
1288
+ const hasContent = toRef(() => isBooted.value || props.eager || active.value);
1289
+ watch(active, () => isBooted.value = true);
1290
+ function onAfterLeave() {
1291
+ if (!props.eager) isBooted.value = false;
1292
+ }
1293
+ return {
1294
+ isBooted,
1295
+ hasContent,
1296
+ onAfterLeave
1297
+ };
1298
+ }
1299
+
1300
+ // Utilities
1301
+ function useScopeId() {
1302
+ const vm = getCurrentInstance('useScopeId');
1303
+ const scopeId = vm.vnode.scopeId;
1304
+ return {
1305
+ scopeId: scopeId ? {
1306
+ [scopeId]: ''
1307
+ } : undefined
1308
+ };
1309
+ }
1310
+
1141
1311
  // Composables
1142
1312
  const StackSymbol = Symbol.for('vuetify:stack');
1143
1313
  const globalStack = reactive([]);
@@ -1496,4 +1666,101 @@ const VOverlay = genericComponent()({
1496
1666
  }
1497
1667
  });
1498
1668
 
1499
- export { VOverlay as V, makeVOverlayProps as m };
1669
+ // Types
1670
+
1671
+ const Refs = Symbol('Forwarded refs');
1672
+
1673
+ /** Omit properties starting with P */
1674
+
1675
+ /** Omit keyof $props from T */
1676
+
1677
+ function getDescriptor(obj, key) {
1678
+ let currentObj = obj;
1679
+ while (currentObj) {
1680
+ const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);
1681
+ if (descriptor) return descriptor;
1682
+ currentObj = Object.getPrototypeOf(currentObj);
1683
+ }
1684
+ return undefined;
1685
+ }
1686
+ function forwardRefs(target) {
1687
+ for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1688
+ refs[_key - 1] = arguments[_key];
1689
+ }
1690
+ target[Refs] = refs;
1691
+ return new Proxy(target, {
1692
+ get(target, key) {
1693
+ if (Reflect.has(target, key)) {
1694
+ return Reflect.get(target, key);
1695
+ }
1696
+
1697
+ // Skip internal properties
1698
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
1699
+ for (const ref of refs) {
1700
+ if (ref.value && Reflect.has(ref.value, key)) {
1701
+ const val = Reflect.get(ref.value, key);
1702
+ return typeof val === 'function' ? val.bind(ref.value) : val;
1703
+ }
1704
+ }
1705
+ },
1706
+ has(target, key) {
1707
+ if (Reflect.has(target, key)) {
1708
+ return true;
1709
+ }
1710
+
1711
+ // Skip internal properties
1712
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
1713
+ for (const ref of refs) {
1714
+ if (ref.value && Reflect.has(ref.value, key)) {
1715
+ return true;
1716
+ }
1717
+ }
1718
+ return false;
1719
+ },
1720
+ set(target, key, value) {
1721
+ if (Reflect.has(target, key)) {
1722
+ return Reflect.set(target, key, value);
1723
+ }
1724
+
1725
+ // Skip internal properties
1726
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;
1727
+ for (const ref of refs) {
1728
+ if (ref.value && Reflect.has(ref.value, key)) {
1729
+ return Reflect.set(ref.value, key, value);
1730
+ }
1731
+ }
1732
+ return false;
1733
+ },
1734
+ getOwnPropertyDescriptor(target, key) {
1735
+ const descriptor = Reflect.getOwnPropertyDescriptor(target, key);
1736
+ if (descriptor) return descriptor;
1737
+
1738
+ // Skip internal properties
1739
+ if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;
1740
+
1741
+ // Check each ref's own properties
1742
+ for (const ref of refs) {
1743
+ if (!ref.value) continue;
1744
+ const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);
1745
+ if (descriptor) return descriptor;
1746
+ }
1747
+
1748
+ // Recursive search up each ref's prototype
1749
+ for (const ref of refs) {
1750
+ const childRefs = ref.value && ref.value[Refs];
1751
+ if (!childRefs) continue;
1752
+ const queue = childRefs.slice();
1753
+ while (queue.length) {
1754
+ const ref = queue.shift();
1755
+ const descriptor = getDescriptor(ref.value, key);
1756
+ if (descriptor) return descriptor;
1757
+ const childRefs = ref.value && ref.value[Refs];
1758
+ if (childRefs) queue.push(...childRefs);
1759
+ }
1760
+ }
1761
+ return undefined;
1762
+ }
1763
+ });
1764
+ }
1765
+
1766
+ export { VOverlay as V, animate as a, acceleratedEasing as b, deceleratedEasing as d, forwardRefs as f, getTargetBox as g, makeVOverlayProps as m, nullifyTransforms as n, standardEasing as s, useScopeId as u };
@@ -1,8 +1,8 @@
1
1
  import log from 'loglevel';
2
- import { s as separateEndpointLinks, c as createTiffLayerDefinition, p as pollProcessStatus, e as extractAsyncResults, u as updateJobsStatus, a as creatAsyncProcessLayerDefinitions, g as getBboxProperty, b as generateTimePairs, f as updateJsonformSchemaTarget, h as extractGeometries, i as applyProcessLayersToMap } from './async-DkSu_u2K.js';
3
- import { f as axios, h as extractLayerConfig, C as compareIndicator, B as indicator, s as extractCollectionUrls, v as currentCompareUrl, w as currentUrl, k as getDatetimeProperty, x as datetime, D as comparePoi, y as poi } from './helpers-Dy0Q13tP.js';
2
+ import { s as separateEndpointLinks, c as createTiffLayerDefinition, p as pollProcessStatus, e as extractAsyncResults, u as updateJobsStatus, a as creatAsyncProcessLayerDefinitions, g as getBboxProperty, b as generateTimePairs, f as updateJsonformSchemaTarget, h as extractGeometries, i as applyProcessLayersToMap } from './async-B7jIrM53.js';
3
+ import { f as axios, h as extractLayerConfig, D as compareIndicator, C as indicator, t as extractCollectionUrls, w as currentCompareUrl, x as currentUrl, u as generateLinksFromItems, k as getDatetimeProperty, y as datetime, E as comparePoi, z as poi } from './helpers-wXK7Ywio.js';
4
4
  import mustache from 'mustache';
5
- import { a5 as isFirstLoad, Y as useSTAcStore, a8 as useGetSubCodeId } from './asWebComponent-By_7_JjS.js';
5
+ import { O as isFirstLoad, E as useSTAcStore, R as readParquetItems, S as useGetSubCodeId } from './asWebComponent-ZyEzWOOf.js';
6
6
  import { toAbsolute } from 'stac-js/src/http.js';
7
7
 
8
8
  ////// --- CHARTS --- //////
@@ -856,7 +856,22 @@ async function fetchVedaCOGsConfig(selectedStac, absoluteUrl) {
856
856
  collectionLinks.map((link) =>
857
857
  axios
858
858
  .get(toAbsolute(link.href, absoluteUrl))
859
- .then((resp) => resp.data),
859
+ .then((resp) => resp.data)
860
+ .then(async (collection) => {
861
+ // items in geoparquet handling specially to get item links
862
+ const parquetAsset = Object.values(collection.assets ?? {}).find(
863
+ (asset) =>
864
+ asset.type === "application/vnd.apache.parquet" &&
865
+ asset.roles?.includes("collection-mirror"),
866
+ );
867
+ if (parquetAsset) {
868
+ const parquetAbsoluteUrl = toAbsolute(parquetAsset.href, toAbsolute(link.href, absoluteUrl));
869
+ await readParquetItems(parquetAbsoluteUrl).then((items) => {
870
+ collection.links.push(...generateLinksFromItems(items));
871
+ });
872
+ }
873
+ return collection;
874
+ }),
860
875
  ),
861
876
  )),
862
877
  );
@@ -867,7 +882,7 @@ async function fetchVedaCOGsConfig(selectedStac, absoluteUrl) {
867
882
  const datetimeProperty = /** @type string **/ (
868
883
  getDatetimeProperty(collection.links)
869
884
  );
870
- let itemLinks = collection.links.filter((link) => link.rel == "item");
885
+ const itemLinks = collection.links.filter((link) => link.rel == "item");
871
886
  configs.push(
872
887
  ...itemLinks.map((link) => ({
873
888
  endpoint: /** @type {string} */ (link["cog_href"]),
@@ -4229,7 +4229,7 @@ const extractLayerDatetime = (links, currentStep) => {
4229
4229
  slider: true,
4230
4230
  navigation: true,
4231
4231
  play: false,
4232
- displayFormat: "DD.MM.YYYY HH:MM",
4232
+ displayFormat: "DD.MM.YYYY HH:mm",
4233
4233
  };
4234
4234
  };
4235
4235
 
@@ -4531,4 +4531,26 @@ function getDatetimeProperty(links) {
4531
4531
  }
4532
4532
  }
4533
4533
 
4534
- export { mapPosition as A, indicator as B, compareIndicator as C, comparePoi as D, states as E, actions as F, includesProcess as G, mapCompareEl as H, getColFromLayer as I, setMapProjFromCol as J, availableMapProjection as K, changeMapProjection as L, setActiveTemplate as M, axios$1 as N, removeUnneededProperties as O, createAssetID as a, addTooltipInteraction as b, createLayerID as c, mapEl as d, extractRoles as e, axios as f, getProjectionCode as g, extractLayerConfig as h, fetchStyle as i, extractLayerDatetime as j, getDatetimeProperty as k, getLayers as l, mergeGeojsons as m, getCompareLayers as n, findLayer as o, replaceLayer as p, generateFeatures as q, registerProjection as r, extractCollectionUrls as s, generateLinksFromItems as t, revokeCollectionBlobUrls as u, currentCompareUrl as v, currentUrl as w, datetime as x, poi as y, activeTemplate as z };
4534
+ /**
4535
+ * @param {import ("stac-ts").StacCollection | undefined | null} collection
4536
+ * @returns {object}
4537
+ */
4538
+ function extractLayerLegend(collection) {
4539
+ let extraProperties = {};
4540
+ if (collection?.assets?.legend?.href) {
4541
+ extraProperties = {
4542
+ description: `<div style="width: 100%">
4543
+ <img src="${collection.assets.legend.href}" style="max-height:70px; margin-top:-15px; margin-bottom:-20px;" />
4544
+ </div>`,
4545
+ };
4546
+ }
4547
+ // Check if collection has eox:colorlegend definition, if yes overwrite legend description
4548
+ if (collection && collection["eox:colorlegend"]) {
4549
+ extraProperties = {
4550
+ layerLegend: collection["eox:colorlegend"],
4551
+ };
4552
+ }
4553
+ return extraProperties;
4554
+ }
4555
+
4556
+ export { activeTemplate as A, mapPosition as B, indicator as C, compareIndicator as D, comparePoi as E, states as F, actions as G, includesProcess as H, mapCompareEl as I, getColFromLayer as J, setMapProjFromCol as K, availableMapProjection as L, changeMapProjection as M, setActiveTemplate as N, axios$1 as O, removeUnneededProperties as P, createAssetID as a, addTooltipInteraction as b, createLayerID as c, mapEl as d, extractRoles as e, axios as f, getProjectionCode as g, extractLayerConfig as h, fetchStyle as i, extractLayerDatetime as j, getDatetimeProperty as k, getLayers as l, mergeGeojsons as m, getCompareLayers as n, findLayer as o, replaceLayer as p, generateFeatures as q, registerProjection as r, extractLayerLegend as s, extractCollectionUrls as t, generateLinksFromItems as u, revokeCollectionBlobUrls as v, currentCompareUrl as w, currentUrl as x, datetime as y, poi as z };
@@ -2,13 +2,13 @@ import { onMounted, watch, nextTick, ref, useTemplateRef, computed, createElemen
2
2
  import '@eox/chart';
3
3
  import '@eox/drawtools';
4
4
  import '@eox/jsonform';
5
- import { a7 as eoxLayersKey, a6 as useOnLayersUpdate, _ as _export_sfc, Y as useSTAcStore, V as VBtn } from './asWebComponent-By_7_JjS.js';
5
+ import { Q as eoxLayersKey, P as useOnLayersUpdate, _ as _export_sfc, E as useSTAcStore, G as VBtn } from './asWebComponent-ZyEzWOOf.js';
6
6
  import { storeToRefs } from 'pinia';
7
- import { P as ProcessList, c as compareJobs, j as jobs } from './ProcessList-C2xsLU2_.js';
8
- import { i as initProcess, o as onChartClick, h as handleProcesses } from './handling-CgmFXkW6.js';
7
+ import { P as ProcessList, c as compareJobs, j as jobs } from './ProcessList-vecpxThi.js';
8
+ import { i as initProcess, o as onChartClick, h as handleProcesses } from './handling-BS24aG1q.js';
9
9
  import { useEventBus } from '@vueuse/core';
10
- import { u as updateJobsStatus, d as download } from './async-DkSu_u2K.js';
11
- import { C as compareIndicator, B as indicator, H as mapCompareEl, d as mapEl } from './helpers-Dy0Q13tP.js';
10
+ import { u as updateJobsStatus, d as download } from './async-B7jIrM53.js';
11
+ import { D as compareIndicator, C as indicator, I as mapCompareEl, d as mapEl } from './helpers-wXK7Ywio.js';
12
12
  import { mdiCogPlayOutline, mdiDownloadCircleOutline } from '@mdi/js';
13
13
 
14
14
  /**
@@ -1,6 +1,6 @@
1
1
  import { resolveComponent, render, h, mergeProps } from 'vue';
2
- import { a9 as consoleError, E as isObject } from './asWebComponent-By_7_JjS.js';
3
- import { V as VTooltip } from './VTooltip-DZ0fjpB3.js';
2
+ import { W as consoleError, X as isObject } from './asWebComponent-ZyEzWOOf.js';
3
+ import { V as VTooltip } from './VTooltip-J4ac48X7.js';
4
4
 
5
5
  // Utilities
6
6
  function useDirectiveComponent(component, props) {