@eodash/eodash 5.7.0 → 5.7.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 (113) hide show
  1. package/core/client/components/EodashOverlay.vue +27 -4
  2. package/core/client/composables/DefineEodash.js +0 -1
  3. package/core/client/composables/DefineWidgets.js +3 -1
  4. package/core/client/eodashSTAC/EodashCollection.js +74 -20
  5. package/core/client/eodashSTAC/cql.js +64 -0
  6. package/core/client/eodashSTAC/createLayers.js +169 -116
  7. package/core/client/eodashSTAC/helpers.js +391 -98
  8. package/core/client/eodashSTAC/mosaic.js +416 -0
  9. package/core/client/plugins/axios.js +31 -1
  10. package/core/client/store/actions.js +1 -1
  11. package/core/client/store/stac.js +25 -4
  12. package/core/client/store/states.js +20 -2
  13. package/core/client/types.ts +147 -28
  14. package/core/client/utils/bands-editor/exampleSchema.json +50 -50
  15. package/core/client/utils/states.js +10 -0
  16. package/dist/client/{DashboardLayout-kRsmsNW5.js → DashboardLayout-ePbdvUTE.js} +2 -2
  17. package/dist/client/{DynamicWebComponent-CnKhYo0K.js → DynamicWebComponent-g5SdRbjY.js} +1 -1
  18. package/dist/client/{EodashChart-CLDqE93C.js → EodashChart-ChrkA5oS.js} +7 -6
  19. package/dist/client/{EodashDatePicker-CMPDT-ce.js → EodashDatePicker-CY1TrsDo.js} +3 -3
  20. package/dist/client/{EodashItemFilter-BpdA8QQa.js → EodashItemFilter-DzshHDlS.js} +2 -1
  21. package/dist/client/{EodashLayerControl-BHpDA4_0.js → EodashLayerControl-DMCeMkSd.js} +50 -20
  22. package/dist/client/{EodashLayoutSwitcher-B1fRUt7G.js → EodashLayoutSwitcher-iJ8mX1rF.js} +3 -3
  23. package/dist/client/{EodashMapBtns-Cpned0tc.js → EodashMapBtns-C7Cr7q5Y.js} +200 -86
  24. package/dist/client/EodashStacInfo-K7-iuXa7.js +169 -0
  25. package/dist/client/{EodashTools-1zHz26gv.js → EodashTools-BEK7e7JM.js} +4 -4
  26. package/dist/client/{ExportState-DbOm8hBI.js → ExportState-CqIzfMYQ.js} +6 -168
  27. package/dist/client/{Footer-BKg-VVkj.js → Footer-1P0cmBOZ.js} +1 -1
  28. package/dist/client/{Header-DCrwCvmY.js → Header-CkkBaBNh.js} +2 -2
  29. package/dist/client/{MobileLayout-vWSHpluo.js → MobileLayout-BPf49kDU.js} +2 -2
  30. package/dist/client/{PopUp-9uimfK49.js → PopUp-DPZq5SWI.js} +4 -168
  31. package/dist/client/{ProcessList-CTTIZa06.js → ProcessList-DuI6WpS1.js} +5 -5
  32. package/dist/client/VDivider-Bj9LG_JV.js +168 -0
  33. package/dist/client/{VImg-CrmB76ZY.js → VImg-Ddv5OyMz.js} +2 -2
  34. package/dist/client/{VMain-OKZNpcEG.js → VMain-7yqk_qC3.js} +1 -1
  35. package/dist/client/{VTooltip-CJw2FyWk.js → VTooltip-2hAJyEoa.js} +2 -2
  36. package/dist/client/{WidgetsContainer-BaWOnE5R.js → WidgetsContainer-2DOrlwCB.js} +1 -1
  37. package/dist/client/{asWebComponent-BHWpMuE3.js → asWebComponent-BlFN2lkB.js} +456 -306
  38. package/dist/client/{async-DSKj6g1f.js → async-B2H8ZwUK.js} +2 -2
  39. package/dist/client/{create-layers-config-CBoYedqB.js → create-layers-config-u_vn5hPk.js} +17 -17
  40. package/dist/client/dialog-transition-BrMkMiNa.js +170 -0
  41. package/dist/client/eo-dash.js +1 -1
  42. package/dist/client/{forwardRefs-DH51zPUr.js → forwardRefs-DAlror6d.js} +8 -87
  43. package/dist/client/{handling-BrcDDlgS.js → handling-B6I1V5eG.js} +3 -3
  44. package/dist/client/{helpers-DjZVl_WF.js → helpers-CBqIUSXJ.js} +794 -182
  45. package/dist/client/index-BWq1ZKaV.js +3168 -0
  46. package/dist/client/{index-CUjl-ZsI.js → index-CJ9UI3ln.js} +2 -2
  47. package/dist/client/{index-CSG_JoOA.js → index-DXLz4sFR.js} +62 -56
  48. package/dist/client/{index-1JKE68n3.js → index-DhKU6KqM.js} +211 -67
  49. package/dist/client/{index-Cu3-13Xg.js → index-DjQlbWbJ.js} +7 -6
  50. package/dist/client/mosaic-BFYLEwyx.js +455 -0
  51. package/dist/client/templates.js +250 -119
  52. package/dist/client/{transition-OHcz5Qq1.js → transition-D_W6Wn9v.js} +1 -1
  53. package/dist/node/cli.js +5 -5
  54. package/dist/node/types.d.ts +4 -0
  55. package/dist/types/core/client/composables/DefineEodash.d.ts +1 -1
  56. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +57 -25
  57. package/dist/types/core/client/eodashSTAC/cql.d.ts +15 -0
  58. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +42 -23
  59. package/dist/types/core/client/eodashSTAC/helpers.d.ts +77 -18
  60. package/dist/types/core/client/eodashSTAC/mosaic.d.ts +56 -0
  61. package/dist/types/core/client/store/stac.d.ts +31 -7
  62. package/dist/types/core/client/store/states.d.ts +24 -2
  63. package/dist/types/core/client/types.d.ts +123 -24
  64. package/dist/types/core/client/utils/states.d.ts +12 -0
  65. package/dist/types/templates/baseConfig.d.ts +1 -100
  66. package/dist/types/templates/compare.d.ts +32 -3
  67. package/dist/types/templates/expert.d.ts +18 -0
  68. package/dist/types/templates/explore.d.ts +9 -1
  69. package/dist/types/templates/lite.d.ts +11 -0
  70. package/dist/types/widgets/EodashChart.vue.d.ts +5 -3
  71. package/dist/types/widgets/EodashItemCatalog/index.vue.d.ts +129 -2
  72. package/dist/types/widgets/EodashItemCatalog/methods/filters.d.ts +28 -6
  73. package/dist/types/widgets/EodashItemCatalog/methods/handlers.d.ts +17 -4
  74. package/dist/types/widgets/EodashItemCatalog/methods/map.d.ts +16 -4
  75. package/dist/types/widgets/EodashLayerControl.vue.d.ts +35 -16
  76. package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +14 -10
  77. package/dist/types/widgets/EodashMap/index.vue.d.ts +86 -37
  78. package/dist/types/widgets/EodashMap/methods/create-layers-config.d.ts +1 -1
  79. package/dist/types/widgets/EodashMap/methods/index.d.ts +5 -1
  80. package/dist/types/widgets/EodashMap/methods/use-map-loading.d.ts +1 -0
  81. package/dist/types/widgets/EodashProcess/index.vue.d.ts +5 -3
  82. package/dist/types/widgets/EodashProcess/states.d.ts +1 -1
  83. package/dist/types/widgets/EodashStacInfo.vue.d.ts +20 -0
  84. package/dist/types/widgets/EodashTimeSlider/index.vue.d.ts +20 -0
  85. package/dist/types/widgets/EodashTimeSlider/methods/index.d.ts +3 -8
  86. package/dist/types/widgets/EodashTimeSlider/types.d.ts +6 -16
  87. package/dist/types/widgets/EodashTools.vue.d.ts +5 -5
  88. package/package.json +33 -33
  89. package/templates/baseConfig.js +36 -6
  90. package/templates/compare.js +62 -7
  91. package/templates/expert.js +23 -0
  92. package/templates/explore.js +11 -5
  93. package/templates/lite.js +14 -0
  94. package/widgets/EodashChart.vue +1 -0
  95. package/widgets/EodashItemCatalog/index.vue +363 -35
  96. package/widgets/EodashItemCatalog/methods/filters.js +134 -70
  97. package/widgets/EodashItemCatalog/methods/handlers.js +113 -19
  98. package/widgets/EodashItemCatalog/methods/map.js +142 -28
  99. package/widgets/EodashLayerControl.vue +42 -11
  100. package/widgets/EodashMap/EodashMapBtns.vue +109 -48
  101. package/widgets/EodashMap/index.vue +89 -105
  102. package/widgets/EodashMap/methods/btns.js +37 -5
  103. package/widgets/EodashMap/methods/create-layers-config.js +16 -16
  104. package/widgets/EodashMap/methods/index.js +71 -8
  105. package/widgets/EodashMap/methods/use-map-loading.js +52 -0
  106. package/widgets/EodashProcess/index.vue +1 -0
  107. package/widgets/EodashProcess/states.js +1 -1
  108. package/widgets/EodashStacInfo.vue +64 -2
  109. package/widgets/EodashTimeSlider/index.vue +58 -2
  110. package/widgets/EodashTimeSlider/methods/index.js +5 -48
  111. package/widgets/EodashTimeSlider/types.ts +7 -17
  112. package/dist/client/EodashStacInfo-BQspAHKH.js +0 -107
  113. package/dist/client/index-5Jhsa8Xe.js +0 -570
