@eodash/eodash 5.0.0-alpha.2.19 → 5.0.0-alpha.2.21

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 (67) hide show
  1. package/core/client/App.vue +11 -1
  2. package/core/client/asWebComponent.js +9 -2
  3. package/core/client/utils/createLayers.js +1 -0
  4. package/core/client/views/Dashboard.vue +17 -46
  5. package/dist/client/DashboardLayout-DEZe5rZn.js +86 -0
  6. package/dist/client/DynamicWebComponent-Cp_3d3nd.js +88 -0
  7. package/dist/client/EodashDatePicker-BwQ9Bw9-.js +393 -0
  8. package/dist/client/EodashItemFilter-BtihrBap.js +194 -0
  9. package/dist/client/EodashLayerControl-BuZgXYop.js +111 -0
  10. package/dist/client/EodashMap-C9hvsdhf.js +472 -0
  11. package/dist/client/EodashMapBtns-BTG6oYL5.js +66 -0
  12. package/dist/client/ExportState-GDJ8YxS9.js +644 -0
  13. package/dist/client/Footer-Cul4HvW4.js +141 -0
  14. package/dist/client/Header-BikVMROv.js +437 -0
  15. package/dist/client/IframeWrapper-BgM9aU8f.js +28 -0
  16. package/dist/client/MobileLayout-ByPGOgnO.js +1210 -0
  17. package/dist/client/PopUp-AJqPEHmR.js +382 -0
  18. package/dist/client/VImg-CY7ndzv2.js +384 -0
  19. package/dist/client/VMain-BlIaUbM6.js +43 -0
  20. package/dist/client/VOverlay-CiMWDe2b.js +1453 -0
  21. package/dist/client/WidgetsContainer-DG9sQaF0.js +83 -0
  22. package/dist/client/asWebComponent-6g8pz2_C.js +11557 -0
  23. package/dist/client/eo-dash.js +2 -6
  24. package/dist/client/forwardRefs-DnXzPqIo.js +245 -0
  25. package/dist/client/index-14PHPf-A.js +199 -0
  26. package/dist/client/ssrBoot-BP7SYRyC.js +22 -0
  27. package/dist/client/style.css +2 -2
  28. package/dist/client/transition-CGVKXZbS.js +37 -0
  29. package/dist/node/cli.js +5 -5
  30. package/dist/node/types.d.ts +2 -0
  31. package/package.json +21 -19
  32. package/widgets/EodashDatePicker.vue +20 -9
  33. package/core/client/SuspensedDashboard.ce.vue +0 -105
  34. package/dist/client/DashboardLayout-CU4js3lr.js +0 -156
  35. package/dist/client/DynamicWebComponent-BsYZdIEB.js +0 -57
  36. package/dist/client/EodashDatePicker-DZoH_gRX.js +0 -276
  37. package/dist/client/EodashItemFilter-CHBfsFSm.js +0 -7666
  38. package/dist/client/EodashLayerControl-CuY-cAx8.js +0 -24665
  39. package/dist/client/EodashMap-Ch43fWNv.js +0 -88369
  40. package/dist/client/EodashMapBtns-CFA2uti4.js +0 -50
  41. package/dist/client/ExportState-C6raDjTt.js +0 -570
  42. package/dist/client/Footer-D8T5ROhF.js +0 -117
  43. package/dist/client/Header-B8B4Z5R9.js +0 -350
  44. package/dist/client/IframeWrapper-BK2JxzSJ.js +0 -19
  45. package/dist/client/MobileLayout-aZaYvF8V.js +0 -947
  46. package/dist/client/PopUp-DdHXoNOP.js +0 -300
  47. package/dist/client/VImg-yb8O1cb8.js +0 -293
  48. package/dist/client/VMain-Dknnyxts.js +0 -38
  49. package/dist/client/VOverlay-BCOn3hd6.js +0 -973
  50. package/dist/client/WidgetsContainer-BixUyr1e.js +0 -129
  51. package/dist/client/asWebComponent-CHqY8A1z.js +0 -24636
  52. package/dist/client/basedecoder-DHcBySSe-BmCFNFnw.js +0 -88
  53. package/dist/client/decoder-DJlmx386-DJlmx386.js +0 -8
  54. package/dist/client/deflate-BXt-9JA_-CWfClgpK.js +0 -10
  55. package/dist/client/eox-stacinfo-l7ALSV90.js +0 -13969
  56. package/dist/client/forwardRefs-dcYA2XVU.js +0 -185
  57. package/dist/client/index-BVuSHaVu.js +0 -153
  58. package/dist/client/jpeg-BAgeD1d3-oeHbFPUL.js +0 -514
  59. package/dist/client/lerc-BPVtQnt3-08GHszVp.js +0 -1027
  60. package/dist/client/lzw-LAGDNbSC-DkP96qO9.js +0 -84
  61. package/dist/client/packbits-BlDR4Kj5-C66n1-zr.js +0 -24
  62. package/dist/client/pako.esm-CB1uQYY0-DB0PYm1P.js +0 -1081
  63. package/dist/client/raw-CMGvRjfu-BRi6E4i1.js +0 -9
  64. package/dist/client/ssrBoot-DU2S_nLc.js +0 -17
  65. package/dist/client/transition-C_fi1aa6.js +0 -34
  66. package/dist/client/webfontloader-Ofarvipf.js +0 -435
  67. package/dist/client/webimage-BM_pbLN3-L2cGWK5l.js +0 -19
