@eodash/eodash 5.6.1 → 5.7.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 (81) hide show
  1. package/core/client/components/DashboardLayout.vue +1 -1
  2. package/core/client/composables/index.js +6 -2
  3. package/core/client/eodashSTAC/EodashCollection.js +5 -25
  4. package/core/client/eodashSTAC/createLayers.js +23 -9
  5. package/core/client/eodashSTAC/helpers.js +33 -0
  6. package/core/client/types.ts +8 -1
  7. package/core/client/utils/index.js +4 -0
  8. package/dist/client/{DashboardLayout-CqMb7OXc.js → DashboardLayout-kRsmsNW5.js} +5 -5
  9. package/dist/client/{DynamicWebComponent-DqKqTf7l.js → DynamicWebComponent-CnKhYo0K.js} +1 -1
  10. package/dist/client/{EodashChart-PkUQfH0k.js → EodashChart-CLDqE93C.js} +4 -4
  11. package/dist/client/{EodashDatePicker-DLJGdTtX.js → EodashDatePicker-CMPDT-ce.js} +3 -3
  12. package/dist/client/{EodashItemFilter-Dk8KjFcX.js → EodashItemFilter-BpdA8QQa.js} +1 -1
  13. package/dist/client/{EodashLayerControl-CC1Cogrn.js → EodashLayerControl-BHpDA4_0.js} +25 -7
  14. package/dist/client/{EodashLayoutSwitcher-5WZYd6rr.js → EodashLayoutSwitcher-B1fRUt7G.js} +3 -3
  15. package/dist/client/EodashMapBtns-Cpned0tc.js +478 -0
  16. package/dist/client/{EodashStacInfo-B90wobPc.js → EodashStacInfo-BQspAHKH.js} +1 -1
  17. package/dist/client/{EodashTools-CGZtTh45.js → EodashTools-1zHz26gv.js} +4 -4
  18. package/dist/client/{ExportState-Ce0ZnrX_.js → ExportState-DbOm8hBI.js} +4 -4
  19. package/dist/client/{Footer-CnZqEiop.js → Footer-BKg-VVkj.js} +1 -1
  20. package/dist/client/{Header-Dr5PBIm8.js → Header-DCrwCvmY.js} +2 -2
  21. package/dist/client/MobileLayout-vWSHpluo.js +118 -0
  22. package/dist/client/{PopUp-DjvE_71e.js → PopUp-9uimfK49.js} +2 -2
  23. package/dist/client/{ProcessList-kf3olI7W.js → ProcessList-CTTIZa06.js} +4 -4
  24. package/dist/client/{VImg-Bj6uWt6j.js → VImg-CrmB76ZY.js} +2 -2
  25. package/dist/client/{VMain-Cm0UmKGi.js → VMain-OKZNpcEG.js} +1 -1
  26. package/dist/client/{VTooltip-DbBu-ky3.js → VTooltip-CJw2FyWk.js} +2 -2
  27. package/dist/client/{WidgetsContainer-CfLnd44U.js → WidgetsContainer-BaWOnE5R.js} +1 -1
  28. package/dist/client/{asWebComponent-DfULAbpq.js → asWebComponent-BHWpMuE3.js} +47 -39
  29. package/dist/client/{async-CIbKXEEe.js → async-DSKj6g1f.js} +21 -10
  30. package/dist/client/create-layers-config-CBoYedqB.js +182 -0
  31. package/dist/client/eo-dash.js +1 -1
  32. package/dist/client/{forwardRefs-yj3VWOK5.js → forwardRefs-DH51zPUr.js} +2 -2
  33. package/dist/client/{handling-s8xt2JwF.js → handling-BrcDDlgS.js} +123 -85
  34. package/dist/client/{helpers-DAVGYl_f.js → helpers-DjZVl_WF.js} +2273 -1500
  35. package/dist/client/{index-4TrjfJ32.js → index-1JKE68n3.js} +49 -194
  36. package/dist/client/{index-CugS__t5.js → index-5Jhsa8Xe.js} +3 -3
  37. package/dist/client/index-CSG_JoOA.js +436 -0
  38. package/dist/client/{index-CYz6dT7K.js → index-CUjl-ZsI.js} +2 -2
  39. package/dist/client/{index-Bu8BMA9q.js → index-Cu3-13Xg.js} +69 -83
  40. package/dist/client/material-symbols-outlined.woff2 +0 -0
  41. package/dist/client/material-symbols-rounded.woff2 +0 -0
  42. package/dist/client/material-symbols-sharp.woff2 +0 -0
  43. package/dist/client/material-symbols-subset.woff2 +0 -0
  44. package/dist/client/templates.js +1 -1
  45. package/dist/client/{transition-DaOsiD4u.js → transition-OHcz5Qq1.js} +1 -1
  46. package/dist/node/cli.js +1 -1
  47. package/dist/types/core/client/composables/index.d.ts +1 -3
  48. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +6 -7
  49. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +3 -3
  50. package/dist/types/core/client/eodashSTAC/helpers.d.ts +1 -0
  51. package/dist/types/core/client/types.d.ts +8 -1
  52. package/dist/types/templates/baseConfig.d.ts +12 -0
  53. package/dist/types/widgets/EodashLayerControl.vue.d.ts +1 -1
  54. package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +9 -0
  55. package/dist/types/widgets/EodashMap/index.vue.d.ts +7 -0
  56. package/dist/types/widgets/EodashMap/methods/create-layers-config.d.ts +1 -8
  57. package/dist/types/widgets/EodashProcess/methods/composables.d.ts +1 -1
  58. package/dist/types/widgets/EodashProcess/methods/handling.d.ts +13 -8
  59. package/dist/types/widgets/EodashTimeSlider/index.vue.d.ts +34 -0
  60. package/dist/types/widgets/EodashTimeSlider/methods/index.d.ts +39 -0
  61. package/dist/types/widgets/EodashTimeSlider/types.d.ts +62 -0
  62. package/package.json +32 -32
  63. package/widgets/EodashLayerControl.vue +22 -3
  64. package/widgets/EodashMap/EodashMapBtns.vue +46 -1
  65. package/widgets/EodashMap/index.vue +17 -5
  66. package/widgets/EodashMap/methods/create-layers-config.js +2 -0
  67. package/widgets/EodashMap/methods/index.js +23 -5
  68. package/widgets/EodashProcess/index.vue +1 -1
  69. package/widgets/EodashProcess/methods/async.js +19 -8
  70. package/widgets/EodashProcess/methods/composables.js +63 -77
  71. package/widgets/EodashProcess/methods/custom-endpoints/chart/sentinelhub-endpoint.js +9 -5
  72. package/widgets/EodashProcess/methods/custom-endpoints/chart/veda-endpoint.js +7 -4
  73. package/widgets/EodashProcess/methods/handling.js +105 -72
  74. package/widgets/EodashTimeSlider/index.vue +152 -0
  75. package/widgets/EodashTimeSlider/methods/index.js +279 -0
  76. package/widgets/EodashTimeSlider/types.ts +64 -0
  77. package/dist/client/EodashMapBtns-BHrSDNoC.js +0 -435
  78. package/dist/client/EodashTimeSlider-5vm7F3ju.js +0 -53
  79. package/dist/client/MobileLayout-DyMjaeif.js +0 -118
  80. package/dist/types/widgets/EodashTimeSlider.vue.d.ts +0 -15
  81. package/widgets/EodashTimeSlider.vue +0 -40