@@ -1,16 +1,12 @@
1
1
  import { mdiViewDashboardVariant, mdiViewDashboard } from '@mdi/js';
2
- import { O as includesProcess, P as shouldShowChartWidget } from './helpers-DjZVl_WF.js';
2
+ import { Z as includesProcess, _ as shouldShowChartWidget } from './helpers-CBqIUSXJ.js';
3
3
 
4
4
  /**
5
5
  * Special values that tell deepmerge to perform a certain action.
6
6
  */
7
7
  const actions = {
8
- defaultMerge: Symbol("deepmerge-ts: default merge")};
9
- /**
10
- * Special values that tell deepmergeInto to perform a certain action.
11
- */
12
- const actionsInto = {
13
- defaultMerge: actions.defaultMerge,
8
+ defaultMerge: Symbol("deepmerge-ts: default merge"),
9
+ skip: Symbol("deepmerge-ts: skip"),
14
10
  };
15
11
 
16
12
  /**
@@ -156,12 +152,12 @@ function isRecord(value) {
156
152
  }
157
153
 
158
154
  /**
159
- * The default strategy to merge records into a target record.
155
+ * The default strategy to merge records.
160
156
  *
161
- * @param mut_target - The result will be mutated into this record
162
- * @param values - The records (including the target's value if there is one).
157
+ * @param values - The records.
163
158
  */