@@ -0,0 +1,472 @@
1
+ import { onMounted, onUnmounted, watch, ref, computed, openBlock, createElementBlock, createElementVNode } from 'vue';
2
+ import '@eox/map';
3
+ import '@eox/map/dist/eox-map-advanced-layers-and-sources.js';
4
+ import { $ as useSTAcStore, a6 as setMapProjFromCol, a7 as EodashCollection, a8 as mapPosition, a3 as mapEl, a2 as mapCompareEl, Z as datetime, a4 as eodashCompareCollections, a0 as eodashCollections } from './asWebComponent-6g8pz2_C.js';
5
+ import { storeToRefs } from 'pinia';
6
+ import log from 'loglevel';
7
+
8
+ /**
9
+ * Holder for previous compare map view as it is overwritten by sync
10
+ * @type { {map:import("ol").View } | null} mapElement
11
+ */
12
+ let viewHolder = null;
13
+
14
+ /**
15
+ * Description placeholder
16
+ *
17
+ * @param {import("vue").Ref<HTMLElement & Record<string,any> & {map:import("ol").Map } | null>} mapElement
18
+ * @param {import("vue").Ref<(number | undefined)[]>} mapPosition
19
+ */
20
+ const useHandleMapMoveEnd = (mapElement, mapPosition) => {
21
+ /** @type {import("openlayers").EventsListenerFunctionType} */
22
+ const handleMoveEnd = (evt) => {
23
+ const map = /** @type {import("openlayers").Map | undefined} */ (
24
+ /** @type {any} */ (evt).map
25
+ );
26
+ const lonlat = mapElement.value?.lonLatCenter;
27
+ const z = map?.getView().getZoom();
28
+ if (
29
+ lonlat &&
30
+ !Number.isNaN(lonlat[0]) &&
31
+ !Number.isNaN(lonlat[1]) &&
32
+ !Number.isNaN(z)
33
+ ) {
34
+ mapPosition.value = [lonlat[0], lonlat[1], z];
35
+ }
36
+ };
37
+
38
+ onMounted(() => {
39
+ /** @type {import('ol/Map').default} */
40
+ (mapElement.value?.map)?.on("moveend", handleMoveEnd);
41
+ });
42
+
43
+ onUnmounted(() => {
44
+ /** @type {import('ol/Map').default} */
45
+ (mapElement.value?.map)?.un("moveend", handleMoveEnd);
46
+ });
47
+ };
48
+
49
+ /**
50
+ * Creates full layer configuration from indicator and time information
51
+ * @param {import("stac-ts").StacCatalog
52
+ * | import("stac-ts").StacCollection
53
+ * | import("stac-ts").StacItem
54
+ * | null
55
+ * } selectedIndicator
56
+ * @param {EodashCollection[]} eodashCols
57
+ * @param {string} [updatedTime]
58
+ */
59
+
60
+ const createLayersConfig = async (
61
+ selectedIndicator,
62
+ eodashCols,
63
+ updatedTime,
64
+ ) => {
65
+ log.debug(
66
+ "Creating layers config",
67
+ selectedIndicator,
68
+ eodashCols,
69
+ updatedTime,
70
+ );
71
+ const layersCollection = [];
72
+ const dataLayers = {
73
+ type: "Group",
74
+ properties: {
75
+ id: "AnalysisGroup",
76
+ title: "Analysis Layers",
77
+ layerControlExpand: true,
78
+ },
79
+ layers: /** @type {Record<string,any>[]}*/ ([]),
80
+ };
81
+
82
+ for (const ec of eodashCols) {
83
+ let layers;
84
+ if (updatedTime) {
85
+ layers = await ec.createLayersJson(new Date(updatedTime));
86
+ } else {
87
+ layers = await ec.createLayersJson();
88
+ }
89
+ // Add expand to all analysis layers
90
+ layers.forEach((dl) => {
91
+ dl.properties.layerControlExpand = true;
92
+ dl.properties.layerControlToolsExpand = true;
93
+ });
94
+ dataLayers.layers.push(...layers);
95
+ }
96
+
97
+ layersCollection.push(dataLayers);
98
+ const indicatorLayers =
99
+ //@ts-expect-error indicator is collection
100
+ await EodashCollection.getIndicatorLayers(selectedIndicator);
101
+
102
+ const baseLayers = {
103
+ type: "Group",
104
+ properties: {
105
+ id: "BaseLayersGroup",
106
+ title: "Base Layers",
107
+ },
108
+ layers: /** @type {Record<string,any>[]}*/ ([]),
109
+ };
110
+
111
+ const indicatorBaseLayers = indicatorLayers.filter(
112
+ (l) => l.properties.group === "baselayer",
113
+ );
114
+
115
+ if (indicatorBaseLayers.length) {
116
+ // Only one baselayer can be set to visible, let's first set all to
117
+ // false that have not a dedicated property visible, then check
118
+ // if there are more then one visible and only allow one
119
+ let counter = 0;
120
+ let lastPos = 0;
121
+ for (let indx = 0; indx < indicatorBaseLayers.length; indx++) {
122
+ const bl = indicatorBaseLayers[indx];
123
+ if (!("visible" in bl.properties)) {
124
+ bl.properties.visible = false;
125
+ }
126
+
127
+ if (bl.properties.visible) {
128
+ counter++;
129
+ lastPos = indx;
130
+ }
131
+ }
132
+
133
+ // if none visible set the last one as visible
134
+ if (counter === 0) {
135
+ indicatorBaseLayers[0].properties.visible = true;
136
+ }
137
+
138
+ // disable all apart from last
139
+ if (counter > 0) {
140
+ indicatorBaseLayers.forEach((bl, indx) => {
141
+ if (indx !== lastPos) {
142
+ bl.properties.visible = false;
143
+ } else {
144
+ bl.properties.visible = true;
145
+ }
146
+ });
147
+ }
148
+
149
+ baseLayers.layers.push(...indicatorBaseLayers);
150
+
151
+ // Add exclusive to baselayers and make sure only one is selected
152
+ baseLayers.layers.forEach((bl) => {
153
+ bl.properties.layerControlExclusive = true;
154
+ });
155
+ } else {
156
+ // Default to some baselayer
157
+ baseLayers.layers.push({
158
+ type: "Tile",
159
+ properties: {
160
+ id: "osm",
161
+ title: "Background",
162
+ layerControlExclusive: true,
163
+ },
164
+ source: {
165
+ type: "OSM",
166
+ },
167
+ });
168
+ }
169
+
170
+ if (baseLayers.layers.length) {
171
+ layersCollection.push(baseLayers);
172
+ }
173
+
174
+ const overlayLayers = {
175
+ type: "Group",
176
+ properties: {
177
+ id: "OverlayGroup",
178
+ title: "Overlay Layers",
179
+ },
180
+ layers: /** @type {Record<string,any>[]}*/ ([]),
181
+ };
182
+
183
+ const indicatorOverlays = indicatorLayers.filter(
184
+ (l) => l.properties.group === "overlay",
185
+ );
186
+
187
+ if (indicatorOverlays.length) {
188
+ overlayLayers.layers.push(...indicatorOverlays);
189
+ layersCollection.unshift(overlayLayers);
190
+ }
191
+
192
+ return layersCollection;
193
+ };
194
+
195
+ /**
196
+ * Description placeholder
197
+ *
198
+ * @param {import("vue").Ref<HTMLElement & Record<string,any> | null>} mapElement
199
+ * @param {import("vue").Ref<import("stac-ts").StacCollection | null>} selectedIndicator
200
+ * @param {EodashCollection[]} eodashCols
201
+ * @param {import("vue").Ref<string>} datetime
202
+ * @param {import("vue").Ref<Record<string,any>[]>} mapLayers
203
+ * @param {import("vue").Ref<HTMLElement & Record<string,any> | null>} partnerMap
204
+ */
205
+ const useInitMap = (
206
+ mapElement,
207
+ selectedIndicator,
208
+ eodashCols,
209
+ datetime,
210
+ mapLayers,
211
+ partnerMap,
212
+ ) => {
213
+ log.debug(
214
+ "InitMap",
215
+ mapElement.value,
216
+ selectedIndicator.value,
217
+ eodashCols.values,
218
+ datetime.value,
219
+ );
220
+
221
+ const stopIndicatorWatcher = watch(
222
+ [selectedIndicator, datetime],
223
+ async ([updatedStac, updatedTime], [previousStac, previousTime]) => {
224
+ if (updatedStac) {
225
+ log.debug(
226
+ "Selected Indicator watch triggered",
227
+ updatedStac,
228
+ updatedTime,
229
+ );
230
+
231
+ if (mapElement?.value?.id === "main") {
232
+ // Making sure main map gets the viewer that seems to be
233
+ // removed when the second map is no longer rendered
234
+ if (viewHolder !== null) {
235
+ // Set view to previous compare view
236
+ mapElement?.value?.map.setView(viewHolder);
237
+ viewHolder = null;
238
+ }
239
+ }
240
+ let layersCollection = [];
241
+
242
+ const onlyTimeChanged =
243
+ updatedStac?.id === previousStac?.id && updatedTime !== previousTime;
244
+
245
+ const { selectedCompareStac } = storeToRefs(useSTAcStore());
246
+ if (mapElement?.value?.id === "main") {
247
+ // Main map being initialized
248
+ // Set projection based on indicator level information for both maps
249
+ await setMapProjFromCol(updatedStac);
250
+ } else {
251
+ // Compare map being initialized
252
+ if (selectedCompareStac.value !== null) {
253
+ // save view of compare map
254
+ viewHolder = mapElement?.value?.map.getView();
255
+ /** @type {any} */
256
+ (mapElement.value).sync = partnerMap.value;
257
+ }
258
+ }
259
+
260
+ // We re-crate the configuration if time changed
261
+ if (onlyTimeChanged) {
262
+ layersCollection = await createLayersConfig(
263
+ updatedStac,
264
+ eodashCols,
265
+ updatedTime,
266
+ );
267
+ log.debug(
268
+ "Assigned layers after changing time only",
269
+ JSON.parse(JSON.stringify(layersCollection)),
270
+ );
271
+ mapLayers.value = layersCollection;
272
+ return;
273
+ }
274
+
275
+ /** @type {Record<string,any>[]} */
276
+ layersCollection = await createLayersConfig(
277
+ updatedStac,
278
+ eodashCols,
279
+ datetime.value,
280
+ );
281
+
282
+ // We try to set the current time selection to latest extent date
283
+ let endInterval = null;
284
+ const interval = updatedStac?.extent?.temporal?.interval;
285
+ if (interval && interval.length > 0 && interval[0].length > 1) {
286
+ // @ts-expect-error this is the defined STAC structure
287
+ endInterval = new Date(interval[0][1]);
288
+ log.debug(
289
+ "Indicator load: found stac extent, setting time to latest value",
290
+ endInterval,
291
+ );
292
+ }
293
+ if (
294
+ endInterval !== null &&
295
+ endInterval.toISOString() !== datetime.value
296
+ ) {
297
+ datetime.value = endInterval.toISOString();
298
+ }
299
+
300
+ // Try to move map view to extent only when main
301
+ // indicator and map changes
302
+ if (mapElement?.value?.id === "main") {
303
+ // Sanitize extent,
304
+ const b = updatedStac.extent?.spatial.bbox[0];
305
+ const sanitizedExtent = [
306
+ b[0] > -180 ? b[0] : -180,
307
+ b[1] > -90 ? b[1] : -90,
308
+ b[2] < 180 ? b[2] : 180,
309
+ b[3] < 90 ? b[3] : 90,
310
+ ];
311
+
312
+ const reprojExtent = mapElement.value?.transformExtent(
313
+ sanitizedExtent,
314
+ "EPSG:4326",
315
+ mapElement.value?.map?.getView().getProjection(),
316
+ );
317
+ /** @type {any} */
318
+ (mapElement.value).zoomExtent = reprojExtent;
319
+ }
320
+
321
+ log.debug(
322
+ "Assigned layers",
323
+ JSON.parse(JSON.stringify(layersCollection)),
324
+ );
325
+
326
+ mapLayers.value = layersCollection;
327
+ }
328
+ },
329
+ { immediate: true },
330
+ );
331
+
332
+ onUnmounted(() => {
333
+ stopIndicatorWatcher();
334
+ });
335
+ };
336
+
337
+ const _hoisted_1 = [".enabled"];
338
+ const _hoisted_2 = [".layers"];
339
+ const _hoisted_3 = [".layers"];
340
+
341
+
342
+ const _sfc_main = {
343
+ __name: 'EodashMap',
344
+ props: {
345
+ enableCompare: {
346
+ type: Boolean,
347
+ default: false,
348
+ },
349
+ },
350
+ setup(__props) {
351
+
352
+ const props = __props;
353
+
354
+ /** @type {import("vue").Ref<Record<string,any>[]>} */
355
+ const eoxMapLayers = ref([
356
+ {
357
+ type: "Tile",
358
+ source: { type: "OSM" },
359
+ properties: {
360
+ id: "osm",
361
+ title: "Background",
362
+ },
363
+ },
364
+ ]);
365
+
366
+ /** @type {import("vue").Ref<Record<string,any>[]>} */
367
+ const eoxMapCompareLayers = ref([
368
+ {
369
+ type: "Tile",
370
+ source: { type: "OSM" },
371
+ properties: {
372
+ id: "osm",
373
+ title: "Background",
374
+ },
375
+ },
376
+ ]);
377
+
378
+ /** @type {import("vue").Ref<(HTMLElement & Record<string,any> & { map:import("ol").Map }) | null>} */
379
+ const eoxMap = ref(null);
380
+ /** @type {import("vue").Ref<(HTMLElement & Record<string,any> & { map:import("ol").Map }) | null>} */
381
+ const compareMap = ref(null);
382
+
383
+ const eoxMapConfig = {
384
+ /** @type {(number|undefined)[] | undefined} */
385
+ center: [15, 48],
386
+ /** @type {number | undefined} */
387
+ zoom: 4,
388
+ };
389
+
390
+ const eoxCompareMapConfig = {
391
+ /** @type {(number|undefined)[] | undefined} */
392
+ center: [15, 48],
393
+ /** @type {number | undefined} */
394
+ zoom: 4,
395
+ };
396
+
397
+ // Check if selected indicator was already set in store
398
+ if (mapPosition && mapPosition.value && mapPosition.value.length === 3) {
399
+ // TODO: do further checks for invalid values?
400
+ // TODO: can we expect the values to be in a specific projection
401
+ eoxMapConfig.center = [mapPosition.value?.[0], mapPosition.value[1]];
402
+ eoxMapConfig.zoom = mapPosition.value[2];
403
+ }
404
+ const { selectedCompareStac } = storeToRefs(useSTAcStore());
405
+ const showCompare = computed(() =>
406
+ props.enableCompare && !!selectedCompareStac.value ? "" : "first",
407
+ );
408
+
409
+ useHandleMapMoveEnd(eoxMap, mapPosition);
410
+
411
+ onMounted(() => {
412
+ const { selectedCompareStac, selectedStac } = storeToRefs(useSTAcStore());
413
+ // assign map Element state to eox map
414
+ mapEl.value = eoxMap.value;
415
+
416
+ if (props.enableCompare) {
417
+ mapCompareEl.value = compareMap.value;
418
+ }
419
+
420
+ if (props.enableCompare) {
421
+ useInitMap(
422
+ compareMap,
423
+ //@ts-expect-error todo selectedStac as collection
424
+ selectedCompareStac,
425
+ eodashCompareCollections,
426
+ datetime,
427
+ eoxMapCompareLayers,
428
+ eoxMap,
429
+ );
430
+ }
431
+
432
+ useInitMap(
433
+ eoxMap,
434
+ //@ts-expect-error todo selectedStac as collection
435
+ selectedStac,
436
+ eodashCollections,
437
+ datetime,
438
+ eoxMapLayers,
439
+ compareMap,
440
+ );
441
+ });
442
+
443
+ return (_ctx, _cache) => {
444
+ return (openBlock(), createElementBlock("eox-map-compare", {
445
+ class: "fill-height fill-width overflow-none",
446
+ ".enabled": showCompare.value
447
+ }, [
448
+ createElementVNode("eox-map", {
449
+ class: "fill-height fill-width overflow-none",
450
+ slot: "first",
451
+ ref_key: "eoxMap",
452
+ ref: eoxMap,
453
+ ".config": eoxMapConfig,
454
+ id: "main",
455
+ ".layers": eoxMapLayers.value
456
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_2),
457
+ createElementVNode("eox-map", {
458
+ class: "fill-height fill-width overflow-none",
459
+ id: "compare",
460
+ slot: "second",
461
+ ref_key: "compareMap",
462
+ ref: compareMap,
463
+ ".config": eoxCompareMapConfig,
464
+ ".layers": eoxMapCompareLayers.value
465
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_3)
466
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_1))
467
+ }
468
+ }
469
+
470
+ };
471
+
472
+ export { _sfc_main as default };
@@ -0,0 +1,66 @@
1
+ import { ref, openBlock, createElementBlock, createBlock, unref, createCommentVNode } from 'vue';
2
+ import { _ as _export_sfc, a9 as makePanelTransparent, V as VBtn, aa as availableMapProjection, ab as changeMapProjection } from './asWebComponent-6g8pz2_C.js';
3
+ import { mdiMapPlus, mdiEarthBox } from '@mdi/js';
4
+ import ExportState from './ExportState-GDJ8YxS9.js';
5
+
6
+ const _sfc_main = {
7
+ __name: 'EodashMapBtns',
8
+ props: {
9
+ exportMap: {
10
+ type: Boolean,
11
+ default: true,
12
+ },
13
+ changeProjection: {
14
+ type: Boolean,
15
+ default: true,
16
+ },
17
+ },
18
+ setup(__props) {
19
+
20
+
21
+
22
+ const showMapState = ref(false);
23
+
24
+ /** @type {import("vue").Ref<HTMLDivElement|null>} */
25
+ const rootRef = ref(null);
26
+ makePanelTransparent(rootRef);
27
+
28
+ return (_ctx, _cache) => {
29
+
30
+
31
+ return (openBlock(), createElementBlock("div", {
32
+ ref_key: "rootRef",
33
+ ref: rootRef,
34
+ class: "d-flex flex-column align-end justify-end my-3 pa-2"
35
+ }, [
36
+ (__props.exportMap)
37
+ ? (openBlock(), createBlock(VBtn, {
38
+ key: 0,
39
+ class: "map-btn",
40
+ icon: [unref(mdiMapPlus)],
41
+ onClick: _cache[0] || (_cache[0] = $event => (showMapState.value = !showMapState.value))
42
+ }, null, 8 /* PROPS */, ["icon"]))
43
+ : createCommentVNode("v-if", true),
44
+ (__props.exportMap)
45
+ ? (openBlock(), createBlock(ExportState, {
46
+ key: 1,
47
+ modelValue: showMapState.value,
48
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => ((showMapState).value = $event))
49
+ }, null, 8 /* PROPS */, ["modelValue"]))
50
+ : createCommentVNode("v-if", true),
51
+ (__props.changeProjection && !!unref(availableMapProjection))
52
+ ? (openBlock(), createBlock(VBtn, {
53
+ key: 2,
54
+ class: "map-btn",
55
+ icon: [unref(mdiEarthBox)],
56
+ onClick: _cache[2] || (_cache[2] = $event => (unref(changeMapProjection)(unref(availableMapProjection))))
57
+ }, null, 8 /* PROPS */, ["icon"]))
58
+ : createCommentVNode("v-if", true)
59
+ ], 512 /* NEED_PATCH */))
60
+ }
61
+ }
62
+
63
+ };
64
+ const EodashMapBtns = /*#__PURE__*/_export_sfc(_sfc_main, [['__scopeId',"data-v-d7a01370"]]);
65
+
66
+ export { EodashMapBtns as default };