@eodash/eodash 5.0.0-alpha.2.4 → 5.0.0-alpha.2.5
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/README.md +12 -2
- package/core/client/SuspensedDashboard.ce.vue +1 -5
- package/core/client/components/DashboardLayout.vue +37 -14
- package/core/client/components/ErrorAlert.vue +6 -1
- package/core/client/components/Footer.vue +6 -1
- package/core/client/components/Header.vue +6 -1
- package/core/client/components/IframeWrapper.vue +1 -1
- package/core/client/components/MobileLayout.vue +41 -10
- package/core/client/composables/DefineEodash.js +2 -1
- package/core/client/composables/DefineWidgets.js +14 -8
- package/core/client/composables/index.js +18 -119
- package/core/client/eodash.js +38 -36
- package/core/client/plugins/index.js +3 -0
- package/core/client/types.d.ts +40 -83
- package/core/client/utils/eodashSTAC.js +29 -25
- package/core/client/utils/index.js +15 -11
- package/core/client/views/Dashboard.vue +22 -11
- package/dist/client/DashboardLayout-BYROtP-7.js +156 -0
- package/dist/client/{DynamicWebComponent-C4Hotc4H.js → DynamicWebComponent-BQhxFPM0.js} +6 -6
- package/dist/client/EodashDatePicker-CFltnt5d.js +1194 -0
- package/dist/client/EodashItemFilter-DIBDAHcc.js +65 -0
- package/dist/client/{EodashMap-CGrQjZ1P.js → EodashMap-C6jJ2Lb_.js} +14323 -15656
- package/dist/client/Footer-BVIZms1S.js +115 -0
- package/dist/client/Header-TsTL1d2R.js +633 -0
- package/dist/client/{IframeWrapper-Cg3GMmfW.js → IframeWrapper-XKChM78a.js} +4 -4
- package/dist/client/MobileLayout-BlGcMQra.js +957 -0
- package/dist/client/{VMain-BHYlmRic.js → VMain-C9XV5Lyg.js} +8 -8
- package/dist/client/{WidgetsContainer-dje9QSk0.js → WidgetsContainer-BQXHnZpa.js} +3 -3
- package/dist/client/asWebComponent-CbdGxelK.js +20188 -0
- package/dist/client/{decoder-HRvnjnEI-BQ2rajuJ.js → decoder-HRvnjnEI-CHAYOWhz.js} +1 -1
- package/dist/client/eo-dash.js +1 -1
- package/dist/client/forwardRefs-CyCJOFsz.js +192 -0
- package/dist/client/http-ZWiLaAeR.js +1337 -0
- package/dist/client/{index-CaDDfJYE.js → index-CabQjjQg.js} +43 -74
- package/dist/client/{lerc-_E46UbWQ-Beu35ovS.js → lerc-_E46UbWQ-TxBH4OeK.js} +1 -1
- package/dist/client/{ssrBoot-Dd7m-btU.js → ssrBoot-DWJ-z4I-.js} +3 -3
- package/dist/client/style.css +2 -2
- package/dist/client/transition-BlLt41wg.js +34 -0
- package/dist/node/cli.js +3 -3
- package/package.json +3 -4
- package/widgets/EodashDatePicker.vue +89 -36
- package/widgets/EodashItemFilter.vue +29 -13
- package/dist/client/DashboardLayout-ZaSRMD1M.js +0 -149
- package/dist/client/EodashDatePicker-C4kKjxKy.js +0 -1653
- package/dist/client/EodashItemFilter-cBHC0YEM.js +0 -51
- package/dist/client/Footer-pS636dEP.js +0 -118
- package/dist/client/Header-DQuaLdjl.js +0 -605
- package/dist/client/MobileLayout-BLXFBWI_.js +0 -987
- package/dist/client/asWebComponent-Bvb3xkxI.js +0 -13311
- package/dist/client/forwardRefs-Bxeu9Obx.js +0 -142
- package/dist/client/index-DlNICb3T.js +0 -34
package/core/client/types.d.ts
CHANGED
|
@@ -45,6 +45,28 @@ export interface WidgetsContainerProps {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// eodash types:
|
|
48
|
+
/**
|
|
49
|
+
* properties of EOxLayoutItem used for setting
|
|
50
|
+
* the position and size of panels
|
|
51
|
+
*/
|
|
52
|
+
export interface Layout {
|
|
53
|
+
/**
|
|
54
|
+
* Horizontal start position. Integer between 1 and 12
|
|
55
|
+
*/
|
|
56
|
+
x: number
|
|
57
|
+
/**
|
|
58
|
+
* Vertical start position. Integer between 1 and 12
|
|
59
|
+
*/
|
|
60
|
+
y: number
|
|
61
|
+
/**
|
|
62
|
+
* Width. Integer between 1 and 12
|
|
63
|
+
*/
|
|
64
|
+
w: number
|
|
65
|
+
/**
|
|
66
|
+
* Height. Integer between 1 and 12
|
|
67
|
+
*/
|
|
68
|
+
h: number
|
|
69
|
+
}
|
|
48
70
|
/**
|
|
49
71
|
* Widget type: `web-component` API
|
|
50
72
|
* @group Eodash
|
|
@@ -55,24 +77,7 @@ export interface WebComponentWidget<T extends ExecutionTime = "compiletime"> {
|
|
|
55
77
|
/**
|
|
56
78
|
* Widget position and size.
|
|
57
79
|
*/
|
|
58
|
-
layout:
|
|
59
|
-
/**
|
|
60
|
-
* Horizontal start position. Integer between 1 and 12
|
|
61
|
-
*/
|
|
62
|
-
x: number
|
|
63
|
-
/**
|
|
64
|
-
* Vertical start position. Integer between 1 and 12
|
|
65
|
-
*/
|
|
66
|
-
y: number
|
|
67
|
-
/**
|
|
68
|
-
* Width. Integer between 1 and 12
|
|
69
|
-
*/
|
|
70
|
-
w: number
|
|
71
|
-
/**
|
|
72
|
-
* Height. Integer between 1 and 12
|
|
73
|
-
*/
|
|
74
|
-
h: number
|
|
75
|
-
},
|
|
80
|
+
layout: Layout,
|
|
76
81
|
widget: WebComponentProps<T>
|
|
77
82
|
type: 'web-component'
|
|
78
83
|
}
|
|
@@ -88,24 +93,7 @@ export interface InternalComponentWidget {
|
|
|
88
93
|
/**
|
|
89
94
|
* Widget position and size.
|
|
90
95
|
*/
|
|
91
|
-
layout:
|
|
92
|
-
/**
|
|
93
|
-
* Horizontal start position. Integer between 1 and 12
|
|
94
|
-
*/
|
|
95
|
-
x: number
|
|
96
|
-
/**
|
|
97
|
-
* Vertical start position. Integer between 1 and 12
|
|
98
|
-
*/
|
|
99
|
-
y: number
|
|
100
|
-
/**
|
|
101
|
-
* Width. Integer between 1 and 12
|
|
102
|
-
*/
|
|
103
|
-
w: number
|
|
104
|
-
/**
|
|
105
|
-
* Height. Integer between 1 and 12
|
|
106
|
-
*/
|
|
107
|
-
h: number
|
|
108
|
-
}
|
|
96
|
+
layout: Layout
|
|
109
97
|
widget: {
|
|
110
98
|
/**
|
|
111
99
|
* Internal Vue Components inside the [widgets](https://github.com/eodash/eodash/tree/main/widgets) folder. Referenced
|
|
@@ -133,24 +121,7 @@ export interface IFrameWidget {
|
|
|
133
121
|
/**
|
|
134
122
|
* Widget position and size.
|
|
135
123
|
*/
|
|
136
|
-
layout:
|
|
137
|
-
/**
|
|
138
|
-
* Horizontal start position. Integer between 1 and 12
|
|
139
|
-
*/
|
|
140
|
-
x: number
|
|
141
|
-
/**
|
|
142
|
-
* Vertical start position. Integer between 1 and 12
|
|
143
|
-
*/
|
|
144
|
-
y: number
|
|
145
|
-
/**
|
|
146
|
-
* Width. Integer between 1 and 12
|
|
147
|
-
*/
|
|
148
|
-
w: number
|
|
149
|
-
/**
|
|
150
|
-
* Height. Integer between 1 and 12
|
|
151
|
-
*/
|
|
152
|
-
h: number
|
|
153
|
-
}
|
|
124
|
+
layout: Layout
|
|
154
125
|
widget: {
|
|
155
126
|
/**
|
|
156
127
|
* The URL of the page to embed
|
|
@@ -170,32 +141,21 @@ export interface FunctionalWidget<T extends ExecutionTime = "compiletime"> {
|
|
|
170
141
|
* @param selectedSTAC - Currently selected STAC object
|
|
171
142
|
*/
|
|
172
143
|
defineWidget: (selectedSTAC: import("stac-ts").StacCatalog |
|
|
173
|
-
import("stac-ts").StacCollection | import("stac-ts").StacItem | null) =>
|
|
174
|
-
layout: {
|
|
175
|
-
/**
|
|
176
|
-
* Horizontal start position. Integer between 1 and 12
|
|
177
|
-
*/
|
|
178
|
-
x: number
|
|
179
|
-
/**
|
|
180
|
-
* Vertical start position. Integer between 1 and 12
|
|
181
|
-
*/
|
|
182
|
-
y: number
|
|
183
|
-
/**
|
|
184
|
-
* Width. Integer between 1 and 12
|
|
185
|
-
*/
|
|
186
|
-
w: number
|
|
187
|
-
/**
|
|
188
|
-
* Height. Integer between 1 and 12
|
|
189
|
-
*/
|
|
190
|
-
h: number
|
|
191
|
-
}
|
|
144
|
+
import("stac-ts").StacCollection | import("stac-ts").StacItem | null) => StaticWidget<T> | undefined | null
|
|
192
145
|
}
|
|
193
146
|
/**
|
|
147
|
+
* There are 3 types of Widgets:
|
|
148
|
+
*
|
|
194
149
|
* @group Eodash
|
|
195
150
|
*/
|
|
196
151
|
export type StaticWidget<T extends ExecutionTime = "compiletime"> = WebComponentWidget<T> | InternalComponentWidget | IFrameWidget
|
|
197
152
|
/**
|
|
198
|
-
*
|
|
153
|
+
* widgets can be defined in 2 forms:
|
|
154
|
+
* 1. {@link StaticWidget} : This is defined as an object once, and is considered the default form.
|
|
155
|
+
* 2. {@link FunctionalWidget} : a special form which contains the {@link FunctionalWidget.defineWidget `defineWidget`} function that
|
|
156
|
+
* runs when {@link EodashStore.stac `loadSelectedSTAC`} function
|
|
157
|
+
* is triggered, and returns a value of a Static Widget or null or undefined.
|
|
158
|
+
* @group Eodash
|
|
199
159
|
*/
|
|
200
160
|
export type Widget<T extends ExecutionTime = "compiletime"> = StaticWidget<T> | FunctionalWidget<T>
|
|
201
161
|
|
|
@@ -221,8 +181,7 @@ export interface Template<T extends ExecutionTime = "compiletime"> {
|
|
|
221
181
|
loading?: BackgroundWidget<T>
|
|
222
182
|
/**
|
|
223
183
|
* Widget rendered as the dashboard background.
|
|
224
|
-
* Has the same specifications of
|
|
225
|
-
* @see {@link Widget}
|
|
184
|
+
* Has the same specifications of {@link Widget} without the `title` and `layout` properties
|
|
226
185
|
*/
|
|
227
186
|
background?: BackgroundWidget<T>
|
|
228
187
|
/**
|
|
@@ -235,10 +194,9 @@ export interface Template<T extends ExecutionTime = "compiletime"> {
|
|
|
235
194
|
export type StacEndpoint = `${'https://' | 'http://'}${string}/catalog.json`
|
|
236
195
|
|
|
237
196
|
/**
|
|
238
|
-
* @ignore
|
|
239
197
|
* @group Eodash
|
|
240
198
|
*/
|
|
241
|
-
|
|
199
|
+
type ExecutionTime = "runtime" | "compiletime";
|
|
242
200
|
|
|
243
201
|
/**
|
|
244
202
|
* Eodash instance API
|
|
@@ -262,16 +220,15 @@ export interface Eodash<T extends ExecutionTime = "compiletime"> {
|
|
|
262
220
|
/** custom error message to alert the users if something crashes */
|
|
263
221
|
errorMessage?: string
|
|
264
222
|
/**
|
|
265
|
-
*
|
|
266
|
-
* the font family will be fetched from the provided source instead.
|
|
223
|
+
* fetches the specified font family from the specified `link` property.
|
|
267
224
|
*/
|
|
268
225
|
font?: {
|
|
269
226
|
/**
|
|
270
227
|
* Link to stylesheet that defines font-face. Could be either a relative or absolute URL.
|
|
271
228
|
*/
|
|
272
|
-
link
|
|
229
|
+
link: string;
|
|
273
230
|
/**
|
|
274
|
-
* Font family
|
|
231
|
+
* Font family name.
|
|
275
232
|
*/
|
|
276
233
|
family: string
|
|
277
234
|
}
|
|
@@ -326,7 +283,7 @@ export interface EodashStore {
|
|
|
326
283
|
* Pinia store definition used to navigate the root STAC catalog.
|
|
327
284
|
*/
|
|
328
285
|
stac: {
|
|
329
|
-
useSTAcStore: typeof import("./store/stac").useSTAcStore
|
|
286
|
+
useSTAcStore: typeof import("./store/stac.js").useSTAcStore
|
|
330
287
|
}
|
|
331
288
|
}
|
|
332
289
|
///////
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Collection, Item } from 'stac-js';
|
|
2
2
|
import { toAbsolute } from 'stac-js/src/http.js';
|
|
3
3
|
import { generateFeatures } from './helpers'
|
|
4
|
+
import axios from 'axios';
|
|
4
5
|
|
|
5
6
|
export class EodashCollection {
|
|
6
|
-
/** @type {string
|
|
7
|
-
#collectionUrl =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
/** @type {string} */
|
|
8
|
+
#collectionUrl = '';
|
|
9
|
+
/** @type {import("stac-ts").StacCollection | undefined} */
|
|
10
|
+
#collectionStac;
|
|
11
|
+
/** @type {import("stac-ts").StacLink | undefined } */
|
|
12
|
+
selectedItem;
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* @param {string} collectionUrl
|
|
@@ -21,8 +23,12 @@ export class EodashCollection {
|
|
|
21
23
|
* @async
|
|
22
24
|
*/
|
|
23
25
|
createLayersJson = async (item = null) => {
|
|
24
|
-
|
|
26
|
+
/** @type {import("stac-ts").StacLink | undefined} */
|
|
27
|
+
let stacItem,
|
|
28
|
+
/** @type {import("stac-ts").StacCollection | undefined} */
|
|
29
|
+
stac;
|
|
25
30
|
// TODO get auxiliary layers from collection
|
|
31
|
+
/** @type {object[]} */
|
|
26
32
|
let layersJson = [
|
|
27
33
|
{
|
|
28
34
|
type: 'Tile',
|
|
@@ -36,13 +42,12 @@ export class EodashCollection {
|
|
|
36
42
|
];
|
|
37
43
|
// Load collectionstac if not yet initialized
|
|
38
44
|
if (!this.#collectionStac) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
stac = await response.json();
|
|
45
|
+
const response = await axios.get(this.#collectionUrl);
|
|
46
|
+
stac = await response.data
|
|
42
47
|
this.#collectionStac = new Collection(stac);
|
|
43
48
|
}
|
|
44
49
|
|
|
45
|
-
if(stac && stac.endpointtype === "GeoDB") {
|
|
50
|
+
if (stac && stac.endpointtype === "GeoDB") {
|
|
46
51
|
// Special handling of point based data
|
|
47
52
|
const allFeatures = generateFeatures(stac.links);
|
|
48
53
|
layersJson.unshift({
|
|
@@ -68,11 +73,9 @@ export class EodashCollection {
|
|
|
68
73
|
} else {
|
|
69
74
|
if (item instanceof Date) {
|
|
70
75
|
// if collectionStac not yet initialized we do it here
|
|
71
|
-
stacItem = this.getItems()
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
//@ts-expect-error
|
|
75
|
-
const distanceB = Math.abs(new Date(b.datetime) - item);
|
|
76
|
+
stacItem = this.getItems()?.sort((a, b) => {
|
|
77
|
+
const distanceA = Math.abs((new Date(/** @type {number} */(a.datetime))).getTime() - item.getTime());
|
|
78
|
+
const distanceB = Math.abs(new Date(/** @type {number} */(b.datetime)).getTime() - item.getTime());
|
|
76
79
|
return distanceA - distanceB;
|
|
77
80
|
})[0];
|
|
78
81
|
this.selectedItem = stacItem;
|
|
@@ -85,19 +88,24 @@ export class EodashCollection {
|
|
|
85
88
|
: this.#collectionUrl
|
|
86
89
|
);
|
|
87
90
|
stac = await response.json();
|
|
88
|
-
|
|
91
|
+
|
|
89
92
|
if (!stacItem) {
|
|
90
93
|
// no specific item was requested; render last item
|
|
91
94
|
this.#collectionStac = new Collection(stac);
|
|
92
95
|
const items = this.getItems();
|
|
93
|
-
this.selectedItem = items[items.length - 1];
|
|
94
|
-
|
|
96
|
+
this.selectedItem = items?.[items.length - 1];
|
|
97
|
+
if (this.selectedItem) {
|
|
98
|
+
layersJson = await this.createLayersJson(this.selectedItem);
|
|
99
|
+
} else {
|
|
100
|
+
if (import.meta.env.DEV) {
|
|
101
|
+
console.warn('[eodash] the selected collection does not include any items')
|
|
102
|
+
}
|
|
103
|
+
}
|
|
95
104
|
return layersJson;
|
|
96
105
|
} else {
|
|
97
106
|
// specific item was requested
|
|
98
107
|
const item = new Item(stac);
|
|
99
108
|
this.selectedItem = item;
|
|
100
|
-
//@ts-expect-error
|
|
101
109
|
layersJson.unshift(this.buildJson(item));
|
|
102
110
|
return layersJson;
|
|
103
111
|
}
|
|
@@ -141,9 +149,7 @@ export class EodashCollection {
|
|
|
141
149
|
|
|
142
150
|
getItems() {
|
|
143
151
|
return (
|
|
144
|
-
|
|
145
|
-
// eslint-disable-next-line
|
|
146
|
-
/** @type {import('stac-ts').StacLink[]}*/(this.#collectionStac?.links)
|
|
152
|
+
this.#collectionStac?.links
|
|
147
153
|
.filter((i) => i.rel === 'item')
|
|
148
154
|
// sort by `datetime`, where oldest is first in array
|
|
149
155
|
.sort((a, b) => ( /** @type {number} */(a.datetime) < /** @type {number} */(b.datetime) ? -1 : 1))
|
|
@@ -152,9 +158,7 @@ export class EodashCollection {
|
|
|
152
158
|
|
|
153
159
|
getDates() {
|
|
154
160
|
return (
|
|
155
|
-
|
|
156
|
-
// eslint-disable-next-line
|
|
157
|
-
/** @type {import('stac-ts').StacLink[]}*/ (this.#collectionStac?.links)
|
|
161
|
+
this.#collectionStac?.links
|
|
158
162
|
.filter((i) => i.rel === 'item')
|
|
159
163
|
// sort by `datetime`, where oldest is first in array
|
|
160
164
|
.sort((a, b) => ( /** @type {number} */(a.datetime) < /** @type {number} */(b.datetime) ? -1 : 1))
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* loads font in the app using `webfontloader`
|
|
3
|
-
* @param {string} [family
|
|
3
|
+
* @param {string} [family]
|
|
4
4
|
* @param {string} [link]
|
|
5
|
+
* @param {boolean} [isWebComponent]
|
|
5
6
|
* @returns {Promise<string>} - font family name
|
|
6
|
-
* @see {@link "https://github.com/typekit/webfontloader
|
|
7
|
+
* @see {@link "https://github.com/typekit/webfontloader"}
|
|
7
8
|
*/
|
|
8
|
-
export const loadFont = async (family =
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
export const loadFont = async (family = '', link = '', isWebComponent = false) => {
|
|
10
|
+
if (family && link) {
|
|
11
|
+
const WebFontLoader = (await import('webfontloader')).default;
|
|
11
12
|
WebFontLoader.load({
|
|
13
|
+
classes: false,
|
|
12
14
|
custom: {
|
|
13
15
|
// Use FVD notation to include families https://github.com/typekit/fvd
|
|
14
16
|
families: [family],
|
|
15
17
|
// Path to stylesheet that defines font-face
|
|
16
18
|
urls: [link],
|
|
17
19
|
},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
fontactive(familyName, _fvd) {
|
|
21
|
+
const stylesheet = new CSSStyleSheet()
|
|
22
|
+
const styles = isWebComponent ? `eo-dash {font-family: ${familyName};}` : `* {font-family: ${familyName};}`
|
|
23
|
+
stylesheet.replaceSync(styles)
|
|
24
|
+
document.adoptedStyleSheets.push(stylesheet)
|
|
25
|
+
},
|
|
26
|
+
fontinactive(familyName, _fvd) {
|
|
27
|
+
throw new Error(`error loading font: ${familyName}`)
|
|
24
28
|
}
|
|
25
29
|
});
|
|
26
30
|
}
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
<HeaderComponent ref="headerRef" v-if="!eodash.brand.noLayout" />
|
|
3
3
|
<ErrorAlert v-model="error" />
|
|
4
4
|
<Suspense>
|
|
5
|
-
<TemplateComponent @vue:mounted="onTemplateMount?.(hiddenElements)"
|
|
6
|
-
:style="`height: ${eodash.brand.noLayout ? (onTemplateMount ? '100%' : '90dvh') : 'calc(100dvh - ' + mainRect['top'] + mainRect['bottom'] + 'px)'}`" />
|
|
5
|
+
<TemplateComponent @vue:mounted="onTemplateMount?.(hiddenElements)" class="template" />
|
|
7
6
|
<template #fallback>
|
|
8
|
-
<div
|
|
7
|
+
<div class="loading-container">
|
|
9
8
|
<Loading />
|
|
10
9
|
</div>
|
|
11
10
|
</template>
|
|
@@ -38,7 +37,7 @@ useURLSearchParametersSync();
|
|
|
38
37
|
const theme = useUpdateTheme('dashboardTheme', eodash.brand?.theme)
|
|
39
38
|
theme.global.name.value = 'dashboardTheme'
|
|
40
39
|
|
|
41
|
-
await loadFont(eodash.brand?.font?.family, eodash.brand?.font?.link)
|
|
40
|
+
await loadFont(eodash.brand?.font?.family, eodash.brand?.font?.link, !!props.onTemplateMount)
|
|
42
41
|
|
|
43
42
|
const { loadSTAC } = useSTAcStore()
|
|
44
43
|
await loadSTAC()
|
|
@@ -51,10 +50,9 @@ const TemplateComponent = smAndDown.value ?
|
|
|
51
50
|
const HeaderComponent = defineAsyncComponent(() => import(`@/components/Header.vue`))
|
|
52
51
|
const FooterComponent = defineAsyncComponent(() => import(`@/components/Footer.vue`))
|
|
53
52
|
const { mainRect } = useLayout()
|
|
53
|
+
const templateHeight = eodash.brand.noLayout ? (props.onTemplateMount ? '100%' : '90dvh') :
|
|
54
|
+
`calc(100dvh - ${mainRect.value['top'] + mainRect.value['bottom']}px)`
|
|
54
55
|
|
|
55
|
-
/** @type {import("vue").Ref<InstanceType<typeof
|
|
56
|
-
* import("@/components/Header.vue").default >|null>}
|
|
57
|
-
**/
|
|
58
56
|
const headerRef = ref(null);
|
|
59
57
|
/** @type {import("vue").Ref<InstanceType<typeof
|
|
60
58
|
* import("@/components/Footer.vue").default >|null>}
|
|
@@ -64,9 +62,6 @@ const footerRef = ref(null);
|
|
|
64
62
|
const hiddenElements = [headerRef, footerRef]
|
|
65
63
|
|
|
66
64
|
onMounted(() => {
|
|
67
|
-
const htmlTag = /** @type {HTMLElement} */(document.querySelector('html'))
|
|
68
|
-
htmlTag.style.overflow = 'hidden';
|
|
69
|
-
|
|
70
65
|
if (props.onTemplateMount && !eodash.brand.noLayout) {
|
|
71
66
|
hiddenElements.forEach(element => {
|
|
72
67
|
/** @type {HTMLElement} */
|
|
@@ -79,10 +74,26 @@ onMounted(() => {
|
|
|
79
74
|
const error = ref('')
|
|
80
75
|
onErrorCaptured((e, comp, info) => {
|
|
81
76
|
error.value = `
|
|
82
|
-
|
|
77
|
+
${e}.
|
|
83
78
|
component: ${comp?.$.type.name}.
|
|
84
79
|
info: ${info}.
|
|
85
80
|
`
|
|
86
81
|
})
|
|
87
82
|
|
|
88
83
|
</script>
|
|
84
|
+
<style>
|
|
85
|
+
html {
|
|
86
|
+
overflow: hidden !important;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.template {
|
|
90
|
+
height: v-bind("templateHeight")
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.loading-container {
|
|
94
|
+
height: 100dvh;
|
|
95
|
+
display: flex;
|
|
96
|
+
align-items: center;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
}
|
|
99
|
+
</style>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { _ as b, x as m, W as x, X as d, $ as t, a0 as r, a1 as l, a9 as _, a3 as n, a6 as u, a2 as p, a4 as c, d as h, a5 as g, F as f, a7 as v, ab as w } from "./asWebComponent-CbdGxelK.js";
|
|
2
|
+
import { V as k } from "./VMain-C9XV5Lyg.js";
|
|
3
|
+
class A extends HTMLElement {
|
|
4
|
+
static get observedAttributes() {
|
|
5
|
+
return ["gap"];
|
|
6
|
+
}
|
|
7
|
+
constructor() {
|
|
8
|
+
super(), this.attachShadow({ mode: "open" }), this.render();
|
|
9
|
+
}
|
|
10
|
+
render() {
|
|
11
|
+
this.shadowRoot.innerHTML = `
|
|
12
|
+
<style>
|
|
13
|
+
:host {
|
|
14
|
+
display: grid;
|
|
15
|
+
padding: ${this.getAttribute("gap") || 0}px;
|
|
16
|
+
height: 100%;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
gap: ${this.getAttribute("gap") || "0"}px;
|
|
19
|
+
grid-template-columns: repeat(12, 1fr);
|
|
20
|
+
grid-template-rows: repeat(12, 1fr);
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
23
|
+
<slot></slot>
|
|
24
|
+
`;
|
|
25
|
+
}
|
|
26
|
+
attributeChangedCallback(a, s, o) {
|
|
27
|
+
s !== o && (this[a] = o), this.render();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class C extends HTMLElement {
|
|
31
|
+
static get observedAttributes() {
|
|
32
|
+
return ["x", "y", "w", "h"];
|
|
33
|
+
}
|
|
34
|
+
constructor() {
|
|
35
|
+
super(), this.attachShadow({ mode: "open" }), this.render();
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
this.shadowRoot.innerHTML = `
|
|
39
|
+
<style>
|
|
40
|
+
:host {
|
|
41
|
+
background: lightgrey;
|
|
42
|
+
border: 1px solid darkgrey;
|
|
43
|
+
border-radius: 4px;
|
|
44
|
+
padding: 4px 8px;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
grid-column: ${parseInt(this.getAttribute("x")) + 1} / span ${this.getAttribute("w")};
|
|
49
|
+
grid-row: ${parseInt(this.getAttribute("y")) + 1} / span ${this.getAttribute("h")};
|
|
50
|
+
}
|
|
51
|
+
</style>
|
|
52
|
+
<slot></slot>
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
attributeChangedCallback(a, s, o) {
|
|
56
|
+
s !== o && (this[a] = o), this.render();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
customElements.define("eox-layout", A);
|
|
60
|
+
customElements.define("eox-layout-item", C);
|
|
61
|
+
const L = ["gap"], $ = {
|
|
62
|
+
key: 0,
|
|
63
|
+
class: "bg-panel",
|
|
64
|
+
x: "0",
|
|
65
|
+
y: "0",
|
|
66
|
+
h: "12",
|
|
67
|
+
w: "12"
|
|
68
|
+
}, E = ["h", "w", "x", "y"], M = {
|
|
69
|
+
__name: "DashboardLayout",
|
|
70
|
+
setup(i) {
|
|
71
|
+
const a = (
|
|
72
|
+
/** @type {import("@/types").Eodash} */
|
|
73
|
+
m(x)
|
|
74
|
+
), [s] = d([a.template?.background]), o = d(a.template?.widgets);
|
|
75
|
+
return (T, B) => (t(), r(k, null, {
|
|
76
|
+
default: l(() => [
|
|
77
|
+
_("eox-layout", {
|
|
78
|
+
gap: n(a).template.gap ?? 2
|
|
79
|
+
}, [
|
|
80
|
+
n(s).component ? (t(), u("eox-layout-item", $, [
|
|
81
|
+
(t(), r(p, { suspensible: "" }, {
|
|
82
|
+
default: l(() => [
|
|
83
|
+
(t(), r(
|
|
84
|
+
c(n(s).component),
|
|
85
|
+
h({ id: "bg-widget" }, n(s).props),
|
|
86
|
+
null,
|
|
87
|
+
16
|
|
88
|
+
/* FULL_PROPS */
|
|
89
|
+
))
|
|
90
|
+
]),
|
|
91
|
+
_: 1
|
|
92
|
+
/* STABLE */
|
|
93
|
+
}))
|
|
94
|
+
])) : g("v-if", !0),
|
|
95
|
+
(t(!0), u(
|
|
96
|
+
f,
|
|
97
|
+
null,
|
|
98
|
+
v(n(o), (e, y) => (t(), r(
|
|
99
|
+
w,
|
|
100
|
+
{
|
|
101
|
+
key: y,
|
|
102
|
+
name: "fade"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
default: l(() => [
|
|
106
|
+
e.value.component ? (t(), u("eox-layout-item", {
|
|
107
|
+
key: e.value.id,
|
|
108
|
+
class: "panel",
|
|
109
|
+
h: e.value.layout.h,
|
|
110
|
+
w: e.value.layout.w,
|
|
111
|
+
x: e.value.layout.x,
|
|
112
|
+
y: e.value.layout.y
|
|
113
|
+
}, [
|
|
114
|
+
(t(), r(
|
|
115
|
+
p,
|
|
116
|
+
{ suspensible: "" },
|
|
117
|
+
{
|
|
118
|
+
default: l(() => [
|
|
119
|
+
(t(), r(
|
|
120
|
+
c(e.value.component),
|
|
121
|
+
h({
|
|
122
|
+
key: e.value.id,
|
|
123
|
+
ref_for: !0
|
|
124
|
+
}, e.value.props),
|
|
125
|
+
null,
|
|
126
|
+
16
|
|
127
|
+
/* FULL_PROPS */
|
|
128
|
+
))
|
|
129
|
+
]),
|
|
130
|
+
_: 2
|
|
131
|
+
/* DYNAMIC */
|
|
132
|
+
},
|
|
133
|
+
1024
|
|
134
|
+
/* DYNAMIC_SLOTS */
|
|
135
|
+
))
|
|
136
|
+
], 8, E)) : g("v-if", !0)
|
|
137
|
+
]),
|
|
138
|
+
_: 2
|
|
139
|
+
/* DYNAMIC */
|
|
140
|
+
},
|
|
141
|
+
1024
|
|
142
|
+
/* DYNAMIC_SLOTS */
|
|
143
|
+
))),
|
|
144
|
+
128
|
|
145
|
+
/* KEYED_FRAGMENT */
|
|
146
|
+
))
|
|
147
|
+
], 8, L)
|
|
148
|
+
]),
|
|
149
|
+
_: 1
|
|
150
|
+
/* STABLE */
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
}, V = /* @__PURE__ */ b(M, [["__scopeId", "data-v-d836e339"]]);
|
|
154
|
+
export {
|
|
155
|
+
V as default
|
|
156
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const h = { class: "d-flex flex-column fill-height overflow-auto" },
|
|
1
|
+
import { b6 as i, aZ as m, r as p, Z as d, b7 as f, $ as c, a6 as g, a0 as y, d as _, a4 as k } from "./asWebComponent-CbdGxelK.js";
|
|
2
|
+
const h = { class: "d-flex flex-column fill-height overflow-auto" }, C = {
|
|
3
3
|
__name: "DynamicWebComponent",
|
|
4
4
|
props: {
|
|
5
5
|
link: {
|
|
@@ -38,10 +38,10 @@ const h = { class: "d-flex flex-column fill-height overflow-auto" }, N = {
|
|
|
38
38
|
e.onMounted?.(r.value, s);
|
|
39
39
|
}), f(() => {
|
|
40
40
|
e.onUnmounted?.(r.value, s);
|
|
41
|
-
}), (n,
|
|
42
|
-
(c(),
|
|
41
|
+
}), (n, w) => (c(), g("span", h, [
|
|
42
|
+
(c(), y(
|
|
43
43
|
k(o.tagName),
|
|
44
|
-
|
|
44
|
+
_(o.properties, {
|
|
45
45
|
ref_key: "elementRef",
|
|
46
46
|
ref: r
|
|
47
47
|
}),
|
|
@@ -53,5 +53,5 @@ const h = { class: "d-flex flex-column fill-height overflow-auto" }, N = {
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
export {
|
|
56
|
-
|
|
56
|
+
C as default
|
|
57
57
|
};
|