@eodash/eodash 5.7.0 → 5.8.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 (119) 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 +87 -24
  5. package/core/client/eodashSTAC/cql.js +64 -0
  6. package/core/client/eodashSTAC/createLayers.js +353 -187
  7. package/core/client/eodashSTAC/helpers.js +694 -110
  8. package/core/client/eodashSTAC/mosaic.js +422 -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 +54 -4
  12. package/core/client/store/states.js +20 -2
  13. package/core/client/types.ts +152 -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-DEs4f_Vy.js} +2 -2
  17. package/dist/client/{DynamicWebComponent-CnKhYo0K.js → DynamicWebComponent-PvnV88BA.js} +1 -1
  18. package/dist/client/EodashChart-D-3AGKZY.js +260 -0
  19. package/dist/client/{EodashDatePicker-CMPDT-ce.js → EodashDatePicker-Dm_goZzs.js} +3 -3
  20. package/dist/client/{EodashItemFilter-BpdA8QQa.js → EodashItemFilter-CJy3zYzD.js} +2 -1
  21. package/dist/client/{EodashLayerControl-BHpDA4_0.js → EodashLayerControl-rL8UnpkA.js} +55 -33
  22. package/dist/client/{EodashLayoutSwitcher-B1fRUt7G.js → EodashLayoutSwitcher-ZRlESI9O.js} +3 -3
  23. package/dist/client/{EodashMapBtns-Cpned0tc.js → EodashMapBtns-CG7u2Aq8.js} +227 -112
  24. package/dist/client/EodashStacInfo-CJhhxthD.js +169 -0
  25. package/dist/client/{EodashTools-1zHz26gv.js → EodashTools-CWyK8QJT.js} +4 -4
  26. package/dist/client/{ExportState-DbOm8hBI.js → ExportState-BXhy5TOU.js} +20 -174
  27. package/dist/client/{Footer-BKg-VVkj.js → Footer-DZPvnhcT.js} +1 -1
  28. package/dist/client/{Header-DCrwCvmY.js → Header-CiGsDE_a.js} +2 -2
  29. package/dist/client/{MobileLayout-vWSHpluo.js → MobileLayout-BJHW7x5V.js} +2 -2
  30. package/dist/client/{PopUp-9uimfK49.js → PopUp-7_XnhvCc.js} +4 -168
  31. package/dist/client/{ProcessList-CTTIZa06.js → ProcessList-LL_UCbvc.js} +5 -5
  32. package/dist/client/VDivider-DWYM0WUr.js +168 -0
  33. package/dist/client/{VImg-CrmB76ZY.js → VImg-B75dgw2K.js} +2 -2
  34. package/dist/client/{VMain-OKZNpcEG.js → VMain-DvMmOL4f.js} +1 -1
  35. package/dist/client/{VTooltip-CJw2FyWk.js → VTooltip-ClWHUmWL.js} +2 -2
  36. package/dist/client/{WidgetsContainer-BaWOnE5R.js → WidgetsContainer-BqaWs4ch.js} +1 -1
  37. package/dist/client/{asWebComponent-BHWpMuE3.js → asWebComponent-IZanwL-A.js} +677 -379
  38. package/dist/client/{async-DSKj6g1f.js → async-CiNIOBVz.js} +31 -29
  39. package/dist/client/{create-layers-config-CBoYedqB.js → create-layers-config-3S3y_kZg.js} +17 -17
  40. package/dist/client/dialog-transition-c4ZSnzac.js +170 -0
  41. package/dist/client/eo-dash.js +1 -1
  42. package/dist/client/{forwardRefs-DH51zPUr.js → forwardRefs-B-c1_6yo.js} +8 -87
  43. package/dist/client/{handling-BrcDDlgS.js → handling-NvY8Csry.js} +3 -4
  44. package/dist/client/{helpers-DjZVl_WF.js → helpers-BFuh19CP.js} +1094 -194
  45. package/dist/client/{index-1JKE68n3.js → index-1wMAyuNL.js} +219 -67
  46. package/dist/client/{index-CSG_JoOA.js → index-B8jGJSTA.js} +62 -56
  47. package/dist/client/{index-Cu3-13Xg.js → index-BKQQJkhy.js} +167 -61
  48. package/dist/client/index-D0jUyol8.js +3167 -0
  49. package/dist/client/{index-CUjl-ZsI.js → index-KGxz5Egv.js} +2 -2
  50. package/dist/client/mosaic-vHvSuih6.js +459 -0
  51. package/dist/client/templates.js +251 -121
  52. package/dist/client/{transition-OHcz5Qq1.js → transition-BkyUsZh_.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 +118 -19
  60. package/dist/types/core/client/eodashSTAC/mosaic.d.ts +56 -0
  61. package/dist/types/core/client/store/stac.d.ts +38 -8
  62. package/dist/types/core/client/store/states.d.ts +24 -2
  63. package/dist/types/core/client/types.d.ts +128 -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 +10 -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/methods/custom-endpoints/layers/eoxhub-workspaces-endpoint.d.ts +1 -1
  83. package/dist/types/widgets/EodashProcess/states.d.ts +1 -1
  84. package/dist/types/widgets/EodashStacInfo.vue.d.ts +20 -0
  85. package/dist/types/widgets/EodashTimeSlider/index.vue.d.ts +20 -0
  86. package/dist/types/widgets/EodashTimeSlider/methods/index.d.ts +3 -8
  87. package/dist/types/widgets/EodashTimeSlider/types.d.ts +6 -16
  88. package/dist/types/widgets/EodashTools.vue.d.ts +5 -5
  89. package/package.json +34 -34
  90. package/templates/baseConfig.js +37 -6
  91. package/templates/compare.js +61 -7
  92. package/templates/expert.js +24 -2
  93. package/templates/explore.js +12 -5
  94. package/templates/lite.js +13 -0
  95. package/widgets/EodashChart.vue +162 -21
  96. package/widgets/EodashItemCatalog/index.vue +363 -35
  97. package/widgets/EodashItemCatalog/methods/filters.js +134 -70
  98. package/widgets/EodashItemCatalog/methods/handlers.js +113 -19
  99. package/widgets/EodashItemCatalog/methods/map.js +141 -28
  100. package/widgets/EodashLayerControl.vue +51 -25
  101. package/widgets/EodashMap/EodashMapBtns.vue +109 -48
  102. package/widgets/EodashMap/index.vue +91 -105
  103. package/widgets/EodashMap/methods/btns.js +64 -31
  104. package/widgets/EodashMap/methods/create-layers-config.js +16 -16
  105. package/widgets/EodashMap/methods/index.js +71 -8
  106. package/widgets/EodashMap/methods/use-map-loading.js +58 -0
  107. package/widgets/EodashProcess/index.vue +136 -16
  108. package/widgets/EodashProcess/methods/composables.js +13 -0
  109. package/widgets/EodashProcess/methods/outputs.js +0 -1
  110. package/widgets/EodashProcess/methods/utils.js +29 -27
  111. package/widgets/EodashProcess/states.js +1 -1
  112. package/widgets/EodashStacInfo.vue +64 -2
  113. package/widgets/EodashTimeSlider/index.vue +58 -2
  114. package/widgets/EodashTimeSlider/methods/index.js +5 -48
  115. package/widgets/EodashTimeSlider/types.ts +7 -17
  116. package/widgets/ExportState.vue +13 -4
  117. package/dist/client/EodashChart-CLDqE93C.js +0 -144
  118. package/dist/client/EodashStacInfo-BQspAHKH.js +0 -107
  119. package/dist/client/index-5Jhsa8Xe.js +0 -570
@@ -1,5 +1,9 @@
1
+ export { useMapLoading } from "./use-map-loading";
1
2
  export function useHandleMapMoveEnd(mapElement: import("vue").Ref<(HTMLElement & Record<string, any> & {
2
3
  map: import("ol").Map;
3
4
  }) | null>, mapPosition: import("vue").Ref<(number | undefined)[]>): void;
4
- export function useInitMap(mapElement: import("vue").Ref<import("@eox/map").EOxMap | null>, selectedIndicator: import("vue").Ref<import("stac-ts").StacCollection | null>, eodashCols: import("../../../core/client/eodashSTAC/EodashCollection").EodashCollection[], datetime: import("vue").Ref<string>, mapLayers: import("vue").Ref<Record<string, any>[]>, partnerMap: import("vue").Ref<import("@eox/map").EOxMap | null>, zoomToExtent: boolean, selectedItem?: import("vue").Ref<import("stac-ts").StacItem | import("stac-ts").StacLink | null>): void;
5
+ export function useInitMap(mapElement: import("vue").Ref<import("@eox/map").EOxMap | null>, selectedIndicator: import("vue").Ref<import("stac-ts").StacCollection | null>, eodashCols: import("../../../core/client/eodashSTAC/EodashCollection").EodashCollection[], datetime: import("vue").Ref<string>, mapLayers: import("vue").Ref<Record<string, any>[]>, partnerMap: import("vue").Ref<import("@eox/map").EOxMap | null>, zoomToExtent: boolean, selectedItem?: import("vue").Ref<import("stac-ts").StacItem | import("stac-ts").StacLink | null>, defaultBaseLayers?: Record<string, any>[]): void;
5
6
  export function useUpdateTooltipProperties(eodashCols: import("../../../core/client/eodashSTAC/EodashCollection").EodashCollection[], tooltipProperties: import("vue").Ref<Exclude<import("../../../core/client/types").EodashStyleJson["tooltip"], undefined>>, enableCompare?: boolean): void;
7
+ import { useEmitLayersUpdate } from "../../../core/client/composables";
8
+ import { useOnLayersUpdate } from "../../../core/client/composables";
9
+ export { useEmitLayersUpdate, useOnLayersUpdate };
@@ -0,0 +1 @@
1
+ export function useMapLoading(mapElement: import("vue").Ref<import("@eox/map").EOxMap | null>, compareMapElement: import("vue").Ref<import("@eox/map").EOxMap | null>): void;
@@ -6,7 +6,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
6
6
  default: boolean;
7
7
  };
