@eodash/eodash 5.4.0 → 5.5.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.
- package/core/client/App.vue +1 -1
- package/core/client/asWebComponent.js +1 -1
- package/core/client/composables/DefineWidgets.js +12 -2
- package/core/client/eodashSTAC/EodashCollection.js +12 -13
- package/core/client/eodashSTAC/createLayers.js +45 -18
- package/core/client/eodashSTAC/helpers.js +13 -5
- package/core/client/eodashSTAC/parquet.js +2 -1
- package/core/client/eodashSTAC/triggers.js +1 -2
- package/core/client/store/actions.js +17 -17
- package/core/client/store/states.js +26 -4
- package/core/client/types.ts +9 -0
- package/core/client/utils/index.js +18 -1
- package/dist/client/{DashboardLayout-CQOGHPW_.js → DashboardLayout-D_590Zle.js} +2 -2
- package/dist/client/{DynamicWebComponent-CoLO8FEf.js → DynamicWebComponent-67cfzL4o.js} +1 -1
- package/dist/client/EodashChart-BsW18Em1.js +144 -0
- package/dist/client/{EodashDatePicker-BZeQ6bcu.js → EodashDatePicker-BwyFIBlK.js} +10 -7
- package/dist/client/{EodashItemFilter-CmZkk7GK.js → EodashItemFilter-CgdrG-pX.js} +2 -2
- package/dist/client/{EodashLayerControl-D54fY-bX.js → EodashLayerControl-V98fahVJ.js} +2 -2
- package/dist/client/{EodashLayoutSwitcher-BCP3FvDb.js → EodashLayoutSwitcher-B4oI5PAx.js} +3 -3
- package/dist/client/EodashMapBtns-Ce2tFjJK.js +433 -0
- package/dist/client/{EodashStacInfo-BZbmT8vT.js → EodashStacInfo-Cb28jVEr.js} +11 -15
- package/dist/client/{EodashTimeSlider-DIcAJr6D.js → EodashTimeSlider-B5boxpCK.js} +2 -2
- package/dist/client/{EodashTools-Cz6X6hsF.js → EodashTools-RwiXxELa.js} +4 -4
- package/dist/client/{ExportState-DFVFAgKz.js → ExportState-Cp4ftu4f.js} +46 -21
- package/dist/client/{Footer-DLzQcjkI.js → Footer-xGfh2LUv.js} +1 -1
- package/dist/client/{Header-_D9Z-zFJ.js → Header-BggV8BVC.js} +127 -17
- package/dist/client/MobileLayout-BwXCBKFL.js +118 -0
- package/dist/client/{PopUp-DwI8V2gW.js → PopUp-C6x6Rpv0.js} +8 -59
- package/dist/client/{ProcessList-C9eAg2Sb.js → ProcessList-DDwo71cD.js} +9 -13
- package/dist/client/{VImg-COXTnCWE.js → VImg-DN23k6uX.js} +2 -2
- package/dist/client/{VMain-C74l1bv-.js → VMain-BT2ZxPLy.js} +1 -1
- package/dist/client/{VTooltip-BLS-cQ9N.js → VTooltip-CAkym6KY.js} +3 -4
- package/dist/client/{WidgetsContainer-D-VfMRxE.js → WidgetsContainer-CLYZgRgc.js} +1 -1
- package/dist/client/asWebComponent-C5YMrXyg.js +9206 -0
- package/dist/client/{async-D4G-FOIc.js → async-DHmiD7O-.js} +6 -8
- package/dist/client/eo-dash.js +1 -1
- package/dist/client/{forwardRefs-CRMFoNYN.js → forwardRefs-YqjFe8WZ.js} +196 -37
- package/dist/client/{handling-DTAhQuPh.js → handling-DRaAJMSG.js} +93 -53
- package/dist/client/{helpers-CsjKHAcK.js → helpers-Bi-qmnbZ.js} +188 -87
- package/dist/client/{index-BoCcZ0l4.js → index-BtY2y1sL.js} +15 -16
- package/dist/client/{index-DEmHaCL3.js → index-D4GBjamF.js} +5 -3
- package/dist/client/{index-BIcmbjr0.js → index-DYLTaaU8.js} +27 -14
- package/dist/client/{index-BHilH1qx.js → index-bSHJLUNu.js} +30 -73
- package/dist/client/templates.js +64 -5
- package/dist/client/{transition-6MJLK-_H.js → transition-C4YbXuIb.js} +1 -1
- package/dist/node/cli.js +1 -1
- package/dist/types/core/client/App.vue.d.ts +16 -6
- package/dist/types/core/client/asWebComponent.d.ts +2 -2
- package/dist/types/core/client/components/DashboardLayout.vue.d.ts +2 -1
- package/dist/types/core/client/components/DynamicWebComponent.vue.d.ts +36 -16
- package/dist/types/core/client/components/EodashOverlay.vue.d.ts +2 -1
- package/dist/types/core/client/components/ErrorAlert.vue.d.ts +9 -1
- package/dist/types/core/client/components/Footer.vue.d.ts +2 -1
- package/dist/types/core/client/components/Header.vue.d.ts +2 -1
- package/dist/types/core/client/components/IframeWrapper.vue.d.ts +12 -6
- package/dist/types/core/client/components/Loading.vue.d.ts +2 -1
- package/dist/types/core/client/components/MobileLayout.vue.d.ts +2 -1
- package/dist/types/core/client/eodashSTAC/helpers.d.ts +2 -0
- package/dist/types/core/client/store/actions.d.ts +1 -2
- package/dist/types/core/client/store/states.d.ts +22 -4
- package/dist/types/core/client/types.d.ts +6 -1
- package/dist/types/core/client/utils/index.d.ts +1 -0
- package/dist/types/core/client/views/Dashboard.vue.d.ts +20 -8
- package/dist/types/templates/compare.d.ts +20 -0
- package/dist/types/templates/expert.d.ts +30 -1
- package/dist/types/widgets/EodashChart.vue.d.ts +28 -0
- package/dist/types/widgets/EodashDatePicker.vue.d.ts +38 -9
- package/dist/types/widgets/EodashItemCatalog/index.vue.d.ts +88 -13
- package/dist/types/widgets/EodashItemCatalog/methods/map.d.ts +1 -1
- package/dist/types/widgets/EodashItemFilter.vue.d.ts +169 -26
- package/dist/types/widgets/EodashLayerControl.vue.d.ts +38 -10
- package/dist/types/widgets/EodashLayoutSwitcher.vue.d.ts +22 -7
- package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +94 -21
- package/dist/types/widgets/EodashMap/index.vue.d.ts +646 -93
- package/dist/types/widgets/EodashMap/methods/btns.d.ts +14 -0
- package/dist/types/widgets/EodashProcess/ProcessList.vue.d.ts +24 -7
- package/dist/types/widgets/EodashProcess/index.vue.d.ts +26 -7
- package/dist/types/widgets/EodashProcess/methods/composables.d.ts +1 -2
- package/dist/types/widgets/EodashProcess/methods/handling.d.ts +9 -14
- package/dist/types/widgets/EodashProcess/methods/outputs.d.ts +2 -2
- package/dist/types/widgets/EodashProcess/methods/utils.d.ts +2 -2
- package/dist/types/widgets/EodashStacInfo.vue.d.ts +67 -18
- package/dist/types/widgets/EodashTimeSlider.vue.d.ts +14 -6
- package/dist/types/widgets/EodashTools.vue.d.ts +437 -47
- package/dist/types/widgets/ExportState.vue.d.ts +26 -8
- package/dist/types/widgets/PopUp.vue.d.ts +61 -11
- package/dist/types/widgets/WidgetsContainer.vue.d.ts +22 -6
- package/package.json +33 -34
- package/templates/baseConfig.js +14 -0
- package/templates/compare.js +30 -3
- package/templates/expert.js +20 -2
- package/templates/lite.js +1 -1
- package/widgets/EodashChart.vue +139 -0
- package/widgets/EodashDatePicker.vue +5 -2
- package/widgets/EodashItemCatalog/index.vue +2 -2
- package/widgets/EodashItemCatalog/methods/map.js +9 -10
- package/widgets/EodashMap/EodashMapBtns.vue +58 -93
- package/widgets/EodashMap/index.vue +10 -2
- package/widgets/EodashMap/methods/btns.js +155 -0
- package/widgets/EodashMap/methods/create-layers-config.js +3 -3
- package/widgets/EodashMap/methods/index.js +2 -1
- package/widgets/EodashProcess/ProcessList.vue +2 -3
- package/widgets/EodashProcess/index.vue +24 -63
- package/widgets/EodashProcess/methods/async.js +1 -1
- package/widgets/EodashProcess/methods/composables.js +1 -6
- package/widgets/EodashProcess/methods/custom-endpoints/chart/veda-endpoint.js +10 -6
- package/widgets/EodashProcess/methods/handling.js +42 -40
- package/widgets/EodashProcess/methods/outputs.js +44 -4
- package/widgets/EodashProcess/methods/utils.js +3 -5
- package/widgets/EodashStacInfo.vue +10 -23
- package/widgets/ExportState.vue +9 -15
- package/dist/client/EodashMapBtns-D-HulIl1.js +0 -306
- package/dist/client/MobileLayout-3Ko9XSfO.js +0 -118
- package/dist/client/asWebComponent-Bw03Jutr.js +0 -9090
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createElementVNode, unref } from 'vue';
|
|
2
2
|
import '@eox/stacinfo';
|
|
3
|
-
import { B as currentUrl } from './helpers-
|
|
3
|
+
import { B as currentUrl } from './helpers-Bi-qmnbZ.js';
|
|
4
4
|
|
|
5
5
|
const _hoisted_1 = { class: "flex-grow-1" };
|
|
6
|
-
const _hoisted_2 = [".for", ".allowHtml", ".body", ".featured", ".footer", ".
|
|
6
|
+
const _hoisted_2 = [".for", ".allowHtml", ".body", ".featured", ".footer", ".header", ".tags"];
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
const _sfc_main = {
|
|
@@ -14,10 +14,6 @@ const _sfc_main = {
|
|
|
14
14
|
default: true,
|
|
15
15
|
},
|
|
16
16
|
|
|
17
|
-
styleOverride: {
|
|
18
|
-
type: String,
|
|
19
|
-
default: "",
|
|
20
|
-
},
|
|
21
17
|
header: {
|
|
22
18
|
/** @type {import("vue").PropType<string[]>} */
|
|
23
19
|
type: Array,
|
|
@@ -28,15 +24,17 @@ const _sfc_main = {
|
|
|
28
24
|
type: Array,
|
|
29
25
|
default: () => ["themes"],
|
|
30
26
|
},
|
|
31
|
-
subheader: {
|
|
32
|
-
/** @type {import("vue").PropType<string[]>} */
|
|
33
|
-
type: Array,
|
|
34
|
-
default: () => [],
|
|
35
|
-
},
|
|
36
27
|
body: {
|
|
37
28
|
/** @type {import("vue").PropType<string[]>} */
|
|
38
29
|
type: Array,
|
|
39
|
-
default: () => [
|
|
30
|
+
default: () => [
|
|
31
|
+
"satellite",
|
|
32
|
+
"sensor",
|
|
33
|
+
"insituSources",
|
|
34
|
+
"otherSources",
|
|
35
|
+
"agency",
|
|
36
|
+
"extent",
|
|
37
|
+
],
|
|
40
38
|
},
|
|
41
39
|
featured: {
|
|
42
40
|
/** @type {import("vue").PropType<string[]>} */
|
|
@@ -46,7 +44,7 @@ const _sfc_main = {
|
|
|
46
44
|
footer: {
|
|
47
45
|
/** @type {import("vue").PropType<string[]>} */
|
|
48
46
|
type: Array,
|
|
49
|
-
default: () => ["sci:citation"],
|
|
47
|
+
default: () => ["sci:citation", "sci:doi", "sci:publication"],
|
|
50
48
|
},
|
|
51
49
|
},
|
|
52
50
|
setup(__props) {
|
|
@@ -61,9 +59,7 @@ return (_ctx, _cache) => {
|
|
|
61
59
|
".body": __props.body,
|
|
62
60
|
".featured": __props.featured,
|
|
63
61
|
".footer": __props.footer,
|
|
64
|
-
".styleOverride": __props.styleOverride,
|
|
65
62
|
".header": __props.header,
|
|
66
|
-
".subheader": __props.subheader,
|
|
67
63
|
".tags": __props.tags,
|
|
68
64
|
style: {"--color-primary-lighter":"none"}
|
|
69
65
|
}, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_2)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, createElementBlock, createCommentVNode, openBlock, unref } from 'vue';
|
|
2
|
-
import { j as mapEl, C as datetime } from './helpers-
|
|
3
|
-
import { I as eodashCollections } from './asWebComponent-
|
|
2
|
+
import { j as mapEl, C as datetime } from './helpers-Bi-qmnbZ.js';
|
|
3
|
+
import { I as eodashCollections } from './asWebComponent-C5YMrXyg.js';
|
|
4
4
|
import '@eox/timeslider';
|
|
5
5
|
|
|
6
6
|
const _hoisted_1 = [".filters"];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ref, computed, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, unref, withCtx, mergeProps } from 'vue';
|
|
2
|
-
import _sfc_main$2 from './PopUp-
|
|
3
|
-
import EodashItemFilter from './EodashItemFilter-
|
|
4
|
-
import _sfc_main$1 from './EodashLayoutSwitcher-
|
|
2
|
+
import _sfc_main$2 from './PopUp-C6x6Rpv0.js';
|
|
3
|
+
import EodashItemFilter from './EodashItemFilter-CgdrG-pX.js';
|
|
4
|
+
import _sfc_main$1 from './EodashLayoutSwitcher-B4oI5PAx.js';
|
|
5
5
|
import { mdiViewDashboard, mdiPlusCircleOutline } from '@mdi/js';
|
|
6
|
-
import { _ as _export_sfc, D as useDisplay, F as useTransparentPanel, G as VBtn } from './asWebComponent-
|
|
6
|
+
import { _ as _export_sfc, D as useDisplay, F as useTransparentPanel, G as VBtn } from './asWebComponent-C5YMrXyg.js';
|
|
7
7
|
|
|
8
8
|
const _style_0 = ".v-btn--size-default[data-v-73449028]{--v-btn-height: 30px}";
|
|
9
9
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { createVNode, normalizeStyle, normalizeClass, createElementVNode, Fragment, toDisplayString, withDirectives, mergeProps, computed, mergeModels, useModel, ref, createBlock, openBlock, withCtx, createElementBlock, createCommentVNode, renderList, unref, createTextVNode, vShow } from 'vue';
|
|
1
|
+
import { createVNode, normalizeStyle, normalizeClass, createElementVNode, Fragment, toDisplayString, shallowRef, watch, withDirectives, mergeProps, computed, toRef, mergeModels, useModel, ref, createBlock, openBlock, withCtx, createElementBlock, createCommentVNode, renderList, unref, createTextVNode, vShow } from 'vue';
|
|
2
2
|
import { mdiContentCopy, mdiClipboardCheckOutline } from '@mdi/js';
|
|
3
|
-
import _sfc_main$1 from './PopUp-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import _sfc_main$1 from './PopUp-C6x6Rpv0.js';
|
|
4
|
+
import { a0 as createSimpleFunctional, g as genericComponent, p as propsFactory, n as provideDefaults, c as useRender, m as makeTagProps, e as makeComponentProps, k as provideTheme, h as useBorder, a1 as useVariant, W as useDensity, j as useRounded, a2 as useSize, a3 as genOverlays, H as VIcon, V as VDefaultsProvider, a4 as makeVariantProps, q as makeThemeProps, a5 as makeSizeProps, r as makeRoundedProps, X as makeDensityProps, t as makeBorderProps, a6 as IconValue, a7 as Ripple, b as useDimension, i as useElevation, a8 as useLoader, a9 as useLocation, aa as usePosition, ab as useLink, ac as makeRouterProps, ad as makePositionProps, ae as makeLocationProps, af as makeLoaderProps, s as makeElevationProps, d as makeDimensionProps, ag as LoaderSlot, ah as useTextColor, o as convertToUnit, _ as _export_sfc, ai as copyToClipBoard, G as VBtn } from './asWebComponent-C5YMrXyg.js';
|
|
5
|
+
import { N as chartSpec, a1 as removeUnneededProperties, w as getLayers, F as mapPosition, X as availableMapProjection } from './helpers-Bi-qmnbZ.js';
|
|
6
|
+
import { base64EncodeSpec } from '@eox/chart';
|
|
7
|
+
import { V as VImg, a as VExpandTransition } from './VImg-DN23k6uX.js';
|
|
7
8
|
|
|
8
9
|
// Styles
|
|
9
10
|
const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer');
|
|
10
11
|
|
|
11
|
-
const _style_0 = ".code-block[data-v-
|
|
12
|
+
const _style_0 = ".code-block[data-v-b7d44f9a]{background-color:#ddd;font-family:monospace;font-size:small;max-height:200px;overflow-y:auto}";
|
|
12
13
|
|
|
13
14
|
const makeVCardActionsProps = propsFactory({
|
|
14
15
|
...makeComponentProps(),
|
|
@@ -350,6 +351,12 @@ const VCard = genericComponent()({
|
|
|
350
351
|
roundedClasses
|
|
351
352
|
} = useRounded(props);
|
|
352
353
|
const link = useLink(props, attrs);
|
|
354
|
+
const loadingColor = shallowRef(undefined);
|
|
355
|
+
watch(() => props.loading, (val, old) => {
|
|
356
|
+
loadingColor.value = !val && typeof old === 'string' ? old : typeof val === 'boolean' ? undefined : val;
|
|
357
|
+
}, {
|
|
358
|
+
immediate: true
|
|
359
|
+
});
|
|
353
360
|
useRender(() => {
|
|
354
361
|
const isLink = props.link !== false && link.isLink.value;
|
|
355
362
|
const isClickable = !props.disabled && props.link !== false && (props.link || link.isClickable.value);
|
|
@@ -392,7 +399,7 @@ const VCard = genericComponent()({
|
|
|
392
399
|
}, slots.image)]), createVNode(LoaderSlot, {
|
|
393
400
|
"name": "v-card",
|
|
394
401
|
"active": !!props.loading,
|
|
395
|
-
"color":
|
|
402
|
+
"color": loadingColor.value
|
|
396
403
|
}, {
|
|
397
404
|
default: slots.loader
|
|
398
405
|
}), hasCardItem && createVNode(VCardItem, {
|
|
@@ -422,13 +429,21 @@ const VCard = genericComponent()({
|
|
|
422
429
|
}
|
|
423
430
|
});
|
|
424
431
|
|
|
432
|
+
const allowedVariants = ['dotted', 'dashed', 'solid', 'double'];
|
|
425
433
|
const makeVDividerProps = propsFactory({
|
|
426
434
|
color: String,
|
|
435
|
+
contentOffset: [Number, String, Array],
|
|
436
|
+
gradient: Boolean,
|
|
427
437
|
inset: Boolean,
|
|
428
438
|
length: [Number, String],
|
|
429
439
|
opacity: [Number, String],
|
|
430
440
|
thickness: [Number, String],
|
|
431
441
|
vertical: Boolean,
|
|
442
|
+
variant: {
|
|
443
|
+
type: String,
|
|
444
|
+
default: 'solid',
|
|
445
|
+
validator: v => allowedVariants.includes(v)
|
|
446
|
+
},
|
|
432
447
|
...makeComponentProps(),
|
|
433
448
|
...makeThemeProps()
|
|
434
449
|
}, 'VDivider');
|
|
@@ -457,15 +472,27 @@ const VDivider = genericComponent()({
|
|
|
457
472
|
}
|
|
458
473
|
return styles;
|
|
459
474
|
});
|
|
475
|
+
const contentStyles = toRef(() => {
|
|
476
|
+
const margin = Array.isArray(props.contentOffset) ? props.contentOffset[0] : props.contentOffset;
|
|
477
|
+
const shift = Array.isArray(props.contentOffset) ? props.contentOffset[1] : 0;
|
|
478
|
+
return {
|
|
479
|
+
marginBlock: props.vertical && margin ? convertToUnit(margin) : undefined,
|
|
480
|
+
marginInline: !props.vertical && margin ? convertToUnit(margin) : undefined,
|
|
481
|
+
transform: shift ? `translate${props.vertical ? 'X' : 'Y'}(${convertToUnit(shift)})` : undefined
|
|
482
|
+
};
|
|
483
|
+
});
|
|
460
484
|
useRender(() => {
|
|
461
485
|
const divider = createElementVNode("hr", {
|
|
462
486
|
"class": normalizeClass([{
|
|
463
487
|
'v-divider': true,
|
|
488
|
+
'v-divider--gradient': props.gradient && !slots.default,
|
|
464
489
|
'v-divider--inset': props.inset,
|
|
465
490
|
'v-divider--vertical': props.vertical
|
|
466
491
|
}, themeClasses.value, textColorClasses.value, props.class]),
|
|
467
492
|
"style": normalizeStyle([dividerStyles.value, textColorStyles.value, {
|
|
468
493
|
'--v-border-opacity': props.opacity
|
|
494
|
+
}, {
|
|
495
|
+
'border-style': props.variant
|
|
469
496
|
}, props.style]),
|
|
470
497
|
"aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
|
|
471
498
|
"role": `${attrs.role || 'separator'}`
|
|
@@ -473,11 +500,13 @@ const VDivider = genericComponent()({
|
|
|
473
500
|
if (!slots.default) return divider;
|
|
474
501
|
return createElementVNode("div", {
|
|
475
502
|
"class": normalizeClass(['v-divider__wrapper', {
|
|
476
|
-
'v-divider__wrapper--
|
|
477
|
-
'v-divider__wrapper--inset': props.inset
|
|
503
|
+
'v-divider__wrapper--gradient': props.gradient,
|
|
504
|
+
'v-divider__wrapper--inset': props.inset,
|
|
505
|
+
'v-divider__wrapper--vertical': props.vertical
|
|
478
506
|
}])
|
|
479
507
|
}, [divider, createElementVNode("div", {
|
|
480
|
-
"class": "v-divider__content"
|
|
508
|
+
"class": "v-divider__content",
|
|
509
|
+
"style": normalizeStyle(contentStyles.value)
|
|
481
510
|
}, [slots.default()]), divider]);
|
|
482
511
|
});
|
|
483
512
|
return {};
|
|
@@ -505,10 +534,6 @@ const _sfc_main = {
|
|
|
505
534
|
type: Function,
|
|
506
535
|
default: getLayers,
|
|
507
536
|
},
|
|
508
|
-
getChartSpec: {
|
|
509
|
-
type: Function,
|
|
510
|
-
default: getChartSpec,
|
|
511
|
-
},
|
|
512
537
|
}, {
|
|
513
538
|
"modelValue": { type: Boolean, required: true, default: false },
|
|
514
539
|
"modelModifiers": {},
|
|
@@ -544,7 +569,7 @@ const copyBtns = [
|
|
|
544
569
|
copyFn: async () =>
|
|
545
570
|
await copyToClipBoard(getChartExportCode(), copySuccess),
|
|
546
571
|
copyAs: "chart",
|
|
547
|
-
showIf: () =>
|
|
572
|
+
showIf: () => chartSpec.value,
|
|
548
573
|
},
|
|
549
574
|
];
|
|
550
575
|
|
|
@@ -567,12 +592,12 @@ const getMapEntryCode = () => {
|
|
|
567
592
|
};
|
|
568
593
|
|
|
569
594
|
const getChartExportCode = () => {
|
|
570
|
-
|
|
571
|
-
if (!chartSpec) return "";
|
|
595
|
+
if (!chartSpec.value) return "";
|
|
572
596
|
const preTag =
|
|
573
|
-
"## Chart Example <!" + '--{as="eox-chart" style="height:
|
|
597
|
+
"## Chart Example <!" + '--{as="eox-chart" style="height: 400px;" spec=';
|
|
574
598
|
const endTag = " }-->";
|
|
575
|
-
|
|
599
|
+
const escapedSpec = base64EncodeSpec(chartSpec.value);
|
|
600
|
+
return `${preTag}'${escapedSpec}'${endTag}`;
|
|
576
601
|
};
|
|
577
602
|
|
|
578
603
|
return (_ctx, _cache) => {
|
|
@@ -647,7 +672,7 @@ return (_ctx, _cache) => {
|
|
|
647
672
|
createElementVNode("strong", null, "Map Layers Configuration")
|
|
648
673
|
], -1 /* CACHED */)),
|
|
649
674
|
createElementVNode("div", _hoisted_4, toDisplayString(unref(removeUnneededProperties)(__props.getLayers())), 1 /* TEXT */),
|
|
650
|
-
(
|
|
675
|
+
(unref(chartSpec))
|
|
651
676
|
? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
652
677
|
_cache[4] || (_cache[4] = createElementVNode("p", { class: "text-body-2 mb-2" }, [
|
|
653
678
|
createElementVNode("strong", null, "Chart Spec (for export)")
|
|
@@ -684,6 +709,6 @@ return (_ctx, _cache) => {
|
|
|
684
709
|
}
|
|
685
710
|
|
|
686
711
|
};
|
|
687
|
-
const ExportState = /*#__PURE__*/_export_sfc(_sfc_main, [['styles',[_style_0]],['__scopeId',"data-v-
|
|
712
|
+
const ExportState = /*#__PURE__*/_export_sfc(_sfc_main, [['styles',[_style_0]],['__scopeId',"data-v-b7d44f9a"]]);
|
|
688
713
|
|
|
689
714
|
export { ExportState as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, shallowRef, computed, toRef, watchEffect, createVNode, normalizeStyle, normalizeClass, inject, createBlock, openBlock, unref, withCtx, createElementVNode, toDisplayString } from 'vue';
|
|
2
|
-
import { g as genericComponent, p as propsFactory, k as provideTheme, f as useBackgroundColor, h as useBorder, i as useElevation, j as useRounded, C as useResizeObserver, y as useToggleScope, z as useLayoutItem, c as useRender, o as convertToUnit, q as makeThemeProps, m as makeTagProps, r as makeRoundedProps, A as makeLayoutItemProps, s as makeElevationProps, e as makeComponentProps, t as makeBorderProps, _ as _export_sfc, B as eodashKey, D as useDisplay } from './asWebComponent-
|
|
2
|
+
import { g as genericComponent, p as propsFactory, k as provideTheme, f as useBackgroundColor, h as useBorder, i as useElevation, j as useRounded, C as useResizeObserver, y as useToggleScope, z as useLayoutItem, c as useRender, o as convertToUnit, q as makeThemeProps, m as makeTagProps, r as makeRoundedProps, A as makeLayoutItemProps, s as makeElevationProps, e as makeComponentProps, t as makeBorderProps, _ as _export_sfc, B as eodashKey, D as useDisplay } from './asWebComponent-C5YMrXyg.js';
|
|
3
3
|
|
|
4
4
|
const _style_0 = ".footer-text[data-v-f0fd061e]{font-size:.8rem}";
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createVNode, normalizeStyle, normalizeClass, createElementVNode, shallowRef, computed, ref, watch, onMounted, onBeforeUnmount, toRef, watchEffect, mergeProps, inject, createBlock, openBlock, withCtx, createTextVNode, toDisplayString, unref } from 'vue';
|
|
2
|
-
import { p as propsFactory, g as genericComponent, m as makeTagProps, e as makeComponentProps, c as useRender, f as useBackgroundColor, h as useBorder, i as useElevation, j as useRounded, k as provideTheme, l as useRtl, n as provideDefaults, V as VDefaultsProvider, o as convertToUnit, q as makeThemeProps, r as makeRoundedProps, s as makeElevationProps, t as makeBorderProps, v as clamp, w as consoleWarn, x as useProxiedModel, y as useToggleScope, z as useLayoutItem, A as makeLayoutItemProps, _ as _export_sfc, B as eodashKey } from './asWebComponent-
|
|
3
|
-
import { V as VImg, a as VExpandTransition } from './VImg-
|
|
2
|
+
import { p as propsFactory, g as genericComponent, m as makeTagProps, e as makeComponentProps, c as useRender, f as useBackgroundColor, h as useBorder, i as useElevation, j as useRounded, k as provideTheme, l as useRtl, n as provideDefaults, V as VDefaultsProvider, o as convertToUnit, q as makeThemeProps, r as makeRoundedProps, s as makeElevationProps, t as makeBorderProps, v as clamp, w as consoleWarn, x as useProxiedModel, y as useToggleScope, z as useLayoutItem, A as makeLayoutItemProps, _ as _export_sfc, B as eodashKey } from './asWebComponent-C5YMrXyg.js';
|
|
3
|
+
import { V as VImg, a as VExpandTransition } from './VImg-DN23k6uX.js';
|
|
4
4
|
import { u as useSsrBoot } from './ssrBoot-Zgc_Ttvi.js';
|
|
5
5
|
|
|
6
6
|
const _style_0 = ".logo[data-v-86c95219]{max-width:140px}";
|
|
@@ -36,6 +36,10 @@ const allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'
|
|
|
36
36
|
const makeVToolbarProps = propsFactory({
|
|
37
37
|
absolute: Boolean,
|
|
38
38
|
collapse: Boolean,
|
|
39
|
+
collapsePosition: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: 'start'
|
|
42
|
+
},
|
|
39
43
|
color: String,
|
|
40
44
|
density: {
|
|
41
45
|
type: String,
|
|
@@ -107,7 +111,7 @@ const VToolbar = genericComponent()({
|
|
|
107
111
|
const extension = slots.extension?.();
|
|
108
112
|
isExtended.value = props.extended === null ? !!extension : props.extended;
|
|
109
113
|
return createVNode(props.tag, {
|
|
110
|
-
"class": normalizeClass(['v-toolbar', {
|
|
114
|
+
"class": normalizeClass(['v-toolbar', `v-toolbar--collapse-${props.collapsePosition}`, {
|
|
111
115
|
'v-toolbar--absolute': props.absolute,
|
|
112
116
|
'v-toolbar--collapse': props.collapse,
|
|
113
117
|
'v-toolbar--flat': props.flat,
|
|
@@ -193,7 +197,8 @@ const makeScrollProps = propsFactory({
|
|
|
193
197
|
function useScroll(props) {
|
|
194
198
|
let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
195
199
|
const {
|
|
196
|
-
canScroll
|
|
200
|
+
canScroll,
|
|
201
|
+
layoutSize
|
|
197
202
|
} = args;
|
|
198
203
|
let previousScroll = 0;
|
|
199
204
|
let previousScrollHeight = 0;
|
|
@@ -203,6 +208,9 @@ function useScroll(props) {
|
|
|
203
208
|
const currentThreshold = shallowRef(0);
|
|
204
209
|
const isScrollActive = shallowRef(false);
|
|
205
210
|
const isScrollingUp = shallowRef(false);
|
|
211
|
+
const isAtBottom = shallowRef(false);
|
|
212
|
+
const reachedBottomWhileScrollingDown = shallowRef(false);
|
|
213
|
+
const hasEnoughScrollableSpace = shallowRef(true);
|
|
206
214
|
const scrollThreshold = computed(() => {
|
|
207
215
|
return Number(props.scrollThreshold);
|
|
208
216
|
});
|
|
@@ -214,19 +222,82 @@ function useScroll(props) {
|
|
|
214
222
|
const scrollRatio = computed(() => {
|
|
215
223
|
return clamp((scrollThreshold.value - currentScroll.value) / scrollThreshold.value || 0);
|
|
216
224
|
});
|
|
217
|
-
|
|
225
|
+
function getScrollMetrics(targetEl) {
|
|
226
|
+
const clientHeight = 'window' in targetEl ? window.innerHeight : targetEl.clientHeight;
|
|
227
|
+
const scrollHeight = 'window' in targetEl ? document.documentElement.scrollHeight : targetEl.scrollHeight;
|
|
228
|
+
return {
|
|
229
|
+
clientHeight,
|
|
230
|
+
scrollHeight
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function checkScrollableSpace() {
|
|
234
|
+
const targetEl = target.value;
|
|
235
|
+
if (!targetEl) return;
|
|
236
|
+
const {
|
|
237
|
+
clientHeight,
|
|
238
|
+
scrollHeight
|
|
239
|
+
} = getScrollMetrics(targetEl);
|
|
240
|
+
const maxScrollableDistance = scrollHeight - clientHeight;
|
|
241
|
+
|
|
242
|
+
// When the scroll-hide element (like AppBar) hides, it causes the page to grow
|
|
243
|
+
// We need extra scrollable space beyond the threshold to prevent bouncing
|
|
244
|
+
// Add the element's height to the required minimum distance
|
|
245
|
+
const elementHeight = layoutSize?.value || 0;
|
|
246
|
+
const minRequiredDistance = scrollThreshold.value + elementHeight;
|
|
247
|
+
|
|
248
|
+
// Only enable scroll-hide if there's enough scrollable space
|
|
249
|
+
hasEnoughScrollableSpace.value = maxScrollableDistance > minRequiredDistance;
|
|
250
|
+
}
|
|
251
|
+
function onResize() {
|
|
252
|
+
checkScrollableSpace();
|
|
253
|
+
}
|
|
254
|
+
function onScroll() {
|
|
218
255
|
const targetEl = target.value;
|
|
219
256
|
if (!targetEl || canScroll && !canScroll.value) return;
|
|
220
257
|
previousScroll = currentScroll.value;
|
|
221
258
|
currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
|
|
222
259
|
const currentScrollHeight = targetEl instanceof Window ? document.documentElement.scrollHeight : targetEl.scrollHeight;
|
|
223
260
|
if (previousScrollHeight !== currentScrollHeight) {
|
|
261
|
+
// If page is growing (content loading), recalculate scrollable space
|
|
262
|
+
// If page is shrinking (likely due to navbar animation), don't recalculate
|
|
263
|
+
if (currentScrollHeight > previousScrollHeight) {
|
|
264
|
+
checkScrollableSpace();
|
|
265
|
+
}
|
|
224
266
|
previousScrollHeight = currentScrollHeight;
|
|
225
|
-
return;
|
|
226
267
|
}
|
|
227
268
|
isScrollingUp.value = currentScroll.value < previousScroll;
|
|
228
269
|
currentThreshold.value = Math.abs(currentScroll.value - scrollThreshold.value);
|
|
229
|
-
|
|
270
|
+
|
|
271
|
+
// Detect if at bottom of page
|
|
272
|
+
const {
|
|
273
|
+
clientHeight,
|
|
274
|
+
scrollHeight
|
|
275
|
+
} = getScrollMetrics(targetEl);
|
|
276
|
+
const atBottom = currentScroll.value + clientHeight >= scrollHeight - 5;
|
|
277
|
+
|
|
278
|
+
// Track when bottom is reached during downward scroll
|
|
279
|
+
// Only set flag if ALL conditions are met:
|
|
280
|
+
// 1. Scrolled past threshold (navbar is hiding)
|
|
281
|
+
// 2. Page has enough scrollable space for scroll-hide
|
|
282
|
+
// This prevents activation on short pages or edge cases
|
|
283
|
+
if (!isScrollingUp.value && atBottom && currentScroll.value >= scrollThreshold.value && hasEnoughScrollableSpace.value) {
|
|
284
|
+
reachedBottomWhileScrollingDown.value = true;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Reset the flag when:
|
|
288
|
+
// 1. Scrolling up away from bottom (with small tolerance for touchpad/momentum scrolling)
|
|
289
|
+
// 2. Scroll position jumped significantly (e.g., navigation, scroll restoration)
|
|
290
|
+
// 3. Scroll is at the very top (page navigation resets to top)
|
|
291
|
+
const scrollJumped = Math.abs(currentScroll.value - previousScroll) > 100;
|
|
292
|
+
const atTop = currentScroll.value <= 5;
|
|
293
|
+
const scrolledUpSignificantly = isScrollingUp.value && previousScroll - currentScroll.value > 1;
|
|
294
|
+
if (scrolledUpSignificantly && !atBottom || scrollJumped && currentScroll.value < scrollThreshold.value || atTop) {
|
|
295
|
+
reachedBottomWhileScrollingDown.value = false;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Update state
|
|
299
|
+
isAtBottom.value = atBottom;
|
|
300
|
+
}
|
|
230
301
|
watch(isScrollingUp, () => {
|
|
231
302
|
savedScroll.value = savedScroll.value || currentScroll.value;
|
|
232
303
|
});
|
|
@@ -246,12 +317,23 @@ function useScroll(props) {
|
|
|
246
317
|
target.value.addEventListener('scroll', onScroll, {
|
|
247
318
|
passive: true
|
|
248
319
|
});
|
|
320
|
+
|
|
321
|
+
// Check scrollable space when target is set
|
|
322
|
+
Promise.resolve().then(() => {
|
|
323
|
+
checkScrollableSpace();
|
|
324
|
+
});
|
|
249
325
|
}, {
|
|
250
326
|
immediate: true
|
|
251
327
|
});
|
|
328
|
+
|
|
329
|
+
// Listen to window resize to recalculate scrollable space
|
|
330
|
+
window.addEventListener('resize', onResize, {
|
|
331
|
+
passive: true
|
|
332
|
+
});
|
|
252
333
|
});
|
|
253
334
|
onBeforeUnmount(() => {
|
|
254
335
|
target.value?.removeEventListener('scroll', onScroll);
|
|
336
|
+
window.removeEventListener('resize', onResize);
|
|
255
337
|
});
|
|
256
338
|
|
|
257
339
|
// Do we need this? If yes - seems that
|
|
@@ -269,7 +351,10 @@ function useScroll(props) {
|
|
|
269
351
|
// probably can be removed
|
|
270
352
|
// later (2 chars chlng)
|
|
271
353
|
isScrollingUp,
|
|
272
|
-
savedScroll
|
|
354
|
+
savedScroll,
|
|
355
|
+
isAtBottom,
|
|
356
|
+
reachedBottomWhileScrollingDown,
|
|
357
|
+
hasEnoughScrollableSpace
|
|
273
358
|
};
|
|
274
359
|
}
|
|
275
360
|
|
|
@@ -322,13 +407,22 @@ const VAppBar = genericComponent()({
|
|
|
322
407
|
// behavior.shrink ||
|
|
323
408
|
!isActive.value;
|
|
324
409
|
});
|
|
410
|
+
const appBarHeight = computed(() => {
|
|
411
|
+
const height = vToolbarRef.value?.contentHeight ?? 0;
|
|
412
|
+
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
|
413
|
+
return height + extensionHeight;
|
|
414
|
+
});
|
|
325
415
|
const {
|
|
326
416
|
currentScroll,
|
|
327
417
|
scrollThreshold,
|
|
328
418
|
isScrollingUp,
|
|
329
|
-
scrollRatio
|
|
419
|
+
scrollRatio,
|
|
420
|
+
isAtBottom,
|
|
421
|
+
reachedBottomWhileScrollingDown,
|
|
422
|
+
hasEnoughScrollableSpace
|
|
330
423
|
} = useScroll(props, {
|
|
331
|
-
canScroll
|
|
424
|
+
canScroll,
|
|
425
|
+
layoutSize: appBarHeight
|
|
332
426
|
});
|
|
333
427
|
const canHide = toRef(() => scrollBehavior.value.hide || scrollBehavior.value.fullyHide);
|
|
334
428
|
const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? scrollRatio.value > 0 : scrollRatio.value === 0));
|
|
@@ -343,15 +437,31 @@ const VAppBar = genericComponent()({
|
|
|
343
437
|
});
|
|
344
438
|
useToggleScope(() => !!props.scrollBehavior, () => {
|
|
345
439
|
watchEffect(() => {
|
|
346
|
-
if (canHide.value) {
|
|
347
|
-
if (scrollBehavior.value.inverted) {
|
|
348
|
-
isActive.value = currentScroll.value > scrollThreshold.value;
|
|
349
|
-
} else {
|
|
350
|
-
isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
|
|
351
|
-
}
|
|
352
|
-
} else {
|
|
440
|
+
if (!canHide.value) {
|
|
353
441
|
isActive.value = true;
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
if (scrollBehavior.value.inverted) {
|
|
445
|
+
isActive.value = currentScroll.value > scrollThreshold.value;
|
|
446
|
+
return;
|
|
354
447
|
}
|
|
448
|
+
|
|
449
|
+
// If there's not enough scrollable space, don't apply scroll-hide behavior at all
|
|
450
|
+
// This prevents flickering/bouncing animations on short pages
|
|
451
|
+
if (!hasEnoughScrollableSpace.value) {
|
|
452
|
+
isActive.value = true;
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// Prevent navbar from showing when we reached bottom while scrolling down
|
|
457
|
+
// This handles the case where scroll momentum causes to hit bottom during hide transition
|
|
458
|
+
if (reachedBottomWhileScrollingDown.value) {
|
|
459
|
+
isActive.value = false;
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Normal behavior: show when scrolling up (and not at bottom) or above threshold
|
|
464
|
+
isActive.value = isScrollingUp.value && !isAtBottom.value || currentScroll.value < scrollThreshold.value;
|
|
355
465
|
});
|
|
356
466
|
});
|
|
357
467
|
const {
|