@eodash/eodash 5.7.0 → 5.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) 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 +74 -20
  5. package/core/client/eodashSTAC/cql.js +64 -0
  6. package/core/client/eodashSTAC/createLayers.js +169 -116
  7. package/core/client/eodashSTAC/helpers.js +391 -98
  8. package/core/client/eodashSTAC/mosaic.js +416 -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 +25 -4
  12. package/core/client/store/states.js +20 -2
  13. package/core/client/types.ts +147 -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-ePbdvUTE.js} +2 -2
  17. package/dist/client/{DynamicWebComponent-CnKhYo0K.js → DynamicWebComponent-g5SdRbjY.js} +1 -1
  18. package/dist/client/{EodashChart-CLDqE93C.js → EodashChart-ChrkA5oS.js} +7 -6
  19. package/dist/client/{EodashDatePicker-CMPDT-ce.js → EodashDatePicker-CY1TrsDo.js} +3 -3
  20. package/dist/client/{EodashItemFilter-BpdA8QQa.js → EodashItemFilter-DzshHDlS.js} +2 -1
  21. package/dist/client/{EodashLayerControl-BHpDA4_0.js → EodashLayerControl-DMCeMkSd.js} +50 -20
  22. package/dist/client/{EodashLayoutSwitcher-B1fRUt7G.js → EodashLayoutSwitcher-iJ8mX1rF.js} +3 -3
  23. package/dist/client/{EodashMapBtns-Cpned0tc.js → EodashMapBtns-C7Cr7q5Y.js} +200 -86
  24. package/dist/client/EodashStacInfo-K7-iuXa7.js +169 -0
  25. package/dist/client/{EodashTools-1zHz26gv.js → EodashTools-BEK7e7JM.js} +4 -4
  26. package/dist/client/{ExportState-DbOm8hBI.js → ExportState-CqIzfMYQ.js} +6 -168
  27. package/dist/client/{Footer-BKg-VVkj.js → Footer-1P0cmBOZ.js} +1 -1
  28. package/dist/client/{Header-DCrwCvmY.js → Header-CkkBaBNh.js} +2 -2
  29. package/dist/client/{MobileLayout-vWSHpluo.js → MobileLayout-BPf49kDU.js} +2 -2
  30. package/dist/client/{PopUp-9uimfK49.js → PopUp-DPZq5SWI.js} +4 -168
  31. package/dist/client/{ProcessList-CTTIZa06.js → ProcessList-DuI6WpS1.js} +5 -5
  32. package/dist/client/VDivider-Bj9LG_JV.js +168 -0
  33. package/dist/client/{VImg-CrmB76ZY.js → VImg-Ddv5OyMz.js} +2 -2
  34. package/dist/client/{VMain-OKZNpcEG.js → VMain-7yqk_qC3.js} +1 -1
  35. package/dist/client/{VTooltip-CJw2FyWk.js → VTooltip-2hAJyEoa.js} +2 -2
  36. package/dist/client/{WidgetsContainer-BaWOnE5R.js → WidgetsContainer-2DOrlwCB.js} +1 -1
  37. package/dist/client/{asWebComponent-BHWpMuE3.js → asWebComponent-BlFN2lkB.js} +456 -306
  38. package/dist/client/{async-DSKj6g1f.js → async-B2H8ZwUK.js} +2 -2
  39. package/dist/client/{create-layers-config-CBoYedqB.js → create-layers-config-u_vn5hPk.js} +17 -17
  40. package/dist/client/dialog-transition-BrMkMiNa.js +170 -0
  41. package/dist/client/eo-dash.js +1 -1
  42. package/dist/client/{forwardRefs-DH51zPUr.js → forwardRefs-DAlror6d.js} +8 -87
  43. package/dist/client/{handling-BrcDDlgS.js → handling-B6I1V5eG.js} +3 -3
  44. package/dist/client/{helpers-DjZVl_WF.js → helpers-CBqIUSXJ.js} +794 -182
  45. package/dist/client/index-BWq1ZKaV.js +3168 -0
  46. package/dist/client/{index-CUjl-ZsI.js → index-CJ9UI3ln.js} +2 -2
  47. package/dist/client/{index-CSG_JoOA.js → index-DXLz4sFR.js} +62 -56
  48. package/dist/client/{index-1JKE68n3.js → index-DhKU6KqM.js} +211 -67
  49. package/dist/client/{index-Cu3-13Xg.js → index-DjQlbWbJ.js} +7 -6
  50. package/dist/client/mosaic-BFYLEwyx.js +455 -0
  51. package/dist/client/templates.js +250 -119
  52. package/dist/client/{transition-OHcz5Qq1.js → transition-D_W6Wn9v.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 +77 -18
  60. package/dist/types/core/client/eodashSTAC/mosaic.d.ts +56 -0
  61. package/dist/types/core/client/store/stac.d.ts +31 -7
  62. package/dist/types/core/client/store/states.d.ts +24 -2
  63. package/dist/types/core/client/types.d.ts +123 -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 +9 -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/states.d.ts +1 -1
  83. package/dist/types/widgets/EodashStacInfo.vue.d.ts +20 -0
  84. package/dist/types/widgets/EodashTimeSlider/index.vue.d.ts +20 -0
  85. package/dist/types/widgets/EodashTimeSlider/methods/index.d.ts +3 -8
  86. package/dist/types/widgets/EodashTimeSlider/types.d.ts +6 -16
  87. package/dist/types/widgets/EodashTools.vue.d.ts +5 -5
  88. package/package.json +33 -33
  89. package/templates/baseConfig.js +36 -6
  90. package/templates/compare.js +62 -7
  91. package/templates/expert.js +23 -0
  92. package/templates/explore.js +11 -5
  93. package/templates/lite.js +14 -0
  94. package/widgets/EodashChart.vue +1 -0
  95. package/widgets/EodashItemCatalog/index.vue +363 -35
  96. package/widgets/EodashItemCatalog/methods/filters.js +134 -70
  97. package/widgets/EodashItemCatalog/methods/handlers.js +113 -19
  98. package/widgets/EodashItemCatalog/methods/map.js +142 -28
  99. package/widgets/EodashLayerControl.vue +42 -11
  100. package/widgets/EodashMap/EodashMapBtns.vue +109 -48
  101. package/widgets/EodashMap/index.vue +89 -105
  102. package/widgets/EodashMap/methods/btns.js +37 -5
  103. package/widgets/EodashMap/methods/create-layers-config.js +16 -16
  104. package/widgets/EodashMap/methods/index.js +71 -8
  105. package/widgets/EodashMap/methods/use-map-loading.js +52 -0
  106. package/widgets/EodashProcess/index.vue +1 -0
  107. package/widgets/EodashProcess/states.js +1 -1
  108. package/widgets/EodashStacInfo.vue +64 -2
  109. package/widgets/EodashTimeSlider/index.vue +58 -2
  110. package/widgets/EodashTimeSlider/methods/index.js +5 -48
  111. package/widgets/EodashTimeSlider/types.ts +7 -17
  112. package/dist/client/EodashStacInfo-BQspAHKH.js +0 -107
  113. 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">[]>;
@@ -42,6 +42,16 @@ export function extractLayerConfig(collectionId: string, style?: import("../type
42
42
  * @param {string} basepath
43
43
  */
44
44
  export function extractCollectionUrls(stacObject: import("stac-ts").StacCatalog | import("stac-ts").StacCollection | import("stac-ts").StacItem | null, basepath: string): string[];
45
+ /**
46
+ * Fetches the daily pre-aggregation data for a STAC collection if available.
47
+ * Returns the raw AggregationCollection,
48
+ * or null if no daily pre-aggregation link exists, or the fetch fails.
49
+ *
50
+ * @param {import("stac-ts").StacCollection | undefined} stacCollection
51
+ * @param {string} fallbackBaseUrl - base for relative href resolution when no `self` link is present
52
+ * @returns {Promise<any | null>}
53
+ */
54
+ export function fetchPreAggregations(stacCollection: import("stac-ts").StacCollection | undefined, fallbackBaseUrl: string): Promise<any | null>;
45
55
  /**
46
56
  * Assigns projection code to the layer ID
47
57
  * @param {import("stac-ts").StacItem} item
@@ -72,7 +82,7 @@ export function revokeCollectionBlobUrls(collection: import("../eodashSTAC/Eodas
72
82
  *
73
83
  * @param {import("stac-ts").StacLink[] | import("stac-ts").StacItem[] |undefined |null} [linksOrItems]
74
84
  */
75
- export function getDatetimeProperty(linksOrItems?: import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined | null): string | undefined;
85
+ export function getDatetimeProperty(linksOrItems?: import("stac-ts").StacLink[] | import("stac-ts").StacItem[] | undefined | null): "datetime" | "start_datetime" | "end_datetime" | undefined;
76
86
  /**
77
87
  *
78
88
  * @param {*} stacObject
@@ -86,8 +96,10 @@ export function isSTACItem(stacObject: any): stacObject is import("stac-ts").Sta
86
96
  * @param {number} [limit=100] - The maximum number of items to fetch per request.
87
97
  * @param {boolean} [returnFirst] - If true, only the first page of results will be returned.
88
98
  * @param {number} [maxNumber=1000] - if the matched number of items exceed this, only the first page will be returned.
99
+ * @param {string | Date} [centerDatetime] - Date to center the search around if items exceed maxNumber
100
+ * @returns {Promise<import("stac-ts").StacItem[]>}
89
101
  */
90
- export function fetchApiItems(itemsUrl: string, query?: string, limit?: number, returnFirst?: boolean, maxNumber?: number): Promise<import("stac-ts").StacItem[]>;
102
+ export function fetchApiItems(itemsUrl: string, query?: string, limit?: number, returnFirst?: boolean, maxNumber?: number, centerDatetime?: string | Date): Promise<import("stac-ts").StacItem[]>;
91
103
  /**
92
104
  * @param {import ("stac-ts").StacCollection | undefined | null} collection
93
105
  * @returns {object}
@@ -98,9 +110,66 @@ export function extractLayerLegend(collection: import("stac-ts").StacCollection
98
110
  * @returns {object}
99
111
  */
100
112
  export function extractEoxLegendLink(link: import("stac-ts").StacLink): object;
113
+ /**
114
+ * Locate the first sub-schema whose `format` matches by walking `properties`
115
+ * and the `oneOf` / `allOf` / `anyOf` combinators. Returns the schema path
116
+ * (array of keys/indices) from the root schema to the matched node, or
117
+ * undefined if not found. Empty array means the input schema itself matched.
118
+ *
119
+ * @param {Record<string, any> | null | undefined} schema
120
+ * @param {string} [format="bands"]
121
+ * @returns {(string | number)[] | undefined}
122
+ */
123
+ export function getBandsProperty(schema: Record<string, any> | null | undefined, format?: string): (string | number)[] | undefined;
124
+ /**
125
+ * Checks whether a GeoZarr layer's bands changed in the jsonform output and,
126
+ * if so, rebuilds the source with the new 3 selected bands.
127
+ * Gamma and rescale are handled automatically by `applyUpdatedStyles` via
128
+ * `updateStyleVariables` — this function only manages source reconstruction.
129
+ * Uses the existing source constructor to avoid import-version mismatches.
130
+ *
131
+ * @param {import("ol/layer/Layer").default} olLayer - Layer from layerConfig:change event
132
+ * @param {Record<string, any>} jsonformValue - Current jsonform output
133
+ * @returns {boolean} true if the source was rebuilt
134
+ */
135
+ export function updateGeoZarrBands(olLayer: import("ol/layer/Layer").default, jsonformValue: Record<string, any>): boolean;
136
+ /**
137
+ * Applies titiler upscaling to an XYZ tile URL based on the matched endpoint config.
138
+ * - titiler v1: appends `@2x` to the `{y}` tile coordinate
139
+ * - titiler v2: adds `tilesize=512` query parameter (v2 removed the `@2x` suffix)
140
+ * Plain strings in the config default to v1 behavior for backward compatibility.
141
+ *
142
+ * @param {string} url - The XYZ tile URL template
143
+ * @param {Array<string | { url: string; titilerVersion?: 1 | 2 }>} upscalingEndpoints
144
+ * @returns {{ url: string; tileSize: [number, number] } | null} null if no endpoint matches
145
+ */
146
+ export function applyTitilerUpscaling(url: string, upscalingEndpoints: Array<string | {
147
+ url: string;
148
+ titilerVersion?: 1 | 2;
149
+ }>): {
150
+ url: string;
151
+ tileSize: [number, number];
152
+ } | null;
153
+ /**
154
+ * Picks the render presets for a collection, preferring the collection's own
155
+ * STAC `renders` extension and falling back to client-provided config
156
+ *
157
+ * @param {import("stac-ts").StacCollection | null | undefined} collection
158
+ * @param {Record<string, Record<string, import("../types").Render>> | undefined} [configRenders]
159
+ * @returns {Record<string, import("../types").Render> | undefined}
160
+ */
161
+ 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;
162
+ /**
163
+ * Serializes an object into a TiTiler query string. Arrays join with commas;
164
+ * nested arrays repeat the key (e.g. `rescale: [[0,1]]` -> `rescale=0,1`);
165
+ * objects are JSON-encoded. Shared by the render-extension and mosaic paths.
166
+ * @param {Record<string,any>} obj
167
+ * @returns {string}
168
+ */
169
+ export function encodeURLObject(obj: Record<string, any>): string;
101
170
  export function sanitizeBbox(bbox: number[]): number[];
102
171
  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<{
172
+ export function fetchStyle(stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection | null | undefined, linkKey?: string | undefined, assetKey?: string | undefined): Promise<{
104
173
  "fill-color"?: import("ol/style/flat.js").ColorExpression | undefined;
105
174
  "fill-pattern-src"?: import("ol/style/flat.js").StringExpression | undefined;
106
175
  "fill-pattern-size"?: import("ol/style/flat.js").SizeExpression | undefined;
@@ -488,28 +557,17 @@ export function fetchStyle(stacObject: import("stac-ts").StacItem | import("stac
488
557
  decimals?: number;
489
558
  }[];
490
559
  } | undefined>;
560
+ 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
561
  export function fetchAllStyles(stacObject: import("stac-ts").StacItem | import("stac-ts").StacCollection): Promise<Array<import("../types").EodashStyleJson>>;
492
562
  export function getProjectionCode(projection?: string | number | {
493
563
  name: string;
494
564
  def: string;
495
565
  }): 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
- };
566
+ export function extractLayerTimeValues(dates: Date[] | undefined, currentStep?: string | null): {
567
+ layerDatetime: Record<string, any> | undefined;
509
568
  timeControlValues: {
510
569
  date: string;
511
- itemId: string;
512
- }[];
570
+ }[] | undefined;
513
571
  };
514
572
  export function findLayersByLayerPrefix(layers: import("@eox/map").EoxLayer[], referenceLayer: import("@eox/map").EoxLayer | undefined): import("@eox/map").EoxLayer[];
515
573
  export function findLayer(layers: import("@eox/map").EoxLayer[], layer: string): import("@eox/map").EoxLayer | undefined;
@@ -520,3 +578,4 @@ export function createLayerID(collectionId: string, itemId: string, link: import
520
578
  export function createAssetID(collectionId: string, itemId: string, index: number): string;
521
579
  export function removeUnneededProperties(layers: Record<string, any>[]): Record<string, any>[];
522
580
  export function addTooltipInteraction(layer: Record<string, any>, style?: import("../types").EodashStyleJson): void;
581
+ 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,64 @@
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
+ }, "stac" | "stacEndpoint" | "rasterEndpoint" | "isApi" | "selectedStac" | "selectedCompareStac" | "selectedItem" | "selectedCompareItem" | "supportedUpscalingEndpoints">, Pick<{
15
23
  stacEndpoint: import("vue").Ref<string | null, string | null>;
24
+ rasterEndpoint: import("vue").Ref<string | null, string | null>;
16
25
  isApi: import("vue").Ref<boolean, boolean>;
17
26
  stac: import("vue").Ref<import("stac-ts").StacLink[] | null, import("stac-ts").StacLink[] | null>;
18
27
  init: (endpoint: import("../types").StacEndpoint) => void;
19
28
  loadSTAC: (url?: string) => Promise<void>;
20
29
  loadSelectedSTAC: (relativePath?: string, isPoi?: boolean, stacItem?: Object) => Promise<void>;
21
- loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean) => Promise<void>;
30
+ loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean, stacItem?: Object) => Promise<void>;
22
31
  resetSelectedCompareSTAC: () => Promise<void>;
23
32
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
24
33
  selectedCompareStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
25
34
  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[]>;
35
+ selectedCompareItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
36
+ supportedUpscalingEndpoints: import("vue").Ref<(string | {
37
+ url: string;
38
+ titilerVersion?: 1 | 2;
39
+ })[], (string | {
40
+ url: string;
41
+ titilerVersion?: 1 | 2;
42
+ })[]>;
27
43
  }, never>, Pick<{
28
44
  stacEndpoint: import("vue").Ref<string | null, string | null>;
45
+ rasterEndpoint: import("vue").Ref<string | null, string | null>;
29
46
  isApi: import("vue").Ref<boolean, boolean>;
30
47
  stac: import("vue").Ref<import("stac-ts").StacLink[] | null, import("stac-ts").StacLink[] | null>;
31
48
  init: (endpoint: import("../types").StacEndpoint) => void;
32
49
  loadSTAC: (url?: string) => Promise<void>;
33
50
  loadSelectedSTAC: (relativePath?: string, isPoi?: boolean, stacItem?: Object) => Promise<void>;
34
- loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean) => Promise<void>;
51
+ loadSelectedCompareSTAC: (relativePath?: string, isPOI?: boolean, stacItem?: Object) => Promise<void>;
35
52
  resetSelectedCompareSTAC: () => Promise<void>;
36
53
  selectedStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
37
54
  selectedCompareStac: import("vue").Ref<import("stac-ts").StacCollection | null, import("stac-ts").StacCollection | null>;
38
55
  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[]>;
56
+ selectedCompareItem: import("vue").Ref<import("stac-ts").StacLink | import("stac-ts").StacItem | null, import("stac-ts").StacLink | import("stac-ts").StacItem | null>;
57
+ supportedUpscalingEndpoints: import("vue").Ref<(string | {
58
+ url: string;
59
+ titilerVersion?: 1 | 2;
60
+ })[], (string | {
61
+ url: string;
62
+ titilerVersion?: 1 | 2;
63
+ })[]>;
40
64
  }, "init" | "loadSTAC" | "loadSelectedSTAC" | "loadSelectedCompareSTAC" | "resetSelectedCompareSTAC">>;