package/dist/node/cli.js CHANGED
@@ -27,4 +27,4 @@ ${s.lib?`<eo-dash style="height:100%;"/>
27
27
  `}
28
28
  </body>
29
29
  </html>`;function Z(e={customElementFileName:"asWebComponent.js",stylePlaceHolder:"__VUE_CE_STYLES__"}){const{customElementFileName:n,stylePlaceHolder:r}=e;return{name:"vite-plugin-vue-custom-element-style-injector",enforce:"post",async transform(o,i){if(this.environment.mode!=="build")return;if(t.basename(i)===n){let p=o;return/defineCustomElement\s*\([^{]*\{[\s\S]*?styles\s*:/.test(o)||(p=o.replace(/(defineCustomElement\s*\(\s*[^,{]*,?\s*\{)/,`$1
30
- styles: ${r},`)),{code:p,map:null}}},generateBundle(o,i){let a="",p=[];const u=[];for(const d in i){const h=i[d];if(h.type==="chunk"&&h.code.includes(r)){a=d;break}}for(const d in i){const h=i[d];if(q(d)&&h.type==="asset"){let g=h.source.toString();g=g.replaceAll(":root",":host"),p.push(g),u.push(d)}}i[a].code=i[a].code.replace(r,JSON.stringify(p)),u.forEach(d=>{delete i[d]})}}}function q(e){return/\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/.test(e)}const _=C(async({mode:e,command:n})=>{const r=["VITE_","EODASH_"];return{base:s.base??"",cacheDir:Q,plugins:[J({features:{customElement:n==="build"&&s.lib},template:{transformAssetUrls:B,compilerOptions:{isCustomElement:o=>!o.includes("v-")&&o.includes("-")}}}),M({autoImport:!0}),e==="development"&&{name:"inject-html",configureServer:ee},s.lib&&Z()],customLogger:j,define:{__userConfigExist__:!!m,...n==="build"&&s.lib?{"process.env":"import.meta.env"}:{"process.env":{},...te(r)}},envPrefix:r,resolve:{alias:{"@":t.join(c,"core/client"),"^":t.join(c,"widgets"),"user:widgets":D,...m&&{"user:config":m}},extensions:[".js",".json",".jsx",".mjs",".ts",".tsx",".vue"]},server:{allowedHosts:!0,warmup:{clientFiles:[t.join(c,"core/client/**"),m]},port:s.port??3e3,open:s.open,fs:{allow:[W(process.cwd())]},host:s.host},root:c,...e==="development"&&{optimizeDeps:{include:["webfontloader","vuetify","vue","pinia","stac-js","urijs","loglevel","vega","vega-lite","vega-embed","@eox/map","@eox/map/src/plugins/advancedLayersAndSources","@eox/layercontrol","@eox/drawtools","@eox/chart","@eox/jsonform","@eox/layout","@eox/itemfilter","@eox/timecontrol","@eox/stacinfo","color-legend-element","@eox/map","@eox/map/src/plugins/advancedLayersAndSources","@eox/map/src/plugins/globe","@eox/layercontrol","@eox/timecontrol","@eox/jsonform","@eox/layout","@eox/itemfilter","@eox/stacinfo","@eox/elements-utils","@eox/geosearch","@eox/timeslider"],noDiscovery:!0}},publicDir:s.publicDir===!1?!1:K,build:{outDir:w,emptyOutDir:!0,target:"esnext",cssMinify:!0,...!s.lib&&n==="build"&&{manifest:!0,rollupOptions:{input:{main:t.join(c,"index.html"),templates:t.join(c,"templates/index.js")}}},...s.lib&&n==="build"&&{minify:!1,lib:{entry:t.join(c,"core/client/asWebComponent.js"),fileName:(o,i)=>i==="asWebComponent"?"eo-dash.js":"templates.js",cssFileName:"eo-dash",formats:["es"],name:"@eodash/eodash"},rollupOptions:{input:{asWebComponent:t.join(c,"core/client/asWebComponent.js"),templates:t.join(c,"templates/index.js")},external:o=>{const i=o.includes("vuetify")||o.endsWith(".css")||o.endsWith("styles"),a=z.some(u=>o.startsWith(u));return!i&&a||o==="user:config"&&!m},treeshake:{moduleSideEffects:!0,preset:"smallest"}}}}}}),N=C(async e=>s.vite?O(await _(e),s.vite):_(e));async function ee(e){const n=[f,t.join(D,"**/*.vue")];m&&n.push(m),e.watcher.add(n);let r="";const o=j.info;return j.info=(i,a)=>{if(i.includes("core")){const p=i.split("/")[0].split(" ");p.pop();const u=p.join(" ")+" "+r.replace(l,"");return o(u,a)}return o(i,a)},e.watcher.on("change",async i=>{r=i,i===f&&e.ws.send({type:"full-reload",path:i})}),()=>{e.middlewares.use(async(i,a,p)=>{if(i.originalUrl==="/@fs/config.js"||i.originalUrl==="/config.js"){a.statusCode=200,a.setHeader("Content-Type","text/javascript"),v(f)&&await I(f).then(u=>{a.write(u)}),a.end();return}if(i.url?.endsWith(".html")){a.statusCode=200,a.setHeader("Content-Type","text/html");const u=await e.transformIndexHtml(i.url,k,i.originalUrl);a.end(u);return}p()})}}function te(e){G({quiet:!0});const n={};for(const r in process.env)e.some(o=>r.startsWith(o))&&(n["process.env."+r]=`"${process.env[r]}"`);return n}const oe=async()=>{const e=await A(await N({mode:"development",command:"serve"}));await e.listen(),e.printUrls(),e.bindCLIShortcuts({print:!0})},ie=async()=>{const e=async()=>{const n=await N({mode:"production",command:"build"});await L(n),v(f)&&await V(f,t.join(w,"config.js"),{recursive:!0}).catch(r=>{console.error(r)})};if(s.lib)await e();else{const n=t.join(c,"/index.html");await T(n,k).then(async()=>{await e(),await R(n).catch(()=>{console.error("failed to remove index.html")})})}};async function se(){(await U({root:l,base:s.base??"",preview:{port:isNaN(s.port)?8080:s.port,open:s.open,host:s.host},build:{outDir:w}})).printUrls()}const ne=process.argv?.[2];(async()=>{switch(ne){case"dev":await oe();break;case"build":await ie();break;case"preview":await se();break;default:console.error("command not found");break}})();
30
+ styles: ${r},`)),{code:p,map:null}}},generateBundle(o,i){let a="",p=[];const u=[];for(const d in i){const h=i[d];if(h.type==="chunk"&&h.code.includes(r)){a=d;break}}for(const d in i){const h=i[d];if(q(d)&&h.type==="asset"){let g=h.source.toString();g=g.replaceAll(":root",":host"),p.push(g),u.push(d)}}i[a].code=i[a].code.replace(r,JSON.stringify(p)),u.forEach(d=>{delete i[d]})}}}function q(e){return/\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/.test(e)}const _=C(async({mode:e,command:n})=>{const r=["VITE_","EODASH_"];return{base:s.base??"",cacheDir:Q,plugins:[J({features:{customElement:n==="build"&&s.lib},template:{transformAssetUrls:B,compilerOptions:{isCustomElement:o=>!o.includes("v-")&&o.includes("-")}}}),M({autoImport:!0}),e==="development"&&{name:"inject-html",configureServer:ee},s.lib&&Z()],customLogger:j,define:{__userConfigExist__:!!m,...n==="build"&&s.lib?{"process.env":"import.meta.env"}:{"process.env":{},...te(r)}},envPrefix:r,resolve:{alias:{"@":t.join(c,"core/client"),"^":t.join(c,"widgets"),"user:widgets":D,...m&&{"user:config":m}},extensions:[".js",".json",".jsx",".mjs",".ts",".tsx",".vue"]},server:{allowedHosts:!0,warmup:{clientFiles:[t.join(c,"core/client/**"),m]},port:s.port??3e3,open:s.open,fs:{allow:[W(process.cwd())]},host:s.host},root:c,...e==="development"&&{optimizeDeps:{include:["webfontloader","vuetify","vue","pinia","stac-js","urijs","loglevel","vega","vega-lite","vega-embed","@eox/map","@eox/map/src/plugins/advancedLayersAndSources","@eox/layercontrol","@eox/drawtools","@eox/chart","@eox/jsonform","@eox/layout","@eox/itemfilter","@eox/timecontrol","@eox/stacinfo","color-legend-element","@eox/map","@eox/map/src/plugins/advancedLayersAndSources","@eox/map/src/plugins/globe","@eox/layercontrol","@eox/timecontrol","@eox/jsonform","@eox/layout","@eox/itemfilter","@eox/stacinfo","@eox/elements-utils","@eox/geosearch","@eox/feedback"],noDiscovery:!0}},publicDir:s.publicDir===!1?!1:K,build:{outDir:w,emptyOutDir:!0,target:"esnext",cssMinify:!0,...!s.lib&&n==="build"&&{manifest:!0,rollupOptions:{input:{main:t.join(c,"index.html"),templates:t.join(c,"templates/index.js")}}},...s.lib&&n==="build"&&{minify:!1,lib:{entry:t.join(c,"core/client/asWebComponent.js"),fileName:(o,i)=>i==="asWebComponent"?"eo-dash.js":"templates.js",cssFileName:"eo-dash",formats:["es"],name:"@eodash/eodash"},rollupOptions:{input:{asWebComponent:t.join(c,"core/client/asWebComponent.js"),templates:t.join(c,"templates/index.js")},external:o=>{const i=o.includes("vuetify")||o.endsWith(".css")||o.endsWith("styles"),a=z.some(u=>o.startsWith(u));return!i&&a||o==="user:config"&&!m},treeshake:{moduleSideEffects:!0,preset:"smallest"}}}}}}),N=C(async e=>s.vite?O(await _(e),s.vite):_(e));async function ee(e){const n=[f,t.join(D,"**/*.vue")];m&&n.push(m),e.watcher.add(n);let r="";const o=j.info;return j.info=(i,a)=>{if(i.includes("core")){const p=i.split("/")[0].split(" ");p.pop();const u=p.join(" ")+" "+r.replace(l,"");return o(u,a)}return o(i,a)},e.watcher.on("change",async i=>{r=i,i===f&&e.ws.send({type:"full-reload",path:i})}),()=>{e.middlewares.use(async(i,a,p)=>{if(i.originalUrl==="/@fs/config.js"||i.originalUrl==="/config.js"){a.statusCode=200,a.setHeader("Content-Type","text/javascript"),v(f)&&await I(f).then(u=>{a.write(u)}),a.end();return}if(i.url?.endsWith(".html")){a.statusCode=200,a.setHeader("Content-Type","text/html");const u=await e.transformIndexHtml(i.url,k,i.originalUrl);a.end(u);return}p()})}}function te(e){G({quiet:!0});const n={};for(const r in process.env)e.some(o=>r.startsWith(o))&&(n["process.env."+r]=`"${process.env[r]}"`);return n}const oe=async()=>{const e=await A(await N({mode:"development",command:"serve"}));await e.listen(),e.printUrls(),e.bindCLIShortcuts({print:!0})},ie=async()=>{const e=async()=>{const n=await N({mode:"production",command:"build"});await L(n),v(f)&&await V(f,t.join(w,"config.js"),{recursive:!0}).catch(r=>{console.error(r)})};if(s.lib)await e();else{const n=t.join(c,"/index.html");await T(n,k).then(async()=>{await e(),await R(n).catch(()=>{console.error("failed to remove index.html")})})}};async function se(){(await U({root:l,base:s.base??"",preview:{port:isNaN(s.port)?8080:s.port,open:s.open,host:s.host},build:{outDir:w}})).printUrls()}const ne=process.argv?.[2];(async()=>{switch(ne){case"dev":await oe();break;case"build":await ie();break;case"preview":await se();break;default:console.error("command not found");break}})();
@@ -24,8 +24,6 @@ export function useUpdateTheme(themeName: string, themeDefinition?: import("../t
24
24
  export function useURLSearchParametersSync(): void;
25
25
  export function useTransparentPanel(root: import("vue").Ref<HTMLElement | null>): void;
26
26
  export function useGetTemplates(): string[];
27
- export function useOnLayersUpdate(listener: import("@vueuse/core").EventBusListener<import("../types").LayersEventBusKeys, {
28
- layers: Record<string, any>[] | undefined;
29
- }>): void;
27
+ export function useOnLayersUpdate(listener: import("@vueuse/core").EventBusListener<import("../types").LayersEventBusKeys, Record<string, any>[] | undefined>): void;
30
28
  export function useEmitLayersUpdate(event: import("../types").LayersEventBusKeys, mapEl: import("@eox/map").EOxMap | null, layers: Record<string, any>[]): Promise<void>;
31
29
  export function useGetSubCodeId(collection: import("stac-ts").StacCollection | import("stac-ts").StacLink | import("stac-ts").StacItem | null): string;
@@ -8,13 +8,13 @@ export class EodashCollection {
8
8
  style?: import("../types").EodashStyleJson | undefined;
9
9
  type: string;
10
10
  source: {
11
+ attributions?: {} | undefined;
11
12
  type: string;
12
13
  url: string | undefined;
13
14
  format: {
14
15
  type: string;
15
16
  dataProjection: string;
16
17
  };
17
- attributions: unknown;
18
18
  };
19
19
  properties: {
20
20
  layerConfig?: {
@@ -34,9 +34,9 @@ export class EodashCollection {
34
34
  style?: import("../types").EodashStyleJson | undefined;
35
35
  type: string;
36
36
  source: {
37
+ attributions?: {} | undefined;
37
38
  type: string;
38
39
  projection: string;
39
- attributions: unknown;
40
40
  url: string | string[];
41
41
  };
42
42
  properties: {
@@ -59,8 +59,8 @@ export class EodashCollection {
59
59
  normalize: boolean;
60
60
  interpolate: boolean;
61
61
  sources: {
62
+ attributions?: {} | undefined;
62
63
  url: string;
63
- attributions: unknown;
64
64
  }[];
65
65
  };
66
66
  properties: {
@@ -166,11 +166,10 @@ export class EodashCollection {
166
166
  decimals?: number;
167
167
  }[]>;
168
168
  /**
169
- *
170
169
  * @param {string} datetime
171
- * @param {string} layer
172
- * @param {string} map
170
+ * @param {string} layerId
171
+ * @param {import("@eox/map").EoxLayer[]} currentLayers
173
172
  */
174
- updateLayerJson(datetime: string, layer: string, map: string): Promise<import("@eox/map/src/layers").EoxLayer[] | undefined>;
173
+ updateLayerJson(datetime: string, layerId: string, currentLayers: import("@eox/map").EoxLayer[]): Promise<import("@eox/map/src/layers").EoxLayer[] | undefined>;
175
174
  #private;
176
175
  }
@@ -11,13 +11,13 @@ export function createLayersFromAssets(collectionId: string, title: string, asse
11
11
  style?: import("../types").EodashStyleJson | undefined;
12
12
  type: string;
13
13
  source: {
14
+ attributions?: {} | undefined;
14
15
  type: string;
15
16
  url: string | undefined;
16
17
  format: {
17
18
  type: string;
18
19
  dataProjection: string;
19
20
  };
20
- attributions: unknown;
21
21
  };
22
22
  properties: {
23
23
  layerConfig?: {
@@ -37,9 +37,9 @@ export function createLayersFromAssets(collectionId: string, title: string, asse
37
37
  style?: import("../types").EodashStyleJson | undefined;
38
38
  type: string;
39
39
  source: {
40
+ attributions?: {} | undefined;
40
41
  type: string;
41
42
  projection: string;
42
- attributions: unknown;
43
43
  url: string | string[];
44
44
  };
45
45
  properties: {
@@ -62,8 +62,8 @@ export function createLayersFromAssets(collectionId: string, title: string, asse
62
62
  normalize: boolean;
63
63
  interpolate: boolean;
64
64
  sources: {
65
+ attributions?: {} | undefined;
65
66
  url: string;
66
- attributions: unknown;
67
67
  }[];
68
68
  };
69
69
  properties: {
@@ -513,6 +513,7 @@ export function extractLayerTimeValues(items?: import("stac-ts").StacLink[] | im
513
513
  };
514
514
  export function findLayersByLayerPrefix(layers: import("@eox/map").EoxLayer[], referenceLayer: import("@eox/map").EoxLayer | undefined): import("@eox/map").EoxLayer[];
515
515
  export function findLayer(layers: import("@eox/map").EoxLayer[], layer: string): import("@eox/map").EoxLayer | undefined;
516
+ export function removeLayers(layers: import("@eox/map").EoxLayer[], layerIds: string[]): import("@eox/map").EoxLayer[];
516
517
  export function replaceLayer(layers: import("@eox/map").EoxLayer[], toRemove: string | string[], toInsert: import("@eox/map").EoxLayer[]): import("@eox/map").EoxLayer[];
517
518
  export function getColFromLayer(indicators: import("../eodashSTAC/EodashCollection.js").EodashCollection[], layer: import("ol/layer").Layer): Promise<import("../eodashSTAC/EodashCollection.js").EodashCollection | undefined>;
518
519
  export function createLayerID(collectionId: string, itemId: string, link: import("stac-ts").StacLink, projectionCode: string | import("ol/proj").ProjectionLike): string;
@@ -96,7 +96,7 @@ export interface TEodashDatePicker {
96
96
  /** @group Widgets */
97
97
  export interface TEodashTimeSlider {
98
98
  name: "EodashTimeSlider";
99
- properties?: InstanceType<typeof import("../../widgets/EodashTimeSlider.vue").default>["$props"];
99
+ properties?: InstanceType<typeof import("../../widgets/EodashTimeSlider/index.vue").default>["$props"];
100
100
  }
101
101
  /** @group Widgets */
102
102
  export interface TEodashItemFilter {
@@ -299,6 +299,13 @@ export type Eodash = {
299
299
  theme?: import("vuetify").ThemeDefinition & {
300
300
  collectionsPalette?: string[];
301
301
  };
302
+ /** eox-feedback configuration */
303
+ feedback?: {
304
+ /** eox-feedback endpoint */
305
+ endpoint: string;
306
+ /** eox-feedback jsonform schema */
307
+ schema?: any;
308
+ };
302
309
  /** Text applied to the footer. */
303
310
  footerText?: string;
304
311
  };
@@ -16,6 +16,10 @@ export function getBaseConfig(config: import("vega-lite").DeepPartial<import("..
16
16
  theme?: import("vuetify").ThemeDefinition & {
17
17
  collectionsPalette?: string[];
18
18
  };
19
+ feedback?: {
20
+ endpoint: string;
21
+ schema?: any;
22
+ };
19
23
  footerText?: string;
20
24
  };
21
25
  } & {
@@ -44,6 +48,10 @@ export function getBaseConfig(config: import("vega-lite").DeepPartial<import("..
44
48
  theme?: import("vuetify").ThemeDefinition & {
45
49
  collectionsPalette?: string[];
46
50
  };
51
+ feedback?: {
52
+ endpoint: string;
53
+ schema?: any;
54
+ };
47
55
  footerText?: string;
48
56
  } & {
49
57
  name: string;
@@ -81,6 +89,10 @@ export function getBaseConfig(config: import("vega-lite").DeepPartial<import("..
81
89
  noLayout?: boolean | undefined;
82
90
  errorMessage?: string | undefined;
83
91
  logo?: string | undefined;
92
+ feedback?: {
93
+ endpoint: string;
94
+ schema?: any;
95
+ } | undefined;
84
96
  footerText?: string | undefined;
85
97
  };
86
98
  template: import("../core/client/types").Template;
@@ -39,7 +39,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
39
39
  type: ObjectConstructor;
40
40
  };
41
41
  }>> & Readonly<{}>, {
42
- map: "second" | "first";
42
+ map: "first" | "second";
43
43
  title: string;
44
44
  tools: unknown[];
45
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -42,6 +42,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
42
42
  type: BooleanConstructor;
43
43
  default: boolean;
44
44
  };
45
+ enableFeedback: {
46
+ type: BooleanConstructor;
47
+ default: boolean;
48
+ };
45
49
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
46
50
  exportMap: {
47
51
  type: BooleanConstructor;
@@ -84,11 +88,16 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
84
88
  type: BooleanConstructor;
85
89
  default: boolean;
86
90
  };
91
+ enableFeedback: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
87
95
  }>> & Readonly<{}>, {
88
96
  enableSearch: boolean;
89
97
  searchParams: boolean | Record<string, any>;
90
98
  enableZoom: boolean;
91
99
  enableGlobe: boolean;
100
+ enableFeedback: boolean;
92
101
  exportMap: boolean;
93
102
  changeProjection: boolean;
94
103
  compareIndicators: boolean | {
@@ -40,6 +40,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
40
40
  * searchParams?: object;
41
41
  * enableZoom?: boolean;
42
42
  * enableGlobe?: boolean;
43
+ * enableFeedback?: boolean;
43
44
  * enableCompareIndicators?: boolean | {
44
45
  * compareTemplate?:string;
45
46
  * fallbackTemplate?:string;
@@ -54,6 +55,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
54
55
  searchParams?: object;
55
56
  enableZoom?: boolean;
56
57
  enableGlobe?: boolean;
58
+ enableFeedback?: boolean;
57
59
  enableCompareIndicators?: boolean | {
58
60
  compareTemplate?: string;
59
61
  fallbackTemplate?: string;
@@ -240,6 +242,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
240
242
  enableSearch: boolean;
241
243
  enableZoom: boolean;
242
244
  enableGlobe: boolean;
245
+ enableFeedback: boolean;
243
246
  searchParams: {};
244
247
  };
245
248
  };
@@ -283,6 +286,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
283
286
  * searchParams?: object;
284
287
  * enableZoom?: boolean;
285
288
  * enableGlobe?: boolean;
289
+ * enableFeedback?: boolean;
286
290
  * enableCompareIndicators?: boolean | {
287
291
  * compareTemplate?:string;
288
292
  * fallbackTemplate?:string;
@@ -297,6 +301,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
297
301
  searchParams?: object;
298
302
  enableZoom?: boolean;
299
303
  enableGlobe?: boolean;
304
+ enableFeedback?: boolean;
300
305
  enableCompareIndicators?: boolean | {
301
306
  compareTemplate?: string;
302
307
  fallbackTemplate?: string;
@@ -483,6 +488,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
483
488
  enableSearch: boolean;
484
489
  enableZoom: boolean;
485
490
  enableGlobe: boolean;
491
+ enableFeedback: boolean;
486
492
  searchParams: {};
487
493
  };
488
494
  };
@@ -501,6 +507,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
501
507
  searchParams?: object;
502
508
  enableZoom?: boolean;
503
509
  enableGlobe?: boolean;
510
+ enableFeedback?: boolean;
504
511
  enableCompareIndicators?: boolean | {
505
512
  compareTemplate?: string;
506
513
  fallbackTemplate?: string;
@@ -1,9 +1,2 @@
1
- export function createLayersConfig(selectedIndicator: import("stac-ts").StacCatalog | import("stac-ts").StacCollection | import("stac-ts").StacItem | null, eodashCols: EodashCollection[], timeOrItem?: string | import("stac-ts").StacItem | null): Promise<{
2
- type: string;
3
- properties: {
4
- id: string;
5
- title: string;
6
- };
7
- layers: Record<string, any>[];
8
- }[]>;
1
+ export function createLayersConfig(selectedIndicator: import("stac-ts").StacCatalog | import("stac-ts").StacCollection | import("stac-ts").StacItem | null, eodashCols: EodashCollection[], timeOrItem?: string | import("stac-ts").StacItem | null): Promise<Record<string, any>[]>;
9
2
  import { EodashCollection } from "../../../core/client/eodashSTAC/EodashCollection";
@@ -14,5 +14,5 @@ export function useInitProcess({ selectedStac, jsonformSchema, isProcessed, proc
14
14
  isProcessed: import("vue").Ref<boolean>;
15
15
  loading: import("vue").Ref<boolean>;
16
16
  isPolling: import("vue").Ref<boolean>;
17
- mapElement: import("@eox/map").EOxMap | null;
17
+ mapElement: import("vue").Ref<import("@eox/map").EOxMap | null>;
18
18
  }): void;
@@ -10,32 +10,37 @@
10
10
  * @param {import("vue").Ref<boolean>} params.isProcessed
11
11
  * @param {import("vue").Ref<boolean>} params.loading
12
12
  * @param {import("vue").Ref<boolean>} params.isPolling
13
+ * @param {import("@eox/map").EOxMap | null} params.mapElement
13
14
  * @param {boolean} params.enableCompare
14
15
  */
15
- export function initProcess({ selectedStac, jsonformSchema, isProcessed, processResults, loading, isPolling, enableCompare, }: {
16
+ export function initProcess({ selectedStac, jsonformSchema, isProcessed, processResults, loading, isPolling, enableCompare, mapElement, }: {
16
17
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null>;
17
18
  jsonformSchema: import("vue").Ref<Record<string, any> | null>;
18
19
  processResults: import("vue").Ref<any[]>;
19
20
  isProcessed: import("vue").Ref<boolean>;
20
21
  loading: import("vue").Ref<boolean>;
21
22
  isPolling: import("vue").Ref<boolean>;
23
+ mapElement: import("@eox/map").EOxMap | null;
22
24
  enableCompare: boolean;
23
25
  }): Promise<void>;
24
26
  /**
25
- * Update the jsonform schema to have the correct layer id from the map
27
+ * Update the jsonform schema to have the correct layer id from the map.
28
+ * Returns null if any required layerId cannot be resolved (layer not yet in map).
29
+ * Callers should treat null as "retry when layers:updated fires".
26
30
  *
27
31
  * @export
28
- * @async
29
32
  * @param {Object} params
30
- * @param {Record<string,any> | null} params.jsonformSchema params.jsonformSchema
31
- * @param {Record<string, any>[] | undefined} params.newLayers params.newLayers
32
- * @param { boolean } params.enableCompare params.enableCompare
33
- * @returns {Promise<Record<string,any> | null>} updated jsonform schema
33
+ * @param {Record<string,any> | null} params.jsonformSchema
34
+ * @param {Record<string, any>[] | undefined} params.newLayers
35
+ * @param {boolean} params.enableCompare
36
+ * @param {import("@eox/map").EOxMap | null | undefined} params.mapElement
37
+ * @returns {Promise<Record<string,any> | null>} updated schema, or null if a layerId could not be resolved
34
38
  */
35
- export function updateJsonformIdentifier({ jsonformSchema, newLayers, enableCompare, }: {
39
+ export function updateJsonformIdentifier({ jsonformSchema, newLayers, enableCompare, mapElement, }: {
36
40
  jsonformSchema: Record<string, any> | null;
37
41
  newLayers: Record<string, any>[] | undefined;
38
42
  enableCompare: boolean;
43
+ mapElement: import("@eox/map").EOxMap | null | undefined;
39
44
  }): Promise<Record<string, any> | null>;
40
45
  /**
41
46
  *
@@ -0,0 +1,34 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ filters: {
5
+ /** @type {import("vue").PropType<import("@eox/itemfilter").EOxItemFilter["filterProperties"]>} */
6
+ type: import("vue").PropType<import("@eox/itemfilter").EOxItemFilter["filterProperties"]>;
7
+ default: () => never[];
8
+ };
9
+ animate: {
10
+ type: BooleanConstructor;
11
+ default: boolean;
12
+ };
13
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
+ filters: {
15
+ /** @type {import("vue").PropType<import("@eox/itemfilter").EOxItemFilter["filterProperties"]>} */
16
+ type: import("vue").PropType<import("@eox/itemfilter").EOxItemFilter["filterProperties"]>;
17
+ default: () => never[];
18
+ };
19
+ animate: {
20
+ type: BooleanConstructor;
21
+ default: boolean;
22
+ };
23
+ }>> & Readonly<{}>, {
24
+ animate: boolean;
25
+ filters: {
26
+ key?: string;
27
+ keys?: Array<string>;
28
+ title: string;
29
+ type: string;
30
+ placeholder?: string;
31
+ format?: string;
32
+ state?: any;
33
+ }[];
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @param {string} stacEndpoint
3
+ * @param {[string, string]} selectedRange
4
+ * @param {import("../types").TimelineExportEventDetail["selectedRangeItems"]} selectedRangeItems
5
+ * @param {import("vue").Ref<import("stac-ts").StacCollection|null>} selectedStac
6
+ * @param {Record<string, import("../types").Filter>} filters
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<{
9
+ layers: Record<string, any>[];
10
+ date: string;
11
+ }[]>;
12
+ /**
13
+ *
14
+ * @param {Record<string, any>[]} layers
15
+ * @returns {Record<string, any>[]}
16
+ */
17
+ export function anonimizeLayersCORS(layers: Record<string, any>[]): Record<string, any>[];
18
+ /**
19
+ * returns the list of layers that has visibility hidden
20
+ * @param {import("@eox/map").EoxLayer[]} layers
21
+ * @returns {{ collections: string[]; layers: string[] }}
22
+ */
23
+ export function getHiddenLayers(layers: import("@eox/map").EoxLayer[]): {
24
+ collections: string[];
25
+ layers: string[];
26
+ };
27
+ /**
28
+ * Iterates through a list of layers and updates layer.properties.visible to true
29
+ * if it is set to false
30
+ * @param {import("@eox/map").EoxLayer[]} layers
31
+ * @returns {import("@eox/map").EoxLayer[]}
32
+ */
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;
@@ -0,0 +1,62 @@
1
+ export interface TimelineSelectionEventDetail {
2
+ date: [string, string];
3
+ instances: {
4
+ layer: import("ol/layer/Layer").default;
5
+ source: import("ol/source/Source").default;
6
+ };
7
+ filters: Record<string, Filter>;
8
+ selectedItems: {
9
+ [layerId: string]: SelectedItem[];
10
+ };
11
+ }
12
+ export interface SelectedItem {
13
+ className: string;
14
+ date: string;
15
+ group: string;
16
+ id: string;
17
+ itemId: string;
18
+ local: string;
19
+ originalDate: string;
20
+ property: string;
21
+ start: string;
22
+ type: string;
23
+ utc: string;
24
+ }
25
+ export interface TimelineExportEventDetail {
26
+ eoxMapConfig: {
27
+ layers: Record<string, any>[];
28
+ zoom: number;
29
+ center: [number, number];
30
+ };
31
+ filters: Record<string, Filter>;
32
+ instances: {
33
+ layer: import("ol/layer/Layer").default;
34
+ source: import("ol/source/Source").default;
35
+ };
36
+ selectedRangeItems: {
37
+ [layerId: string]: SelectedItem[];
38
+ };
39
+ generate: (args: {
40
+ mapLayers: Array<{
41
+ layers: Record<string, any>[];
42
+ date: string;
43
+ }>;
44
+ center?: [number, number];
45
+ zoom?: number;
46
+ }) => Promise<void>;
47
+ }
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;
62
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eodash/eodash",
3
- "version": "5.6.1",
3
+ "version": "5.7.0",
4
4
  "type": "module",
5
5
  "types": "./dist/types/core/client/types.d.ts",
6
6
  "files": [
@@ -69,42 +69,42 @@
69
69
  "docs:generate": "npm run build:cli && npm run build:types && typedoc --options typedoc.config.json"
70
70
  },
71
71
  "dependencies": {
72
- "@eox/chart": "^1.1.0",
73
- "@eox/drawtools": "1.1.5",
74
- "@eox/geosearch": "^1.1.0",
75
- "@eox/itemfilter": "^1.14.0",
76
- "@eox/jsonform": "^1.9.0",
77
- "@eox/layercontrol": "^1.4.0",
72
+ "@eox/chart": "^1.2.0",
73
+ "@eox/drawtools": "^1.5.0",
74
+ "@eox/feedback": "^1.2.0",
75
+ "@eox/geosearch": "^1.2.0",
76
+ "@eox/itemfilter": "^1.16.0",
77
+ "@eox/jsonform": "^1.12.0",
78
+ "@eox/layercontrol": "^1.7.0",
78
79
  "@eox/layout": "^1.0.0",
79
- "@eox/map": "^2.2.0",
80
- "@eox/stacinfo": "^1.1.0",
81
- "@eox/timecontrol": "^2.1.2",
82
- "@eox/timeslider": "https://pkg.pr.new/EOX-A/EOxElements/@eox/timeslider@9873028",
83
- "@eox/ui": "^0.6.0",
80
+ "@eox/map": "^2.5.1",
81
+ "@eox/stacinfo": "^1.2.0",
82
+ "@eox/timecontrol": "^2.4.0",
83
+ "@eox/ui": "^1.1.0",
84
84
  "@mdi/js": "^7.4.47",
85
- "@vitejs/plugin-vue": "^6.0.4",
85
+ "@vitejs/plugin-vue": "^6.0.6",
86
86
  "@vueuse/core": "^14.2.1",
87
87
  "animated-details": "gist:2912bb049fa906671807415eb0e87188",
88
- "axios": "^1.13.5",
89
- "axios-cache-interceptor": "^1.11.4",
88
+ "axios": "^1.15.2",
89
+ "axios-cache-interceptor": "^1.12.0",
90
90
  "color-legend-element": "^1.3.0",
91
91
  "commander": "^14.0.3",
92
- "core-js": "^3.48.0",
93
- "dotenv": "^17.3.1",
94
- "hyparquet": "^1.25.0",
92
+ "core-js": "^3.49.0",
93
+ "dotenv": "^17.4.2",
94
+ "hyparquet": "^1.25.6",
95
95
  "loglevel": "^1.9.2",
96
96
  "mustache": "^4.2.0",
97
97
  "pinia": "^3.0.4",
98
- "proj4": "^2.20.2",
99
- "sass": "^1.97.3",
100
- "stac-js": "^0.2.1",
101
- "stac-ts": "^1.0.4",
98
+ "proj4": "^2.20.8",
99
+ "sass": "^1.99.0",
100
+ "stac-js": "^0.4.2",
101
+ "stac-ts": "^1.0.5",
102
102
  "v-calendar": "3.0.0",
103
103
  "vega-embed": "^6.29.0",
104
104
  "vega-lite": "^5.23.0",
105
105
  "vite": "^7.3.1",
106
106
  "vite-plugin-vuetify": "^2.1.3",
107
- "vue": "^3.5.29",
107
+ "vue": "^3.5.33",
108
108
  "vuetify": "^3.11.4",
109
109
  "webfontloader": "^1.6.28"
110
110
  },
@@ -114,25 +114,25 @@
114
114
  "@pinia/testing": "^1.0.3",
115
115
  "@types/json-schema": "^7.0.15",
116
116
  "@types/mustache": "^4.2.6",
117
- "@types/node": "^25.3.1",
117
+ "@types/node": "^25.6.0",
118
118
  "@types/openlayers": "^4.6.23",
119
119
  "@types/webfontloader": "^1.6.38",
120
- "cypress": "^15.11.0",
120
+ "cypress": "^15.14.1",
121
121
  "eslint": "^9.39.2",
122
122
  "eslint-plugin-vue": "^9.33.0",
123
- "pkg-pr-new": "^0.0.63",
124
- "prettier": "^3.8.1",
125
- "rollup": "^4.59.0",
123
+ "pkg-pr-new": "^0.0.66",
124
+ "prettier": "^3.8.3",
125
+ "rollup": "^4.60.2",
126
126
  "terminate": "^2.8.0",
127
127
  "tsc-alias": "^1.8.16",
128
- "typedoc": "^0.28.17",
129
- "typedoc-plugin-markdown": "^4.10.0",
128
+ "typedoc": "^0.28.19",
129
+ "typedoc-plugin-markdown": "^4.11.0",
130
130
  "typedoc-plugin-vue": "^1.5.1",
131
131
  "typedoc-vitepress-theme": "^1.1.2",
132
132
  "typescript": "^5.9.3",
133
133
  "vitepress": "^1.6.4",
134
- "vitest": "^4.0.18",
135
- "vue-tsc": "3.2.5"
134
+ "vitest": "^4.1.5",
135
+ "vue-tsc": "3.2.7"
136
136
  },
137
137
  "engines": {
138
138
  "node": ">=20.15.1"