164
- function mergeRecordsInto$1(mut_target, values, utils, meta) {
159
+ function mergeRecords$1(values, utils, meta) {
160
+ const result = {};
165
161
  for (const key of getKeys(values)) {
166
162
  const propValues = [];
167
163
  for (const value of values) {
@@ -176,202 +172,209 @@ function mergeRecordsInto$1(mut_target, values, utils, meta) {
176
172
  key,
177
173
  parents: values,
178
174
  });
179
- const propertyTarget = { value: propValues[0] };
180
- mergeUnknownsInto(propertyTarget, propValues, utils, updatedMeta);
175
+ const propertyResult = mergeUnknowns(propValues, utils, updatedMeta);
176
+ if (propertyResult === actions.skip) {
177
+ continue;
178
+ }
181
179
  if (key === "__proto__") {
182
- Object.defineProperty(mut_target.value, key, {
183
- value: propertyTarget.value,
180
+ Object.defineProperty(result, key, {
181
+ value: propertyResult,
184
182
  configurable: true,
185
183
  enumerable: true,
186
184
  writable: true,
187
185
  });
188
186
  }
189
187
  else {
190
- mut_target.value[key] = propertyTarget.value;
188
+ result[key] = propertyResult;
191
189
  }
192
190
  }
191
+ return result;
193
192
  }
194
193
  /**
195
- * The default strategy to merge arrays into a target array.
194
+ * The default strategy to merge arrays.
196
195
  *
197
- * @param mut_target - The result will be mutated into this array
198
- * @param values - The arrays (including the target's value if there is one).
196
+ * @param values - The arrays.
199
197
  */
200
- function mergeArraysInto$1(mut_target, values) {
201
- mut_target.value.push(...values.slice(1).flat());
198
+ function mergeArrays$1(values) {
199
+ return values.flat();
202
200
  }
203
201
  /**
204
- * The default strategy to merge sets into a target set.
202
+ * The default strategy to merge sets.
205
203
  *
206
- * @param mut_target - The result will be mutated into this set
207
- * @param values - The sets (including the target's value if there is one).
204
+ * @param values - The sets.
208
205
  */
209
- function mergeSetsInto$1(mut_target, values) {
210
- for (const value of getIterableOfIterables(values.slice(1))) {
211
- mut_target.value.add(value);
212
- }
206
+ function mergeSets$1(values) {
207
+ return new Set(getIterableOfIterables(values));
213
208
  }
214
209
  /**
215
- * The default strategy to merge maps into a target map.
210
+ * The default strategy to merge maps.
216
211
  *
217
- * @param mut_target - The result will be mutated into this map
218
- * @param values - The maps (including the target's value if there is one).
212
+ * @param values - The maps.
219
213
  */
220
- function mergeMapsInto$1(mut_target, values) {
221
- for (const [key, value] of getIterableOfIterables(values.slice(1))) {
222
- mut_target.value.set(key, value);
223
- }
214
+ function mergeMaps$1(values) {
215
+ return new Map(getIterableOfIterables(values));
224
216
  }
225
217
  /**
226
- * Set the target to the last value.
218
+ * Get the last value in the given array.
227
219
  */
228
- function mergeOthersInto$1(mut_target, values) {
229
- mut_target.value = values.at(-1);
220
+ function mergeOthers$1(values) {
221
+ return values.at(-1);
230
222
  }
231
223
  /**
232
224
  * The merge functions.
233
225
  */
234
- const mergeIntoFunctions = {
235
- mergeRecords: mergeRecordsInto$1,
236
- mergeArrays: mergeArraysInto$1,
237
- mergeSets: mergeSetsInto$1,
238
- mergeMaps: mergeMapsInto$1,
239
- mergeOthers: mergeOthersInto$1,
226
+ const mergeFunctions = {
227
+ mergeRecords: mergeRecords$1,
228
+ mergeArrays: mergeArrays$1,
229
+ mergeSets: mergeSets$1,
230
+ mergeMaps: mergeMaps$1,
231
+ mergeOthers: mergeOthers$1,
240
232
  };
241
-
242
- function deepmergeInto(target, ...objects) {
243
- return void deepmergeIntoCustom({})(target, ...objects);
244
- }
245
- function deepmergeIntoCustom(options, rootMetaData) {
246
- const utils = getIntoUtils(options, customizedDeepmergeInto);
233
+ function deepmergeCustom(options, rootMetaData) {
234
+ const utils = getUtils(options, customizedDeepmerge);
247
235
  /**
248
236
  * The customized deepmerge function.
249
237
  */
250
- function customizedDeepmergeInto(target, ...objects) {
251
- mergeUnknownsInto({ value: target }, [target, ...objects], utils, rootMetaData);
238
+ function customizedDeepmerge(...objects) {
239
+ return mergeUnknowns(objects, utils, rootMetaData);
252
240
  }
253
- return customizedDeepmergeInto;
241
+ return customizedDeepmerge;
254
242
  }
255
243
  /**
256
244
  * The the utils that are available to the merge functions.
257
245
  *
258
246
  * @param options - The options the user specified
259
247
  */
260
- function getIntoUtils(options, customizedDeepmergeInto) {
248
+ function getUtils(options, customizedDeepmerge) {
261
249
  return {
262
- defaultMergeFunctions: mergeIntoFunctions,
250
+ defaultMergeFunctions: mergeFunctions,
263
251
  mergeFunctions: {
264
- ...mergeIntoFunctions,
252
+ ...mergeFunctions,
265
253
  ...Object.fromEntries(Object.entries(options)
266
- .filter(([key, option]) => Object.hasOwn(mergeIntoFunctions, key))
267
- .map(([key, option]) => (option === false ? [key, mergeIntoFunctions.mergeOthers] : [key, option]))),
254
+ .filter(([key, option]) => Object.hasOwn(mergeFunctions, key))
255
+ .map(([key, option]) => (option === false ? [key, mergeFunctions.mergeOthers] : [key, option]))),
268
256
  },
269
257
  metaDataUpdater: (options.metaDataUpdater ?? defaultMetaDataUpdater),
270
- deepmergeInto: customizedDeepmergeInto,
258
+ deepmerge: customizedDeepmerge,
259
+ useImplicitDefaultMerging: options.enableImplicitDefaultMerging ?? false,
271
260
  filterValues: options.filterValues === false ? undefined : (options.filterValues ?? defaultFilterValues),
272
- actions: actionsInto,
261
+ actions,
273
262
  };
274
263
  }
275
264
  /**
276
- * Merge unknown things into a target.
265
+ * Merge unknown things.
277
266
  *
278
- * @param mut_target - The target to merge into.
279
267
  * @param values - The values.
280
268
  */
281
- function mergeUnknownsInto(mut_target, values, utils, meta) {
269
+ function mergeUnknowns(values, utils, meta) {
282
270
  const filteredValues = utils.filterValues?.(values, meta) ?? values;
283
271
  if (filteredValues.length === 0) {
284
- return;
272
+ return undefined;
285
273
  }
286
274
  if (filteredValues.length === 1) {
287
- return void mergeOthersInto(mut_target, filteredValues, utils, meta);
275
+ return mergeOthers(filteredValues, utils, meta);
288
276
  }
289
- const type = getObjectType(mut_target.value);
277
+ const type = getObjectType(filteredValues[0]);
290
278
  if (type !== 0 /* ObjectType.NOT */ && type !== 5 /* ObjectType.OTHER */) {
291
279
  for (let mut_index = 1; mut_index < filteredValues.length; mut_index++) {
292
280
  if (getObjectType(filteredValues[mut_index]) === type) {
293
281
  continue;
294
282
  }
295
- return void mergeOthersInto(mut_target, filteredValues, utils, meta);
283
+ return mergeOthers(filteredValues, utils, meta);
296
284
  }
297
285
  }
298
286
  switch (type) {
299
287
  case 1 /* ObjectType.RECORD */: {
300
- return void mergeRecordsInto(mut_target, filteredValues, utils, meta);
288
+ return mergeRecords(filteredValues, utils, meta);
301
289
  }
302
290
  case 2 /* ObjectType.ARRAY */: {
303
- return void mergeArraysInto(mut_target, filteredValues, utils, meta);
291
+ return mergeArrays(filteredValues, utils, meta);
304
292
  }
305
293
  case 3 /* ObjectType.SET */: {
306
- return void mergeSetsInto(mut_target, filteredValues, utils, meta);
294
+ return mergeSets(filteredValues, utils, meta);
307
295
  }
308
296
  case 4 /* ObjectType.MAP */: {
309
- return void mergeMapsInto(mut_target, filteredValues, utils, meta);
297
+ return mergeMaps(filteredValues, utils, meta);
310
298
  }
311
299
  default: {
312
- return void mergeOthersInto(mut_target, filteredValues, utils, meta);
300
+ return mergeOthers(filteredValues, utils, meta);
313
301
  }
314
302
  }
315
303
  }
316
304
  /**
317
- * Merge records into a target record.
305
+ * Merge records.
318
306
  *
319
- * @param mut_target - The target to merge into.
320
307
  * @param values - The records.
321
308
  */
322
- function mergeRecordsInto(mut_target, values, utils, meta) {
323
- const action = utils.mergeFunctions.mergeRecords(mut_target, values, utils, meta);
324
- if (action === actionsInto.defaultMerge) {
325
- utils.defaultMergeFunctions.mergeRecords(mut_target, values, utils, meta);
309
+ function mergeRecords(values, utils, meta) {
310
+ const result = utils.mergeFunctions.mergeRecords(values, utils, meta);
311
+ if (result === actions.defaultMerge ||
312
+ (utils.useImplicitDefaultMerging &&
313
+ result === undefined &&
314
+ utils.mergeFunctions.mergeRecords !== utils.defaultMergeFunctions.mergeRecords)) {
315
+ return utils.defaultMergeFunctions.mergeRecords(values, utils, meta);
326
316
  }
317
+ return result;
327
318
  }
328
319
  /**
329
- * Merge arrays into a target array.
320
+ * Merge arrays.
330
321
  *
331
- * @param mut_target - The target to merge into.
332
322
  * @param values - The arrays.
333
323
  */
334
- function mergeArraysInto(mut_target, values, utils, meta) {
335
- const action = utils.mergeFunctions.mergeArrays(mut_target, values, utils, meta);
336
- if (action === actionsInto.defaultMerge) {
337
- utils.defaultMergeFunctions.mergeArrays(mut_target, values);
324
+ function mergeArrays(values, utils, meta) {
325
+ const result = utils.mergeFunctions.mergeArrays(values, utils, meta);
326
+ if (result === actions.defaultMerge ||
327
+ (utils.useImplicitDefaultMerging &&
328
+ result === undefined &&
329
+ utils.mergeFunctions.mergeArrays !== utils.defaultMergeFunctions.mergeArrays)) {
330
+ return utils.defaultMergeFunctions.mergeArrays(values);
338
331
  }
332
+ return result;
339
333
  }
340
334
  /**
341
- * Merge sets into a target set.
335
+ * Merge sets.
342
336
  *
343
- * @param mut_target - The target to merge into.
344
337
  * @param values - The sets.
345
338
  */
346
- function mergeSetsInto(mut_target, values, utils, meta) {
347
- const action = utils.mergeFunctions.mergeSets(mut_target, values, utils, meta);
348
- if (action === actionsInto.defaultMerge) {
349
- utils.defaultMergeFunctions.mergeSets(mut_target, values);
339
+ function mergeSets(values, utils, meta) {
340
+ const result = utils.mergeFunctions.mergeSets(values, utils, meta);
341
+ if (result === actions.defaultMerge ||
342
+ (utils.useImplicitDefaultMerging &&
343
+ result === undefined &&
344
+ utils.mergeFunctions.mergeSets !== utils.defaultMergeFunctions.mergeSets)) {
345
+ return utils.defaultMergeFunctions.mergeSets(values);
350
346
  }
347
+ return result;
351
348
  }
352
349
  /**
353
- * Merge maps into a target map.
350
+ * Merge maps.
354
351
  *
355
- * @param mut_target - The target to merge into.
356
352
  * @param values - The maps.
357
353
  */
358
- function mergeMapsInto(mut_target, values, utils, meta) {
359
- const action = utils.mergeFunctions.mergeMaps(mut_target, values, utils, meta);
360
- if (action === actionsInto.defaultMerge) {
361
- utils.defaultMergeFunctions.mergeMaps(mut_target, values);
354
+ function mergeMaps(values, utils, meta) {
355
+ const result = utils.mergeFunctions.mergeMaps(values, utils, meta);
356
+ if (result === actions.defaultMerge ||
357
+ (utils.useImplicitDefaultMerging &&
358
+ result === undefined &&
359
+ utils.mergeFunctions.mergeMaps !== utils.defaultMergeFunctions.mergeMaps)) {
360
+ return utils.defaultMergeFunctions.mergeMaps(values);
362
361
  }
362
+ return result;
363
363
  }
364
364
  /**
365
- * Merge other things into a target.
365
+ * Merge other things.
366
366
  *
367
- * @param mut_target - The target to merge into.
368
367
  * @param values - The other things.
369
368
  */
370
- function mergeOthersInto(mut_target, values, utils, meta) {
371
- const action = utils.mergeFunctions.mergeOthers(mut_target, values, utils, meta);
372
- if (action === actionsInto.defaultMerge || mut_target.value === actionsInto.defaultMerge) {
373
- utils.defaultMergeFunctions.mergeOthers(mut_target, values);
369
+ function mergeOthers(values, utils, meta) {
370
+ const result = utils.mergeFunctions.mergeOthers(values, utils, meta);
371
+ if (result === actions.defaultMerge ||
372
+ (utils.useImplicitDefaultMerging &&
373
+ result === undefined &&
374
+ utils.mergeFunctions.mergeOthers !== utils.defaultMergeFunctions.mergeOthers)) {
375
+ return utils.defaultMergeFunctions.mergeOthers(values);
374
376
  }
377
+ return result;
375
378
  }
376
379
 
377
380
  /** @type {import("@/types").Template} */
@@ -398,6 +401,20 @@ const lite = {
398
401
  widget: {
399
402
  name: "EodashMap",
400
403
  properties: {
404
+ baseLayers: [
405
+ {
406
+ type: "Tile",
407
+ properties: {
408
+ id: "terrain-light;:;EPSG:3857",
409
+ title: "Terrain Light",
410
+ },
411
+ source: {
412
+ type: "XYZ",
413
+ //@ts-expect-error todo
414
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
415
+ },
416
+ },
417
+ ],
401
418
  enableCompare: true,
402
419
  enableCursorCoordinates: false,
403
420
  enableScaleLine: false,
@@ -535,6 +552,29 @@ const expert = {
535
552
  widget: {
536
553
  name: "EodashMap",
537
554
  properties: {
555
+ baseLayers: [
556
+ {
557
+ type: "Group",
558
+ properties: {
559
+ id: "BaseLayersGroup",
560
+ title: "Base Layers",
561
+ },
562
+ layers: [
563
+ {
564
+ type: "Tile",
565
+ properties: {
566
+ id: "terrain-light;:;EPSG:3857",
567
+ title: "Terrain Light",
568
+ },
569
+ source: {
570
+ type: "XYZ",
571
+ //@ts-expect-error todo
572
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
573
+ },
574
+ },
575
+ ],
576
+ },
577
+ ],
538
578
  enableCompare: true,
539
579
  zoomToExtent: true,
540
580
  btns: {
@@ -681,6 +721,29 @@ const compare = {
681
721
  name: "EodashMap",
682
722
  properties: {
683
723
  enableCompare: true,
724
+ baseLayers: [
725
+ {
726
+ type: "Group",
727
+ properties: {
728
+ id: "BaseLayersGroup",
729
+ title: "Base Layers",
730
+ },
731
+ layers: [
732
+ {
733
+ type: "Tile",
734
+ properties: {
735
+ id: "terrain-light;:;EPSG:3857",
736
+ title: "Terrain Light",
737
+ },
738
+ source: {
739
+ type: "XYZ",
740
+ //@ts-expect-error todo
741
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
742
+ },
743
+ },
744
+ ],
745
+ },
746
+ ],
684
747
  },
685
748
  },
686
749
  },
@@ -774,6 +837,26 @@ const compare = {
774
837
  },
775
838
  },
776
839
  },
840
+ // {
841
+ // defineWidget: (selectedSTAC) => {
842
+ // return selectedSTAC
843
+ // ? {
844
+ // id: "expert-Datepicker",
845
+ // type: "internal",
846
+ // layout: { x: 4, y: 7, w: 4, h: 5 },
847
+ // title: "Date",
848
+ // widget: {
849
+ // name: "EodashDatePicker",
850
+ // properties: {
851
+ // hintText: `<b>Hint:</b> closest available date is displayed <br />
852
+ // on map (see Analysis Layers)`,
853
+ // toggleCalendar: true,
854
+ // },
855
+ // },
856
+ // }
857
+ // : null;
858
+ // },
859
+ // },
777
860
  {
778
861
  defineWidget: () =>
779
862
  shouldShowChartWidget() && {
@@ -805,16 +888,28 @@ const compare = {
805
888
  defineWidget: (selectedSTAC) => {
806
889
  return selectedSTAC
807
890
  ? {
808
- id: "expert-Datepicker",
891
+ id: "expert-datetime",
809
892
  type: "internal",
810
- layout: { x: 4, y: 3, w: 4, h: 9 },
811
- title: "Date",
893
+ layout: { x: 1, y: 8, w: 8, h: 3 },
894
+ title: "Time Slider",
812
895
  widget: {
813
- name: "EodashDatePicker",
896
+ name: "EodashTimeSlider",
814
897
  properties: {
815
- hintText: `<b>Hint:</b> closest available date is displayed<br/>
816
- on map (see Analysis Layers)`,
817
- toggleCalendar: true,
898
+ filters: [
899
+ {
900
+ key: "eo:cloud_cover",
901
+ title: "Cloud Coverage %",
902
+ type: "range",
903
+ expanded: true,
904
+ min: 0,
905
+ max: 100,
906
+ step: 5,
907
+ state: {
908
+ min: 0,
909
+ max: 100,
910
+ },
911
+ },
912
+ ],
818
913
  },
819
914
  },
820
915
  }
@@ -824,7 +919,6 @@ const compare = {
824
919
  ],
825
920
  };
826
921
 
827
- // import { includesProcess } from "@/store/actions";
828
922
  /** @type {import("@/types").Template} */
829
923
  const explore = {
830
924
  gap: 16,
@@ -849,6 +943,7 @@ const explore = {
849
943
  widget: {
850
944
  name: "EodashMap",
851
945
  properties: {
946
+ zoomToExtent: false,
852
947
  enableCompare: true,
853
948
  btns: {
854
949
  enableZoom: true,
@@ -856,21 +951,23 @@ const explore = {
856
951
  enableChangeProjection: true,
857
952
  enableCompareIndicators: {
858
953
  fallbackTemplate: "explore",
954
+ compareTemplate: "compare",
859
955
  itemFilterConfig: {
860
956
  imageProperty: "assets.thumbnail.href",
861
957
  },
862
958
  },
863
- enableSearch: true,
959
+ enableBackToPOIs: false,
960
+ enableSearch: false,
864
961
  },
865
962
  },
866
963
  },
867
964
  },
868
965
  widgets: [
869
966
  {
870
- id: "Layercontrol",
967
+ id: "explore-layercontrol",
871
968
  type: "internal",
872
969
  title: "Layers",
873
- layout: { x: "9/9/10", y: 0, w: "3/3/2", h: 12 },
970
+ layout: { x: "9/9/10", y: 0, w: "3/3/2", h: 11 },
874
971
  widget: {
875
972
  name: "EodashLayerControl",
876
973
  },
@@ -879,9 +976,13 @@ const explore = {
879
976
  id: "ItemCatalog",
880
977
  title: "Catalog",
881
978
  type: "internal",
882
- layout: { x: 0, y: 0, w: "3/3/2", h: 12 },
979
+ layout: { x: 0, y: 0, w: "3/3/2", h: 11 },
883
980
  widget: {
884
981
  name: "EodashItemCatalog",
982
+ properties: {
983
+ layoutTarget: undefined,
984
+ hoverProperties: ["datetime", "eo:cloud_cover"],
985
+ },
885
986
  },
886
987
  },
887
988
  ],
@@ -896,12 +997,14 @@ const baseConfig = {
896
997
  stacEndpoint: {
897
998
  endpoint:
898
999
  "https://esa-eodashboards.github.io/eodashboard-catalog/trilateral/catalog.json",
1000
+ // "https://GTIF-Austria.github.io/public-catalog/pr-preview/pr-119/GTIF-Austria/catalog.json",
899
1001
  // "https://api.explorer.eopf.copernicus.eu/stac",
900
1002
  // api: true,
901
1003
  supportedUpscalingEndpoints: [
902
- "openveda.cloud",
903
- "api.explorer.eopf.copernicus.eu",
1004
+ { url: "openveda.cloud", titilerVersion: 1 },
1005
+ { url: "api.explorer.eopf.copernicus.eu", titilerVersion: 2 },
904
1006
  ],
1007
+ rasterEndpoint: "https://api.explorer.eopf.copernicus.eu/rstaging",
905
1008
  },
906
1009
  brand: {
907
1010
  noLayout: true,
@@ -949,13 +1052,41 @@ const baseConfig = {
949
1052
  },
950
1053
  };
951
1054
 
1055
+ /**
1056
+ * Arrays are replacement semantics (user array wins, not concat).
1057
+ * mergeArrays:false ensures e.g. widgets/collectionsPalette/supportedUpscalingEndpoints
1058
+ * supplied by the caller fully replace the base arrays.
1059
+ */
1060
+ const deepmerge = deepmergeCustom({ mergeArrays: false });
1061
+
952
1062
  /**
953
1063
  * @param {import("vega-lite").DeepPartial<import("@/types").Eodash>} config
1064
+ * @return {import("@/types").Eodash}
954
1065
  */
955
1066
  const getBaseConfig = (config) => {
956
- const merged = /** @type {import("@/types").Eodash} */ ({});
957
- deepmergeInto(merged, baseConfig, config || {});
958
- return merged;
1067
+ return /** @type {import("@/types").Eodash} */ (
1068
+ deepmerge(cloneConfig(baseConfig), config || {})
1069
+ );
959
1070
  };
960
1071
 
1072
+ /**
1073
+ * Shallow-safe deep clone that preserves functions and Symbols as references
1074
+ * (they are intentionally shared; template functions and Symbol IDs are
1075
+ * not mutable data). Only plain objects and arrays are cloned.
1076
+ *
1077
+ * @param {unknown} val
1078
+ * @returns {unknown}
1079
+ */
1080
+ function cloneConfig(val) {
1081
+ if (val === null || typeof val !== "object") return val;
1082
+ if (Array.isArray(val)) return val.map(cloneConfig);
1083
+ if (typeof val === "function") return val;
1084
+ /** @type {Record<string, unknown>} */
1085
+ const out = {};
1086
+ for (const key of Object.keys(val)) {
1087
+ out[key] = cloneConfig(/** @type {Record<string, unknown>} */ (val)[key]);
1088
+ }
1089
+ return out;
1090
+ }
1091
+
961
1092
  export { compare, getBaseConfig as default, expert, explore, getBaseConfig, lite };
@@ -1,5 +1,5 @@
1
1
  import { mergeProps, h, TransitionGroup, Transition } from 'vue';
2
- import { p as propsFactory, a0 as isObject, aH as onlyDefinedProps } from './asWebComponent-BHWpMuE3.js';
2
+ import { p as propsFactory, ag as isObject, aQ as onlyDefinedProps } from './asWebComponent-BlFN2lkB.js';
3
3
 
4
4
  // Utilities
5
5
  const makeTransitionProps = propsFactory({