@eodash/eodash 5.7.0 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/core/client/components/EodashOverlay.vue +27 -4
  2. package/core/client/composables/DefineEodash.js +0 -1
  3. package/core/client/composables/DefineWidgets.js +3 -1
  4. package/core/client/eodashSTAC/EodashCollection.js +87 -24
  5. package/core/client/eodashSTAC/cql.js +64 -0
  6. package/core/client/eodashSTAC/createLayers.js +353 -187
  7. package/core/client/eodashSTAC/helpers.js +694 -110
  8. package/core/client/eodashSTAC/mosaic.js +422 -0
  9. package/core/client/plugins/axios.js +31 -1
  10. package/core/client/store/actions.js +1 -1
  11. package/core/client/store/stac.js +54 -4
  12. package/core/client/store/states.js +20 -2
  13. package/core/client/types.ts +152 -28
  14. package/core/client/utils/bands-editor/exampleSchema.json +50 -50
  15. package/core/client/utils/states.js +10 -0
  16. package/dist/client/{DashboardLayout-kRsmsNW5.js → DashboardLayout-DEs4f_Vy.js} +2 -2
  17. package/dist/client/{DynamicWebComponent-CnKhYo0K.js → DynamicWebComponent-PvnV88BA.js} +1 -1
  18. package/dist/client/EodashChart-D-3AGKZY.js +260 -0
  19. package/dist/client/{EodashDatePicker-CMPDT-ce.js → EodashDatePicker-Dm_goZzs.js} +3 -3
  20. package/dist/client/{EodashItemFilter-BpdA8QQa.js → EodashItemFilter-CJy3zYzD.js} +2 -1
  21. package/dist/client/{EodashLayerControl-BHpDA4_0.js → EodashLayerControl-rL8UnpkA.js} +55 -33
  22. package/dist/client/{EodashLayoutSwitcher-B1fRUt7G.js → EodashLayoutSwitcher-ZRlESI9O.js} +3 -3
  23. package/dist/client/{EodashMapBtns-Cpned0tc.js → EodashMapBtns-CG7u2Aq8.js} +227 -112
  24. package/dist/client/EodashStacInfo-CJhhxthD.js +169 -0
  25. package/dist/client/{EodashTools-1zHz26gv.js → EodashTools-CWyK8QJT.js} +4 -4
  26. package/dist/client/{ExportState-DbOm8hBI.js → ExportState-BXhy5TOU.js} +20 -174
  27. package/dist/client/{Footer-BKg-VVkj.js → Footer-DZPvnhcT.js} +1 -1
  28. package/dist/client/{Header-DCrwCvmY.js → Header-CiGsDE_a.js} +2 -2
  29. package/dist/client/{MobileLayout-vWSHpluo.js → MobileLayout-BJHW7x5V.js} +2 -2
  30. package/dist/client/{PopUp-9uimfK49.js → PopUp-7_XnhvCc.js} +4 -168
  31. package/dist/client/{ProcessList-CTTIZa06.js → ProcessList-LL_UCbvc.js} +5 -5
  32. package/dist/client/VDivider-DWYM0WUr.js +168 -0
  33. package/dist/client/{VImg-CrmB76ZY.js → VImg-B75dgw2K.js} +2 -2
  34. package/dist/client/{VMain-OKZNpcEG.js → VMain-DvMmOL4f.js} +1 -1
  35. package/dist/client/{VTooltip-CJw2FyWk.js → VTooltip-ClWHUmWL.js} +2 -2
  36. package/dist/client/{WidgetsContainer-BaWOnE5R.js → WidgetsContainer-BqaWs4ch.js} +1 -1
  37. package/dist/client/{asWebComponent-BHWpMuE3.js → asWebComponent-IZanwL-A.js} +677 -379
  38. package/dist/client/{async-DSKj6g1f.js → async-CiNIOBVz.js} +31 -29
  39. package/dist/client/{create-layers-config-CBoYedqB.js → create-layers-config-3S3y_kZg.js} +17 -17
  40. package/dist/client/dialog-transition-c4ZSnzac.js +170 -0
  41. package/dist/client/eo-dash.js +1 -1
  42. package/dist/client/{forwardRefs-DH51zPUr.js → forwardRefs-B-c1_6yo.js} +8 -87
  43. package/dist/client/{handling-BrcDDlgS.js → handling-NvY8Csry.js} +3 -4
  44. package/dist/client/{helpers-DjZVl_WF.js → helpers-BFuh19CP.js} +1094 -194
  45. package/dist/client/{index-1JKE68n3.js → index-1wMAyuNL.js} +219 -67
  46. package/dist/client/{index-CSG_JoOA.js → index-B8jGJSTA.js} +62 -56
  47. package/dist/client/{index-Cu3-13Xg.js → index-BKQQJkhy.js} +167 -61
  48. package/dist/client/index-D0jUyol8.js +3167 -0
  49. package/dist/client/{index-CUjl-ZsI.js → index-KGxz5Egv.js} +2 -2
  50. package/dist/client/mosaic-vHvSuih6.js +459 -0
  51. package/dist/client/templates.js +251 -121
  52. package/dist/client/{transition-OHcz5Qq1.js → transition-BkyUsZh_.js} +1 -1
  53. package/dist/node/cli.js +5 -5
  54. package/dist/node/types.d.ts +4 -0
  55. package/dist/types/core/client/composables/DefineEodash.d.ts +1 -1
  56. package/dist/types/core/client/eodashSTAC/EodashCollection.d.ts +57 -25
  57. package/dist/types/core/client/eodashSTAC/cql.d.ts +15 -0
  58. package/dist/types/core/client/eodashSTAC/createLayers.d.ts +42 -23
  59. package/dist/types/core/client/eodashSTAC/helpers.d.ts +118 -19
  60. package/dist/types/core/client/eodashSTAC/mosaic.d.ts +56 -0
  61. package/dist/types/core/client/store/stac.d.ts +38 -8
  62. package/dist/types/core/client/store/states.d.ts +24 -2
  63. package/dist/types/core/client/types.d.ts +128 -24
  64. package/dist/types/core/client/utils/states.d.ts +12 -0
  65. package/dist/types/templates/baseConfig.d.ts +1 -100
  66. package/dist/types/templates/compare.d.ts +32 -3
  67. package/dist/types/templates/expert.d.ts +18 -0
  68. package/dist/types/templates/explore.d.ts +10 -1
  69. package/dist/types/templates/lite.d.ts +11 -0
  70. package/dist/types/widgets/EodashChart.vue.d.ts +5 -3
  71. package/dist/types/widgets/EodashItemCatalog/index.vue.d.ts +129 -2
  72. package/dist/types/widgets/EodashItemCatalog/methods/filters.d.ts +28 -6
  73. package/dist/types/widgets/EodashItemCatalog/methods/handlers.d.ts +17 -4
  74. package/dist/types/widgets/EodashItemCatalog/methods/map.d.ts +16 -4
  75. package/dist/types/widgets/EodashLayerControl.vue.d.ts +35 -16
  76. package/dist/types/widgets/EodashMap/EodashMapBtns.vue.d.ts +14 -10
  77. package/dist/types/widgets/EodashMap/index.vue.d.ts +86 -37
  78. package/dist/types/widgets/EodashMap/methods/create-layers-config.d.ts +1 -1
  79. package/dist/types/widgets/EodashMap/methods/index.d.ts +5 -1
  80. package/dist/types/widgets/EodashMap/methods/use-map-loading.d.ts +1 -0
  81. package/dist/types/widgets/EodashProcess/index.vue.d.ts +5 -3
  82. package/dist/types/widgets/EodashProcess/methods/custom-endpoints/layers/eoxhub-workspaces-endpoint.d.ts +1 -1
  83. package/dist/types/widgets/EodashProcess/states.d.ts +1 -1
  84. package/dist/types/widgets/EodashStacInfo.vue.d.ts +20 -0
  85. package/dist/types/widgets/EodashTimeSlider/index.vue.d.ts +20 -0
  86. package/dist/types/widgets/EodashTimeSlider/methods/index.d.ts +3 -8
  87. package/dist/types/widgets/EodashTimeSlider/types.d.ts +6 -16
  88. package/dist/types/widgets/EodashTools.vue.d.ts +5 -5
  89. package/package.json +34 -34
  90. package/templates/baseConfig.js +37 -6
  91. package/templates/compare.js +61 -7
  92. package/templates/expert.js +24 -2
  93. package/templates/explore.js +12 -5
  94. package/templates/lite.js +13 -0
  95. package/widgets/EodashChart.vue +162 -21
  96. package/widgets/EodashItemCatalog/index.vue +363 -35
  97. package/widgets/EodashItemCatalog/methods/filters.js +134 -70
  98. package/widgets/EodashItemCatalog/methods/handlers.js +113 -19
  99. package/widgets/EodashItemCatalog/methods/map.js +141 -28
  100. package/widgets/EodashLayerControl.vue +51 -25
  101. package/widgets/EodashMap/EodashMapBtns.vue +109 -48
  102. package/widgets/EodashMap/index.vue +91 -105
  103. package/widgets/EodashMap/methods/btns.js +64 -31
  104. package/widgets/EodashMap/methods/create-layers-config.js +16 -16
  105. package/widgets/EodashMap/methods/index.js +71 -8
  106. package/widgets/EodashMap/methods/use-map-loading.js +58 -0
  107. package/widgets/EodashProcess/index.vue +136 -16
  108. package/widgets/EodashProcess/methods/composables.js +13 -0
  109. package/widgets/EodashProcess/methods/outputs.js +0 -1
  110. package/widgets/EodashProcess/methods/utils.js +29 -27
  111. package/widgets/EodashProcess/states.js +1 -1
  112. package/widgets/EodashStacInfo.vue +64 -2
  113. package/widgets/EodashTimeSlider/index.vue +58 -2
  114. package/widgets/EodashTimeSlider/methods/index.js +5 -48
  115. package/widgets/EodashTimeSlider/types.ts +7 -17
  116. package/widgets/ExportState.vue +13 -4
  117. package/dist/client/EodashChart-CLDqE93C.js +0 -144
  118. package/dist/client/EodashStacInfo-BQspAHKH.js +0 -107
  119. package/dist/client/index-5Jhsa8Xe.js +0 -570