@@ -17,8 +17,10 @@ export const mapPosition: import("vue").Ref<(number | undefined)[]>;
17
17
  export const registeredProjections: string[];
18
18
  /** available projection to be rendered by `EodashMap` */
19
19
  export const availableMapProjection: import("vue").Ref<string, string>;
20
- /** @type {import("vue").Ref<import("@eox/map").EOxMap | null>} */
21
- export const mapEl: import("vue").Ref<import("@eox/map").EOxMap | null>;
20
+ /** @type {import("vue").Ref<import("@eox/map").EOxMap & { mapUpdateId?: number } | null>} */
21
+ export const mapEl: import("vue").Ref<(import("@eox/map").EOxMap & {
22
+ mapUpdateId?: number;
23
+ }) | null>;
22
24
  /** @type {import("vue").Ref<import("@eox/map").EOxMap | null>} */
23
25
  export const mapCompareEl: import("vue").Ref<import("@eox/map").EOxMap | null>;
24
26
  export const activeTemplate: import("vue").Ref<string, string>;
@@ -52,3 +54,23 @@ export const chartSpec: import("vue").Ref<import("vega-embed").VisualizationSpec
52
54
  * @type {import("vue").Ref<import("vega-embed").VisualizationSpec | null>}
53
55
  */
54
56
  export const compareChartSpec: import("vue").Ref<import("vega-embed").VisualizationSpec | null>;
57
+ /**
58
+ * Global loading state.
59
+ * - `loading.activeLoads` — increment/decrement to track concurrent loads
60
+ * - `loading.value` — derived boolean, true when `activeLoads > 0`
61
+ */
62
+ export const loading: {
63
+ activeLoads: number;
64
+ readonly value: boolean;
65
+ };
66
+ /**
67
+ * Adapter allows external widgets to hook into tooltip property transformation
68
+ * @type {import("vue").Ref<((param: {key: string, value: any}, map?: string) => {key: string, value: any} | undefined) | null>}
69
+ */
70
+ export const tooltipAdapter: import("vue").Ref<((param: {
71
+ key: string;
72
+ value: any;
73
+ }, map?: string) => {
74
+ key: string;
75
+ value: any;
76
+ } | undefined) | null>;