8
8
  vegaEmbedOptions: {
9
- type: ObjectConstructor;
9
+ /** @type {import("vue").PropType<import("vega-embed").EmbedOptions>} */
10
+ type: import("vue").PropType<import("vega-embed").EmbedOptions>;
10
11
  default(): {
11
12
  actions: boolean;
12
13
  };
@@ -17,12 +18,13 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
17
18
  default: boolean;
18
19
  };
19
20
  vegaEmbedOptions: {
20
- type: ObjectConstructor;
21
+ /** @type {import("vue").PropType<import("vega-embed").EmbedOptions>} */
22
+ type: import("vue").PropType<import("vega-embed").EmbedOptions>;
21
23
  default(): {
22
24
  actions: boolean;
23
25
  };
24
26
  };
25
27
  }>> & Readonly<{}>, {
26
28
  enableCompare: boolean;
27
- vegaEmbedOptions: Record<string, any>;
29
+ vegaEmbedOptions: import("vega-embed").EmbedOptions<string, import("vega-typings").Renderers>;
28
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -2,4 +2,4 @@
2
2
  *
3
3
  * @param {import("../../../../EodashProcess/types").CustomEnpointInput} param0
4
4
  */
5
- export function handleEOxHubEndpoint({ links, jsonformValue, isPolling, selectedStac, jobs, enableCompare, }: import("../../../../EodashProcess/types").CustomEnpointInput): Promise<(import("@eox/map/src/layers").EOxLayerType<"Vector", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"Vector", "FlatGeoBuf"> | import("@eox/map/src/layers").EOxLayerType<"Vector", "Cluster"> | import("@eox/map/src/layers").EOxLayerType<"VectorTile", "VectorTile"> | import("@eox/map/src/layers").EOxLayerType<"WebGLTile", "GeoTIFF"> | import("@eox/map/src/layers").EOxLayerType<"WebGLTile", "GeoZarr"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "OSM"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "WMTSCapabilities"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "StadiaMaps"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "WMTS"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "XYZ"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileJSON"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileArcGISRest"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileDebug"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileImage"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileWMS"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "UrlTile"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "BingMaps"> | import("@eox/map/src/layers").EOxLayerType<"Image", "Image"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageCanvas"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageStatic"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageWMS"> | import("@eox/map/src/layers").EOxLayerType<"Image", "Raster"> | import("@eox/map/src/layers").EOxLayerType<"Image", "IIIF"> | import("@eox/map/src/layers").EOxLayerTypeMapboxStyle | import("@eox/map/src/layers").EOxLayerTypeGroup)[] | undefined>;
5
+ export function handleEOxHubEndpoint({ links, jsonformValue, isPolling, selectedStac, jobs, enableCompare, }: import("../../../../EodashProcess/types").CustomEnpointInput): Promise<(import("@eox/map/src/layers").EOxLayerType<"Vector", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"Vector", "FlatGeoBuf"> | import("@eox/map/src/layers").EOxLayerType<"Vector", "Cluster"> | import("@eox/map/src/layers").EOxLayerType<"VectorImage", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"Heatmap", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"WebGLVector", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"WebGLPoints", "Vector"> | import("@eox/map/src/layers").EOxLayerType<"Graticule", never> | import("@eox/map/src/layers").EOxLayerType<"VectorTile", "VectorTile"> | import("@eox/map/src/layers").EOxLayerType<"WebGLTile", "GeoTIFF"> | import("@eox/map/src/layers").EOxLayerType<"WebGLTile", "GeoZarr"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "OSM"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "WMTSCapabilities"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "StadiaMaps"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "WMTS"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "XYZ"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileJSON"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileArcGISRest"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileDebug"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileImage"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "TileWMS"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "UrlTile"> | import("@eox/map/src/layers").EOxLayerType<"Tile", "BingMaps"> | import("@eox/map/src/layers").EOxLayerType<"Image", "Image"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageCanvas"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageStatic"> | import("@eox/map/src/layers").EOxLayerType<"Image", "ImageWMS"> | import("@eox/map/src/layers").EOxLayerType<"Image", "Raster"> | import("@eox/map/src/layers").EOxLayerType<"Image", "IIIF"> | import("@eox/map/src/layers").EOxLayerType<"STAC", never> | import("@eox/map/src/layers").EOxLayerTypeMapboxStyle | import("@eox/map/src/layers").EOxLayerTypeGroup)[] | undefined>;
@@ -2,7 +2,7 @@
2
2
  * The list of job result from the server
3
3
  * {job_start_datetime: string, job_end_datetime: string,status: string}
4
4
  * @type {import("vue").Ref<import("./types").AsyncJob[]>}
5
- **/
5
+ */
6
6
  export const jobs: import("vue").Ref<import("./types").AsyncJob[]>;
7
7
  /**
8
8
  * The list of jobs results from the server for the compare map
@@ -1,6 +1,15 @@
1
1
  declare const _default: typeof __VLS_export;
2
2
  export default _default;
3
3
  declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ level: {
5
+ type: import("vue").PropType<"item" | "collection">;
6
+ default: string;
7
+ validator: (v: string) => boolean;
8
+ };
9
+ styleOverride: {
10
+ type: StringConstructor;
11
+ default: string;
12
+ };
4
13
  allowHtml: {
5
14
  type: BooleanConstructor;
6
15
  default: boolean;
@@ -81,6 +90,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
81
90
  default: () => string[];
82
91
  };
83
92
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
93
+ level: {
94
+ type: import("vue").PropType<"item" | "collection">;
95
+ default: string;
96
+ validator: (v: string) => boolean;
97
+ };
98
+ styleOverride: {
99
+ type: StringConstructor;
100
+ default: string;
101
+ };
84
102
  allowHtml: {
85
103
  type: BooleanConstructor;
86
104
  default: boolean;
@@ -173,6 +191,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
173
191
  key: string;
174
192
  filter?: (item: any) => boolean;
175
193
  })[];
194
+ styleOverride: string;
195
+ level: "collection" | "item";
176
196
  allowHtml: boolean;
177
197
  tags: (string | {
178
198
  key: string;
@@ -10,6 +10,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
10
10
  type: BooleanConstructor;
11
11
  default: boolean;
12
12
  };
13
+ useMosaic: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
17
+ mosaicIndicators: {
18
+ /** @type {import("vue").PropType<string[]>} */
19
+ type: import("vue").PropType<string[]>;
20
+ default: () => never[];
21
+ };
13
22
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
23
  filters: {
15
24
  /** @type {import("vue").PropType<import("@eox/itemfilter").EOxItemFilter["filterProperties"]>} */
@@ -20,6 +29,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
20
29
  type: BooleanConstructor;
21
30
  default: boolean;
22
31
  };