package/dist/node/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{createLogger as F,defineConfig as C,searchForWorkspaceRoot as W,mergeConfig as O,preview as U,createServer as A,build as L}from"vite";import{readFileSync as P,existsSync as v}from"fs";import t from"path";import{Command as $}from"commander";import{fileURLToPath as H}from"url";import{readFile as I,writeFile as T,rm as R,cp as V}from"fs/promises";import J from"@vitejs/plugin-vue";import M,{transformAssetUrls as B}from"vite-plugin-vuetify";import{config as G}from"dotenv";const y=new $("eodash"),c=x(),l=x(process.cwd());JSON.parse(P(t.join(l,"package.json"),"utf-8"));const S=JSON.parse(P(t.join(c,"package.json"),"utf-8"))??{},Y=["commander","vite","@vitejs/plugin-vue","vite-plugin-vuetify","axios","dotenv"],z=Object.keys(S?.dependencies).filter(e=>!Y.includes(e));y.version(S.version,"-v, --version","output the current version"),y.allowExcessArguments().option("--publicDir <path>","path to statically served assets folder").option("--no-publicDir","stop serving static assets").option("--outDir <path>","minified output folder").option("-e, --entryPoint <path>","file exporting `createEodash`").option("-w, --widgets <path>","folder that contains vue components as internal widgets").option("--cacheDir <path>","cache folder").option("-r, --runtime <path>","file exporting eodash client runtime config").option("-b, --base <path>","base public path").option("-p, --port <port>","serving port").option("-o, --open","open default browser when the server starts").option("-c, --config <path>","path to eodash server and build configuration file").option("--host [IP address]","specify which IP addresses the server should listen on").option("-l, --lib","builds eodash as a web component library").option("--no-lib","builds eodash as an SPA").option("--no-host","do not expose server to the network").parse(process.argv);const s=await X(y.opts(),process.argv?.[2]),K=s.publicDir?t.resolve(l,s.publicDir):t.join(l,"./public"),b=t.join(l,"/src"),f=s.runtime?t.resolve(l,s.runtime):t.join(b,"./runtime.js"),m=s.entryPoint==="false"?!1:s.entryPoint?t.resolve(l,s.entryPoint):t.join(b,"/main.js"),D=s.widgets?t.resolve(l,s.widgets):t.join(b,"widgets"),E=t.join(l,"/.eodash"),w=s.outDir?t.resolve(l,s.outDir):t.join(E,"/dist"),Q=s.cacheDir?t.resolve(l,s.cacheDir):t.join(E,"cache"),j=F(void 0,{prefix:"[eodash]"});async function X(e,n){let r=e.config?t.resolve(l,e.config):t.join(l,"eodash.config.js"),o={};return v(r)?o=await import(r).then(i=>i.default instanceof Function?i.default():i.default).catch(i=>{console.error(i)}):r=null,{base:e.base??o?.base,port:Number(e.port??o?.[n]?.port),host:e.host??o?.[n]?.host,open:e.open??o?.[n]?.open,cacheDir:e.cacheDir??o?.cacheDir,entryPoint:e.entryPoint??o?.entryPoint,outDir:e.outDir??o?.outDir,publicDir:e.publicDir??o?.publicDir,runtime:e.runtime??o?.runtime,widgets:e.widgets??o?.widgets,lib:e.lib??o?.lib,vite:o.vite}}function x(e=import.meta.dirname??t.dirname(H(import.meta.url))){if(e?.split("/").length)return v(t.resolve(e,"package.json"))?e:x(t.resolve(e,".."));throw new Error("no package root found from "+e)}const k=`
2
+ import{createLogger as F,defineConfig as C,searchForWorkspaceRoot as U,mergeConfig as W,preview as O,createServer as A,build as L}from"vite";import{readFileSync as P,existsSync as v}from"fs";import i from"path";import{Command as T}from"commander";import{fileURLToPath as $}from"url";import{readFile as I,writeFile as H,rm as R,cp as M}from"fs/promises";import V from"@vitejs/plugin-vue";import J,{transformAssetUrls as B}from"vite-plugin-vuetify";import{config as G}from"dotenv";const y=new T("eodash"),c=x(),l=x(process.cwd());JSON.parse(P(i.join(l,"package.json"),"utf-8"));const S=JSON.parse(P(i.join(c,"package.json"),"utf-8"))??{},Y=["commander","vite","@vitejs/plugin-vue","vite-plugin-vuetify","axios","dotenv"],z=Object.keys(S?.dependencies).filter(e=>!Y.includes(e));y.version(S.version,"-v, --version","output the current version"),y.allowExcessArguments().option("--publicDir <path>","path to statically served assets folder").option("--no-publicDir","stop serving static assets").option("--outDir <path>","minified output folder").option("-e, --entryPoint <path>","file exporting `createEodash`").option("-w, --widgets <path>","folder that contains vue components as internal widgets").option("--cacheDir <path>","cache folder").option("-r, --runtime <path>","file exporting eodash client runtime config").option("-b, --base <path>","base public path").option("-p, --port <port>","serving port").option("-o, --open","open default browser when the server starts").option("-c, --config <path>","path to eodash server and build configuration file").option("--host [IP address]","specify which IP addresses the server should listen on").option("-l, --lib","builds eodash as a web component library").option("--no-lib","builds eodash as an SPA").option("--no-host","do not expose server to the network").parse(process.argv);const s=await Q(y.opts(),process.argv?.[2]),X=s.publicDir?i.resolve(l,s.publicDir):i.join(l,"./public"),b=i.join(l,"/src"),f=s.runtime?i.resolve(l,s.runtime):i.join(b,"./runtime.js"),m=s.entryPoint==="false"?!1:s.entryPoint?i.resolve(l,s.entryPoint):i.join(b,"/main.js"),D=s.widgets?i.resolve(l,s.widgets):i.join(b,"widgets"),E=i.join(l,"/.eodash"),w=s.outDir?i.resolve(l,s.outDir):i.join(E,"/dist"),K=s.cacheDir?i.resolve(l,s.cacheDir):i.join(E,"cache"),j=F(void 0,{prefix:"[eodash]"});async function Q(e,n){let r=e.config?i.resolve(l,e.config):i.join(l,"eodash.config.js"),t={};return v(r)?t=await import(r).then(o=>o.default instanceof Function?o.default():o.default).catch(o=>{console.error(o)}):r=null,{base:e.base??t?.base,port:Number(e.port??t?.[n]?.port),host:e.host??t?.[n]?.host,open:e.open??t?.[n]?.open,cacheDir:e.cacheDir??t?.cacheDir,entryPoint:e.entryPoint??t?.entryPoint,outDir:e.outDir??t?.outDir,publicDir:e.publicDir??t?.publicDir,runtime:e.runtime??t?.runtime,widgets:e.widgets??t?.widgets,lib:e.lib??t?.lib,vite:t.vite}}function x(e=import.meta.dirname??i.dirname($(import.meta.url))){if(e?.split("/").length)return v(i.resolve(e,"package.json"))?e:x(i.resolve(e,".."));throw new Error("no package root found from "+e)}const k=`
3
3
  <!DOCTYPE html>
