@geoql/v-maplibre 1.9.0 → 1.11.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 (100) hide show
  1. package/README.md +26 -0
  2. package/dist/arc-oPHfD4K7.js +2 -0
  3. package/dist/arc-oPHfD4K7.js.map +1 -0
  4. package/dist/arrow-4ecDVUFv.js +2 -0
  5. package/dist/arrow-4ecDVUFv.js.map +1 -0
  6. package/dist/bitmap-C04WgKea.js +2 -0
  7. package/dist/bitmap-C04WgKea.js.map +1 -0
  8. package/dist/cog-Cq7xvN9B.js +2 -0
  9. package/dist/cog-Cq7xvN9B.js.map +1 -0
  10. package/dist/column-Dx4A711w.js +2 -0
  11. package/dist/column-Dx4A711w.js.map +1 -0
  12. package/dist/contour-Dgvb_bGm.js +2 -0
  13. package/dist/contour-Dgvb_bGm.js.map +1 -0
  14. package/dist/generic-BKvcZn9n.js +2 -0
  15. package/dist/generic-BKvcZn9n.js.map +1 -0
  16. package/dist/geoarrow-path-B2LJ956d.js +2 -0
  17. package/dist/geoarrow-path-B2LJ956d.js.map +1 -0
  18. package/dist/geoarrow-polygon-C9mZ7552.js +2 -0
  19. package/dist/geoarrow-polygon-C9mZ7552.js.map +1 -0
  20. package/dist/geoarrow-scatterplot-CM5842q_.js +2 -0
  21. package/dist/geoarrow-scatterplot-CM5842q_.js.map +1 -0
  22. package/dist/geoarrow-solid-polygon-DIm9mciL.js +2 -0
  23. package/dist/geoarrow-solid-polygon-DIm9mciL.js.map +1 -0
  24. package/dist/geoarrow-text-ClY3q_nR.js +2 -0
  25. package/dist/geoarrow-text-ClY3q_nR.js.map +1 -0
  26. package/dist/geoarrow-trips-BqbIoMt8.js +2 -0
  27. package/dist/geoarrow-trips-BqbIoMt8.js.map +1 -0
  28. package/dist/geohash-Pq83atW2.js +2 -0
  29. package/dist/geohash-Pq83atW2.js.map +1 -0
  30. package/dist/geojson-cOxJcO-8.js +2 -0
  31. package/dist/geojson-cOxJcO-8.js.map +1 -0
  32. package/dist/great-circle-C6GDbX1c.js +2 -0
  33. package/dist/great-circle-C6GDbX1c.js.map +1 -0
  34. package/dist/grid-BPfXfID8.js +2 -0
  35. package/dist/grid-BPfXfID8.js.map +1 -0
  36. package/dist/grid-cell-T0-xdlk_.js +2 -0
  37. package/dist/grid-cell-T0-xdlk_.js.map +1 -0
  38. package/dist/h3-cluster-BsvMbaYv.js +2 -0
  39. package/dist/h3-cluster-BsvMbaYv.js.map +1 -0
  40. package/dist/h3-hexagon-Cx1qlgKb.js +2 -0
  41. package/dist/h3-hexagon-Cx1qlgKb.js.map +1 -0
  42. package/dist/heatmap-ByafStP6.js +2 -0
  43. package/dist/heatmap-ByafStP6.js.map +1 -0
  44. package/dist/hexagon-CWRkTkkj.js +2 -0
  45. package/dist/hexagon-CWRkTkkj.js.map +1 -0
  46. package/dist/icon-WggKPJv7.js +2 -0
  47. package/dist/icon-WggKPJv7.js.map +1 -0
  48. package/dist/index.d.ts +265 -4733
  49. package/dist/index.js +1 -42
  50. package/dist/index.js.map +1 -1
  51. package/dist/line-B5e9w1td.js +2 -0
  52. package/dist/line-B5e9w1td.js.map +1 -0
  53. package/dist/mosaic-Cl7rtAXN.js +43 -0
  54. package/dist/mosaic-Cl7rtAXN.js.map +1 -0
  55. package/dist/multi-cog-DAJbnElE.js +2 -0
  56. package/dist/multi-cog-DAJbnElE.js.map +1 -0
  57. package/dist/mvt-D0GYYs-Z.js +2 -0
  58. package/dist/mvt-D0GYYs-Z.js.map +1 -0
  59. package/dist/path-mcVHjyaA.js +2 -0
  60. package/dist/path-mcVHjyaA.js.map +1 -0
  61. package/dist/point-cloud-CNpLW-hf.js +2 -0
  62. package/dist/point-cloud-CNpLW-hf.js.map +1 -0
  63. package/dist/polygon-B5mGSTte.js +2 -0
  64. package/dist/polygon-B5mGSTte.js.map +1 -0
  65. package/dist/quadkey-DGHCEKmx.js +2 -0
  66. package/dist/quadkey-DGHCEKmx.js.map +1 -0
  67. package/dist/s2-MuPaEFbo.js +2 -0
  68. package/dist/s2-MuPaEFbo.js.map +1 -0
  69. package/dist/scatterplot-BBeJkOdi.js +2 -0
  70. package/dist/scatterplot-BBeJkOdi.js.map +1 -0
  71. package/dist/scenegraph-DTM4oQ_J.js +2 -0
  72. package/dist/scenegraph-DTM4oQ_J.js.map +1 -0
  73. package/dist/screen-grid-CxlQC4Kb.js +2 -0
  74. package/dist/screen-grid-CxlQC4Kb.js.map +1 -0
  75. package/dist/simple-mesh-BxLUvOJK.js +2 -0
  76. package/dist/simple-mesh-BxLUvOJK.js.map +1 -0
  77. package/dist/solid-polygon-DwQBLTy0.js +2 -0
  78. package/dist/solid-polygon-DwQBLTy0.js.map +1 -0
  79. package/dist/starfield-D0gIX-34.js +2 -0
  80. package/dist/starfield-D0gIX-34.js.map +1 -0
  81. package/dist/symbols-CFCXX1_B.js +2 -0
  82. package/dist/symbols-CFCXX1_B.js.map +1 -0
  83. package/dist/terrain-f-XAakfL.js +2 -0
  84. package/dist/terrain-f-XAakfL.js.map +1 -0
  85. package/dist/text-BOvG9JHc.js +2 -0
  86. package/dist/text-BOvG9JHc.js.map +1 -0
  87. package/dist/tile-3d-DG91zS0N.js +2 -0
  88. package/dist/tile-3d-DG91zS0N.js.map +1 -0
  89. package/dist/tile-AhmnAg8V.js +2 -0
  90. package/dist/tile-AhmnAg8V.js.map +1 -0
  91. package/dist/trips-DwzBmfe0.js +2 -0
  92. package/dist/trips-DwzBmfe0.js.map +1 -0
  93. package/dist/v-maplibre.css +2 -2
  94. package/dist/wind-particle-DW0nCMls.js +2 -0
  95. package/dist/wind-particle-DW0nCMls.js.map +1 -0
  96. package/dist/wms-vy1yMBNb.js +2 -0
  97. package/dist/wms-vy1yMBNb.js.map +1 -0
  98. package/dist/zarr-6SNoX07d.js +2 -0
  99. package/dist/zarr-6SNoX07d.js.map +1 -0
  100. package/package.json +13 -8
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{LineLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglLine`,props:{id:{},data:{},getSourcePosition:{},getTargetPosition:{},getColor:{},getWidth:{},widthUnits:{default:`pixels`},widthScale:{default:1},widthMinPixels:{default:0},widthMaxPixels:{default:2**53-1},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getSourcePosition:u.getSourcePosition,getTargetPosition:u.getTargetPosition,getColor:u.getColor??[0,0,0,255],getWidth:u.getWidth??1,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getSourcePosition,u.getTargetPosition,u.getColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglLine};
2
+ //# sourceMappingURL=line-B5e9w1td.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-B5e9w1td.js","names":[],"sources":["../src/layers/deckgl/line/VLayerDeckglLine.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render flat straight lines between coordinate pairs.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { LineLayer } from '@deck.gl/layers';\n import type { LineLayerProps } from '@deck.gl/layers';\n import type { PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import type { Color } from '../_shared/types';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getSourcePosition: Accessor<D, Position>;\n getTargetPosition: Accessor<D, Position>;\n getColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n widthUnits: 'pixels',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new LineLayer({\n id: props.id,\n data: props.data,\n getSourcePosition: props.getSourcePosition,\n getTargetPosition: props.getTargetPosition,\n getColor: props.getColor ?? [0, 0, 0, 255],\n getWidth: props.getWidth ?? 1,\n widthUnits: props.widthUnits,\n widthScale: props.widthScale,\n widthMinPixels: props.widthMinPixels,\n widthMaxPixels: props.widthMaxPixels,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as LineLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getSourcePosition,\n props.getTargetPosition,\n props.getColor,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"goBAwCE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAU,CACnB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAG,IAAG,CACzC,SAAU,EAAM,UAAY,EAC5B,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACjC,CAAA,CAGf,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,kBACN,EAAM,kBACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,43 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{defineComponent as i,markRaw as a,onBeforeUnmount as o,onMounted as s,renderSlot as c,shallowRef as l,toRaw as u,watch as d}from"vue";const f=`pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`,p=i({__name:`VLayerDeckglMosaic`,props:{id:{},sources:{},renderMode:{default:`trueColor`},customRenderModules:{},colormapData:{},maxCacheSize:{default:1/0},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},ndviRange:{default:()=>[-1,1]},beforeId:{}},emits:[`click`,`hover`,`sourceLoad`,`error`],setup(i,{emit:p}){let m=i,h=p,g=e(r),{addLayer:_,removeLayer:v}=t(g),y=``,b=l(null),x={name:`set-alpha-1`,inject:{"fs:DECKGL_FILTER_COLOR":`color = vec4(color.rgb, 1.0);`}},S={name:`false-color-infrared`,inject:{"fs:DECKGL_FILTER_COLOR":`
2
+ float nir = color[3];
3
+ float red = color[0];
4
+ float green = color[1];
5
+ color.rgb = vec3(nir, red, green);
6
+ `}},C={name:`ndvi-compute`,inject:{"fs:DECKGL_FILTER_COLOR":`
7
+ float nir_c = color[3];
8
+ float red_c = color[0];
9
+ float sum_c = nir_c + red_c;
10
+ float ndvi_c = sum_c > 0.001 ? (nir_c - red_c) / sum_c : 0.0;
11
+ color = vec4(ndvi_c, ndvi_c, ndvi_c, 1.0);
12
+ `}},w={name:`ndviFilter`,fs:`uniform ndviFilterUniforms {
13
+ float ndviMin;
14
+ float ndviMax;
15
+ } ndviFilter;
16
+ `,inject:{"fs:DECKGL_FILTER_COLOR":`
17
+ if (color.r < ndviFilter.ndviMin || color.r > ndviFilter.ndviMax) {
18
+ discard;
19
+ }
20
+ `},uniformTypes:{ndviMin:`f32`,ndviMax:`f32`},getUniforms:e=>({ndviMin:e.ndviMin??-1,ndviMax:e.ndviMax??1})},T={name:`ndvi-colormap`,inject:{"fs:DECKGL_FILTER_COLOR":`
21
+ float t = clamp((color.r + 1.0) / 2.0, 0.0, 1.0);
22
+
23
+ vec3 result;
24
+ if (t < 0.4) {
25
+ float localT = t / 0.4;
26
+ result = mix(vec3(0.0, 0.0, 0.5), vec3(0.5, 0.8, 0.9), localT);
27
+ } else if (t < 0.5) {
28
+ float localT = (t - 0.4) / 0.1;
29
+ result = mix(vec3(0.5, 0.8, 0.9), vec3(0.9, 0.9, 0.4), localT);
30
+ } else if (t < 0.6) {
31
+ float localT = (t - 0.5) / 0.1;
32
+ result = mix(vec3(0.9, 0.9, 0.4), vec3(0.6, 0.8, 0.2), localT);
33
+ } else if (t < 0.75) {
34
+ float localT = (t - 0.6) / 0.15;
35
+ result = mix(vec3(0.6, 0.8, 0.2), vec3(0.1, 0.6, 0.1), localT);
36
+ } else {
37
+ float localT = (t - 0.75) / 0.25;
38
+ result = mix(vec3(0.1, 0.6, 0.1), vec3(0.0, 0.3, 0.0), localT);
39
+ }
40
+
41
+ color.rgb = result;
42
+ `}};function E(e,t,n,r,i){if(e===`custom`&&i)return i(t);let a=[{module:n.CreateTexture,props:{textureName:t}}];return e===`trueColor`?[...a,{module:x}]:e===`falseColor`?[...a,{module:S},{module:x}]:[...a,{module:C},{module:w,props:{ndviMin:r[0],ndviMax:r[1]}},{module:T},{module:x}]}function D(){let e=b.value;if(!e||!m.sources.length)return null;let{MosaicLayer:t,COGLayer:n,CreateTexture:r,fromUrl:i,resolveEpsg:a}=e,o=u(m.sources),s=u(m.renderMode),c=u(m.ndviRange),l=m.customRenderModules;return new t({id:`${u(m.id)}-mosaic`,sources:o,maxCacheSize:u(m.maxCacheSize),getSource:async e=>{try{let t=await i(e.assets.image.href);return h(`sourceLoad`,e),t}catch(t){throw h(`error`,t,e),t}},renderSource:(e,{data:t,signal:i})=>t?new n({id:`cog-${e.assets.image.href}-${s}`,geotiff:t,epsgResolver:a,getTileData:async(e,t)=>{let{device:n,x:r,y:a}=t,{array:o}=await e.fetchTile(r,a,{signal:i,boundless:!1});if(o.layout===`band-separate`)throw Error(`Band-separate COGs are not supported`);return{texture:n.createTexture({data:o.data,format:`rgba8unorm`,width:o.width,height:o.height}),width:o.width,height:o.height}},renderTile:e=>({image:e.texture,renderPipeline:E(s,e.texture,{CreateTexture:r},c,l)}),signal:i}):null})}async function O(){try{let[e,t,r,i]=await Promise.all([n(`@developmentseed/deck.gl-geotiff`,()=>import(`@developmentseed/deck.gl-geotiff`),f),n(`@developmentseed/deck.gl-raster`,()=>import(`@developmentseed/deck.gl-raster/gpu-modules`),f),n(`@developmentseed/geotiff`,()=>import(`@developmentseed/geotiff`),f),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),f)]);b.value=a({MosaicLayer:e.MosaicLayer,COGLayer:e.COGLayer,CreateTexture:t.CreateTexture,fromUrl:r.GeoTIFF.fromUrl,resolveEpsg:i.epsgResolver});let o=D();o&&(y=o.id,_(o))}catch(e){console.error(`[deck.gl-mosaic] Error loading MosaicLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-geotiff, @developmentseed/deck.gl-raster, and @developmentseed/geotiff are installed`),h(`error`,e)}}return s(()=>{g.value?.isStyleLoaded()?O():g.value?.once(`style.load`,O)}),d(()=>[m.sources,m.renderMode,m.ndviRange,m.opacity,m.visible],()=>{if(b.value){let e=D();e&&(y=e.id,_(e))}},{deep:!0}),o(()=>{y&&v(y)}),(e,t)=>c(e.$slots,`default`)}});export{p as VLayerDeckglMosaic};
43
+ //# sourceMappingURL=mosaic-Cl7rtAXN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mosaic-Cl7rtAXN.js","names":[],"sources":["../src/layers/deckgl/mosaic/VLayerDeckglMosaic.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Client-side COG mosaic for STAC items — GPU-rendered, no tile server required.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n * @requires `@developmentseed/deck.gl-geotiff`\n * @requires `@developmentseed/deck.gl-raster`\n * @requires `@developmentseed/geotiff`\n * @requires `@developmentseed/proj`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`\n */\n /**\n * VLayerDeckglMosaic - Client-side COG mosaic layer for STAC items\n *\n * Uses @developmentseed/deck.gl-geotiff v0.3.0 MosaicLayer for efficient\n * client-side rendering of multiple COGs from STAC APIs.\n *\n * @see https://github.com/developmentseed/deck.gl-raster/blob/main/examples/naip-mosaic/src/App.tsx\n */\n import {\n onMounted,\n onBeforeUnmount,\n watch,\n shallowRef,\n markRaw,\n toRaw,\n } from 'vue';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import type { GeoTIFF, Overview } from '@developmentseed/geotiff';\n import type { Texture } from '@luma.gl/core';\n import type { RasterModule } from '@developmentseed/deck.gl-raster';\n import type { ShaderModule } from '@luma.gl/shadertools';\n import type {\n COGLayerProps,\n GetTileDataOptions,\n MosaicLayerProps,\n MosaicSource as BaseMosaicSource,\n } from '@developmentseed/deck.gl-geotiff';\n import type { EpsgResolver } from '@developmentseed/proj';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n const MOSAIC_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj';\n\n /**\n * A STAC-like item with bounding box and COG asset URL\n * Extends the base MosaicSource from deck.gl-geotiff with asset info\n */\n export interface MosaicSource extends BaseMosaicSource {\n /** Asset containing the COG URL */\n assets: {\n image: { href: string };\n };\n }\n\n /**\n * Render mode for the mosaic layer\n */\n export type MosaicRenderMode = 'trueColor' | 'falseColor' | 'ndvi' | 'custom';\n\n /**\n * Custom render module for advanced band manipulation\n */\n export interface RenderModule {\n module: { name: string; inject?: Record<string, string> };\n props?: Record<string, unknown>;\n }\n\n interface Props {\n id: string;\n /**\n * Array of STAC-like items with bbox and COG asset URLs\n */\n sources: MosaicSource[];\n /**\n * Render mode: trueColor (RGB), falseColor (NIR-R-G), ndvi (with colormap)\n */\n renderMode?: MosaicRenderMode;\n /**\n * Custom render modules (only used when renderMode is 'custom')\n */\n customRenderModules?: (texture: Texture) => RenderModule[];\n /**\n * Custom colormap data for NDVI (Uint8ClampedArray of RGBA values, 256 colors)\n * @reserved Currently not implemented - NDVI uses built-in cfastie colormap.\n */\n colormapData?: Uint8ClampedArray;\n /**\n * Maximum number of tiles to cache\n */\n maxCacheSize?: number;\n /**\n * Layer opacity (0-1)\n */\n opacity?: number;\n /**\n * Layer visibility\n */\n visible?: boolean;\n /**\n * Enable picking on this layer\n */\n pickable?: boolean;\n /**\n * Auto highlight on hover\n */\n autoHighlight?: boolean;\n /**\n * Highlight color when autoHighlight is enabled\n */\n highlightColor?: Color;\n /**\n * NDVI range filter: pixels outside [min, max] are discarded.\n * Only applies when renderMode is 'ndvi'. Range: [-1, 1].\n */\n ndviRange?: [number, number];\n /**\n * Insert layer before this layer id\n */\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n renderMode: 'trueColor',\n maxCacheSize: Infinity,\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n ndviRange: () => [-1, 1] as [number, number],\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n sourceLoad: [source: MosaicSource];\n error: [error: Error, source?: MosaicSource];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer } = useDeckOverlay(map);\n let activeLayerId = '';\n\n interface TextureData {\n texture: Texture;\n width: number;\n height: number;\n }\n\n interface LoadedModules {\n MosaicLayer: typeof import('@developmentseed/deck.gl-geotiff').MosaicLayer;\n COGLayer: typeof import('@developmentseed/deck.gl-geotiff').COGLayer;\n CreateTexture: RasterModule['module'];\n fromUrl: typeof GeoTIFF.fromUrl;\n resolveEpsg: EpsgResolver;\n }\n\n const modules = shallowRef<LoadedModules | null>(null);\n\n // Shader modules for different render modes\n const SetAlpha1 = {\n name: 'set-alpha-1',\n inject: { 'fs:DECKGL_FILTER_COLOR': `color = vec4(color.rgb, 1.0);` },\n };\n\n const FalseColorInfrared = {\n name: 'false-color-infrared',\n inject: {\n 'fs:DECKGL_FILTER_COLOR': `\n float nir = color[3];\n float red = color[0];\n float green = color[1];\n color.rgb = vec3(nir, red, green);\n `,\n },\n };\n\n // --- NDVI Pipeline: 3 separate modules matching upstream pattern ---\n // Uniforms update per-draw via MeshTextureLayer.draw() → setProps() without\n // re-rendering tiles. Baked constants don't work because renderTile only runs\n // when tiles are FIRST FETCHED — cached tiles keep old shader modules.\n\n // Step 1: Compute NDVI from raw RGBA bands, store in color.r\n const NDVICompute = {\n name: 'ndvi-compute',\n inject: {\n 'fs:DECKGL_FILTER_COLOR': `\n float nir_c = color[3];\n float red_c = color[0];\n float sum_c = nir_c + red_c;\n float ndvi_c = sum_c > 0.001 ? (nir_c - red_c) / sum_c : 0.0;\n color = vec4(ndvi_c, ndvi_c, ndvi_c, 1.0);\n `,\n },\n };\n\n // Step 2: Filter by NDVI range — uniforms update per-draw without tile re-render\n const ndviFilterUniformBlock = `\\\nuniform ndviFilterUniforms {\n float ndviMin;\n float ndviMax;\n} ndviFilter;\n`;\n\n const NDVIFilter = {\n name: 'ndviFilter',\n fs: ndviFilterUniformBlock,\n inject: {\n 'fs:DECKGL_FILTER_COLOR': `\n if (color.r < ndviFilter.ndviMin || color.r > ndviFilter.ndviMax) {\n discard;\n }\n `,\n },\n uniformTypes: {\n ndviMin: 'f32',\n ndviMax: 'f32',\n },\n getUniforms: (uniformProps: Record<string, unknown>) => ({\n ndviMin: (uniformProps.ndviMin as number) ?? -1.0,\n ndviMax: (uniformProps.ndviMax as number) ?? 1.0,\n }),\n } as const satisfies ShaderModule<{ ndviMin: number; ndviMax: number }>;\n\n // Step 3: Apply cfastie-inspired colormap gradient from color.r (NDVI value)\n const NDVIColormap = {\n name: 'ndvi-colormap',\n inject: {\n 'fs:DECKGL_FILTER_COLOR': `\n float t = clamp((color.r + 1.0) / 2.0, 0.0, 1.0);\n \n vec3 result;\n if (t < 0.4) {\n float localT = t / 0.4;\n result = mix(vec3(0.0, 0.0, 0.5), vec3(0.5, 0.8, 0.9), localT);\n } else if (t < 0.5) {\n float localT = (t - 0.4) / 0.1;\n result = mix(vec3(0.5, 0.8, 0.9), vec3(0.9, 0.9, 0.4), localT);\n } else if (t < 0.6) {\n float localT = (t - 0.5) / 0.1;\n result = mix(vec3(0.9, 0.9, 0.4), vec3(0.6, 0.8, 0.2), localT);\n } else if (t < 0.75) {\n float localT = (t - 0.6) / 0.15;\n result = mix(vec3(0.6, 0.8, 0.2), vec3(0.1, 0.6, 0.1), localT);\n } else {\n float localT = (t - 0.75) / 0.25;\n result = mix(vec3(0.1, 0.6, 0.1), vec3(0.0, 0.3, 0.0), localT);\n }\n \n color.rgb = result;\n `,\n },\n };\n\n function getRenderModules(\n mode: MosaicRenderMode,\n texture: Texture,\n mods: {\n CreateTexture: RasterModule['module'];\n },\n ndviRange: [number, number],\n customModules?: (texture: Texture) => RenderModule[],\n ): RasterModule[] {\n if (mode === 'custom' && customModules) {\n return customModules(texture) as RasterModule[];\n }\n\n const base: RasterModule[] = [\n { module: mods.CreateTexture, props: { textureName: texture } },\n ];\n\n if (mode === 'trueColor') {\n return [...base, { module: SetAlpha1 }];\n }\n\n if (mode === 'falseColor') {\n return [...base, { module: FalseColorInfrared }, { module: SetAlpha1 }];\n }\n\n // NDVI pipeline: compute → filter → colormap → alpha\n // NDVIFilter uses uniformTypes + getUniforms so uniform values update\n // per-draw via MeshTextureLayer.draw() WITHOUT re-rendering tiles.\n return [\n ...base,\n { module: NDVICompute },\n {\n module: NDVIFilter,\n props: { ndviMin: ndviRange[0], ndviMax: ndviRange[1] },\n },\n { module: NDVIColormap },\n { module: SetAlpha1 },\n ];\n }\n\n function createLayer() {\n const mods = modules.value;\n if (!mods || !props.sources.length) return null;\n\n const { MosaicLayer, COGLayer, CreateTexture, fromUrl, resolveEpsg } = mods;\n\n const rawSources = toRaw(props.sources);\n const renderMode = toRaw(props.renderMode);\n const ndviRange = toRaw(props.ndviRange) as [number, number];\n const customRenderModules = props.customRenderModules;\n\n // Fixed ID matching upstream pattern — deck.gl diffs old vs new layer\n // via setProps, detecting changed renderSource/renderTile callbacks.\n const newId = `${toRaw(props.id)}-mosaic`;\n const layer = new MosaicLayer<MosaicSource, GeoTIFF>({\n id: newId,\n sources: rawSources,\n maxCacheSize: toRaw(props.maxCacheSize),\n\n getSource: async (source) => {\n try {\n const tiff = await fromUrl(source.assets.image.href);\n emit('sourceLoad', source);\n return tiff;\n } catch (error) {\n emit('error', error as Error, source);\n throw error;\n }\n },\n\n renderSource: (source, { data, signal }) => {\n if (!data) return null;\n\n return new COGLayer<TextureData>({\n id: `cog-${source.assets.image.href}-${renderMode}`,\n geotiff: data,\n epsgResolver: resolveEpsg,\n getTileData: async (\n image: GeoTIFF | Overview,\n options: GetTileDataOptions,\n ) => {\n const { device, x, y } = options;\n const tile = await image.fetchTile(x, y, {\n signal,\n boundless: false,\n });\n const { array } = tile;\n if (array.layout === 'band-separate') {\n throw new Error('Band-separate COGs are not supported');\n }\n const texture = device.createTexture({\n data: array.data,\n format: 'rgba8unorm',\n width: array.width,\n height: array.height,\n });\n return {\n texture,\n width: array.width,\n height: array.height,\n };\n },\n renderTile: (tileData: TextureData) => ({\n image: tileData.texture,\n renderPipeline: getRenderModules(\n renderMode,\n tileData.texture,\n { CreateTexture },\n ndviRange,\n customRenderModules,\n ),\n }),\n signal,\n } as COGLayerProps<TextureData>);\n },\n } as MosaicLayerProps<MosaicSource, GeoTIFF>);\n\n return layer;\n }\n\n async function initializeLayer() {\n try {\n const [geotiffModule, rasterModule, devGeotiff, projModule] =\n await Promise.all([\n requirePeer(\n '@developmentseed/deck.gl-geotiff',\n () => import('@developmentseed/deck.gl-geotiff'),\n MOSAIC_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/deck.gl-raster',\n () => import('@developmentseed/deck.gl-raster/gpu-modules'),\n MOSAIC_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/geotiff',\n () => import('@developmentseed/geotiff'),\n MOSAIC_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/proj',\n () => import('@developmentseed/proj'),\n MOSAIC_PEER_INSTALL,\n ),\n ]);\n\n modules.value = markRaw({\n MosaicLayer: geotiffModule.MosaicLayer,\n COGLayer: geotiffModule.COGLayer,\n CreateTexture: rasterModule.CreateTexture,\n fromUrl: devGeotiff.GeoTIFF.fromUrl,\n resolveEpsg: projModule.epsgResolver,\n });\n\n const layer = createLayer();\n if (layer) {\n activeLayerId = (layer as { id: string }).id;\n addLayer(layer);\n }\n } catch (error) {\n console.error('[deck.gl-mosaic] Error loading MosaicLayer:', error);\n console.error(\n 'Make sure @developmentseed/deck.gl-geotiff, @developmentseed/deck.gl-raster, and @developmentseed/geotiff are installed',\n );\n emit('error', error as Error);\n }\n }\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.sources,\n props.renderMode,\n props.ndviRange,\n props.opacity,\n props.visible,\n ],\n () => {\n if (modules.value) {\n const layer = createLayer();\n if (layer) {\n activeLayerId = (layer as { id: string }).id;\n addLayer(layer);\n }\n }\n },\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n if (activeLayerId) {\n removeLayer(activeLayerId);\n }\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"4MA8CE,MAAM,EACJ,mkBAgFF,IAAM,EAAQ,EAUR,EAAO,EAOP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,eAAgB,EAAe,EAAG,CAChD,EAAgB,GAgBd,EAAU,EAAiC,KAAI,CAG/C,EAAY,CAChB,KAAM,cACN,OAAQ,CAAE,yBAA0B,gCAAgC,CACtE,CAEM,EAAqB,CACzB,KAAM,uBACN,OAAQ,CACN,yBAA0B;;;;;QAM5B,CACF,CAQM,EAAc,CAClB,KAAM,eACN,OAAQ,CACN,yBAA0B;;;;;;QAO5B,CACF,CAUM,EAAa,CACjB,KAAM,aACN,GAAI;;;;EACJ,OAAQ,CACN,yBAA0B;;;;QAK5B,CACA,aAAc,CACZ,QAAS,MACT,QAAS,MACX,CACA,YAAc,IAA2C,CACvD,QAAU,EAAa,SAAsB,GAC7C,QAAU,EAAa,SAAsB,EAC/C,EACF,CAGM,EAAe,CACnB,KAAM,gBACN,OAAQ,CACN,yBAA0B;;;;;;;;;;;;;;;;;;;;;;QAuB5B,CACF,CAEA,SAAS,EACP,EACA,EACA,EAGA,EACA,EACgB,CAChB,GAAI,IAAS,UAAY,EACvB,OAAO,EAAc,EAAO,CAG9B,IAAM,EAAuB,CAC3B,CAAE,OAAQ,EAAK,cAAe,MAAO,CAAE,YAAa,EAAQ,CAC9D,CAAA,CAaA,OAXI,IAAS,YACJ,CAAC,GAAG,EAAM,CAAE,OAAQ,EAAW,CAAA,CAGpC,IAAS,aACJ,CAAC,GAAG,EAAM,CAAE,OAAQ,EAAmB,CAAG,CAAE,OAAQ,EAAU,CAAC,CAMjE,CACL,GAAG,EACH,CAAE,OAAQ,EAAY,CACtB,CACE,OAAQ,EACR,MAAO,CAAE,QAAS,EAAU,GAAI,QAAS,EAAU,GAAG,CACxD,CACA,CAAE,OAAQ,EAAa,CACvB,CAAE,OAAQ,EAAU,CACtB,CAGF,SAAS,GAAc,CACrB,IAAM,EAAO,EAAQ,MACrB,GAAI,CAAC,GAAQ,CAAC,EAAM,QAAQ,OAAQ,OAAO,KAE3C,GAAM,CAAE,cAAa,WAAU,gBAAe,UAAS,eAAgB,EAEjE,EAAa,EAAM,EAAM,QAAO,CAChC,EAAa,EAAM,EAAM,WAAU,CACnC,EAAY,EAAM,EAAM,UAAS,CACjC,EAAsB,EAAM,oBAoElC,OAAO,IA/DW,EAAmC,CACnD,GAAI,GAFW,EAAM,EAAM,GAAE,CAAE,SAG/B,QAAS,EACT,aAAc,EAAM,EAAM,aAAY,CAEtC,UAAW,KAAO,IAAW,CAC3B,GAAI,CACF,IAAM,EAAO,MAAM,EAAQ,EAAO,OAAO,MAAM,KAAI,CAEnD,OADA,EAAK,aAAc,EAAM,CAClB,QACA,EAAO,CAEd,MADA,EAAK,QAAS,EAAgB,EAAM,CAC9B,IAIV,cAAe,EAAQ,CAAE,OAAM,YACxB,EAEE,IAAI,EAAsB,CAC/B,GAAI,OAAO,EAAO,OAAO,MAAM,KAAK,GAAG,IACvC,QAAS,EACT,aAAc,EACd,YAAa,MACX,EACA,IACG,CACH,GAAM,CAAE,SAAQ,IAAG,KAAM,EAKnB,CAAE,SAAU,MAJC,EAAM,UAAU,EAAG,EAAG,CACvC,SACA,UAAW,GACZ,CAAA,CAED,GAAI,EAAM,SAAW,gBACnB,MAAU,MAAM,uCAAsC,CAQxD,MAAO,CACL,QAPc,EAAO,cAAc,CACnC,KAAM,EAAM,KACZ,OAAQ,aACR,MAAO,EAAM,MACb,OAAQ,EAAM,OACf,CAEC,CACA,MAAO,EAAM,MACb,OAAQ,EAAM,OAChB,EAEF,WAAa,IAA2B,CACtC,MAAO,EAAS,QAChB,eAAgB,EACd,EACA,EAAS,QACT,CAAE,gBAAc,CAChB,EACA,EACF,CACF,EACA,SAC6B,CAAA,CA1Cb,KA4CsB,CAErC,CAGT,eAAe,GAAkB,CAC/B,GAAI,CACF,GAAM,CAAC,EAAe,EAAc,EAAY,GAC9C,MAAM,QAAQ,IAAI,CAChB,EACE,uCACM,OAAO,oCACb,EACF,CACA,EACE,sCACM,OAAO,+CACb,EACF,CACA,EACE,+BACM,OAAO,4BACb,EACF,CACA,EACE,4BACM,OAAO,yBACb,EACF,CACD,CAAA,CAEH,EAAQ,MAAQ,EAAQ,CACtB,YAAa,EAAc,YAC3B,SAAU,EAAc,SACxB,cAAe,EAAa,cAC5B,QAAS,EAAW,QAAQ,QAC5B,YAAa,EAAW,aACzB,CAAA,CAED,IAAM,EAAQ,GAAY,CACtB,IACF,EAAiB,EAAyB,GAC1C,EAAS,EAAK,QAET,EAAO,CACd,QAAQ,MAAM,8CAA+C,EAAK,CAClE,QAAQ,MACN,0HACF,CACA,EAAK,QAAS,EAAc,SAIhC,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,QACN,EAAM,WACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,CACJ,GAAI,EAAQ,MAAO,CACjB,IAAM,EAAQ,GAAY,CACtB,IACF,EAAiB,EAAyB,GAC1C,EAAS,EAAK,IAIpB,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CAChB,GACF,EAAY,EAAa,EAE5B,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{defineComponent as i,markRaw as a,onBeforeUnmount as o,onMounted as s,renderSlot as c,shallowRef as l,toRaw as u,watch as d}from"vue";const f=`pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`,p=i({__name:`VLayerDeckglMultiCOG`,props:{id:{},sources:{},composite:{},renderPipeline:{},maxError:{default:.125},maxCacheSize:{},maxCacheByteSize:{},maxRequests:{default:6},debounceTime:{},refinementStrategy:{default:`best-available`},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{},debug:{type:Boolean,default:!1},debugOpacity:{default:.5},debugLevel:{default:1}},emits:[`click`,`hover`,`geotiffLoad`],setup(i,{emit:p}){let m=i,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=l(null),x=l(null),S=()=>{if(!b.value)return null;let e={id:u(m.id),sources:u(m.sources),opacity:u(m.opacity),visible:u(m.visible),pickable:u(m.pickable),autoHighlight:u(m.autoHighlight),debug:u(m.debug),debugOpacity:u(m.debugOpacity),debugLevel:u(m.debugLevel),maxError:u(m.maxError)};return x.value&&(e.epsgResolver=x.value),m.composite&&(e.composite=u(m.composite)),m.renderPipeline&&(e.renderPipeline=u(m.renderPipeline)),m.maxCacheSize!==void 0&&(e.maxCacheSize=u(m.maxCacheSize)),m.maxCacheByteSize!==void 0&&(e.maxCacheByteSize=u(m.maxCacheByteSize)),m.maxRequests!==6&&(e.maxRequests=u(m.maxRequests)),m.debounceTime!==void 0&&(e.debounceTime=u(m.debounceTime)),m.refinementStrategy!==`best-available`&&(e.refinementStrategy=u(m.refinementStrategy)),m.beforeId!==void 0&&(e.beforeId=u(m.beforeId)),e.onGeoTIFFLoad=(e,t)=>{h(`geotiffLoad`,e,t)},a(new b.value(e))},C=async()=>{try{let[e,t]=await Promise.all([n(`@developmentseed/deck.gl-geotiff`,()=>import(`@developmentseed/deck.gl-geotiff`),f),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),f)]);b.value=a(e.MultiCOGLayer),x.value=t.epsgResolver;let r=S();r&&_(r)}catch(e){console.error(`[deck.gl-raster] Error loading MultiCOGLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-geotiff and @developmentseed/proj are installed`)}};return s(()=>{g.value?.isStyleLoaded()?C():g.value?.once(`style.load`,C)}),d(()=>[m.sources,m.composite,m.renderPipeline,m.opacity,m.visible,m.debug,m.debugOpacity,m.debugLevel,m.maxError],()=>{let e=S();e&&y(m.id,e)},{deep:!0}),o(()=>{v(m.id)}),(e,t)=>c(e.$slots,`default`)}});export{p as VLayerDeckglMultiCOG};
2
+ //# sourceMappingURL=multi-cog-DAJbnElE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-cog-DAJbnElE.js","names":[],"sources":["../src/layers/deckgl/multi-cog/VLayerDeckglMultiCOG.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Multi-band split-resolution COG compositor (e.g. Sentinel-2 band combinations).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n * @requires `@developmentseed/deck.gl-geotiff`\n * @requires `@developmentseed/deck.gl-raster`\n * @requires `@developmentseed/geotiff`\n * @requires `@developmentseed/proj`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`\n */\n /**\n * VLayerDeckglMultiCOG — multi-band split-resolution COG compositing.\n *\n * Wraps @developmentseed/deck.gl-geotiff MultiCOGLayer.\n * Use case: render Sentinel-2 or other multi-band imagery where bands live in\n * separate COGs at different native resolutions. The layer opens all sources\n * in parallel, picks the finest as the primary tileset, and the GPU\n * resamples lower-resolution bands to match.\n *\n * @see https://github.com/developmentseed/deck.gl-raster/blob/main/examples/sentinel-2/src/App.tsx\n */\n import {\n onMounted,\n onBeforeUnmount,\n watch,\n shallowRef,\n markRaw,\n toRaw,\n } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import type { RasterModule } from '@developmentseed/deck.gl-raster';\n import type { MultiCOGSourceConfig } from '@developmentseed/deck.gl-geotiff';\n import type { GeoTIFF } from '@developmentseed/geotiff';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n\n const MULTICOG_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n /**\n * Maps source band names to RGB(A) output channels for the compositing step.\n */\n export interface MultiCOGComposite {\n r: string;\n g?: string;\n b?: string;\n a?: string;\n }\n\n interface Props {\n id: string;\n /**\n * Named sources — each key is the band name. Pass at least one entry per\n * band referenced in `composite`.\n */\n sources: Record<string, MultiCOGSourceConfig>;\n /**\n * Map source band names to RGB(A) output channels. Defaults to passing\n * the first source through to all channels (greyscale) if omitted.\n */\n composite?: MultiCOGComposite;\n /**\n * Post-processing render pipeline modules applied after band compositing\n * (e.g. LinearRescale, ColormapSprite, NDVI).\n */\n renderPipeline?: RasterModule[];\n /** Max reprojection error in pixels for mesh refinement. */\n maxError?: number;\n /** Maximum number of tiles to cache. */\n maxCacheSize?: number;\n /** Maximum cached tile byte size. */\n maxCacheByteSize?: number;\n /** Maximum concurrent tile requests. */\n maxRequests?: number;\n /** Tile fetch debounce (ms). */\n debounceTime?: number;\n /** Tile refinement strategy. */\n refinementStrategy?: 'best-available' | 'no-overlap' | 'never';\n /** Layer opacity (0-1). */\n opacity?: number;\n /** Layer visibility. */\n visible?: boolean;\n /** Enable picking. */\n pickable?: boolean;\n /** Auto-highlight on hover. */\n autoHighlight?: boolean;\n /** Insert layer before this layer id. */\n beforeId?: string;\n /** Show debug overlay on tiles. */\n debug?: boolean;\n /** Debug overlay opacity (0-1). */\n debugOpacity?: number;\n /** Debug verbosity: 1=coords, 2=+uv/tiles, 3=+stitched-size/meters/px. */\n debugLevel?: 1 | 2 | 3;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n maxError: 0.125,\n maxRequests: 6,\n refinementStrategy: 'best-available',\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n debug: false,\n debugOpacity: 0.5,\n debugLevel: 1,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n geotiffLoad: [\n sources: Map<string, GeoTIFF>,\n options: {\n primaryKey: string;\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const MultiCOGLayerClass = shallowRef<\n typeof import('@developmentseed/deck.gl-geotiff').MultiCOGLayer | null\n >(null);\n const epsgResolverFn = shallowRef<\n typeof import('@developmentseed/proj').epsgResolver | null\n >(null);\n\n const createLayer = () => {\n if (!MultiCOGLayerClass.value) return null;\n\n const layerProps: Record<string, unknown> = {\n id: toRaw(props.id),\n sources: toRaw(props.sources),\n opacity: toRaw(props.opacity),\n visible: toRaw(props.visible),\n pickable: toRaw(props.pickable),\n autoHighlight: toRaw(props.autoHighlight),\n debug: toRaw(props.debug),\n debugOpacity: toRaw(props.debugOpacity),\n debugLevel: toRaw(props.debugLevel),\n maxError: toRaw(props.maxError),\n };\n\n if (epsgResolverFn.value) {\n layerProps.epsgResolver = epsgResolverFn.value;\n }\n\n if (props.composite) {\n layerProps.composite = toRaw(props.composite);\n }\n if (props.renderPipeline) {\n layerProps.renderPipeline = toRaw(props.renderPipeline);\n }\n if (props.maxCacheSize !== undefined)\n layerProps.maxCacheSize = toRaw(props.maxCacheSize);\n if (props.maxCacheByteSize !== undefined)\n layerProps.maxCacheByteSize = toRaw(props.maxCacheByteSize);\n if (props.maxRequests !== 6)\n layerProps.maxRequests = toRaw(props.maxRequests);\n if (props.debounceTime !== undefined)\n layerProps.debounceTime = toRaw(props.debounceTime);\n if (props.refinementStrategy !== 'best-available')\n layerProps.refinementStrategy = toRaw(props.refinementStrategy);\n if (props.beforeId !== undefined)\n layerProps.beforeId = toRaw(props.beforeId);\n\n layerProps.onGeoTIFFLoad = (\n sources: Map<string, GeoTIFF>,\n options: {\n primaryKey: string;\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ) => {\n emit('geotiffLoad', sources, options);\n };\n\n const layer = new MultiCOGLayerClass.value(layerProps);\n return markRaw(layer);\n };\n\n const initializeLayer = async () => {\n try {\n const [geotiffModule, projModule] = await Promise.all([\n requirePeer(\n '@developmentseed/deck.gl-geotiff',\n () => import('@developmentseed/deck.gl-geotiff'),\n MULTICOG_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/proj',\n () => import('@developmentseed/proj'),\n MULTICOG_PEER_INSTALL,\n ),\n ]);\n\n MultiCOGLayerClass.value = markRaw(geotiffModule.MultiCOGLayer);\n epsgResolverFn.value = projModule.epsgResolver;\n\n const layer = createLayer();\n if (layer) {\n addLayer(layer);\n }\n } catch (error) {\n console.error('[deck.gl-raster] Error loading MultiCOGLayer:', error);\n console.error(\n 'Make sure @developmentseed/deck.gl-geotiff and @developmentseed/proj are installed',\n );\n }\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.sources,\n props.composite,\n props.renderPipeline,\n props.opacity,\n props.visible,\n props.debug,\n props.debugOpacity,\n props.debugLevel,\n props.maxError,\n ],\n () => {\n const layer = createLayer();\n if (layer) {\n updateLayer(props.id, layer);\n }\n },\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"4MAwCE,MAAM,EACJ,4qBA4DF,IAAM,EAAQ,EAaR,EAAO,EAiBP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAqB,EAEzB,KAAI,CACA,EAAiB,EAErB,KAAI,CAEA,MAAoB,CACxB,GAAI,CAAC,EAAmB,MAAO,OAAO,KAEtC,IAAM,EAAsC,CAC1C,GAAI,EAAM,EAAM,GAAE,CAClB,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,SAAU,EAAM,EAAM,SAAQ,CAC9B,cAAe,EAAM,EAAM,cAAa,CACxC,MAAO,EAAM,EAAM,MAAK,CACxB,aAAc,EAAM,EAAM,aAAY,CACtC,WAAY,EAAM,EAAM,WAAU,CAClC,SAAU,EAAM,EAAM,SAAQ,CAChC,CAyCA,OAvCI,EAAe,QACjB,EAAW,aAAe,EAAe,OAGvC,EAAM,YACR,EAAW,UAAY,EAAM,EAAM,UAAS,EAE1C,EAAM,iBACR,EAAW,eAAiB,EAAM,EAAM,eAAc,EAEpD,EAAM,eAAiB,IAAA,KACzB,EAAW,aAAe,EAAM,EAAM,aAAY,EAChD,EAAM,mBAAqB,IAAA,KAC7B,EAAW,iBAAmB,EAAM,EAAM,iBAAgB,EACxD,EAAM,cAAgB,IACxB,EAAW,YAAc,EAAM,EAAM,YAAW,EAC9C,EAAM,eAAiB,IAAA,KACzB,EAAW,aAAe,EAAM,EAAM,aAAY,EAChD,EAAM,qBAAuB,mBAC/B,EAAW,mBAAqB,EAAM,EAAM,mBAAkB,EAC5D,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAE5C,EAAW,eACT,EACA,IASG,CACH,EAAK,cAAe,EAAS,EAAO,EAI/B,EAAQ,IADG,EAAmB,MAAM,EACvB,CAAA,EAGhB,EAAkB,SAAY,CAClC,GAAI,CACF,GAAM,CAAC,EAAe,GAAc,MAAM,QAAQ,IAAI,CACpD,EACE,uCACM,OAAO,oCACb,EACF,CACA,EACE,4BACM,OAAO,yBACb,EAEJ,CAAC,CAAA,CAED,EAAmB,MAAQ,EAAQ,EAAc,cAAa,CAC9D,EAAe,MAAQ,EAAW,aAElC,IAAM,EAAQ,GAAY,CACtB,GACF,EAAS,EAAK,OAET,EAAO,CACd,QAAQ,MAAM,gDAAiD,EAAK,CACpE,QAAQ,MACN,qFACF,UAIJ,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,QACN,EAAM,UACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,MACN,EAAM,aACN,EAAM,WACN,EAAM,SACR,KACM,CACJ,IAAM,EAAQ,GAAY,CACtB,GACF,EAAY,EAAM,GAAI,EAAK,EAG/B,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{MVTLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglMVT`,props:{id:{},data:{},minZoom:{default:0},maxZoom:{default:23},uniqueIdProperty:{},highlightedFeatureId:{},binary:{type:Boolean,default:!0},loadOptions:{},getFillColor:{},getLineColor:{},getLineWidth:{},getPointRadius:{},getElevation:{},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},pointRadiusUnits:{default:`meters`},pointRadiusScale:{default:1},pointRadiusMinPixels:{default:0},pointRadiusMaxPixels:{default:2**53-1},stroked:{type:Boolean,default:!0},filled:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{default:1},pointType:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`,`tileLoad`,`tileError`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,minZoom:u.minZoom,maxZoom:u.maxZoom,uniqueIdProperty:u.uniqueIdProperty,highlightedFeatureId:u.highlightedFeatureId,binary:u.binary,loadOptions:u.loadOptions,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getLineWidth:u.getLineWidth??1,getPointRadius:u.getPointRadius??1,getElevation:u.getElevation??1e3,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,pointRadiusUnits:u.pointRadiusUnits,pointRadiusScale:u.pointRadiusScale,pointRadiusMinPixels:u.pointRadiusMinPixels,pointRadiusMaxPixels:u.pointRadiusMaxPixels,stroked:u.stroked,filled:u.filled,extruded:u.extruded,wireframe:u.wireframe,elevationScale:u.elevationScale,pointType:u.pointType,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e),onTileLoad:e=>d(`tileLoad`,e),onTileError:(e,t)=>d(`tileError`,e,t)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getFillColor,u.getLineColor,u.highlightedFeatureId,u.extruded,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglMVT};
2
+ //# sourceMappingURL=mvt-D0GYYs-Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mvt-D0GYYs-Z.js","names":[],"sources":["../src/layers/deckgl/mvt/VLayerDeckglMVT.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Consume Mapbox Vector Tile (MVT / PBF) endpoints.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/geo-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/geo-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { MVTLayer } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: string | string[];\n minZoom?: number;\n maxZoom?: number;\n uniqueIdProperty?: string;\n highlightedFeatureId?: string | number;\n binary?: boolean;\n loadOptions?: object;\n // Sublayer props\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getLineWidth?: Accessor<D, number>;\n getPointRadius?: Accessor<D, number>;\n getElevation?: Accessor<D, number>;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n pointRadiusUnits?: 'meters' | 'common' | 'pixels';\n pointRadiusScale?: number;\n pointRadiusMinPixels?: number;\n pointRadiusMaxPixels?: number;\n stroked?: boolean;\n filled?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n pointType?: string;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n minZoom: 0,\n maxZoom: 23,\n binary: true,\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n pointRadiusUnits: 'meters',\n pointRadiusScale: 1,\n pointRadiusMinPixels: 0,\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n elevationScale: 1,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n tileLoad: [tile: unknown];\n tileError: [error: Error, tile: unknown];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new MVTLayer({\n id: props.id,\n data: props.data,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n uniqueIdProperty: props.uniqueIdProperty,\n highlightedFeatureId: props.highlightedFeatureId,\n binary: props.binary,\n loadOptions: props.loadOptions,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getLineWidth: props.getLineWidth ?? 1,\n getPointRadius: props.getPointRadius ?? 1,\n getElevation: props.getElevation ?? 1000,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n pointRadiusUnits: props.pointRadiusUnits,\n pointRadiusScale: props.pointRadiusScale,\n pointRadiusMinPixels: props.pointRadiusMinPixels,\n pointRadiusMaxPixels: props.pointRadiusMaxPixels,\n stroked: props.stroked,\n filled: props.filled,\n extruded: props.extruded,\n wireframe: props.wireframe,\n elevationScale: props.elevationScale,\n pointType: props.pointType,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n onTileLoad: (tile: unknown) => emit('tileLoad', tile),\n onTileError: (error: Error, tile: unknown) =>\n emit('tileError', error, tile),\n } as unknown as ConstructorParameters<typeof MVTLayer>[0]);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getFillColor,\n props.getLineColor,\n props.highlightedFeatureId,\n props.extruded,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"ynCAwDE,IAAM,EAAQ,EAuBR,EAAO,EAOP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAS,CAClB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,QAAS,EAAM,QACf,QAAS,EAAM,QACf,iBAAkB,EAAM,iBACxB,qBAAsB,EAAM,qBAC5B,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,EACpC,eAAgB,EAAM,gBAAkB,EACxC,aAAc,EAAM,cAAgB,IACpC,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,iBAAkB,EAAM,iBACxB,iBAAkB,EAAM,iBACxB,qBAAsB,EAAM,qBAC5B,qBAAsB,EAAM,qBAC5B,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,UAAW,EAAM,UACjB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,WAAa,GAAkB,EAAK,WAAY,EAAI,CACpD,aAAc,EAAc,IAC1B,EAAK,YAAa,EAAO,EAAI,CACwB,CAAA,CAGrD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,aACN,EAAM,aACN,EAAM,qBACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{PathLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglPath`,props:{id:{},data:{},getPath:{},getColor:{},getWidth:{},widthUnits:{default:`meters`},widthScale:{default:1},widthMinPixels:{default:0},widthMaxPixels:{default:2**53-1},capRounded:{type:Boolean,default:!1},jointRounded:{type:Boolean,default:!1},billboard:{type:Boolean,default:!1},miterLimit:{default:4},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPath:u.getPath,getColor:u.getColor??[0,0,0,255],getWidth:u.getWidth??1,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,capRounded:u.capRounded,jointRounded:u.jointRounded,billboard:u.billboard,miterLimit:u.miterLimit,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPath,u.getColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglPath};
2
+ //# sourceMappingURL=path-mcVHjyaA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-mcVHjyaA.js","names":[],"sources":["../src/layers/deckgl/path/VLayerDeckglPath.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render a list of polylines with width-in-meters or width-in-pixels.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { PathLayer } from '@deck.gl/layers';\n import type { PathLayerProps } from '@deck.gl/layers';\n import type { PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import type { Color } from '../_shared/types';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPath: Accessor<D, Position[]>;\n getColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n capRounded?: boolean;\n jointRounded?: boolean;\n billboard?: boolean;\n miterLimit?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n widthUnits: 'meters',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n capRounded: false,\n jointRounded: false,\n billboard: false,\n miterLimit: 4,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new PathLayer({\n id: props.id,\n data: props.data,\n getPath: props.getPath,\n getColor: props.getColor ?? [0, 0, 0, 255],\n getWidth: props.getWidth ?? 1,\n widthUnits: props.widthUnits,\n widthScale: props.widthScale,\n widthMinPixels: props.widthMinPixels,\n widthMaxPixels: props.widthMaxPixels,\n capRounded: props.capRounded,\n jointRounded: props.jointRounded,\n billboard: props.billboard,\n miterLimit: props.miterLimit,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as PathLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPath,\n props.getColor,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"wuBA2CE,IAAM,EAAQ,EAeR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAU,CACnB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,QAAS,EAAM,QACf,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAG,IAAG,CACzC,SAAU,EAAM,UAAY,EAC5B,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACjC,CAAA,CAGf,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,QACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{PointCloudLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglPointCloud`,props:{id:{},data:{},getPosition:{},getColor:{},getNormal:{},sizeUnits:{default:`pixels`},pointSize:{default:10},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getColor:u.getColor??[0,0,0,255],getNormal:u.getNormal??[0,0,1],sizeUnits:u.sizeUnits,pointSize:u.pointSize,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.getColor,u.pointSize,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglPointCloud};
2
+ //# sourceMappingURL=point-cloud-CNpLW-hf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-cloud-CNpLW-hf.js","names":[],"sources":["../src/layers/deckgl/point-cloud/VLayerDeckglPointCloud.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render xyz / xyz+rgb point clouds (small/medium size, no LOD).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { PointCloudLayer } from '@deck.gl/layers';\n import type { PointCloudLayerProps } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getColor?: Accessor<D, Color>;\n getNormal?: Accessor<D, [number, number, number]>;\n sizeUnits?: 'meters' | 'common' | 'pixels';\n pointSize?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n sizeUnits: 'pixels',\n pointSize: 10,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new PointCloudLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getColor: props.getColor ?? [0, 0, 0, 255],\n getNormal: props.getNormal ?? [0, 0, 1],\n sizeUnits: props.sizeUnits,\n pointSize: props.pointSize,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as PointCloudLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.getColor,\n props.pointSize,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"slBAqCE,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAgB,CACzB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAG,IAAG,CACzC,UAAW,EAAM,WAAa,CAAC,EAAG,EAAG,EAAC,CACtC,UAAW,EAAM,UACjB,UAAW,EAAM,UACjB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC3B,CAAA,CAGrB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,SACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{PolygonLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getLineWidth:{},getElevation:{},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{default:1},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},lineJointRounded:{type:Boolean,default:!1},lineMiterLimit:{default:4},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPolygon:u.getPolygon,getFillColor:u.getFillColor??[200,200,200,200],getLineColor:u.getLineColor??[0,0,0,255],getLineWidth:u.getLineWidth??1,getElevation:u.getElevation??1e3,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,elevationScale:u.elevationScale,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,lineJointRounded:u.lineJointRounded,lineMiterLimit:u.lineMiterLimit,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPolygon,u.getFillColor,u.getLineColor,u.opacity,u.visible,u.extruded],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglPolygon};
2
+ //# sourceMappingURL=polygon-B5mGSTte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon-B5mGSTte.js","names":[],"sources":["../src/layers/deckgl/polygon/VLayerDeckglPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render filled / stroked polygons with optional extrusion (cheaper than SolidPolygon).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { PolygonLayer } from '@deck.gl/layers';\n import type { PolygonLayerProps } from '@deck.gl/layers';\n import type { PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import type { Color } from '../_shared/types';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPolygon: Accessor<D, Position[] | Position[][]>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getLineWidth?: Accessor<D, number>;\n getElevation?: Accessor<D, number>;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n lineJointRounded?: boolean;\n lineMiterLimit?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n filled: true,\n stroked: true,\n extruded: false,\n wireframe: false,\n elevationScale: 1,\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineMiterLimit: 4,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new PolygonLayer({\n id: props.id,\n data: props.data,\n getPolygon: props.getPolygon,\n getFillColor: props.getFillColor ?? [200, 200, 200, 200],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getLineWidth: props.getLineWidth ?? 1,\n getElevation: props.getElevation ?? 1000,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n elevationScale: props.elevationScale,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n lineJointRounded: props.lineJointRounded,\n lineMiterLimit: props.lineMiterLimit,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as PolygonLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPolygon,\n props.getFillColor,\n props.getLineColor,\n props.opacity,\n props.visible,\n props.extruded,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"86BAiDE,IAAM,EAAQ,EAkBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,aAAc,EAAM,cAAgB,CAAC,IAAK,IAAK,IAAK,IAAG,CACvD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,EACpC,aAAc,EAAM,cAAgB,IACpC,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,iBAAkB,EAAM,iBACxB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC9B,CAAA,CAGlB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{QuadkeyLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglQuadkey`,props:{id:{},data:{},getQuadkey:{},getFillColor:{},getLineColor:{},getElevation:{},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{default:1},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getQuadkey:u.getQuadkey,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,elevationScale:u.elevationScale,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getQuadkey,u.getFillColor,u.getElevation,u.extruded,u.elevationScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglQuadkey};
2
+ //# sourceMappingURL=quadkey-DGHCEKmx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadkey-DGHCEKmx.js","names":[],"sources":["../src/layers/deckgl/quadkey/VLayerDeckglQuadkey.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render Bing-style quadkey tiles as deck.gl polygons.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/geo-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/geo-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { QuadkeyLayer } from '@deck.gl/geo-layers';\n import type { QuadkeyLayerProps } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getQuadkey: Accessor<D, string>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n filled: true,\n stroked: true,\n extruded: false,\n wireframe: false,\n elevationScale: 1,\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new QuadkeyLayer({\n id: props.id,\n data: props.data,\n getQuadkey: props.getQuadkey,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n elevationScale: props.elevationScale,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as QuadkeyLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getQuadkey,\n props.getFillColor,\n props.getElevation,\n props.extruded,\n props.elevationScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"41BA6CE,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC9B,CAAA,CAGlB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{S2Layer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglS2`,props:{id:{},data:{},getS2Token:{},getFillColor:{},getLineColor:{},getElevation:{},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{default:1},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getS2Token:u.getS2Token,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,elevationScale:u.elevationScale,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getS2Token,u.getFillColor,u.getElevation,u.extruded,u.elevationScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglS2};
2
+ //# sourceMappingURL=s2-MuPaEFbo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s2-MuPaEFbo.js","names":[],"sources":["../src/layers/deckgl/s2/VLayerDeckglS2.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render Google S2 cells as deck.gl polygons.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/geo-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/geo-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { S2Layer } from '@deck.gl/geo-layers';\n import type { S2LayerProps } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getS2Token: Accessor<D, string>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n filled: true,\n stroked: true,\n extruded: false,\n wireframe: false,\n elevationScale: 1,\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new S2Layer({\n id: props.id,\n data: props.data,\n getS2Token: props.getS2Token,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n elevationScale: props.elevationScale,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as S2LayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getS2Token,\n props.getFillColor,\n props.getElevation,\n props.extruded,\n props.elevationScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"k1BA6CE,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAQ,CACjB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnC,CAAA,CAGb,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ScatterplotLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglScatterplot`,props:{id:{},data:{},getPosition:{},getRadius:{},getFillColor:{},getLineColor:{},getLineWidth:{},radiusUnits:{default:`meters`},radiusScale:{default:1},radiusMinPixels:{default:0},radiusMaxPixels:{default:2**53-1},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},stroked:{type:Boolean,default:!1},filled:{type:Boolean,default:!0},billboard:{type:Boolean,default:!1},antialiasing:{type:Boolean,default:!0},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getRadius:u.getRadius??1,getFillColor:u.getFillColor??[255,140,0],getLineColor:u.getLineColor??[0,0,0],getLineWidth:u.getLineWidth??1,radiusUnits:u.radiusUnits,radiusScale:u.radiusScale,radiusMinPixels:u.radiusMinPixels,radiusMaxPixels:u.radiusMaxPixels,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,stroked:u.stroked,filled:u.filled,billboard:u.billboard,antialiasing:u.antialiasing,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.getRadius,u.getFillColor,u.getLineColor,u.radiusScale,u.opacity,u.visible,u.stroked,u.filled],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglScatterplot};
2
+ //# sourceMappingURL=scatterplot-BBeJkOdi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatterplot-BBeJkOdi.js","names":[],"sources":["../src/layers/deckgl/scatterplot/VLayerDeckglScatterplot.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render circles at coordinate positions with data-driven radius / color.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ScatterplotLayer } from '@deck.gl/layers';\n import type { ScatterplotLayerProps } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getRadius?: Accessor<D, number>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getLineWidth?: Accessor<D, number>;\n radiusUnits?: 'meters' | 'common' | 'pixels';\n radiusScale?: number;\n radiusMinPixels?: number;\n radiusMaxPixels?: number;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n stroked?: boolean;\n filled?: boolean;\n billboard?: boolean;\n antialiasing?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n radiusUnits: 'meters',\n radiusScale: 1,\n radiusMinPixels: 0,\n radiusMaxPixels: Number.MAX_SAFE_INTEGER,\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ScatterplotLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getRadius: props.getRadius ?? 1,\n getFillColor: props.getFillColor ?? [255, 140, 0],\n getLineColor: props.getLineColor ?? [0, 0, 0],\n getLineWidth: props.getLineWidth ?? 1,\n radiusUnits: props.radiusUnits,\n radiusScale: props.radiusScale,\n radiusMinPixels: props.radiusMinPixels,\n radiusMaxPixels: props.radiusMaxPixels,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n stroked: props.stroked,\n filled: props.filled,\n billboard: props.billboard,\n antialiasing: props.antialiasing,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as ScatterplotLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.getRadius,\n props.getFillColor,\n props.getLineColor,\n props.radiusScale,\n props.opacity,\n props.visible,\n props.stroked,\n props.filled,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"26BAgDE,IAAM,EAAQ,EAmBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAiB,CAC1B,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,UAAW,EAAM,WAAa,EAC9B,aAAc,EAAM,cAAgB,CAAC,IAAK,IAAK,EAAC,CAChD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAC,CAC5C,aAAc,EAAM,cAAgB,EACpC,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,gBAAiB,EAAM,gBACvB,gBAAiB,EAAM,gBACvB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,UAAW,EAAM,UACjB,aAAc,EAAM,aACpB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC1B,CAAA,CAGtB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,UACN,EAAM,aACN,EAAM,aACN,EAAM,YACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,OACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ScenegraphLayer as c}from"@deck.gl/mesh-layers";const l=r({__name:`VLayerDeckglScenegraph`,props:{id:{},data:{},scenegraph:{},getPosition:{},getColor:{},getOrientation:{},getScale:{},getTranslation:{},getTransformMatrix:{},sizeScale:{default:1},sizeMinPixels:{default:0},sizeMaxPixels:{default:2**53-1},animator:{},loaders:{},loadOptions:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{},_animations:{},_lighting:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,scenegraph:u.scenegraph,getPosition:u.getPosition,getColor:u.getColor??[255,255,255,255],getOrientation:u.getOrientation??[0,0,0],getScale:u.getScale??[1,1,1],getTranslation:u.getTranslation??[0,0,0],sizeScale:u.sizeScale,sizeMinPixels:u.sizeMinPixels,sizeMaxPixels:u.sizeMaxPixels,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e),...u.getTransformMatrix!==void 0&&{getTransformMatrix:u.getTransformMatrix},...u.animator!==void 0&&{animator:u.animator},...u.loaders!==void 0&&{loaders:u.loaders},...u.loadOptions!==void 0&&{loadOptions:u.loadOptions},...u.highlightColor!==void 0&&{highlightColor:u.highlightColor},...u.beforeId!==void 0&&{beforeId:u.beforeId},...u._animations!==void 0&&{_animations:u._animations},...u._lighting!==void 0&&{_lighting:u._lighting}}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.scenegraph,u.getPosition,u.getColor,u.getOrientation,u.getScale,u.sizeScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglScenegraph};
2
+ //# sourceMappingURL=scenegraph-DTM4oQ_J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenegraph-DTM4oQ_J.js","names":[],"sources":["../src/layers/deckgl/scenegraph/VLayerDeckglScenegraph.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Instance an animated GLTF scenegraph at many positions.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/mesh-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/mesh-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ScenegraphLayer } from '@deck.gl/mesh-layers';\n import type { ScenegraphLayerProps } from '@deck.gl/mesh-layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n scenegraph: string | object;\n getPosition: Accessor<D, Position>;\n getColor?: Accessor<D, Color>;\n getOrientation?: Accessor<D, [number, number, number]>;\n getScale?: Accessor<D, [number, number, number] | number>;\n getTranslation?: Accessor<D, [number, number, number]>;\n getTransformMatrix?: Accessor<D, number[]>;\n sizeScale?: number;\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n animator?: object;\n loaders?: object[];\n loadOptions?: object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n // Animation and lighting options\n _animations?: Record<\n string,\n { playing?: boolean; speed?: number; startTime?: number }\n >;\n _lighting?: 'flat' | 'pbr';\n }\n\n const props = withDefaults(defineProps<Props>(), {\n sizeScale: 1,\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n // Build layer props object, excluding undefined optional props to avoid deck.gl bugs\n // where it tries to call undefined as a function (e.g., getTransformMatrix)\n const layerProps = {\n id: props.id,\n data: props.data,\n scenegraph: props.scenegraph,\n getPosition: props.getPosition,\n getColor: props.getColor ?? [255, 255, 255, 255],\n getOrientation: props.getOrientation ?? [0, 0, 0],\n getScale: props.getScale ?? [1, 1, 1],\n getTranslation: props.getTranslation ?? [0, 0, 0],\n sizeScale: props.sizeScale,\n sizeMinPixels: props.sizeMinPixels,\n sizeMaxPixels: props.sizeMaxPixels,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n // Only include optional props if defined\n ...(props.getTransformMatrix !== undefined && {\n getTransformMatrix: props.getTransformMatrix,\n }),\n ...(props.animator !== undefined && { animator: props.animator }),\n ...(props.loaders !== undefined && { loaders: props.loaders }),\n ...(props.loadOptions !== undefined && {\n loadOptions: props.loadOptions,\n }),\n ...(props.highlightColor !== undefined && {\n highlightColor: props.highlightColor,\n }),\n ...(props.beforeId !== undefined && { beforeId: props.beforeId }),\n ...(props._animations !== undefined && {\n _animations: props._animations,\n }),\n ...(props._lighting !== undefined && { _lighting: props._lighting }),\n };\n\n return new ScenegraphLayer(layerProps as ScenegraphLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.scenegraph,\n props.getPosition,\n props.getColor,\n props.getOrientation,\n props.getScale,\n props.sizeScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"+tBAkDE,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MAwCG,IAAI,EAAgB,CApCzB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,YAAa,EAAM,YACnB,SAAU,EAAM,UAAY,CAAC,IAAK,IAAK,IAAK,IAAG,CAC/C,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAG,EAAC,CAChD,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAC,CACpC,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAG,EAAC,CAChD,UAAW,EAAM,UACjB,cAAe,EAAM,cACrB,cAAe,EAAM,cACrB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAElD,GAAI,EAAM,qBAAuB,IAAA,IAAa,CAC5C,mBAAoB,EAAM,mBAC5B,CACA,GAAI,EAAM,WAAa,IAAA,IAAa,CAAE,SAAU,EAAM,SAAS,CAC/D,GAAI,EAAM,UAAY,IAAA,IAAa,CAAE,QAAS,EAAM,QAAQ,CAC5D,GAAI,EAAM,cAAgB,IAAA,IAAa,CACrC,YAAa,EAAM,YACrB,CACA,GAAI,EAAM,iBAAmB,IAAA,IAAa,CACxC,eAAgB,EAAM,eACxB,CACA,GAAI,EAAM,WAAa,IAAA,IAAa,CAAE,SAAU,EAAM,SAAS,CAC/D,GAAI,EAAM,cAAgB,IAAA,IAAa,CACrC,YAAa,EAAM,YACrB,CACA,GAAI,EAAM,YAAc,IAAA,IAAa,CAAE,UAAW,EAAM,UAAU,CAGP,CAAA,CAGzD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,YACN,EAAM,SACN,EAAM,eACN,EAAM,SACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ScreenGridLayer as c}from"@deck.gl/aggregation-layers";const l=r({__name:`VLayerDeckglScreenGrid`,props:{id:{},data:{},getPosition:{},getWeight:{},cellSizePixels:{default:100},cellMarginPixels:{default:2},colorRange:{},colorDomain:{},gpuAggregation:{type:Boolean,default:!1},aggregation:{default:`SUM`},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getWeight:u.getWeight??1,cellSizePixels:u.cellSizePixels,cellMarginPixels:u.cellMarginPixels,colorRange:u.colorRange,colorDomain:u.colorDomain,gpuAggregation:u.gpuAggregation,aggregation:u.aggregation,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.cellSizePixels,u.colorRange,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglScreenGrid};
2
+ //# sourceMappingURL=screen-grid-CxlQC4Kb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-grid-CxlQC4Kb.js","names":[],"sources":["../src/layers/deckgl/screen-grid/VLayerDeckglScreenGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Aggregate point data into a screen-aligned grid (zoom-dependent).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/aggregation-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/aggregation-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ScreenGridLayer } from '@deck.gl/aggregation-layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getWeight?: Accessor<D, number>;\n cellSizePixels?: number;\n cellMarginPixels?: number;\n colorRange?: Color[];\n colorDomain?: [number, number];\n gpuAggregation?: boolean;\n aggregation?: 'SUM' | 'MEAN' | 'MIN' | 'MAX';\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n cellSizePixels: 100,\n cellMarginPixels: 2,\n gpuAggregation: false,\n aggregation: 'SUM',\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ScreenGridLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getWeight: props.getWeight ?? 1,\n cellSizePixels: props.cellSizePixels,\n cellMarginPixels: props.cellMarginPixels,\n colorRange: props.colorRange,\n colorDomain: props.colorDomain,\n gpuAggregation: props.gpuAggregation,\n aggregation: props.aggregation,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as unknown as ConstructorParameters<typeof ScreenGridLayer>[0]);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.cellSizePixels,\n props.colorRange,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"6pBAsCE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAgB,CACzB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,UAAW,EAAM,WAAa,EAC9B,eAAgB,EAAM,eACtB,iBAAkB,EAAM,iBACxB,WAAY,EAAM,WAClB,YAAa,EAAM,YACnB,eAAgB,EAAM,eACtB,YAAa,EAAM,YACnB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACY,CAAA,CAG5D,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,eACN,EAAM,WACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{SimpleMeshLayer as c}from"@deck.gl/mesh-layers";const l=r({__name:`VLayerDeckglSimpleMesh`,props:{id:{},data:{},mesh:{},getPosition:{},getColor:{},getOrientation:{},getScale:{},getTranslation:{},getTransformMatrix:{},texture:{},sizeScale:{default:1},wireframe:{type:Boolean,default:!1},material:{type:[Boolean,Object]},loaders:{},loadOptions:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,mesh:u.mesh,getPosition:u.getPosition,getColor:u.getColor??[255,255,255,255],getOrientation:u.getOrientation??[0,0,0],getScale:u.getScale??[1,1,1],getTranslation:u.getTranslation??[0,0,0],sizeScale:u.sizeScale,wireframe:u.wireframe,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e),...u.getTransformMatrix!==void 0&&{getTransformMatrix:u.getTransformMatrix},...u.texture!==void 0&&{texture:u.texture},...u.material!==void 0&&{material:u.material},...u.loaders!==void 0&&{loaders:u.loaders},...u.loadOptions!==void 0&&{loadOptions:u.loadOptions},...u.highlightColor!==void 0&&{highlightColor:u.highlightColor},...u.beforeId!==void 0&&{beforeId:u.beforeId}}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.mesh,u.getPosition,u.getColor,u.getOrientation,u.getScale,u.sizeScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglSimpleMesh};
2
+ //# sourceMappingURL=simple-mesh-BxLUvOJK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-mesh-BxLUvOJK.js","names":[],"sources":["../src/layers/deckgl/simple-mesh/VLayerDeckglSimpleMesh.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Instance a single 3D mesh (GLTF / OBJ) at many positions.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/mesh-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/mesh-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { SimpleMeshLayer } from '@deck.gl/mesh-layers';\n import type { SimpleMeshLayerProps } from '@deck.gl/mesh-layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n mesh: string | object;\n getPosition: Accessor<D, Position>;\n getColor?: Accessor<D, Color>;\n getOrientation?: Accessor<D, [number, number, number]>;\n getScale?: Accessor<D, [number, number, number] | number>;\n getTranslation?: Accessor<D, [number, number, number]>;\n getTransformMatrix?: Accessor<D, number[]>;\n texture?: string | object;\n sizeScale?: number;\n wireframe?: boolean;\n material?: boolean | object;\n loaders?: object[];\n loadOptions?: object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n sizeScale: 1,\n wireframe: false,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n // Build layer props object, excluding undefined optional props to avoid deck.gl bugs\n // where it tries to call undefined as a function (e.g., getTransformMatrix)\n const layerProps = {\n id: props.id,\n data: props.data,\n mesh: props.mesh,\n getPosition: props.getPosition,\n getColor: props.getColor ?? [255, 255, 255, 255],\n getOrientation: props.getOrientation ?? [0, 0, 0],\n getScale: props.getScale ?? [1, 1, 1],\n getTranslation: props.getTranslation ?? [0, 0, 0],\n sizeScale: props.sizeScale,\n wireframe: props.wireframe,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n // Only include optional props if defined\n ...(props.getTransformMatrix !== undefined && {\n getTransformMatrix: props.getTransformMatrix,\n }),\n ...(props.texture !== undefined && { texture: props.texture }),\n ...(props.material !== undefined && { material: props.material }),\n ...(props.loaders !== undefined && { loaders: props.loaders }),\n ...(props.loadOptions !== undefined && {\n loadOptions: props.loadOptions,\n }),\n ...(props.highlightColor !== undefined && {\n highlightColor: props.highlightColor,\n }),\n ...(props.beforeId !== undefined && { beforeId: props.beforeId }),\n };\n\n return new SimpleMeshLayer(layerProps as SimpleMeshLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.mesh,\n props.getPosition,\n props.getColor,\n props.getOrientation,\n props.getScale,\n props.sizeScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"usBA4CE,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MAoCG,IAAI,EAAgB,CAhCzB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,SAAU,EAAM,UAAY,CAAC,IAAK,IAAK,IAAK,IAAG,CAC/C,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAG,EAAC,CAChD,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAC,CACpC,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAG,EAAC,CAChD,UAAW,EAAM,UACjB,UAAW,EAAM,UACjB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAElD,GAAI,EAAM,qBAAuB,IAAA,IAAa,CAC5C,mBAAoB,EAAM,mBAC5B,CACA,GAAI,EAAM,UAAY,IAAA,IAAa,CAAE,QAAS,EAAM,QAAQ,CAC5D,GAAI,EAAM,WAAa,IAAA,IAAa,CAAE,SAAU,EAAM,SAAS,CAC/D,GAAI,EAAM,UAAY,IAAA,IAAa,CAAE,QAAS,EAAM,QAAQ,CAC5D,GAAI,EAAM,cAAgB,IAAA,IAAa,CACrC,YAAa,EAAM,YACrB,CACA,GAAI,EAAM,iBAAmB,IAAA,IAAa,CACxC,eAAgB,EAAM,eACxB,CACA,GAAI,EAAM,WAAa,IAAA,IAAa,CAAE,SAAU,EAAM,SAAS,CAGJ,CAAA,CAGzD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,KACN,EAAM,YACN,EAAM,SACN,EAAM,eACN,EAAM,SACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{SolidPolygonLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglSolidPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getElevation:{},filled:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{default:1},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPolygon:u.getPolygon,getFillColor:u.getFillColor??[0,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,filled:u.filled,extruded:u.extruded,wireframe:u.wireframe,elevationScale:u.elevationScale,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPolygon,u.getFillColor,u.getElevation,u.extruded,u.elevationScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglSolidPolygon};
2
+ //# sourceMappingURL=solid-polygon-DwQBLTy0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-polygon-DwQBLTy0.js","names":[],"sources":["../src/layers/deckgl/solid-polygon/VLayerDeckglSolidPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Triangulated solid polygons with extrusion (fastest filled polygons in deck.gl).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { SolidPolygonLayer } from '@deck.gl/layers';\n import type { SolidPolygonLayerProps } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPolygon: Accessor<D, Position[] | Position[][]>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n filled?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n filled: true,\n extruded: false,\n wireframe: false,\n elevationScale: 1,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new SolidPolygonLayer({\n id: props.id,\n data: props.data,\n getPolygon: props.getPolygon,\n getFillColor: props.getFillColor ?? [0, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n filled: props.filled,\n extruded: props.extruded,\n wireframe: props.wireframe,\n elevationScale: props.elevationScale,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as SolidPolygonLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPolygon,\n props.getFillColor,\n props.getElevation,\n props.extruded,\n props.elevationScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"+rBAwCE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAkB,CAC3B,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,OAAQ,EAAM,OACd,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACzB,CAAA,CAGvB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,t}from"./symbols-CFCXX1_B.js";import{defineComponent as n,onBeforeUnmount as r,ref as i,renderSlot as a,watch as o}from"vue";import{MaplibreStarfieldLayer as s}from"@geoql/maplibre-gl-starfield";const c=n({__name:`VLayerMaplibreStarfield`,props:{id:{default:`starfield`},starCount:{default:4e3},starSize:{default:2},starColor:{default:16777215},galaxyTextureUrl:{},galaxyBrightness:{default:.35},before:{},sunEnabled:{type:Boolean,default:!1},sunAzimuth:{default:180},sunAltitude:{default:45},sunSize:{default:100},sunColor:{default:16772778},sunIntensity:{default:1.5},autoFadeStars:{type:Boolean,default:!0},fadeAltitude:{}},setup(n){let c=n,l=e(t),u=i(!1),d=null,f=()=>l.value||null,p=()=>{let e=f();if(!(!e||!e.isStyleLoaded()))try{e.getLayer(c.id)&&e.removeLayer(c.id),d=new s({id:c.id,starCount:c.starCount,starSize:c.starSize,starColor:c.starColor,galaxyTextureUrl:c.galaxyTextureUrl,galaxyBrightness:c.galaxyBrightness,sunEnabled:c.sunEnabled,sunAzimuth:c.sunAzimuth,sunAltitude:c.sunAltitude,sunSize:c.sunSize,sunColor:c.sunColor,sunIntensity:c.sunIntensity,autoFadeStars:c.autoFadeStars,fadeAltitude:c.fadeAltitude}),e.addLayer(d,c.before||void 0)}catch(e){console.error(`Error adding starfield layer:`,e)}},m=e=>{e&&e.on(`style.load`,()=>{let t=()=>{e.isStyleLoaded()?u.value=!0:(u.value=!1,setTimeout(t,200))};t()})};return o(l,e=>{e&&(m(e),e.isStyleLoaded()&&(u.value=!0))},{immediate:!0}),o(u,e=>{e&&p()}),o(()=>[c.sunAzimuth,c.sunAltitude,c.fadeAltitude],([e,t,n])=>{d?.setSunPosition(e,t,n)}),o(()=>c.fadeAltitude,e=>{d?.setFadeAltitude(e)}),o(()=>c.sunEnabled,e=>{d?.setSunEnabled(e)}),o(()=>c.sunIntensity,e=>{d?.setSunIntensity(e)}),o(()=>c.sunSize,e=>{d?.setSunSize(e)}),r(()=>{let e=f();if(e){try{e.getLayer(c.id)&&e.removeLayer(c.id)}catch(e){console.error(`Error cleaning up starfield layer:`,e)}d=null}}),(e,t)=>a(e.$slots,`default`)}});export{c as StarfieldLayer};
2
+ //# sourceMappingURL=starfield-D0gIX-34.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starfield-D0gIX-34.js","names":[],"sources":["../src/layers/maplibre/custom/starfield/VLayerMaplibreStarfield.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Animated starfield overlay rendered as a custom MapLibre layer for night-time / space-themed basemaps.\n *\n * @requires `@geoql/maplibre-gl-starfield`\n *\n * Install with:\n * `pnpm add @geoql/maplibre-gl-starfield`\n */\n import { ref, watch, onBeforeUnmount } from 'vue';\n import type { Map } from 'maplibre-gl';\n import { MaplibreStarfieldLayer } from '@geoql/maplibre-gl-starfield';\n import { injectStrict, MapKey } from '../../../../utils';\n\n interface Props {\n id?: string;\n starCount?: number;\n starSize?: number;\n starColor?: number;\n galaxyTextureUrl?: string;\n galaxyBrightness?: number;\n before?: string;\n sunEnabled?: boolean;\n sunAzimuth?: number;\n sunAltitude?: number;\n sunSize?: number;\n sunColor?: number;\n sunIntensity?: number;\n autoFadeStars?: boolean;\n fadeAltitude?: number;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n id: 'starfield',\n starCount: 4000,\n starSize: 2.0,\n starColor: 0xffffff,\n galaxyBrightness: 0.35,\n sunEnabled: false,\n sunAzimuth: 180,\n sunAltitude: 45,\n sunSize: 100,\n sunColor: 0xffeeaa,\n sunIntensity: 1.5,\n autoFadeStars: true,\n });\n\n const map = injectStrict(MapKey);\n const loaded = ref(false);\n let layerInstance: MaplibreStarfieldLayer | null = null;\n\n const getMapInstance = (): Map | null => {\n return map.value || null;\n };\n\n const addLayer = (): void => {\n const mapInstance = getMapInstance();\n if (!mapInstance || !mapInstance.isStyleLoaded()) return;\n\n try {\n if (mapInstance.getLayer(props.id)) {\n mapInstance.removeLayer(props.id);\n }\n\n layerInstance = new MaplibreStarfieldLayer({\n id: props.id,\n starCount: props.starCount,\n starSize: props.starSize,\n starColor: props.starColor,\n galaxyTextureUrl: props.galaxyTextureUrl,\n galaxyBrightness: props.galaxyBrightness,\n sunEnabled: props.sunEnabled,\n sunAzimuth: props.sunAzimuth,\n sunAltitude: props.sunAltitude,\n sunSize: props.sunSize,\n sunColor: props.sunColor,\n sunIntensity: props.sunIntensity,\n autoFadeStars: props.autoFadeStars,\n fadeAltitude: props.fadeAltitude,\n });\n\n mapInstance.addLayer(layerInstance, props.before || undefined);\n } catch (error) {\n console.error('Error adding starfield layer:', error);\n }\n };\n\n const setupMap = (mapInstance: Map) => {\n if (!mapInstance) return;\n\n mapInstance.on('style.load', () => {\n const styleTimeout = () => {\n if (!mapInstance.isStyleLoaded()) {\n loaded.value = false;\n setTimeout(styleTimeout, 200);\n } else {\n loaded.value = true;\n }\n };\n styleTimeout();\n });\n };\n\n watch(\n map,\n (newMap) => {\n if (newMap) {\n setupMap(newMap);\n if (newMap.isStyleLoaded()) {\n loaded.value = true;\n }\n }\n },\n { immediate: true },\n );\n\n watch(loaded, (value) => {\n if (value) {\n addLayer();\n }\n });\n\n watch(\n () => [props.sunAzimuth, props.sunAltitude, props.fadeAltitude],\n ([az, alt, fade]) => {\n layerInstance?.setSunPosition(\n az as number,\n alt as number,\n fade as number | undefined,\n );\n },\n );\n watch(\n () => props.fadeAltitude,\n (fade) => {\n layerInstance?.setFadeAltitude(fade);\n },\n );\n\n watch(\n () => props.sunEnabled,\n (enabled) => {\n layerInstance?.setSunEnabled(enabled);\n },\n );\n\n watch(\n () => props.sunIntensity,\n (intensity) => {\n layerInstance?.setSunIntensity(intensity);\n },\n );\n\n watch(\n () => props.sunSize,\n (size) => {\n layerInstance?.setSunSize(size);\n },\n );\n\n onBeforeUnmount(() => {\n const mapInstance = getMapInstance();\n if (!mapInstance) return;\n\n try {\n if (mapInstance.getLayer(props.id)) {\n mapInstance.removeLayer(props.id);\n }\n } catch (error) {\n console.error('Error cleaning up starfield layer:', error);\n }\n layerInstance = null;\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"0oBAgCE,IAAM,EAAQ,EAeR,EAAM,EAAa,EAAM,CACzB,EAAS,EAAI,GAAK,CACpB,EAA+C,KAE7C,MACG,EAAI,OAAS,KAGhB,MAAuB,CAC3B,IAAM,EAAc,GAAe,CAC/B,MAAC,GAAe,CAAC,EAAY,eAAc,EAE/C,GAAI,CACE,EAAY,SAAS,EAAM,GAAE,EAC/B,EAAY,YAAY,EAAM,GAAE,CAGlC,EAAgB,IAAI,EAAuB,CACzC,GAAI,EAAM,GACV,UAAW,EAAM,UACjB,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,iBAAkB,EAAM,iBACxB,iBAAkB,EAAM,iBACxB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,YAAa,EAAM,YACnB,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,aAAc,EAAM,aACpB,cAAe,EAAM,cACrB,aAAc,EAAM,aACrB,CAAA,CAED,EAAY,SAAS,EAAe,EAAM,QAAU,IAAA,GAAS,OACtD,EAAO,CACd,QAAQ,MAAM,gCAAiC,EAAK,GAIlD,EAAY,GAAqB,CAChC,GAEL,EAAY,GAAG,iBAAoB,CACjC,IAAM,MAAqB,CACpB,EAAY,eAAc,CAI7B,EAAO,MAAQ,IAHf,EAAO,MAAQ,GACf,WAAW,EAAc,IAAG,GAKhC,GAAa,EACd,SAGH,EACE,EACC,GAAW,CACN,IACF,EAAS,EAAM,CACX,EAAO,eAAc,GACvB,EAAO,MAAQ,MAIrB,CAAE,UAAW,GACf,CAAA,CAEA,EAAM,EAAS,GAAU,CACnB,GACF,GAAS,EAEZ,CAED,MACQ,CAAC,EAAM,WAAY,EAAM,YAAa,EAAM,aAAY,EAC7D,CAAC,EAAI,EAAK,KAAU,CACnB,GAAe,eACb,EACA,EACA,EACF,EAEJ,CACA,MACQ,EAAM,aACX,GAAS,CACR,GAAe,gBAAgB,EAAI,EAEvC,CAEA,MACQ,EAAM,WACX,GAAY,CACX,GAAe,cAAc,EAAO,EAExC,CAEA,MACQ,EAAM,aACX,GAAc,CACb,GAAe,gBAAgB,EAAS,EAE5C,CAEA,MACQ,EAAM,QACX,GAAS,CACR,GAAe,WAAW,EAAI,EAElC,CAEA,MAAsB,CACpB,IAAM,EAAc,GAAe,CAC9B,KAEL,IAAI,CACE,EAAY,SAAS,EAAM,GAAE,EAC/B,EAAY,YAAY,EAAM,GAAE,OAE3B,EAAO,CACd,QAAQ,MAAM,qCAAsC,EAAK,CAE3D,EAAgB,OACjB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{inject as e,onUnmounted as t,provide as n,ref as r,shallowRef as i,watch as a}from"vue";function o(t,n){let r=e(t,n);if(!r)throw Error(`Could not resolve ${t.description}`);return r}async function s(e,t,n){try{return await t()}catch(t){let r=n??`pnpm add ${e}`,i=t instanceof Error?t.message:String(t),a=Error(`[@geoql/v-maplibre] Missing optional peer dependency "${e}". Install it with: ${r}\nOriginal error: ${i}`);throw t instanceof Error&&t.stack&&(a.stack=`${a.message}\nCaused by: ${t.stack}`),a}}const c=Symbol(`DeckOverlay`),l=Symbol(`DeckLayers`);function u(o,u={}){let{interleaved:d=!1,globe:f=!1}=u,p=d||f,m=e=>{if(!f)return e;let t=e;return typeof t.clone==`function`?t.clone({parameters:{cullMode:`none`,...t.props?.parameters??{}}}):e},h=e(c,null),g=e(l,null);if(h&&g)return{overlay:h,isInitialized:r(!0),layers:r([]),initOverlay:()=>Promise.resolve(),...g};let _=i(null),v=r([]),y=r(!1),b=null,x=null;function S(e){x=e=>{if(!_.value)return;let t=_.value.pickObject({x:e.point.x,y:e.point.y,radius:5});if(!t?.layer)return;let n=t.layer.props.onClick;n&&n(t,e)},e.on(`click`,x)}function C(e){x&&e&&e.off(`click`,x),x=null}let w=()=>{let e=o.value;return!e||_.value?Promise.resolve():b||(b=s(`@deck.gl/mapbox`,()=>import(`@deck.gl/mapbox`),`pnpm add @deck.gl/core @deck.gl/mapbox`).then(({MapboxOverlay:t})=>{if(!_.value){if(f&&e.getProjection()?.type!==`globe`){let t=e.getCenter(),n=e.getZoom(),r=e.getPitch(),i=e.getBearing();e.setProjection({type:`globe`}),e.setCenter(t),e.setZoom(n),e.setPitch(r),e.setBearing(i)}_.value=new t({interleaved:p,layers:[],onError:e=>console.error(`[useDeckOverlay] deck onError:`,e)}),e.addControl(_.value),S(e),y.value=!0}}).catch(e=>{console.error(`[deck.gl] Error initializing overlay:`,e),b=null}),b)},T=e=>e.id,E=new Map,D=()=>{v.value=[...E.values()],_.value&&_.value.setProps({layers:v.value})},O=e=>{let t=m(e);E.set(T(t),t),_.value?D():w().then(D)},k=e=>{E.delete(e),D()},A=(e,t)=>{E.has(e)?(E.set(e,m(t)),D()):O(t)},j=()=>[...E.values()];return a(o,e=>{if(!e||_.value)return;if(e.isStyleLoaded()){w();return}e.once(`style.load`,()=>w());let t=setInterval(()=>{if(_.value){clearInterval(t);return}e.isStyleLoaded()&&(clearInterval(t),w())},100);setTimeout(()=>clearInterval(t),1e4)},{immediate:!0}),n(c,_),n(l,{addLayer:O,removeLayer:k,updateLayer:A,getLayers:j}),t(()=>{if(C(o.value),_.value&&o.value)try{o.value.removeControl(_.value),_.value.finalize()}catch(e){console.error(`[deck.gl] Error cleaning up overlay:`,e)}_.value=null,v.value=[],y.value=!1,b=null}),{overlay:_,layers:v,isInitialized:y,initOverlay:w,addLayer:O,removeLayer:k,updateLayer:A,getLayers:j}}function d(){let t=e(l,null),n=e(c,null);if(!t)throw Error(`[deck.gl] useDeckLayers must be used within a component that has initialized useDeckOverlay`);return{...t,overlay:n}}const f=Symbol(`Map`),p=Symbol(`Protocol`);export{d as a,o as c,c as i,p as n,u as o,l as r,s,f as t};
2
+ //# sourceMappingURL=symbols-CFCXX1_B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols-CFCXX1_B.js","names":[],"sources":["../src/utils/injects.ts","../src/utils/require-peer.ts","../src/layers/deckgl/_shared/useDeckOverlay.ts","../src/utils/symbols.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport { inject } from 'vue';\n\n/**\n * Dependency injection 🥳\n * @param {InjectionKey} key - The key to inject\n * @param {string | undefined} fallback - The fallback value\n * @returns {undefined} - The value\n */\nexport function injectStrict<T>(key: InjectionKey<T>, fallback?: T): T {\n const resolved = inject(key, fallback);\n if (!resolved) {\n throw new Error(`Could not resolve ${key.description}`);\n }\n return resolved;\n}\n","/**\n * Wraps a dynamic `import()` of an optional peer dependency and converts the\n * opaque bundler `Cannot find module '…'` error into an actionable message\n * that names the package and includes a copy-pasteable install command.\n *\n * Use this **only** in non-Vue-SFC contexts (composables, lazy data loaders,\n * controls that already use `await import()`). Inside `<script setup>` of a\n * Vue component, prefer the existing top-level `import` statements — Vue\n * templates render synchronously and turning component-level imports into\n * dynamic ones changes the component contract.\n *\n * @example\n * ```ts\n * const { LidarControl } = await requirePeer(\n * 'maplibre-gl-lidar',\n * () => import('maplibre-gl-lidar'),\n * );\n * ```\n *\n * @example Custom install command (e.g. multi-package install)\n * ```ts\n * const mod = await requirePeer(\n * '@developmentseed/deck.gl-geotiff',\n * () => import('@developmentseed/deck.gl-geotiff'),\n * 'pnpm add @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj',\n * );\n * ```\n *\n * @param packageName - The npm package name (used in the error message).\n * @param loader - A thunk returning `import('<packageName>')`. Must be a thunk\n * so the bundler can split it and so the import is evaluated lazily.\n * @param installCommand - Optional override for the install hint. Defaults to\n * `pnpm add <packageName>`. Pass a custom command when several peer packages\n * must be installed together.\n * @returns The resolved module exports.\n * @throws Error with a descriptive message naming the package, the install\n * command, and the underlying loader error.\n */\nexport async function requirePeer<T>(\n packageName: string,\n loader: () => Promise<T>,\n installCommand?: string,\n): Promise<T> {\n try {\n return await loader();\n } catch (cause) {\n const install = installCommand ?? `pnpm add ${packageName}`;\n const reason = cause instanceof Error ? cause.message : String(cause);\n const error = new Error(\n `[@geoql/v-maplibre] Missing optional peer dependency \"${packageName}\". ` +\n `Install it with: ${install}\\nOriginal error: ${reason}`,\n );\n if (cause instanceof Error && cause.stack) {\n error.stack = `${error.message}\\nCaused by: ${cause.stack}`;\n }\n throw error;\n }\n}\n","import {\n inject,\n provide,\n ref,\n shallowRef,\n onUnmounted,\n watch,\n type InjectionKey,\n type Ref,\n type ShallowRef,\n} from 'vue';\nimport type { MapboxOverlay } from '@deck.gl/mapbox';\nimport type { Map, MapMouseEvent } from 'maplibre-gl';\nimport { requirePeer } from '../../../utils';\n\nexport const DeckOverlayKey: InjectionKey<ShallowRef<MapboxOverlay | null>> =\n Symbol('DeckOverlay');\n\nexport const DeckLayersKey: InjectionKey<{\n addLayer: (layer: unknown) => void;\n removeLayer: (layerId: string) => void;\n updateLayer: (layerId: string, layer: unknown) => void;\n getLayers: () => unknown[];\n}> = Symbol('DeckLayers');\n\ninterface UseDeckOverlayOptions {\n interleaved?: boolean;\n /**\n * Enable MapLibre globe projection. Implies `interleaved: true` (required for\n * deck.gl layers to share depth with the globe) and auto-injects\n * `parameters.cullMode = 'none'` on every layer so billboard-style layers\n * (Scatterplot / Trips / Icon / Text) don't clip off the sphere on pitch.\n */\n globe?: boolean;\n}\n\ninterface UseDeckOverlayReturn {\n overlay: ShallowRef<MapboxOverlay | null>;\n layers: Ref<unknown[]>;\n isInitialized: Ref<boolean>;\n initOverlay: () => Promise<void>;\n addLayer: (layer: unknown) => void;\n removeLayer: (layerId: string) => void;\n updateLayer: (layerId: string, layer: unknown) => void;\n getLayers: () => unknown[];\n}\n\nexport function useDeckOverlay(\n map: Ref<Map | null>,\n options: UseDeckOverlayOptions = {},\n): UseDeckOverlayReturn {\n const { interleaved = false, globe = false } = options;\n const useInterleaved = interleaved || globe;\n\n const applyGlobeParams = (layer: unknown): unknown => {\n if (!globe) return layer;\n const l = layer as {\n clone?: (props: Record<string, unknown>) => unknown;\n props?: { parameters?: Record<string, unknown> };\n };\n if (typeof l.clone !== 'function') return layer;\n return l.clone({\n parameters: { cullMode: 'none', ...(l.props?.parameters ?? {}) },\n });\n };\n\n const existingOverlay = inject(DeckOverlayKey, null);\n const existingLayersRegistry = inject(DeckLayersKey, null);\n\n if (existingOverlay && existingLayersRegistry) {\n return {\n overlay: existingOverlay,\n isInitialized: ref(true),\n layers: ref([]),\n initOverlay: () => Promise.resolve(),\n ...existingLayersRegistry,\n };\n }\n\n const overlay = shallowRef<MapboxOverlay | null>(null);\n const layers = ref<unknown[]>([]);\n const isInitialized = ref(false);\n let initPromise: Promise<void> | null = null;\n let clickHandler: ((e: MapMouseEvent) => void) | null = null;\n\n /**\n * Workaround for deck.gl MapboxOverlay click events not reaching layer onClick\n * callbacks. The built-in path (_onPointerDown → _onEvent → getLastPickedObject)\n * fails to dispatch clicks. We register our own MapLibre click handler that uses\n * overlay.pickObject() for a fresh GPU pick and dispatches to the layer's onClick.\n */\n function registerClickHandler(mapInstance: Map): void {\n clickHandler = (e: MapMouseEvent) => {\n if (!overlay.value) return;\n const info = overlay.value.pickObject({\n x: e.point.x,\n y: e.point.y,\n radius: 5,\n });\n if (!info?.layer) return;\n\n const layerProps = info.layer.props as Record<string, unknown>;\n const onClick = layerProps.onClick as\n | ((i: unknown, ev: unknown) => boolean | void)\n | undefined;\n if (onClick) {\n onClick(info, e);\n }\n };\n mapInstance.on('click', clickHandler);\n }\n\n function removeClickHandler(mapInstance: Map | null): void {\n if (clickHandler && mapInstance) {\n mapInstance.off('click', clickHandler);\n }\n clickHandler = null;\n }\n\n const initOverlay = (): Promise<void> => {\n const mapInstance = map.value;\n if (!mapInstance) return Promise.resolve();\n if (overlay.value) return Promise.resolve();\n if (initPromise) return initPromise;\n\n initPromise = requirePeer(\n '@deck.gl/mapbox',\n () => import('@deck.gl/mapbox'),\n 'pnpm add @deck.gl/core @deck.gl/mapbox',\n )\n .then(({ MapboxOverlay }) => {\n if (overlay.value) return;\n\n if (globe && mapInstance.getProjection()?.type !== 'globe') {\n const center = mapInstance.getCenter();\n const zoom = mapInstance.getZoom();\n const pitch = mapInstance.getPitch();\n const bearing = mapInstance.getBearing();\n mapInstance.setProjection({ type: 'globe' });\n mapInstance.setCenter(center);\n mapInstance.setZoom(zoom);\n mapInstance.setPitch(pitch);\n mapInstance.setBearing(bearing);\n }\n\n overlay.value = new MapboxOverlay({\n interleaved: useInterleaved,\n layers: [],\n onError: (err: unknown) =>\n console.error('[useDeckOverlay] deck onError:', err),\n } as ConstructorParameters<typeof MapboxOverlay>[0]);\n\n mapInstance.addControl(overlay.value);\n registerClickHandler(mapInstance);\n isInitialized.value = true;\n })\n .catch((error) => {\n console.error('[deck.gl] Error initializing overlay:', error);\n initPromise = null;\n });\n\n return initPromise;\n };\n\n const getLayerId = (layer: unknown): string => {\n return (layer as { id: string }).id;\n };\n\n // Imperative id-keyed registry. A reactive array rebuilt via spread reads\n // races when N child layers mount in the same tick (all read the pre-write\n // value and clobber each other, leaving only the last layer). A Map mutated\n // in place is insertion-ordered and race-free, so every layer survives.\n const layerRegistry = new Map<string, unknown>();\n\n const syncLayers = () => {\n layers.value = [...layerRegistry.values()];\n if (overlay.value) {\n overlay.value.setProps({ layers: layers.value as never });\n }\n };\n\n const addLayer = (rawLayer: unknown): void => {\n const layer = applyGlobeParams(rawLayer);\n layerRegistry.set(getLayerId(layer), layer);\n\n if (overlay.value) {\n syncLayers();\n } else {\n initOverlay().then(syncLayers);\n }\n };\n\n const removeLayer = (layerId: string): void => {\n layerRegistry.delete(layerId);\n syncLayers();\n };\n\n const updateLayer = (layerId: string, rawLayer: unknown): void => {\n if (layerRegistry.has(layerId)) {\n layerRegistry.set(layerId, applyGlobeParams(rawLayer));\n syncLayers();\n } else {\n addLayer(rawLayer);\n }\n };\n\n const getLayers = (): unknown[] => {\n return [...layerRegistry.values()];\n };\n\n watch(\n map,\n (mapInstance) => {\n if (!mapInstance || overlay.value) return;\n if (mapInstance.isStyleLoaded()) {\n initOverlay();\n return;\n }\n mapInstance.once('style.load', () => initOverlay());\n const interval = setInterval(() => {\n if (overlay.value) {\n clearInterval(interval);\n return;\n }\n if (mapInstance.isStyleLoaded()) {\n clearInterval(interval);\n initOverlay();\n }\n }, 100);\n setTimeout(() => clearInterval(interval), 10000);\n },\n { immediate: true },\n );\n\n provide(DeckOverlayKey, overlay);\n provide(DeckLayersKey, {\n addLayer,\n removeLayer,\n updateLayer,\n getLayers,\n });\n\n onUnmounted(() => {\n removeClickHandler(map.value);\n if (overlay.value && map.value) {\n try {\n map.value.removeControl(overlay.value);\n overlay.value.finalize();\n } catch (error) {\n console.error('[deck.gl] Error cleaning up overlay:', error);\n }\n }\n overlay.value = null;\n layers.value = [];\n isInitialized.value = false;\n initPromise = null;\n });\n\n return {\n overlay,\n layers,\n isInitialized,\n initOverlay,\n addLayer,\n removeLayer,\n updateLayer,\n getLayers,\n };\n}\n\nexport function useDeckLayers() {\n const registry = inject(DeckLayersKey, null);\n const overlay = inject(DeckOverlayKey, null);\n\n if (!registry) {\n throw new Error(\n '[deck.gl] useDeckLayers must be used within a component that has initialized useDeckOverlay',\n );\n }\n\n return {\n ...registry,\n overlay,\n };\n}\n","import type { Map } from 'maplibre-gl';\nimport type { Protocol } from 'pmtiles';\nimport type { InjectionKey, Ref } from 'vue';\n\nconst MapKey: InjectionKey<Ref<Map | null>> = Symbol('Map');\nconst PMTileProtocolKey: InjectionKey<Protocol | null> = Symbol('Protocol');\n\nexport { MapKey, PMTileProtocolKey };\nexport {\n DeckOverlayKey,\n DeckLayersKey,\n} from '../layers/deckgl/_shared/useDeckOverlay';\n"],"mappings":"+FASA,SAAgB,EAAgB,EAAsB,EAAiB,CACrE,IAAM,EAAW,EAAO,EAAK,EAAS,CACtC,GAAI,CAAC,EACH,MAAU,MAAM,qBAAqB,EAAI,cAAc,CAEzD,OAAO,ECwBT,eAAsB,EACpB,EACA,EACA,EACY,CACZ,GAAI,CACF,OAAO,MAAM,GAAQ,OACd,EAAO,CACd,IAAM,EAAU,GAAkB,YAAY,IACxC,EAAS,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAC/D,EAAY,MAChB,yDAAyD,EAAY,sBAC/C,EAAQ,oBAAoB,IACnD,CAID,MAHI,aAAiB,OAAS,EAAM,QAClC,EAAM,MAAQ,GAAG,EAAM,QAAQ,eAAe,EAAM,SAEhD,GCxCV,MAAa,EACX,OAAO,cAAc,CAEV,EAKR,OAAO,aAAa,CAwBzB,SAAgB,EACd,EACA,EAAiC,EAAE,CACb,CACtB,GAAM,CAAE,cAAc,GAAO,QAAQ,IAAU,EACzC,EAAiB,GAAe,EAEhC,EAAoB,GAA4B,CACpD,GAAI,CAAC,EAAO,OAAO,EACnB,IAAM,EAAI,EAKV,OADI,OAAO,EAAE,OAAU,WAChB,EAAE,MAAM,CACb,WAAY,CAAE,SAAU,OAAQ,GAAI,EAAE,OAAO,YAAc,EAAE,CAAG,CACjE,CAAC,CAHwC,GAMtC,EAAkB,EAAO,EAAgB,KAAK,CAC9C,EAAyB,EAAO,EAAe,KAAK,CAE1D,GAAI,GAAmB,EACrB,MAAO,CACL,QAAS,EACT,cAAe,EAAI,GAAK,CACxB,OAAQ,EAAI,EAAE,CAAC,CACf,gBAAmB,QAAQ,SAAS,CACpC,GAAG,EACJ,CAGH,IAAM,EAAU,EAAiC,KAAK,CAChD,EAAS,EAAe,EAAE,CAAC,CAC3B,EAAgB,EAAI,GAAM,CAC5B,EAAoC,KACpC,EAAoD,KAQxD,SAAS,EAAqB,EAAwB,CACpD,EAAgB,GAAqB,CACnC,GAAI,CAAC,EAAQ,MAAO,OACpB,IAAM,EAAO,EAAQ,MAAM,WAAW,CACpC,EAAG,EAAE,MAAM,EACX,EAAG,EAAE,MAAM,EACX,OAAQ,EACT,CAAC,CACF,GAAI,CAAC,GAAM,MAAO,OAGlB,IAAM,EADa,EAAK,MAAM,MACH,QAGvB,GACF,EAAQ,EAAM,EAAE,EAGpB,EAAY,GAAG,QAAS,EAAa,CAGvC,SAAS,EAAmB,EAA+B,CACrD,GAAgB,GAClB,EAAY,IAAI,QAAS,EAAa,CAExC,EAAe,KAGjB,IAAM,MAAmC,CACvC,IAAM,EAAc,EAAI,MAyCxB,MAxCI,CAAC,GACD,EAAQ,MAAc,QAAQ,SAAS,CACvC,IAEJ,EAAc,EACZ,sBACM,OAAO,mBACb,yCACD,CACE,MAAM,CAAE,mBAAoB,CACvB,MAAQ,MAEZ,IAAI,GAAS,EAAY,eAAe,EAAE,OAAS,QAAS,CAC1D,IAAM,EAAS,EAAY,WAAW,CAChC,EAAO,EAAY,SAAS,CAC5B,EAAQ,EAAY,UAAU,CAC9B,EAAU,EAAY,YAAY,CACxC,EAAY,cAAc,CAAE,KAAM,QAAS,CAAC,CAC5C,EAAY,UAAU,EAAO,CAC7B,EAAY,QAAQ,EAAK,CACzB,EAAY,SAAS,EAAM,CAC3B,EAAY,WAAW,EAAQ,CAGjC,EAAQ,MAAQ,IAAI,EAAc,CAChC,YAAa,EACb,OAAQ,EAAE,CACV,QAAU,GACR,QAAQ,MAAM,iCAAkC,EAAI,CACvD,CAAmD,CAEpD,EAAY,WAAW,EAAQ,MAAM,CACrC,EAAqB,EAAY,CACjC,EAAc,MAAQ,KACtB,CACD,MAAO,GAAU,CAChB,QAAQ,MAAM,wCAAyC,EAAM,CAC7D,EAAc,MACd,CAEG,IAGH,EAAc,GACV,EAAyB,GAO7B,EAAgB,IAAI,IAEpB,MAAmB,CACvB,EAAO,MAAQ,CAAC,GAAG,EAAc,QAAQ,CAAC,CACtC,EAAQ,OACV,EAAQ,MAAM,SAAS,CAAE,OAAQ,EAAO,MAAgB,CAAC,EAIvD,EAAY,GAA4B,CAC5C,IAAM,EAAQ,EAAiB,EAAS,CACxC,EAAc,IAAI,EAAW,EAAM,CAAE,EAAM,CAEvC,EAAQ,MACV,GAAY,CAEZ,GAAa,CAAC,KAAK,EAAW,EAI5B,EAAe,GAA0B,CAC7C,EAAc,OAAO,EAAQ,CAC7B,GAAY,EAGR,GAAe,EAAiB,IAA4B,CAC5D,EAAc,IAAI,EAAQ,EAC5B,EAAc,IAAI,EAAS,EAAiB,EAAS,CAAC,CACtD,GAAY,EAEZ,EAAS,EAAS,EAIhB,MACG,CAAC,GAAG,EAAc,QAAQ,CAAC,CAmDpC,OAhDA,EACE,EACC,GAAgB,CACf,GAAI,CAAC,GAAe,EAAQ,MAAO,OACnC,GAAI,EAAY,eAAe,CAAE,CAC/B,GAAa,CACb,OAEF,EAAY,KAAK,iBAAoB,GAAa,CAAC,CACnD,IAAM,EAAW,gBAAkB,CACjC,GAAI,EAAQ,MAAO,CACjB,cAAc,EAAS,CACvB,OAEE,EAAY,eAAe,GAC7B,cAAc,EAAS,CACvB,GAAa,GAEd,IAAI,CACP,eAAiB,cAAc,EAAS,CAAE,IAAM,EAElD,CAAE,UAAW,GAAM,CACpB,CAED,EAAQ,EAAgB,EAAQ,CAChC,EAAQ,EAAe,CACrB,WACA,cACA,cACA,YACD,CAAC,CAEF,MAAkB,CAEhB,GADA,EAAmB,EAAI,MAAM,CACzB,EAAQ,OAAS,EAAI,MACvB,GAAI,CACF,EAAI,MAAM,cAAc,EAAQ,MAAM,CACtC,EAAQ,MAAM,UAAU,OACjB,EAAO,CACd,QAAQ,MAAM,uCAAwC,EAAM,CAGhE,EAAQ,MAAQ,KAChB,EAAO,MAAQ,EAAE,CACjB,EAAc,MAAQ,GACtB,EAAc,MACd,CAEK,CACL,UACA,SACA,gBACA,cACA,WACA,cACA,cACA,YACD,CAGH,SAAgB,GAAgB,CAC9B,IAAM,EAAW,EAAO,EAAe,KAAK,CACtC,EAAU,EAAO,EAAgB,KAAK,CAE5C,GAAI,CAAC,EACH,MAAU,MACR,8FACD,CAGH,MAAO,CACL,GAAG,EACH,UACD,CCvRH,MAAM,EAAwC,OAAO,MAAM,CACrD,EAAmD,OAAO,WAAW"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{TerrainLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglTerrain`,props:{id:{},elevationData:{},texture:{},meshMaxError:{default:4},elevationDecoder:{},bounds:{},loadOptions:{},workerUrl:{},color:{},wireframe:{type:Boolean,default:!1},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,elevationData:u.elevationData,texture:u.texture,meshMaxError:u.meshMaxError,elevationDecoder:u.elevationDecoder,bounds:u.bounds,loadOptions:u.loadOptions,workerUrl:u.workerUrl,color:u.color??[255,255,255],wireframe:u.wireframe,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.elevationData,u.texture,u.meshMaxError,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglTerrain};
2
+ //# sourceMappingURL=terrain-f-XAakfL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain-f-XAakfL.js","names":[],"sources":["../src/layers/deckgl/terrain/VLayerDeckglTerrain.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render terrain meshes from elevation tiles (terrain-rgb / mapbox-rgb).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/geo-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/geo-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { TerrainLayer } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n interface Props {\n id: string;\n elevationData:\n | string\n | ((tileData: { x: number; y: number; z: number }) => string);\n texture?:\n | string\n | ((tileData: { x: number; y: number; z: number }) => string);\n meshMaxError?: number;\n elevationDecoder?: {\n rScaler: number;\n gScaler: number;\n bScaler: number;\n offset: number;\n };\n bounds?: [number, number, number, number];\n loadOptions?: object;\n workerUrl?: string;\n color?: Color;\n wireframe?: boolean;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n meshMaxError: 4.0,\n wireframe: false,\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new TerrainLayer({\n id: props.id,\n elevationData: props.elevationData,\n texture: props.texture,\n meshMaxError: props.meshMaxError,\n elevationDecoder: props.elevationDecoder,\n bounds: props.bounds,\n loadOptions: props.loadOptions,\n workerUrl: props.workerUrl,\n color: props.color ?? [255, 255, 255],\n wireframe: props.wireframe,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as unknown as ConstructorParameters<typeof TerrainLayer>[0]);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.elevationData,\n props.texture,\n props.meshMaxError,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"4oBA8CE,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,cAAe,EAAM,cACrB,QAAS,EAAM,QACf,aAAc,EAAM,aACpB,iBAAkB,EAAM,iBACxB,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,UAAW,EAAM,UACjB,MAAO,EAAM,OAAS,CAAC,IAAK,IAAK,IAAG,CACpC,UAAW,EAAM,UACjB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACS,CAAA,CAGzD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,cACN,EAAM,QACN,EAAM,aACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{TextLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglText`,props:{id:{},data:{},getPosition:{},getText:{},getSize:{},getColor:{},getAngle:{},getTextAnchor:{},getAlignmentBaseline:{},getPixelOffset:{},getBackgroundColor:{},getBorderColor:{},getBorderWidth:{},background:{type:Boolean,default:!1},backgroundPadding:{},billboard:{type:Boolean,default:!0},sizeScale:{default:1},sizeUnits:{default:`pixels`},sizeMinPixels:{default:0},sizeMaxPixels:{default:2**53-1},characterSet:{default:`auto`},fontFamily:{default:`Monaco, monospace`},fontWeight:{default:`normal`},lineHeight:{default:1},fontSettings:{default:()=>({sdf:!0})},wordBreak:{default:`break-word`},maxWidth:{default:-1},outlineWidth:{default:0},outlineColor:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getText:u.getText,getSize:u.getSize??32,getColor:u.getColor??[0,0,0,255],getAngle:u.getAngle??0,getTextAnchor:u.getTextAnchor??`middle`,getAlignmentBaseline:u.getAlignmentBaseline??`center`,getPixelOffset:u.getPixelOffset??[0,0],getBackgroundColor:u.getBackgroundColor,getBorderColor:u.getBorderColor,getBorderWidth:u.getBorderWidth,background:u.background,backgroundPadding:u.backgroundPadding,billboard:u.billboard,sizeScale:u.sizeScale,sizeUnits:u.sizeUnits,sizeMinPixels:u.sizeMinPixels,sizeMaxPixels:u.sizeMaxPixels,characterSet:u.characterSet,fontFamily:u.fontFamily,fontWeight:u.fontWeight,lineHeight:u.lineHeight,fontSettings:u.fontSettings,wordBreak:u.wordBreak,maxWidth:u.maxWidth,outlineWidth:u.outlineWidth,outlineColor:u.outlineColor,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.getText,u.getSize,u.getColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglText};
2
+ //# sourceMappingURL=text-BOvG9JHc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-BOvG9JHc.js","names":[],"sources":["../src/layers/deckgl/text/VLayerDeckglText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render bitmap-font text labels at coordinate positions.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { TextLayer } from '@deck.gl/layers';\n import type { TextLayerProps } from '@deck.gl/layers';\n import type { PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import type { Color } from '../_shared/types';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getText: Accessor<D, string>;\n getSize?: Accessor<D, number>;\n getColor?: Accessor<D, Color>;\n getAngle?: Accessor<D, number>;\n getTextAnchor?: Accessor<D, 'start' | 'middle' | 'end'>;\n getAlignmentBaseline?: Accessor<D, 'top' | 'center' | 'bottom'>;\n getPixelOffset?: Accessor<D, [number, number]>;\n getBackgroundColor?: Accessor<D, Color>;\n getBorderColor?: Accessor<D, Color>;\n getBorderWidth?: Accessor<D, number>;\n background?: boolean;\n backgroundPadding?: [number, number] | [number, number, number, number];\n billboard?: boolean;\n sizeScale?: number;\n sizeUnits?: 'meters' | 'common' | 'pixels';\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n characterSet?: string | string[];\n fontFamily?: string;\n fontWeight?: string | number;\n lineHeight?: number;\n fontSettings?: {\n sdf?: boolean;\n fontSize?: number;\n buffer?: number;\n radius?: number;\n cutoff?: number;\n smoothing?: number;\n };\n wordBreak?: 'break-all' | 'break-word';\n maxWidth?: number;\n outlineWidth?: number;\n outlineColor?: Color;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n background: false,\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n characterSet: 'auto',\n fontFamily: 'Monaco, monospace',\n fontWeight: 'normal',\n lineHeight: 1,\n fontSettings: () => ({ sdf: true }),\n wordBreak: 'break-word',\n maxWidth: -1,\n outlineWidth: 0,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new TextLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getText: props.getText,\n getSize: props.getSize ?? 32,\n getColor: props.getColor ?? [0, 0, 0, 255],\n getAngle: props.getAngle ?? 0,\n getTextAnchor: props.getTextAnchor ?? 'middle',\n getAlignmentBaseline: props.getAlignmentBaseline ?? 'center',\n getPixelOffset: props.getPixelOffset ?? [0, 0],\n getBackgroundColor: props.getBackgroundColor,\n getBorderColor: props.getBorderColor,\n getBorderWidth: props.getBorderWidth,\n background: props.background,\n backgroundPadding: props.backgroundPadding,\n billboard: props.billboard,\n sizeScale: props.sizeScale,\n sizeUnits: props.sizeUnits,\n sizeMinPixels: props.sizeMinPixels,\n sizeMaxPixels: props.sizeMaxPixels,\n characterSet: props.characterSet,\n fontFamily: props.fontFamily,\n fontWeight: props.fontWeight,\n lineHeight: props.lineHeight,\n fontSettings: props.fontSettings,\n wordBreak: props.wordBreak,\n maxWidth: props.maxWidth,\n outlineWidth: props.outlineWidth,\n outlineColor: props.outlineColor,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as TextLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.getText,\n props.getSize,\n props.getColor,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"4kCAkEE,IAAM,EAAQ,EAqBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAU,CACnB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,QAAS,EAAM,QACf,QAAS,EAAM,SAAW,GAC1B,SAAU,EAAM,UAAY,CAAC,EAAG,EAAG,EAAG,IAAG,CACzC,SAAU,EAAM,UAAY,EAC5B,cAAe,EAAM,eAAiB,SACtC,qBAAsB,EAAM,sBAAwB,SACpD,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAC,CAC7C,mBAAoB,EAAM,mBAC1B,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,WAAY,EAAM,WAClB,kBAAmB,EAAM,kBACzB,UAAW,EAAM,UACjB,UAAW,EAAM,UACjB,UAAW,EAAM,UACjB,cAAe,EAAM,cACrB,cAAe,EAAM,cACrB,aAAc,EAAM,aACpB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,UAAW,EAAM,UACjB,SAAU,EAAM,SAChB,aAAc,EAAM,aACpB,aAAc,EAAM,aACpB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACjC,CAAA,CAGf,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,QACN,EAAM,QACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{Tile3DLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglTile3D`,props:{id:{},data:{},loader:{},loadOptions:{},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},opacity:{default:1},visible:{type:Boolean,default:!0},pointSize:{default:1},getPointColor:{},beforeId:{}},emits:[`click`,`hover`,`tilesetLoad`,`tileLoad`,`tileUnload`,`tileError`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,pointSize:u.pointSize,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e),onTilesetLoad:e=>d(`tilesetLoad`,e),onTileLoad:e=>d(`tileLoad`,e),onTileUnload:e=>d(`tileUnload`,e),onTileError:(e,t,n)=>d(`tileError`,e,t,n),...u.loader!==void 0&&{loader:u.loader},...u.loadOptions!==void 0&&{loadOptions:u.loadOptions},...u.highlightColor!==void 0&&{highlightColor:u.highlightColor},...u.getPointColor!==void 0&&{getPointColor:u.getPointColor}}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.pointSize,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglTile3D};
2
+ //# sourceMappingURL=tile-3d-DG91zS0N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-3d-DG91zS0N.js","names":[],"sources":["../src/layers/deckgl/tile-3d/VLayerDeckglTile3D.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * 3D Tiles (Cesium / Google Photorealistic) viewer powered by loaders.gl.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/geo-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/geo-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { Tile3DLayer } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n interface Props {\n id: string;\n data: string;\n loader?: object;\n loadOptions?: object;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n opacity?: number;\n visible?: boolean;\n pointSize?: number;\n getPointColor?: Color | ((d: unknown) => Color);\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n pointSize: 1,\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n tilesetLoad: [tileset: unknown];\n tileLoad: [tile: unknown];\n tileUnload: [tile: unknown];\n tileError: [error: Error, url: string, tile: unknown];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n const layerProps = {\n id: props.id,\n data: props.data,\n pointSize: props.pointSize,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n onTilesetLoad: (tileset: unknown) => emit('tilesetLoad', tileset),\n onTileLoad: (tile: unknown) => emit('tileLoad', tile),\n onTileUnload: (tile: unknown) => emit('tileUnload', tile),\n onTileError: (error: Error, url: string, tile: unknown) =>\n emit('tileError', error, url, tile),\n // Only include optional props when defined to avoid deck.gl bugs\n ...(props.loader !== undefined && { loader: props.loader }),\n ...(props.loadOptions !== undefined && {\n loadOptions: props.loadOptions,\n }),\n ...(props.highlightColor !== undefined && {\n highlightColor: props.highlightColor,\n }),\n ...(props.getPointColor !== undefined && {\n getPointColor: props.getPointColor,\n }),\n };\n return new Tile3DLayer(\n layerProps as unknown as ConstructorParameters<typeof Tile3DLayer>[0],\n );\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [props.data, props.pointSize, props.opacity, props.visible],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"ukBAgCE,IAAM,EAAQ,EAQR,EAAO,EASP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MA6BG,IAAI,EACT,CA5BA,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,UAAW,EAAM,UACjB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,cAAgB,GAAqB,EAAK,cAAe,EAAO,CAChE,WAAa,GAAkB,EAAK,WAAY,EAAI,CACpD,aAAe,GAAkB,EAAK,aAAc,EAAI,CACxD,aAAc,EAAc,EAAa,IACvC,EAAK,YAAa,EAAO,EAAK,EAAI,CAEpC,GAAI,EAAM,SAAW,IAAA,IAAa,CAAE,OAAQ,EAAM,OAAO,CACzD,GAAI,EAAM,cAAgB,IAAA,IAAa,CACrC,YAAa,EAAM,YACrB,CACA,GAAI,EAAM,iBAAmB,IAAA,IAAa,CACxC,eAAgB,EAAM,eACxB,CACA,GAAI,EAAM,gBAAkB,IAAA,IAAa,CACvC,cAAe,EAAM,cACvB,CAIF,CAAA,CAGI,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CAAC,EAAM,KAAM,EAAM,UAAW,EAAM,QAAS,EAAM,QAAO,KAC1D,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{TileLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglTile`,props:{id:{},data:{},getTileData:{},renderSubLayers:{},tileSize:{default:512},maxZoom:{},minZoom:{default:0},maxCacheSize:{},maxCacheByteSize:{},refinementStrategy:{default:`best-available`},zRange:{},maxRequests:{default:6},extent:{},loadOptions:{},zoomOffset:{default:0},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`,`viewportLoad`,`tileLoad`,`tileUnload`,`tileError`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getTileData:u.getTileData,renderSubLayers:u.renderSubLayers,tileSize:u.tileSize,maxZoom:u.maxZoom,minZoom:u.minZoom,maxCacheSize:u.maxCacheSize,maxCacheByteSize:u.maxCacheByteSize,refinementStrategy:u.refinementStrategy,zRange:u.zRange,maxRequests:u.maxRequests,extent:u.extent,loadOptions:u.loadOptions,zoomOffset:u.zoomOffset,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e),onViewportLoad:e=>d(`viewportLoad`,e),onTileLoad:e=>d(`tileLoad`,e),onTileUnload:e=>d(`tileUnload`,e),onTileError:(e,t)=>d(`tileError`,e,t)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.tileSize,u.maxZoom,u.minZoom,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglTile};
2
+ //# sourceMappingURL=tile-AhmnAg8V.js.map