32
+ useMosaic: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ mosaicIndicators: {
37
+ /** @type {import("vue").PropType<string[]>} */
38
+ type: import("vue").PropType<string[]>;
39
+ default: () => never[];
40
+ };
23
41
  }>> & Readonly<{}>, {
24
42
  animate: boolean;
25
43
  filters: {
@@ -31,4 +49,6 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
31
49
  format?: string;
32
50
  state?: any;
33
51
  }[];
52
+ useMosaic: boolean;
53
+ mosaicIndicators: string[];
34
54
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -3,9 +3,9 @@
3
3
  * @param {[string, string]} selectedRange
4
4
  * @param {import("../types").TimelineExportEventDetail["selectedRangeItems"]} selectedRangeItems
5
5
  * @param {import("vue").Ref<import("stac-ts").StacCollection|null>} selectedStac
6
- * @param {Record<string, import("../types").Filter>} filters
6
+ * @param {import("../../../core/client/types").ItemFilterFilters} filters
7
7
  */
8
- export function createAnimationLayers(stacEndpoint: string, selectedRange: [string, string], selectedRangeItems: import("../types").TimelineExportEventDetail["selectedRangeItems"], selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null>, filters: Record<string, import("../types").Filter>): Promise<{
8
+ export function createAnimationLayers(stacEndpoint: string, selectedRange: [string, string], selectedRangeItems: import("../types").TimelineExportEventDetail["selectedRangeItems"], selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null>, filters: import("../../../core/client/types").ItemFilterFilters): Promise<{
9
9
  layers: Record<string, any>[];
10
10
  date: string;
11
11
  }[]>;
@@ -31,9 +31,4 @@ export function getHiddenLayers(layers: import("@eox/map").EoxLayer[]): {
31
31
  * @returns {import("@eox/map").EoxLayer[]}
32
32
  */
33
33
  export function restoreLayersVisibility(layers: import("@eox/map").EoxLayer[]): import("@eox/map").EoxLayer[];
34
- /**
35
- * Build STAC API filter string from TimeSlider filters
36
- * @param {Record<string, import("../types").Filter>} filters
37
- * @returns {string}
38
- */
39
- export function buildStacFilters(filters: Record<string, import("../types").Filter>): string;
34
+ export { useScheduleMosaicUpdate } from "../../../core/client/eodashSTAC/mosaic";
@@ -1,10 +1,11 @@
1
+ import type { ItemFilterFilters } from "../../core/client/types";
1
2
  export interface TimelineSelectionEventDetail {
2
3
  date: [string, string];
3
4
  instances: {
4
5
  layer: import("ol/layer/Layer").default;
5
6
  source: import("ol/source/Source").default;
6
7
  };
7
- filters: Record<string, Filter>;
8
+ filters: ItemFilterFilters;
8
9
  selectedItems: {
9
10
  [layerId: string]: SelectedItem[];
10
11
  };
@@ -28,7 +29,7 @@ export interface TimelineExportEventDetail {
28
29
  zoom: number;
29
30
  center: [number, number];
30
31
  };
31
- filters: Record<string, Filter>;
32
+ filters: ItemFilterFilters;
32
33
  instances: {
33
34
  layer: import("ol/layer/Layer").default;
34
35
  source: import("ol/source/Source").default;
@@ -45,18 +46,7 @@ export interface TimelineExportEventDetail {
45
46
  zoom?: number;
46
47
  }) => Promise<void>;
47
48
  }
48
- export interface Filter {
49
- key: string;
50
- title: string;
51
- type: "range" | "multiselect" | "select";
52
- expanded: boolean;
53
- min: number;
54
- max: number;
55
- step: number;
56
- state: {
57
- min: number;
58
- max: number;
59
- };
60
- dirty: boolean;
61
- stringifiedState: string;
49
+ export interface ItemFilterEventDetail {
50
+ result: Record<string, any>;
51
+ filters: ItemFilterFilters;
62
52
  }
@@ -397,6 +397,11 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
397
397
  default: () => void;
398
398
  };
399
399
  }>> & Readonly<{}>, {
400
+ layoutIcon: string;
401
+ layoutTarget: string;
402
+ showIndicatorsBtn: boolean;
403
+ showLayoutSwitcher: boolean;
404
+ indicatorBtnText: string;
400
405
  itemFilterConfig: Partial<{
401
406
  enableCompare: boolean;
402
407
  filtersTitle: string;
@@ -439,9 +444,4 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
439
444
  readonly aggregateResults?: string | undefined;
440
445
  readonly onSelect?: ((...args: any[]) => any) | undefined;
441
446
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "enableCompare" | "filtersTitle" | "resultsTitle" | "titleProperty" | "aggregateResults" | "imageProperty" | "subTitleProperty" | "resultType" | "cssVars" | "enableHighlighting" | "expandMultipleFilters" | "expandMultipleResults" | "styleOverride" | "filterProperties">;
442
- showIndicatorsBtn: boolean;
443
- showLayoutSwitcher: boolean;
444
- layoutTarget: string;
445
- layoutIcon: string;
446
- indicatorBtnText: string;
447
447
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eodash/eodash",
3
- "version": "5.7.0",
3
+ "version": "5.8.0",
4
4
  "type": "module",
5
5
  "types": "./dist/types/core/client/types.d.ts",
6
6
  "files": [
@@ -60,79 +60,79 @@
60
60
  "lint": "eslint . --fix",
61
61
  "cypress": "cypress open --component ",
62
62
  "vitest": "vitest --isolate --ui",
63
- "test": "npm run test:client && npm run test:cli",
63
+ "test": "npm run test:client && npm run test:unit && npm run test:cli",
64
64
  "test:cli": "vitest run tests/cli --isolate",
65
- "test:client": "cypress run --component",
66
- "docs:dev": "vitepress dev docs --port 3333",
65
+ "test:client": "cypress run --component && npm run test:unit",
66
+ "test:unit": "vitest run tests/unit --isolate",
67
+ "docs:dev": "test -d docs/api || npm run docs:generate && vitepress dev docs --port 3333",
67
68
  "docs:build": "npm run docs:generate && vitepress build docs",
68
69
  "docs:preview": "vitepress preview docs",
69
70
  "docs:generate": "npm run build:cli && npm run build:types && typedoc --options typedoc.config.json"
70
71
  },
71
72
  "dependencies": {
72
73
  "@eox/chart": "^1.2.0",
73
- "@eox/drawtools": "^1.5.0",
74
+ "@eox/drawtools": "^1.6.0",
74
75
  "@eox/feedback": "^1.2.0",
75
76
  "@eox/geosearch": "^1.2.0",
76
- "@eox/itemfilter": "^1.16.0",
77
- "@eox/jsonform": "^1.12.0",
78
- "@eox/layercontrol": "^1.7.0",
77
+ "@eox/itemfilter": "^1.17.3",
78
+ "@eox/jsonform": "^1.12.1",
79
+ "@eox/layercontrol": "^1.8.0",
79
80
  "@eox/layout": "^1.0.0",
80
- "@eox/map": "^2.5.1",
81
+ "@eox/map": "^2.7.0",
81
82
  "@eox/stacinfo": "^1.2.0",
82
- "@eox/timecontrol": "^2.4.0",
83
+ "@eox/timecontrol": "^2.6.0",
83
84
  "@eox/ui": "^1.1.0",
84
85
  "@mdi/js": "^7.4.47",
85
- "@vitejs/plugin-vue": "^6.0.6",
86
- "@vueuse/core": "^14.2.1",
86
+ "@vitejs/plugin-vue": "^6.0.7",
87
+ "@vueuse/core": "^14.3.0",
87
88
  "animated-details": "gist:2912bb049fa906671807415eb0e87188",
88
- "axios": "^1.15.2",
89
+ "axios": "^1.17.0",
89
90
  "axios-cache-interceptor": "^1.12.0",
90
- "color-legend-element": "^1.3.0",
91
+ "color-legend-element": "^1.5.0",
91
92
  "commander": "^14.0.3",
92
93
  "core-js": "^3.49.0",
93
94
  "dotenv": "^17.4.2",
94
- "hyparquet": "^1.25.6",
95
+ "hyparquet": "^1.26.0",
95
96
  "loglevel": "^1.9.2",
96
97
  "mustache": "^4.2.0",
97
98
  "pinia": "^3.0.4",
98
99
  "proj4": "^2.20.8",
99
- "sass": "^1.99.0",
100
- "stac-js": "^0.4.2",
100
+ "sass": "^1.100.0",
101
+ "stac-js": "^0.4.3",
101
102
  "stac-ts": "^1.0.5",
102
103
  "v-calendar": "3.0.0",
103
104
  "vega-embed": "^6.29.0",
104
105
  "vega-lite": "^5.23.0",
105
- "vite": "^7.3.1",
106
+ "vite": "^7.3.5",
106
107
  "vite-plugin-vuetify": "^2.1.3",
107
- "vue": "^3.5.33",
108
- "vuetify": "^3.11.4",
108
+ "vue": "^3.5.35",
109
+ "vuetify": "^3.12.8",
109
110
  "webfontloader": "^1.6.28"
110
111
  },
111
112
  "devDependencies": {
112
- "@babel/types": "^7.29.0",
113
- "@eox/eslint-config": "^2.0.0",
113
+ "@babel/types": "^7.29.7",
114
+ "@eox/eslint-config": "^2.1.0",
115
+ "@eox/pages-theme-eox": "^1.9.0",
114
116
  "@pinia/testing": "^1.0.3",
115
117
  "@types/json-schema": "^7.0.15",
116
118
  "@types/mustache": "^4.2.6",
117
- "@types/node": "^25.6.0",
119
+ "@types/node": "^25.9.1",
118
120
  "@types/openlayers": "^4.6.23",
119
121
  "@types/webfontloader": "^1.6.38",
120
- "cypress": "^15.14.1",
121
- "eslint": "^9.39.2",
122
- "eslint-plugin-vue": "^9.33.0",
123
- "pkg-pr-new": "^0.0.66",
122
+ "@typescript-eslint/parser": "^8.61.1",
123
+ "cypress": "^15.16.0",
124
+ "pkg-pr-new": "^0.0.75",
124
125
  "prettier": "^3.8.3",
125
- "rollup": "^4.60.2",
126
+ "rollup": "^4.61.1",
126
127
  "terminate": "^2.8.0",
127
- "tsc-alias": "^1.8.16",
128
+ "tsc-alias": "^1.8.17",
128
129
  "typedoc": "^0.28.19",
129
- "typedoc-plugin-markdown": "^4.11.0",
130
+ "typedoc-plugin-markdown": "^4.12.0",
130
131
  "typedoc-plugin-vue": "^1.5.1",
131
- "typedoc-vitepress-theme": "^1.1.2",
132
+ "typedoc-vitepress-theme": "^1.1.3",
132
133
  "typescript": "^5.9.3",
133
- "vitepress": "^1.6.4",
134
- "vitest": "^4.1.5",
135
- "vue-tsc": "3.2.7"
134
+ "vitest": "^4.1.8",
135
+ "vue-tsc": "3.3.3"
136
136
  },
137
137
  "engines": {
138
138
  "node": ">=20.15.1"
@@ -1,4 +1,4 @@
1
- import { deepmergeInto } from "deepmerge-ts";
1
+ import { deepmergeCustom } from "deepmerge-ts";
2
2
  import lite from "./lite";
3
3
  import expert from "./expert";
4
4
  import compare from "./compare";
@@ -13,12 +13,15 @@ const baseConfig = {
13
13
  stacEndpoint: {
14
14
  endpoint:
15
15
  "https://esa-eodashboards.github.io/eodashboard-catalog/trilateral/catalog.json",
16
+ // "https://GTIF-Austria.github.io/public-catalog/pr-preview/pr-119/GTIF-Austria/catalog.json",
16
17
  // "https://api.explorer.eopf.copernicus.eu/stac",
17
18
  // api: true,
18
19
  supportedUpscalingEndpoints: [
19
- "openveda.cloud",
20
- "api.explorer.eopf.copernicus.eu",
20
+ { url: "openveda.cloud", titilerVersion: 1 },
21
+ { url: "api.explorer.eopf.copernicus.eu", titilerVersion: 2 },
21
22
  ],
23
+ colormapRegistry:
24
+ "https://raw.githubusercontent.com/eurodatacube/eodash-assets/refs/heads/main/defaults/colormaps.json",
22
25
  },
23
26
  brand: {
24
27
  noLayout: true,
@@ -66,13 +69,41 @@ const baseConfig = {
66
69
  },
67
70
  };
68
71
 
72
+ /**
73
+ * Arrays are replacement semantics (user array wins, not concat).
74
+ * mergeArrays:false ensures e.g. widgets/collectionsPalette/supportedUpscalingEndpoints
75
+ * supplied by the caller fully replace the base arrays.
76
+ */
77
+ const deepmerge = deepmergeCustom({ mergeArrays: false });
78
+
69
79
  /**
70
80
  * @param {import("vega-lite").DeepPartial<import("@/types").Eodash>} config
81
+ * @return {import("@/types").Eodash}
71
82
  */
72
83
  export const getBaseConfig = (config) => {
73
- const merged = /** @type {import("@/types").Eodash} */ ({});
74
- deepmergeInto(merged, baseConfig, config || {});
75
- return merged;
84
+ return /** @type {import("@/types").Eodash} */ (
85
+ deepmerge(cloneConfig(baseConfig), config || {})
86
+ );
76
87
  };
77
88
 
89
+ /**
90
+ * Shallow-safe deep clone that preserves functions and Symbols as references
91
+ * (they are intentionally shared; template functions and Symbol IDs are
92
+ * not mutable data). Only plain objects and arrays are cloned.
93
+ *
94
+ * @param {unknown} val
95
+ * @returns {unknown}
96
+ */
97
+ function cloneConfig(val) {
98
+ if (val === null || typeof val !== "object") return val;
99
+ if (Array.isArray(val)) return val.map(cloneConfig);
100
+ if (typeof val === "function") return val;
101
+ /** @type {Record<string, unknown>} */
102
+ const out = {};
103
+ for (const key of Object.keys(val)) {
104
+ out[key] = cloneConfig(/** @type {Record<string, unknown>} */ (val)[key]);
105
+ }
106
+ return out;
107
+ }
108
+
78
109
  export default baseConfig;
@@ -25,6 +25,28 @@ export default {
25
25
  name: "EodashMap",
26
26
  properties: {
27
27
  enableCompare: true,
28
+ baseLayers: [
29
+ {
30
+ type: "Group",
31
+ properties: {
32
+ id: "BaseLayersGroup",
33
+ title: "Base Layers",
34
+ },
35
+ layers: [
36
+ {
37
+ type: "Tile",
38
+ properties: {
39
+ id: "terrain-light;:;EPSG:3857",
40
+ title: "Terrain Light",
41
+ },
42
+ source: {
43
+ type: "XYZ",
44
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
45
+ },
46
+ },
47
+ ],
48
+ },
49
+ ],
28
50
  },
29
51
  },
30
52
  },
@@ -118,6 +140,26 @@ export default {
118
140
  },
119
141
  },
120
142
  },
143
+ // {
144
+ // defineWidget: (selectedSTAC) => {
145
+ // return selectedSTAC
146
+ // ? {
147
+ // id: "expert-Datepicker",
148
+ // type: "internal",
149
+ // layout: { x: 4, y: 7, w: 4, h: 5 },
150
+ // title: "Date",
151
+ // widget: {
152
+ // name: "EodashDatePicker",
153
+ // properties: {
154
+ // hintText: `<b>Hint:</b> closest available date is displayed <br />
155
+ // on map (see Analysis Layers)`,
156
+ // toggleCalendar: true,
157
+ // },
158
+ // },
159
+ // }
160
+ // : null;
161
+ // },
162
+ // },
121
163
  {
122
164
  defineWidget: () =>
123
165
  shouldShowChartWidget() && {
@@ -149,16 +191,28 @@ export default {
149
191
  defineWidget: (selectedSTAC) => {
150
192
  return selectedSTAC
151
193
  ? {
152
- id: "expert-Datepicker",
194
+ id: "expert-datetime",
153
195
  type: "internal",
154
- layout: { x: 4, y: 3, w: 4, h: 9 },
155
- title: "Date",
196
+ layout: { x: 1, y: 8, w: 8, h: 3 },
197
+ title: "Time Slider",
156
198
  widget: {
157
- name: "EodashDatePicker",
199
+ name: "EodashTimeSlider",
158
200
  properties: {
159
- hintText: `<b>Hint:</b> closest available date is displayed<br/>
160
- on map (see Analysis Layers)`,
161
- toggleCalendar: true,
201
+ filters: [
202
+ {
203
+ key: "eo:cloud_cover",
204
+ title: "Cloud Coverage %",
205
+ type: "range",
206
+ expanded: true,
207
+ min: 0,
208
+ max: 100,
209
+ step: 5,
210
+ state: {
211
+ min: 0,
212
+ max: 100,
213
+ },
214
+ },
215
+ ],
162
216
  },
163
217
  },
164
218
  }
@@ -24,6 +24,28 @@ export default {
24
24
  widget: {
25
25
  name: "EodashMap",
26
26
  properties: {
27
+ baseLayers: [
28
+ {
29
+ type: "Group",
30
+ properties: {
31
+ id: "BaseLayersGroup",
32
+ title: "Base Layers",
33
+ },
34
+ layers: [
35
+ {
36
+ type: "Tile",
37
+ properties: {
38
+ id: "terrain-light;:;EPSG:3857",
39
+ title: "Terrain Light",
40
+ },
41
+ source: {
42
+ type: "XYZ",
43
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
44
+ },
45
+ },
46
+ ],
47
+ },
48
+ ],
27
49
  enableCompare: true,
28
50
  zoomToExtent: true,
29
51
  btns: {
@@ -73,7 +95,7 @@ export default {
73
95
  id: "Layercontrol",
74
96
  type: "internal",
75
97
  title: "Layers",
76
- layout: { x: 0, y: 1, w: "3/3/2", h: 11 },
98
+ layout: { x: 0, y: 1, w: "3/3/2", h: 10 },
77
99
  widget: {
78
100
  name: "EodashLayerControl",
79
101
  properties: {
@@ -124,7 +146,7 @@ export default {
124
146
  id: "Processes",
125
147
  type: "internal",
126
148
  title: "Processes",
127
- layout: { x: "9/9/10", y: 6, w: "3/3/2", h: 5 },
149
+ layout: { x: "9/9/10", y: 6, w: "3/3/2", h: 6 },
128
150
  widget: {
129
151
  name: "EodashProcess",
130
152
  },
@@ -1,4 +1,3 @@
1
- // import { includesProcess } from "@/store/actions";
2
1
  /** @type {import("@/types").Template} */
3
2
  export default {
4
3
  gap: 16,
@@ -23,28 +22,32 @@ export default {
23
22
  widget: {
24
23
  name: "EodashMap",
25
24
  properties: {
25
+ zoomToExtent: false,
26
26
  enableCompare: true,
27
27
  btns: {
28
28
  enableZoom: true,
29
29
  enableExportMap: true,
30
30
  enableChangeProjection: true,
31
+ enableMosaic: false,
31
32
  enableCompareIndicators: {
32
33
  fallbackTemplate: "explore",
34
+ compareTemplate: "compare",
33
35
  itemFilterConfig: {
34
36
  imageProperty: "assets.thumbnail.href",
35
37
  },
36
38
  },
37
- enableSearch: true,
39
+ enableBackToPOIs: false,
40
+ enableSearch: false,
38
41
  },
39
42
  },
40
43
  },
41
44
  },
42
45
  widgets: [
43
46
  {
44
- id: "Layercontrol",
47
+ id: "explore-layercontrol",
45
48
  type: "internal",
46
49
  title: "Layers",
47
- layout: { x: "9/9/10", y: 0, w: "3/3/2", h: 12 },
50
+ layout: { x: "9/9/10", y: 0, w: "3/3/2", h: 11 },
48
51
  widget: {
49
52
  name: "EodashLayerControl",
50
53
  },
@@ -53,9 +56,13 @@ export default {
53
56
  id: "ItemCatalog",
54
57
  title: "Catalog",
55
58
  type: "internal",
56
- layout: { x: 0, y: 0, w: "3/3/2", h: 12 },
59
+ layout: { x: 0, y: 0, w: "3/3/2", h: 11 },
57
60
  widget: {
58
61
  name: "EodashItemCatalog",
62
+ properties: {
63
+ layoutTarget: undefined,
64
+ hoverProperties: ["datetime", "eo:cloud_cover"],
65
+ },
59
66
  },
60
67
  },
61
68
  ],
package/templates/lite.js CHANGED
@@ -24,6 +24,19 @@ export default {
24
24
  widget: {
25
25
  name: "EodashMap",
26
26
  properties: {
27
+ baseLayers: [
28
+ {
29
+ type: "Tile",
30
+ properties: {
31
+ id: "terrain-light;:;EPSG:3857",
32
+ title: "Terrain Light",
33
+ },
34
+ source: {
35
+ type: "XYZ",
36
+ url: "https://s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpeg",
37
+ },
38
+ },
39
+ ],
27
40
  enableCompare: true,
28
41
  enableCursorCoordinates: false,
29
42
  enableScaleLine: false,