4
4
  <html lang="en" style="overflow: hidden">
5
5
 
@@ -21,10 +21,10 @@ import{createLogger as F,defineConfig as C,searchForWorkspaceRoot as W,mergeConf
21
21
 
22
22
  <body>
23
23
  ${s.lib?`<eo-dash style="height:100%;"/>
24
- <script type="module" src="${t.resolve(`/@fs/${c}`,"core/client/asWebComponent.js")}"><\/script>
24
+ <script type="module" src="${i.resolve(`/@fs/${c}`,"core/client/asWebComponent.js")}"><\/script>
25
25
  `:` <div id="app" style="height:100%;" />
26
- <script type="module" src="${t.resolve(`/@fs/${c}`,"core/client/render.js")}"><\/script>
26
+ <script type="module" src="${i.resolve(`/@fs/${c}`,"core/client/render.js")}"><\/script>
27
27
  `}
28
28
  </body>
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/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}})();
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(t,o){if(this.environment.mode!=="build")return;if(i.basename(o)===n){let p=t;return/defineCustomElement\s*\([^{]*\{[\s\S]*?styles\s*:/.test(t)||(p=t.replace(/(defineCustomElement\s*\(\s*[^,{]*,?\s*\{)/,`$1
30
+ styles: ${r},`)),{code:p,map:null}}},generateBundle(t,o){let a="",p=[];const u=[];for(const d in o){const h=o[d];if(h.type==="chunk"&&h.code.includes(r)){a=d;break}}for(const d in o){const h=o[d];if(q(d)&&h.type==="asset"){let g=h.source.toString();g=g.replaceAll(":root",":host"),p.push(g),u.push(d)}}o[a].code=o[a].code.replace(r,JSON.stringify(p)),u.forEach(d=>{delete o[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:K,plugins:[V({features:{customElement:n==="build"&&s.lib},template:{transformAssetUrls:B,compilerOptions:{isCustomElement:t=>!t.includes("v-")&&t.includes("-")}}}),J({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:{"@":i.join(c,"core/client"),"^":i.join(c,"widgets"),"user:widgets":D,...m&&{"user:config":m}},extensions:[".js",".json",".jsx",".mjs",".ts",".tsx",".vue"]},server:{allowedHosts:!0,warmup:{clientFiles:[i.join(c,"core/client/**"),m]},port:s.port??3e3,open:s.open,fs:{allow:[U(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:X,build:{outDir:w,emptyOutDir:!0,target:"esnext",cssMinify:!0,...!s.lib&&n==="build"&&{manifest:!0,rollupOptions:{input:{main:i.join(c,"index.html"),templates:i.join(c,"templates/index.js")}}},...s.lib&&n==="build"&&{minify:!1,lib:{entry:i.join(c,"core/client/asWebComponent.js"),fileName:(t,o)=>o==="asWebComponent"?"eo-dash.js":"templates.js",cssFileName:"eo-dash",formats:["es"],name:"@eodash/eodash"},rollupOptions:{input:{asWebComponent:i.join(c,"core/client/asWebComponent.js"),templates:i.join(c,"templates/index.js")},external:t=>{const o=t.includes("vuetify")||t.endsWith(".css")||t.endsWith("styles"),a=z.some(u=>t.startsWith(u));return!o&&a||t==="user:config"&&!m},treeshake:{moduleSideEffects:!0,preset:"smallest"},onwarn(t,o){t.code!=="UNUSED_EXTERNAL_IMPORT"&&o(t)}}}}}}),N=C(async e=>s.vite?W(await _(e),s.vite):_(e));async function ee(e){const n=[f,i.join(D,"**/*.vue")];m&&n.push(m),e.watcher.add(n);let r="";const t=j.info;return j.info=(o,a)=>{if(o.includes("core")){const p=o.split("/")[0].split(" ");p.pop();const u=p.join(" ")+" "+r.replace(l,"");return t(u,a)}return t(o,a)},e.watcher.on("change",async o=>{r=o,o===f&&e.ws.send({type:"full-reload",path:o})}),()=>{e.middlewares.use(async(o,a,p)=>{if(o.originalUrl==="/@fs/config.js"||o.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(o.url?.endsWith(".html")){a.statusCode=200,a.setHeader("Content-Type","text/html");const u=await e.transformIndexHtml(o.url,k,o.originalUrl);a.end(u);return}p()})}}function te(e){G({quiet:!0});const n={};for(const r in process.env)e.some(t=>r.startsWith(t))&&(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 M(f,i.join(w,"config.js"),{recursive:!0}).catch(r=>{console.error(r)})};if(s.lib)await e();else{const n=i.join(c,"/index.html");await H(n,k).then(async()=>{await e(),await R(n).catch(()=>{console.error("failed to remove index.html")})})}};async function se(){(await O({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}})();
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @module CLI
3
+ */
4
+
1
5
  /**
2
6
  * Eodash CLI configuration
3
7
  *
@@ -1,2 +1,2 @@
1
- export function useEodashRuntime(runtimeConfig?: string | undefined | (() => Promise<import("../types").Eodash>) | Function): Promise<import("../types").Eodash | null | undefined>;
1
+ export function useEodashRuntime(runtimeConfig?: string | undefined | (() => Promise<import("../types").Eodash>) | Function): Promise<any>;
2
2
  export function createEodash<T extends import("../types").Eodash>(config: T | ((store: typeof import("../store").default) => Promise<T>)): Promise<T>;
@@ -4,6 +4,46 @@ export class EodashCollection {
4
4
  *
5
5
  * @param {import("stac-ts").StacCollection} indicator */
6
6
  static getIndicatorLayers(indicator: import("stac-ts").StacCollection): Promise<(Record<string, any> | {
7
+ type: string;
8
+ source: {
9
+ type: string;
10
+ normalize: boolean;
11
+ interpolate: boolean;
12
+ sources: {
13
+ attributions?: {} | undefined;
14
+ url: string;
15
+ }[];
16
+ };
17
+ properties: {
18
+ id: string;
19
+ title: string;
20
+ layerConfig: Record<string, unknown> | {
21
+ schema: any;
22
+ legend: any;
23
+ type: string;
24
+ } | undefined;
25
+ layerDatetime: Record<string, unknown> | undefined;
26
+ };
27
+ style: import("../types").EodashStyleJson | undefined;
28
+ } | {
29
+ style?: import("../types").EodashStyleJson | undefined;
30
+ type: string;
31
+ properties: {
32
+ id: string;
33
+ title: string;
34
+ layerConfig: Record<string, unknown> | {
35
+ schema: any;
36
+ legend: any;
37
+ type: string;
38
+ } | undefined;
39
+ layerDatetime: Record<string, unknown> | undefined;
40
+ };
41
+ source: {
42
+ type: string;
43
+ url: string;
44
+ bands: any;
45
+ };
46
+ } | {
7
47
  interactions: never[];
8
48
  style?: import("../types").EodashStyleJson | undefined;
9
49
  type: string;
@@ -52,28 +92,6 @@ export class EodashCollection {
52
92
  title: string;
53
93
  layerDatetime: Record<string, unknown> | undefined;
54
94
  };
55
- } | {
56
- type: string;
57
- source: {
58
- type: string;
59
- normalize: boolean;
60
- interpolate: boolean;
61
- sources: {
62
- attributions?: {} | undefined;
63
- url: string;
64
- }[];
65
- };
66
- properties: {
67
- id: string;
68
- title: string;
69
- layerConfig: Record<string, unknown> | {
70
- schema: any;
71
- legend: any;
72
- type: string;
73
- } | undefined;
74
- layerDatetime: Record<string, unknown> | undefined;
75
- };
76
- style: import("../types").EodashStyleJson | undefined;
77
95
  })[]>;
78
96
  /**
79
97
  * Returns Observation points layer from a list of EodashCollections
@@ -145,12 +163,26 @@ export class EodashCollection {
145
163
  fetchCollection(): Promise<import("stac-ts").StacCollection>;
146
164
  /**
147
165
  * Returns all item links sorted by datetime ascendingly
148
- * @param {boolean} [fields=false] if true, fetch items from API with only properties
166
+ * @param {boolean} [fields=false] if true, fetch items from API with only properties.datetime to optimize performance
149
167
  * @param {boolean} [first] - if true, returns the first page of items only (for API collections)
168
+ * @param {string | Date} [centerDatetime] - Date to center the search around if items exceed maxNumber
150
169
  * @returns {Promise<import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined>}
151
170
  */
152
- getItems(fields?: boolean, first?: boolean): Promise<import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined>;
153
- getDates(): Promise<Date[]>;
171
+ getItems(fields?: boolean, first?: boolean, centerDatetime?: string | Date): Promise<import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined>;
172
+ /**
173
+ * Returns all available dates for the collection, sorted as the source
174
+ * provides. Tries the daily `pre-aggregation` link first (cheap, single
175
+ * request), falls back to fetching items via the API. Use anywhere the
176
+ * collection's date list is needed (date picker, mosaic time control,
177
+ * single-item time slider).
178
+ *
179
+ * NOTE: only the `daily` aggregation interval is consumed today. Other
180
+ * intervals (`monthly`, `hourly`) fall through to the API path.
181
+ *
182
+ * @param {string | Date} [centerDatetime]
183
+ * @returns {Promise<Date[]>}
184
+ */
185
+ getDates(centerDatetime?: string | Date): Promise<Date[]>;
154
186
  getExtent(): Promise<import("stac-ts").Extents | undefined>;
155
187
  /**
156
188
  * Get closest Item Link from a certain date,
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Builds a CQL2-text filter string from an eox-itemfilter filters record.
3
+ *
4
+ * Handles range, multiselect, and select filter types.
5
+ * - Strips "properties." prefix from keys (catalog eox-itemfilter convention).
6
+ * - Double-quotes property names that contain non-word characters (e.g. "eo:cloud_cover").
7
+ * - Skips catalog-only keys (e.g. "collection").
8
+ *
9
+ * Compatible with both TiTiler's `filter` param and the STAC API `filter` param
10
+ * (both accept CQL2-text).
11
+ *
12
+ * @param {import("../types").ItemFilterFilters | null | undefined} filters
13
+ * @returns {string}
14
+ */
15
+ export function buildCqlFilter(filters: import("../types").ItemFilterFilters | null | undefined): string;
@@ -5,8 +5,49 @@
5
5
  * @param {import("stac-ts").StacItem | import("stac-ts").StacCollection } stacObject
6
6
  * @param {Record<string, unknown>} [layerDatetime]
7
7
  * @param {object | null} [extraProperties]
8
+ * @param {import("stac-ts").StacCollection | null} [collection] - Used to fall back to a collection-level style link.
8
9
  **/
9
- export function createLayersFromAssets(collectionId: string, title: string, assets: Record<string, import("stac-ts").StacAsset>, stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection, layerDatetime?: Record<string, unknown>, extraProperties?: object | null): Promise<({
10
+ export function createLayersFromAssets(collectionId: string, title: string, assets: Record<string, import("stac-ts").StacAsset>, stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection, layerDatetime?: Record<string, unknown>, extraProperties?: object | null, collection?: import("stac-ts").StacCollection | null): Promise<({
11
+ type: string;
12
+ source: {
13
+ type: string;
14
+ normalize: boolean;
15
+ interpolate: boolean;
16
+ sources: {
17
+ attributions?: {} | undefined;
18
+ url: string;
19
+ }[];
20
+ };
21
+ properties: {
22
+ id: string;
23
+ title: string;
24
+ layerConfig: Record<string, unknown> | {
25
+ schema: any;
26
+ legend: any;
27
+ type: string;
28
+ } | undefined;
29
+ layerDatetime: Record<string, unknown> | undefined;
30
+ };
31
+ style: import("../types").EodashStyleJson | undefined;
32
+ } | {
33
+ style?: import("../types").EodashStyleJson | undefined;
34
+ type: string;
35
+ properties: {
36
+ id: string;
37
+ title: string;
38
+ layerConfig: Record<string, unknown> | {
39
+ schema: any;
40
+ legend: any;
41
+ type: string;
42
+ } | undefined;
43
+ layerDatetime: Record<string, unknown> | undefined;
44
+ };
45
+ source: {
46
+ type: string;
47
+ url: string;
48
+ bands: any;
49
+ };
50
+ } | {
10
51
  interactions: never[];
11
52
  style?: import("../types").EodashStyleJson | undefined;
12
53
  type: string;
@@ -55,28 +96,6 @@ export function createLayersFromAssets(collectionId: string, title: string, asse
55
96
  title: string;
56
97
  layerDatetime: Record<string, unknown> | undefined;
57
98
  };
58
- } | {
59
- type: string;
60
- source: {
61
- type: string;
62
- normalize: boolean;
63
- interpolate: boolean;
64
- sources: {
65
- attributions?: {} | undefined;
66
- url: string;
67
- }[];
68
- };
69
- properties: {
70
- id: string;
71
- title: string;
72
- layerConfig: Record<string, unknown> | {
73
- schema: any;
74
- legend: any;
75
- type: string;
76
- } | undefined;
77
- layerDatetime: Record<string, unknown> | undefined;
78
- };
79
- style: import("../types").EodashStyleJson | undefined;
80
99
  })[]>;
81
100
  export function createLayersFromLinks(collectionId: string, title: string, item: import("stac-ts").StacItem, layerDatetime?: Record<string, any>, extraProperties?: object | null, collection?: import("stac-ts").StacCollection): Promise<Record<string, any>[]>;
82
101
  export function createLayerFromRender(rasterURL: string, collection: import("stac-ts").StacCollection | undefined | null, item: import("stac-ts").StacItem | undefined | null, extraProperties?: Record<string, any>): Promise<import("@eox/map/src/layers").EOxLayerType<"Tile", "XYZ">[]>;
@@ -13,6 +13,14 @@ export function generateFeatures(links?: import("stac-ts").StacLink[], extraProp
13
13
  };
14
14
  features: import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties>[];
15
15
  };
16
+ /**
17
+ * Fetches or extracts the raster form configuration for a STAC object.
18
+ * Supports direct JSON objects, data URIs, and URL strings.
19
+ *
20
+ * @param {string|object|undefined} rasterform - The rasterform property from the STAC object.
21
+ * @returns {Promise<import("../types").EodashRasterJSONForm|undefined>}
22
+ */
23
+ export function fetchRasterForm(rasterform: string | object | undefined): Promise<import("../types").EodashRasterJSONForm | undefined>;
16
24
  /**
17
25
  * Spearates and extracts layerConfig (jsonform schema & legend) from a style json
18
26
  *
@@ -32,6 +40,13 @@ export function extractLayerConfig(collectionId: string, style?: import("../type
32
40
  layerConfig: Record<string, unknown> | undefined;
33
41
  style: import("../types").EodashStyleJson | undefined;
34
42
  };
43
+ /**
44
+ * Recursively extracts URL keys from a JSON Schema.
45
+ * Maps schema property names to their defined `url_key`.
46
+ * @param {Record<string, any> | null | undefined} schema
47
+ * @returns {Record<string, string>}
48
+ */
49
+ export function extractUrlKeys(schema: Record<string, any> | null | undefined): Record<string, string>;
35
50
  /**
36
51
  * Function to extract collection urls from an indicator
37
52
  * @param {import("stac-ts").StacCatalog
@@ -42,6 +57,16 @@ export function extractLayerConfig(collectionId: string, style?: import("../type
42
57
  * @param {string} basepath
43
58
  */
44
59
  export function extractCollectionUrls(stacObject: import("stac-ts").StacCatalog | import("stac-ts").StacCollection | import("stac-ts").StacItem | null, basepath: string): string[];
60
+ /**
61
+ * Fetches the daily pre-aggregation data for a STAC collection if available.
62
+ * Returns the raw AggregationCollection,
63
+ * or null if no daily pre-aggregation link exists, or the fetch fails.
64
+ *
65
+ * @param {import("stac-ts").StacCollection | undefined} stacCollection
66
+ * @param {string} fallbackBaseUrl - base for relative href resolution when no `self` link is present
67
+ * @returns {Promise<any | null>}
68
+ */
69
+ export function fetchPreAggregations(stacCollection: import("stac-ts").StacCollection | undefined, fallbackBaseUrl: string): Promise<any | null>;
45
70
  /**
46
71
  * Assigns projection code to the layer ID
47
72
  * @param {import("stac-ts").StacItem} item
@@ -72,7 +97,7 @@ export function revokeCollectionBlobUrls(collection: import("../eodashSTAC/Eodas
72
97
  *
73
98
  * @param {import("stac-ts").StacLink[] | import("stac-ts").StacItem[] |undefined |null} [linksOrItems]
74
99
  */
75
- export function getDatetimeProperty(linksOrItems?: import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined | null): string | undefined;
100
+ export function getDatetimeProperty(linksOrItems?: import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined | null): "datetime" | "start_datetime" | "end_datetime" | undefined;
76
101
  /**
77
102
  *
78
103
  * @param {*} stacObject
@@ -86,8 +111,10 @@ export function isSTACItem(stacObject: any): stacObject is import("stac-ts").Sta
86
111
  * @param {number} [limit=100] - The maximum number of items to fetch per request.
87
112
  * @param {boolean} [returnFirst] - If true, only the first page of results will be returned.
88
113
  * @param {number} [maxNumber=1000] - if the matched number of items exceed this, only the first page will be returned.
114
+ * @param {string | Date} [centerDatetime] - Date to center the search around if items exceed maxNumber
115
+ * @returns {Promise<import("stac-ts").StacItem[]>}
89
116
  */
90
- export function fetchApiItems(itemsUrl: string, query?: string, limit?: number, returnFirst?: boolean, maxNumber?: number): Promise<import("stac-ts").StacItem[]>;
117
+ export function fetchApiItems(itemsUrl: string, query?: string, limit?: number, returnFirst?: boolean, maxNumber?: number, centerDatetime?: string | Date): Promise<import("stac-ts").StacItem[]>;
91
118
  /**
92
119
  * @param {import ("stac-ts").StacCollection | undefined | null} collection
93
120
  * @returns {object}
@@ -98,9 +125,91 @@ export function extractLayerLegend(collection: import("stac-ts").StacCollection
98
125
  * @returns {object}
99
126
  */
100
127
  export function extractEoxLegendLink(link: import("stac-ts").StacLink): object;
128
+ /**
129
+ * Locate the first sub-schema whose `format` matches by walking `properties`
130
+ * and the `oneOf` / `allOf` / `anyOf` combinators. Returns the schema path
131
+ * (array of keys/indices) from the root schema to the matched node, or
132
+ * undefined if not found. Empty array means the input schema itself matched.
133
+ *
134
+ * @param {Record<string, any> | null | undefined} schema
135
+ * @param {string} [format="bands"]
136
+ * @returns {(string | number)[] | undefined}
137
+ */
138
+ export function getBandsProperty(schema: Record<string, any> | null | undefined, format?: string): (string | number)[] | undefined;
139
+ /**
140
+ * Checks whether a GeoZarr layer's bands changed in the jsonform output and,
141
+ * if so, rebuilds the source with the new 3 selected bands.
142
+ * Gamma and rescale are handled automatically by `applyUpdatedStyles` via
143
+ * `updateStyleVariables` — this function only manages source reconstruction.
144
+ * Uses the existing source constructor to avoid import-version mismatches.
145
+ *
146
+ * @param {import("ol/layer/Layer").default} olLayer - Layer from layerConfig:change event
147
+ * @param {Record<string, any>} jsonformValue - Current jsonform output
148
+ * @returns {boolean} true if the source was rebuilt
149
+ */
150
+ export function updateGeoZarrBands(olLayer: import("ol/layer/Layer").default, jsonformValue: Record<string, any>): boolean;
151
+ /**
152
+ * Checks whether a VectorTile layer's URL needs to be updated based on jsonform output.
153
+ * If the style's jsonform schema has properties with `url_key` defined, their values
154
+ * are injected as query parameters into the source URL.
155
+ *
156
+ * @param {import("ol/layer/Layer").default} olLayer - Layer from layerConfig:change event
157
+ * @param {Record<string, any>} jsonformValue - Current jsonform output
158
+ * @returns {boolean} true if the URL was updated
159
+ */
160
+ export function updateLayerUrl(olLayer: import("ol/layer/Layer").default, jsonformValue: Record<string, any>): boolean;
161
+ /**
162
+ * Applies titiler upscaling to an XYZ tile URL based on the matched endpoint config.
163
+ * - titiler v1: appends `@2x` to the `{y}` tile coordinate
164
+ * - titiler v2: adds `tilesize=512` query parameter (v2 removed the `@2x` suffix)
165
+ * Plain strings in the config default to v1 behavior for backward compatibility.
166
+ *
167
+ * @param {string} url - The XYZ tile URL template
168
+ * @param {Array<string | { url: string; titilerVersion?: 1 | 2 }>} upscalingEndpoints
169
+ * @returns {{ url: string; tileSize: [number, number] } | null} null if no endpoint matches
170
+ */
171
+ export function applyTitilerUpscaling(url: string, upscalingEndpoints: Array<string | {
172
+ url: string;
173
+ titilerVersion?: 1 | 2;
174
+ }>): {
175
+ url: string;
176
+ tileSize: [number, number];
177
+ } | null;
178
+ /**
179
+ * Picks the render presets for a collection, preferring client-provided config
180
+ * (`options.renders[collectionId]`) and falling back to the collection's own STAC
181
+ * `renders` extension when no config entry exists.
182
+ * @param {import("stac-ts").StacCollection | null | undefined} collection
183
+ * @param {Record<string, Record<string, import("../types").Render>> | undefined} [configRenders]
184
+ * @returns {Record<string, import("../types").Render> | undefined}
185
+ */
186
+ export function resolveRenders(collection: import("stac-ts").StacCollection | null | undefined, configRenders?: Record<string, Record<string, import("../types").Render>> | undefined): Record<string, import("../types").Render> | undefined;
187
+ /**
188
+ * TiTiler expects rescale as [min,max] pairs; chunks a flat numeric list
189
+ * into pairs (e.g. [0,0.4,0,0.1] -> [[0,0.4],[0,0.1]]). Nested input passes through.
190
+ * @param {number[]|number[][]|undefined} rescale - flat or nested rescale values
191
+ * @returns {number[][]|undefined} rescale as [min,max] pairs
192
+ */
193
+ export function normalizeRescale(rescale: number[] | number[][] | undefined): number[][] | undefined;
194
+ /**
195
+ * Drops NaN nodata values; NaN is already the implicit fill for float data,
196
+ * so forwarding `nodata=nan` to TiTiler is redundant.
197
+ * @param {string|number|undefined} nodata - nodata value from render/asset metadata
198
+ * @returns {string|number|undefined} nodata, or undefined when it is NaN
199
+ */
200
+ export function normalizeNodata(nodata: string | number | undefined): string | number | undefined;
201
+ /**
202
+ * Serializes an object into a TiTiler query string. Arrays repeat the key per
203
+ * element (TiTiler list params, e.g. `assets=a&assets=b`); nested elements
204
+ * comma-join (`rescale: [[0,1],[0,2]]` -> `rescale=0,1&rescale=0,2`); objects
205
+ * are JSON-encoded. Shared by the render-extension and mosaic paths.
206
+ * @param {Record<string,any>} obj
207
+ * @returns {string}
208
+ */
209
+ export function encodeURLObject(obj: Record<string, any>): string;
101
210
  export function sanitizeBbox(bbox: number[]): number[];
102
211
  export function extractRoles(properties: Record<string, any>, linkOrAsset: import("stac-ts").StacLink | import("stac-ts").StacAsset): Record<string, any>;
103
- export function fetchStyle(stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection, linkKey?: string | undefined, assetKey?: string | undefined): Promise<{
212
+ export function fetchStyle(stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection | null | undefined, linkKey?: string | undefined, assetKey?: string | undefined): Promise<{
104
213
  "fill-color"?: import("ol/style/flat.js").ColorExpression | undefined;
105
214
  "fill-pattern-src"?: import("ol/style/flat.js").StringExpression | undefined;
106
215
  "fill-pattern-size"?: import("ol/style/flat.js").SizeExpression | undefined;
@@ -488,28 +597,17 @@ export function fetchStyle(stacObject: import("stac-ts").StacItem | import("stac
488
597
  decimals?: number;
489
598
  }[];
490
599
  } | undefined>;
600
+ export function resolveStyle(item: import("stac-ts").StacItem | import("stac-ts").StacCollection, collection: import("stac-ts").StacCollection | null | undefined, linkKey?: string, assetKey?: string): Promise<import("../types").EodashStyleJson | undefined>;
491
601
  export function fetchAllStyles(stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection): Promise<Array<import("../types").EodashStyleJson>>;
492
602
  export function getProjectionCode(projection?: string | number | {
493
603
  name: string;
494
604
  def: string;
495
605
  }): string;
496
- export function extractLayerTimeValues(items?: import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined, currentStep?: string | null): {
497
- layerDatetime: undefined;
498
- timeControlValues: undefined;
499
- } | {
500
- layerDatetime: {
501
- controlValues: string[];
502
- currentStep: string;
503
- slider: boolean;
504
- navigation: boolean;
505
- play: boolean;
506
- displayFormat: string;
507
- animateOnClickInterval: boolean;
508
- };
606
+ export function extractLayerTimeValues(dates: Date[] | undefined, currentStep?: string | null): {
607
+ layerDatetime: Record<string, any> | undefined;
509
608
  timeControlValues: {
510
609
  date: string;
511
- itemId: string;
512
- }[];
610
+ }[] | undefined;
513
611
  };
514
612
  export function findLayersByLayerPrefix(layers: import("@eox/map").EoxLayer[], referenceLayer: import("@eox/map").EoxLayer | undefined): import("@eox/map").EoxLayer[];
515
613
  export function findLayer(layers: import("@eox/map").EoxLayer[], layer: string): import("@eox/map").EoxLayer | undefined;
@@ -518,5 +616,6 @@ export function replaceLayer(layers: import("@eox/map").EoxLayer[], toRemove: st
518
616
  export function getColFromLayer(indicators: import("../eodashSTAC/EodashCollection.js").EodashCollection[], layer: import("ol/layer").Layer): Promise<import("../eodashSTAC/EodashCollection.js").EodashCollection | undefined>;
519
617
  export function createLayerID(collectionId: string, itemId: string, link: import("stac-ts").StacLink, projectionCode: string | import("ol/proj").ProjectionLike): string;
520
618
  export function createAssetID(collectionId: string, itemId: string, index: number): string;
521
- export function removeUnneededProperties(layers: Record<string, any>[]): Record<string, any>[];
619
+ export function removeUnneededProperties(layers: Record<string, any>[], formValues?: {}): Record<string, any>[];
522
620
  export function addTooltipInteraction(layer: Record<string, any>, style?: import("../types").EodashStyleJson): void;
621
+ export function fetchSplitItems(itemsUrl: string, query: string, centerDatetime: string | Date, maxNumber: number): Promise<import("stac-ts").StacItem[]>;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Modifies the layers collection to display the mosaic layer.
3
+ * @param {string} mosaicEndpoint - The TileJSON URL for the mosaic.
4
+ * @param {Record<string, string> | null} [params] - Query params forwarded to the tilejson URL.
5
+ */
6
+ export function renderMosaic(mosaicEndpoint: string, params?: Record<string, string> | null): Promise<void>;
7
+ /**
8
+ * Updates the mosaic layer based on the current filters.
9
+ * @param {string | undefined | null} mosaicEndpoint - The TileJSON URL for the mosaic.
10
+ * @param {{ timeRange?: [string, string]; filters?: import("../types").ItemFilterFilters }} [queries]
11
+ */
12
+ export function updateMosaicLayer(mosaicEndpoint: string | undefined | null, { timeRange, filters }?: {
13
+ timeRange?: [string, string];
14
+ filters?: import("../types").ItemFilterFilters;
15
+ }): Promise<void>;
16
+ /**
17
+ * Renders the latest mosaic layer stored in the shared mosaic state.
18
+ */
19
+ export function renderLatestMosaic(): void;
20
+ /**
21
+ * @param {string} mosaicEndpoint - The TileJSON URL for the mosaic.
22
+ * @param {[string, string] | undefined} timeRange
23
+ */
24
+ export function initMosaic(mosaicEndpoint: string, timeRange: [string, string] | undefined): Promise<void>;
25
+ /**
26
+ * Vue composable that initializes the mosaic layer and keeps it in sync with
27
+ * map zoom and layer updates.
28
+ * @param {string | null | undefined} mosaicEndpoint - Pass null/undefined to disable.
29
+ * @param {import("vue").Ref<[string, string]> | undefined} timeRange
30
+ * @param {string[]} [indicators] - If provided, mosaic only activates for these collection IDs.
31
+ */
32
+ export function useInitMosaic(mosaicEndpoint: string | null | undefined, timeRange: import("vue").Ref<[string, string]> | undefined, indicators?: string[]): void;
33
+ /**
34
+ * Returns the OL-equivalent zoom from `mapPosition[2]`. In 2D the raw value
35
+ * is already the OL zoom. In globe mode the raw value is camera altitude in
36
+ * meters; convert it via eox-map's internal formula so callers can compare
37
+ * against a single (2D-style) threshold.
38
+ *
39
+ * @param {number} rawZ
40
+ * @returns {number}
41
+ */
42
+ export function normalizeGlobeZoom(rawZ: number): number;
43
+ /**
44
+ * check whether the filtered dataset has any assets in the current 2D view
45
+ */
46
+ export function checkMosaicDataInView(): Promise<void>;
47
+ export function useMosaicState(): {
48
+ latestLayer: import("vue").ShallowRef<Record<string, any> | null, Record<string, any> | null>;
49
+ query: import("vue").Ref<Record<string, string> | null, Record<string, string> | null>;
50
+ visibilityThreshold: import("vue").Ref<number, number>;
51
+ isItemView: import("vue").Ref<boolean, boolean>;
52
+ hasDataInView: import("vue").Ref<boolean, boolean>;
53
+ returnToOverview: import("@vueuse/core").UseEventBusReturn<unknown, any>;
54
+ mosaicEndpoint: import("vue").ComputedRef<string | null>;
55
+ };
56
+ export function useScheduleMosaicUpdate(): import("@vueuse/shared").UseDebounceFnReturn<(mosaicEndpoint: string | undefined | null, timeRange: [string, string] | undefined, filters?: import("../types").ItemFilterFilters) => void>;
@@ -1,40 +1,70 @@
1
1
  export const useSTAcStore: import("pinia").StoreDefinition<"stac", Pick<{
2
2
  stacEndpoint: import("vue").Ref<string | null, string | null>;
3
+ rasterEndpoint: import("vue").Ref<string | null, string | null>;
3
4
  isApi: import("vue").Ref<boolean, boolean>;
4
5
  stac: import("vue").Ref<import("stac-ts").StacLink[] | null, import("stac-ts").StacLink[] | null>;
5
6
  init: (endpoint: import("../types").StacEndpoint) => void;
6
7
  loadSTAC: (url?: string) => Promise<void>;
7
8
  loadSelectedSTAC: (relativePath?: string, isPoi?: boolean, stacItem?: Object) => Promise<void>;
8
- loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean) => Promise<void>;
9
+ loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean, stacItem?: Object) => Promise<void>;
9
10
  resetSelectedCompareSTAC: () => Promise<void>;
10
11
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
11
12
  selectedCompareStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
12
13
  selectedItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
13
- supportedUpscalingEndpoints: import("vue").Ref<string[], string[]>;
14
- }, "stac" | "stacEndpoint" | "isApi" | "selectedStac" | "selectedCompareStac" | "selectedItem" | "supportedUpscalingEndpoints">, Pick<{
14
+ selectedCompareItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
15
+ supportedUpscalingEndpoints: import("vue").Ref<(string | {
16
+ url: string;
17
+ titilerVersion?: 1 | 2;
18
+ })[], (string | {
19
+ url: string;
20
+ titilerVersion?: 1 | 2;
21
+ })[]>;
22
+ colormapRegistry: import("vue").Ref<Record<string, string[]> | null, Record<string, string[]> | null>;
23
+ loadColormapRegistry: (registry: string | Record<string, string[]>) => Promise<void>;
24
+ }, "stac" | "stacEndpoint" | "rasterEndpoint" | "isApi" | "selectedStac" | "selectedCompareStac" | "selectedItem" | "selectedCompareItem" | "supportedUpscalingEndpoints" | "colormapRegistry">, Pick<{
15
25
  stacEndpoint: import("vue").Ref<string | null, string | null>;
26
+ rasterEndpoint: import("vue").Ref<string | null, string | null>;
16
27
  isApi: import("vue").Ref<boolean, boolean>;
17
28
  stac: import("vue").Ref<import("stac-ts").StacLink[] | null, import("stac-ts").StacLink[] | null>;
18
29
  init: (endpoint: import("../types").StacEndpoint) => void;
19
30
  loadSTAC: (url?: string) => Promise<void>;
20
31
  loadSelectedSTAC: (relativePath?: string, isPoi?: boolean, stacItem?: Object) => Promise<void>;
21
- loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean) => Promise<void>;
32
+ loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean, stacItem?: Object) => Promise<void>;
22
33
  resetSelectedCompareSTAC: () => Promise<void>;
23
34
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
24
35
  selectedCompareStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
25
36
  selectedItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
26
- supportedUpscalingEndpoints: import("vue").Ref<string[], string[]>;
37
+ selectedCompareItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
38
+ supportedUpscalingEndpoints: import("vue").Ref<(string | {
39
+ url: string;
40
+ titilerVersion?: 1 | 2;
41
+ })[], (string | {
42
+ url: string;
43
+ titilerVersion?: 1 | 2;
44
+ })[]>;
45
+ colormapRegistry: import("vue").Ref<Record<string, string[]> | null, Record<string, string[]> | null>;
46
+ loadColormapRegistry: (registry: string | Record<string, string[]>) => Promise<void>;
27
47
  }, never>, Pick<{
28
48
  stacEndpoint: import("vue").Ref<string | null, string | null>;
49
+ rasterEndpoint: import("vue").Ref<string | null, string | null>;
29
50
  isApi: import("vue").Ref<boolean, boolean>;
30
51
  stac: import("vue").Ref<import("stac-ts").StacLink[] | null, import("stac-ts").StacLink[] | null>;
31
52
  init: (endpoint: import("../types").StacEndpoint) => void;
32
53
  loadSTAC: (url?: string) => Promise<void>;
33
54
  loadSelectedSTAC: (relativePath?: string, isPoi?: boolean, stacItem?: Object) => Promise<void>;
34
- loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean) => Promise<void>;
55
+ loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean, stacItem?: Object) => Promise<void>;
35
56
  resetSelectedCompareSTAC: () => Promise<void>;
36
57
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
37
58
  selectedCompareStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
38
59
  selectedItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
39
- supportedUpscalingEndpoints: import("vue").Ref<string[], string[]>;
40
- }, "init" | "loadSTAC" | "loadSelectedSTAC" | "loadSelectedCompareSTAC" | "resetSelectedCompareSTAC">>;
60
+ selectedCompareItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
61
+ supportedUpscalingEndpoints: import("vue").Ref<(string | {
62
+ url: string;
63
+ titilerVersion?: 1 | 2;
64
+ })[], (string | {
65
+ url: string;
66
+ titilerVersion?: 1 | 2;
67
+ })[]>;
68
+ colormapRegistry: import("vue").Ref<Record<string, string[]> | null, Record<string, string[]> | null>;
69
+ loadColormapRegistry: (registry: string | Record<string, string[]>) => Promise<void>;
70
+ }, "init" | "loadSTAC" | "loadSelectedSTAC" | "loadSelectedCompareSTAC" | "resetSelectedCompareSTAC" | "loadColormapRegistry">>;