@geoql/v-maplibre 1.10.0 → 2.0.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 (205) hide show
  1. package/README.md +42 -15
  2. package/dist/arc-B_fAMcpz.js +2 -0
  3. package/dist/arc-B_fAMcpz.js.map +1 -0
  4. package/dist/{arrow-4ecDVUFv.js → arrow-B87Hvf8z.js} +1 -1
  5. package/dist/{arrow-4ecDVUFv.js.map → arrow-B87Hvf8z.js.map} +1 -1
  6. package/dist/bitmap-C_yi2tt7.js +2 -0
  7. package/dist/bitmap-C_yi2tt7.js.map +1 -0
  8. package/dist/cog-Cksxp4kb.js +2 -0
  9. package/dist/cog-Cksxp4kb.js.map +1 -0
  10. package/dist/column-CN436hkx.js +2 -0
  11. package/dist/column-CN436hkx.js.map +1 -0
  12. package/dist/contour-DJbs8Kf4.js +2 -0
  13. package/dist/contour-DJbs8Kf4.js.map +1 -0
  14. package/dist/deckgl.d.ts +47 -0
  15. package/dist/deckgl.js +2 -0
  16. package/dist/deckgl.js.map +1 -0
  17. package/dist/generic-B-YSsfL2.js +2 -0
  18. package/dist/generic-B-YSsfL2.js.map +1 -0
  19. package/dist/geoarrow-path-4ompjoL_.js +2 -0
  20. package/dist/{geoarrow-path-CV0aOugP.js.map → geoarrow-path-4ompjoL_.js.map} +1 -1
  21. package/dist/geoarrow-polygon-DUlcZwlA.js +2 -0
  22. package/dist/{geoarrow-polygon-BjfqZpaf.js.map → geoarrow-polygon-DUlcZwlA.js.map} +1 -1
  23. package/dist/geoarrow-scatterplot-Cd2DK-iz.js +2 -0
  24. package/dist/{geoarrow-scatterplot-DxkqOIWR.js.map → geoarrow-scatterplot-Cd2DK-iz.js.map} +1 -1
  25. package/dist/geoarrow-solid-polygon-q14Ff9j9.js +2 -0
  26. package/dist/{geoarrow-solid-polygon-LGavbdMg.js.map → geoarrow-solid-polygon-q14Ff9j9.js.map} +1 -1
  27. package/dist/geoarrow-text-DHvTakUd.js +2 -0
  28. package/dist/{geoarrow-text-8HY70yYe.js.map → geoarrow-text-DHvTakUd.js.map} +1 -1
  29. package/dist/geoarrow-trips-CwRSQdMU.js +2 -0
  30. package/dist/{geoarrow-trips-Bqc-_N6F.js.map → geoarrow-trips-CwRSQdMU.js.map} +1 -1
  31. package/dist/geohash-DfnNENva.js +2 -0
  32. package/dist/geohash-DfnNENva.js.map +1 -0
  33. package/dist/geojson-BRWVICwI.js +2 -0
  34. package/dist/geojson-BRWVICwI.js.map +1 -0
  35. package/dist/geotiff.d.ts +50 -0
  36. package/dist/geotiff.js +2 -0
  37. package/dist/geotiff.js.map +1 -0
  38. package/dist/great-circle-Da5XIa2p.js +2 -0
  39. package/dist/great-circle-Da5XIa2p.js.map +1 -0
  40. package/dist/grid-DKP8clpW.js +2 -0
  41. package/dist/grid-DKP8clpW.js.map +1 -0
  42. package/dist/grid-cell-CZ41kY8K.js +2 -0
  43. package/dist/grid-cell-CZ41kY8K.js.map +1 -0
  44. package/dist/h3-cluster-Cco_QCbU.js +2 -0
  45. package/dist/h3-cluster-Cco_QCbU.js.map +1 -0
  46. package/dist/h3-hexagon-BqvZfU5b.js +2 -0
  47. package/dist/h3-hexagon-BqvZfU5b.js.map +1 -0
  48. package/dist/heatmap-Bq7-L0jp.js +2 -0
  49. package/dist/heatmap-Bq7-L0jp.js.map +1 -0
  50. package/dist/hexagon-T0vesB_G.js +2 -0
  51. package/dist/hexagon-T0vesB_G.js.map +1 -0
  52. package/dist/icon-Bwm2m8b4.js +2 -0
  53. package/dist/icon-Bwm2m8b4.js.map +1 -0
  54. package/dist/index-2D1oVTKr.d.ts +37 -0
  55. package/dist/index.d.ts +121 -491
  56. package/dist/index.js +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/lidar.d.ts +232 -0
  59. package/dist/lidar.js +2 -0
  60. package/dist/lidar.js.map +1 -0
  61. package/dist/line-2EN6ukkf.js +2 -0
  62. package/dist/line-2EN6ukkf.js.map +1 -0
  63. package/dist/mosaic-DUwBxfGg.js +43 -0
  64. package/dist/mosaic-DUwBxfGg.js.map +1 -0
  65. package/dist/multi-cog-B2kVLX90.js +2 -0
  66. package/dist/multi-cog-B2kVLX90.js.map +1 -0
  67. package/dist/mvt-q6iXzmEF.js +2 -0
  68. package/dist/mvt-q6iXzmEF.js.map +1 -0
  69. package/dist/path-CKCx5_Gi.js +2 -0
  70. package/dist/path-CKCx5_Gi.js.map +1 -0
  71. package/dist/point-cloud-C9zJxZDT.js +2 -0
  72. package/dist/point-cloud-C9zJxZDT.js.map +1 -0
  73. package/dist/polygon-DRpsvg1W.js +2 -0
  74. package/dist/polygon-DRpsvg1W.js.map +1 -0
  75. package/dist/quadkey-DfoG2hLL.js +2 -0
  76. package/dist/quadkey-DfoG2hLL.js.map +1 -0
  77. package/dist/s2-DlEDAkpJ.js +2 -0
  78. package/dist/s2-DlEDAkpJ.js.map +1 -0
  79. package/dist/scatterplot-B9zXE6Jf.js +2 -0
  80. package/dist/scatterplot-B9zXE6Jf.js.map +1 -0
  81. package/dist/scenegraph-BVXLw8Cw.js +2 -0
  82. package/dist/scenegraph-BVXLw8Cw.js.map +1 -0
  83. package/dist/screen-grid-Dgj0QdEI.js +2 -0
  84. package/dist/screen-grid-Dgj0QdEI.js.map +1 -0
  85. package/dist/simple-mesh-ypHRymUD.js +2 -0
  86. package/dist/simple-mesh-ypHRymUD.js.map +1 -0
  87. package/dist/solid-polygon-DyWHVxEO.js +2 -0
  88. package/dist/solid-polygon-DyWHVxEO.js.map +1 -0
  89. package/dist/starfield-Djc5vy6K.js +2 -0
  90. package/dist/starfield-Djc5vy6K.js.map +1 -0
  91. package/dist/starfield.d.ts +7 -0
  92. package/dist/starfield.js +2 -0
  93. package/dist/starfield.js.map +1 -0
  94. package/dist/symbols-DXKzIgbY.js +2 -0
  95. package/dist/symbols-DXKzIgbY.js.map +1 -0
  96. package/dist/terrain-D3LKaDfn.js +2 -0
  97. package/dist/terrain-D3LKaDfn.js.map +1 -0
  98. package/dist/text-C6lF4GFS.js +2 -0
  99. package/dist/text-C6lF4GFS.js.map +1 -0
  100. package/dist/tile-3d-DHzr5_s2.js +2 -0
  101. package/dist/tile-3d-DHzr5_s2.js.map +1 -0
  102. package/dist/tile-DqpbfgRL.js +2 -0
  103. package/dist/tile-DqpbfgRL.js.map +1 -0
  104. package/dist/trips-CchyX_8N.js +2 -0
  105. package/dist/trips-CchyX_8N.js.map +1 -0
  106. package/dist/useDeckOverlay-GlkH_rvP.js +2 -0
  107. package/dist/useDeckOverlay-GlkH_rvP.js.map +1 -0
  108. package/dist/useDeckOverlay-JoRzVQ7g.d.ts +43 -0
  109. package/dist/v-maplibre.css +2 -2
  110. package/dist/wind-particle-Rs67QBQ9.js +2 -0
  111. package/dist/wind-particle-Rs67QBQ9.js.map +1 -0
  112. package/dist/wind.d.ts +9 -0
  113. package/dist/wind.js +2 -0
  114. package/dist/wind.js.map +1 -0
  115. package/dist/wms-KlHzzqd3.js +2 -0
  116. package/dist/wms-KlHzzqd3.js.map +1 -0
  117. package/dist/zarr-Czf44Tqd.js +2 -0
  118. package/dist/zarr-Czf44Tqd.js.map +1 -0
  119. package/package.json +36 -16
  120. package/dist/arc-sQuzag_9.js +0 -2
  121. package/dist/arc-sQuzag_9.js.map +0 -1
  122. package/dist/bitmap-C9wTsmdA.js +0 -2
  123. package/dist/bitmap-C9wTsmdA.js.map +0 -1
  124. package/dist/cog-BC2mhbA-.js +0 -2
  125. package/dist/cog-BC2mhbA-.js.map +0 -1
  126. package/dist/column-Dai69vdE.js +0 -2
  127. package/dist/column-Dai69vdE.js.map +0 -1
  128. package/dist/contour-BVSFeMXQ.js +0 -2
  129. package/dist/contour-BVSFeMXQ.js.map +0 -1
  130. package/dist/generic-DLtJwFOg.js +0 -2
  131. package/dist/generic-DLtJwFOg.js.map +0 -1
  132. package/dist/geoarrow-path-CV0aOugP.js +0 -2
  133. package/dist/geoarrow-polygon-BjfqZpaf.js +0 -2
  134. package/dist/geoarrow-scatterplot-DxkqOIWR.js +0 -2
  135. package/dist/geoarrow-solid-polygon-LGavbdMg.js +0 -2
  136. package/dist/geoarrow-text-8HY70yYe.js +0 -2
  137. package/dist/geoarrow-trips-Bqc-_N6F.js +0 -2
  138. package/dist/geohash-Bq6Va31-.js +0 -2
  139. package/dist/geohash-Bq6Va31-.js.map +0 -1
  140. package/dist/geojson-DmmblQfq.js +0 -2
  141. package/dist/geojson-DmmblQfq.js.map +0 -1
  142. package/dist/great-circle-B3wrKr2V.js +0 -2
  143. package/dist/great-circle-B3wrKr2V.js.map +0 -1
  144. package/dist/grid-cell-CTiUtStS.js +0 -2
  145. package/dist/grid-cell-CTiUtStS.js.map +0 -1
  146. package/dist/grid-d5GMfgA7.js +0 -2
  147. package/dist/grid-d5GMfgA7.js.map +0 -1
  148. package/dist/h3-cluster-BqU_KkMN.js +0 -2
  149. package/dist/h3-cluster-BqU_KkMN.js.map +0 -1
  150. package/dist/h3-hexagon-E-7rMATA.js +0 -2
  151. package/dist/h3-hexagon-E-7rMATA.js.map +0 -1
  152. package/dist/heatmap-CToABGhe.js +0 -2
  153. package/dist/heatmap-CToABGhe.js.map +0 -1
  154. package/dist/hexagon-B7QFHPOG.js +0 -2
  155. package/dist/hexagon-B7QFHPOG.js.map +0 -1
  156. package/dist/icon-dGkYJha7.js +0 -2
  157. package/dist/icon-dGkYJha7.js.map +0 -1
  158. package/dist/line-BqRkZ9qg.js +0 -2
  159. package/dist/line-BqRkZ9qg.js.map +0 -1
  160. package/dist/mosaic-BdOpB_UM.js +0 -43
  161. package/dist/mosaic-BdOpB_UM.js.map +0 -1
  162. package/dist/multi-cog-RzUpiduc.js +0 -2
  163. package/dist/multi-cog-RzUpiduc.js.map +0 -1
  164. package/dist/mvt-DKjRIMv0.js +0 -2
  165. package/dist/mvt-DKjRIMv0.js.map +0 -1
  166. package/dist/path-QpGANcDO.js +0 -2
  167. package/dist/path-QpGANcDO.js.map +0 -1
  168. package/dist/point-cloud-CwNI1kj4.js +0 -2
  169. package/dist/point-cloud-CwNI1kj4.js.map +0 -1
  170. package/dist/polygon-CnEkEdCz.js +0 -2
  171. package/dist/polygon-CnEkEdCz.js.map +0 -1
  172. package/dist/quadkey-DqvKjWw3.js +0 -2
  173. package/dist/quadkey-DqvKjWw3.js.map +0 -1
  174. package/dist/s2-BHisRsYi.js +0 -2
  175. package/dist/s2-BHisRsYi.js.map +0 -1
  176. package/dist/scatterplot-DtFjVt95.js +0 -2
  177. package/dist/scatterplot-DtFjVt95.js.map +0 -1
  178. package/dist/scenegraph-DfsmFuLy.js +0 -2
  179. package/dist/scenegraph-DfsmFuLy.js.map +0 -1
  180. package/dist/screen-grid-C-Ge9TH9.js +0 -2
  181. package/dist/screen-grid-C-Ge9TH9.js.map +0 -1
  182. package/dist/simple-mesh-CwDv4_8p.js +0 -2
  183. package/dist/simple-mesh-CwDv4_8p.js.map +0 -1
  184. package/dist/solid-polygon-DS3vtguq.js +0 -2
  185. package/dist/solid-polygon-DS3vtguq.js.map +0 -1
  186. package/dist/starfield-DnXurhKv.js +0 -2
  187. package/dist/starfield-DnXurhKv.js.map +0 -1
  188. package/dist/symbols-CVfar3bo.js +0 -2
  189. package/dist/symbols-CVfar3bo.js.map +0 -1
  190. package/dist/terrain-Vnqb4j1R.js +0 -2
  191. package/dist/terrain-Vnqb4j1R.js.map +0 -1
  192. package/dist/text-BuHw5Jdf.js +0 -2
  193. package/dist/text-BuHw5Jdf.js.map +0 -1
  194. package/dist/tile-3d-CAbU8BnN.js +0 -2
  195. package/dist/tile-3d-CAbU8BnN.js.map +0 -1
  196. package/dist/tile-B03s67tw.js +0 -2
  197. package/dist/tile-B03s67tw.js.map +0 -1
  198. package/dist/trips-Cy2yQXp7.js +0 -2
  199. package/dist/trips-Cy2yQXp7.js.map +0 -1
  200. package/dist/wind-particle-C1OQmbu7.js +0 -2
  201. package/dist/wind-particle-C1OQmbu7.js.map +0 -1
  202. package/dist/wms-toc-Os2F.js +0 -2
  203. package/dist/wms-toc-Os2F.js.map +0 -1
  204. package/dist/zarr-CGUO8nTA.js +0 -2
  205. package/dist/zarr-CGUO8nTA.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-DKjRIMv0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mvt-DKjRIMv0.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-QpGANcDO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-QpGANcDO.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-CwNI1kj4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"point-cloud-CwNI1kj4.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-CnEkEdCz.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polygon-CnEkEdCz.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-DqvKjWw3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quadkey-DqvKjWw3.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-BHisRsYi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"s2-BHisRsYi.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-DtFjVt95.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scatterplot-DtFjVt95.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-DfsmFuLy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenegraph-DfsmFuLy.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-C-Ge9TH9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"screen-grid-C-Ge9TH9.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-CwDv4_8p.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"simple-mesh-CwDv4_8p.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-DS3vtguq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solid-polygon-DS3vtguq.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,t}from"./symbols-CVfar3bo.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-DnXurhKv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"starfield-DnXurhKv.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"}
@@ -1,2 +0,0 @@
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}=u,f=e(c,null),p=e(l,null);if(f&&p)return{overlay:f,isInitialized:r(!0),layers:r([]),initOverlay:()=>Promise.resolve(),...p};let m=i(null),h=r([]),g=r(!1),_=null,v=null;function y(e){v=e=>{if(!m.value)return;let t=m.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`,v)}function b(e){v&&e&&e.off(`click`,v),v=null}let x=()=>{let e=o.value;return!e||m.value?Promise.resolve():_||(_=s(`@deck.gl/mapbox`,()=>import(`@deck.gl/mapbox`),`pnpm add @deck.gl/core @deck.gl/mapbox`).then(({MapboxOverlay:t})=>{m.value||(m.value=new t({interleaved:d,layers:[],onError:e=>console.error(`[useDeckOverlay] deck onError:`,e)}),e.addControl(m.value),y(e),g.value=!0)}).catch(e=>{console.error(`[deck.gl] Error initializing overlay:`,e),_=null}),_)},S=e=>e.id,C=()=>{m.value&&m.value.setProps({layers:h.value})},w=e=>{let t=S(e),n=h.value.findIndex(e=>S(e)===t);n>=0?h.value=[...h.value.slice(0,n),e,...h.value.slice(n+1)]:h.value=[...h.value,e],m.value?C():x().then(C)},T=e=>{h.value=h.value.filter(t=>S(t)!==e),C()},E=(e,t)=>{let n=h.value.findIndex(t=>S(t)===e);n>=0?(h.value=[...h.value.slice(0,n),t,...h.value.slice(n+1)],C()):w(t)},D=()=>[...h.value];return a(o,e=>{if(!e||m.value)return;if(e.isStyleLoaded()){x();return}e.once(`style.load`,()=>x());let t=setInterval(()=>{if(m.value){clearInterval(t);return}e.isStyleLoaded()&&(clearInterval(t),x())},100);setTimeout(()=>clearInterval(t),1e4)},{immediate:!0}),n(c,m),n(l,{addLayer:w,removeLayer:T,updateLayer:E,getLayers:D}),t(()=>{if(b(o.value),m.value&&o.value)try{o.value.removeControl(m.value),m.value.finalize()}catch(e){console.error(`[deck.gl] Error cleaning up overlay:`,e)}m.value=null,h.value=[],g.value=!1,_=null}),{overlay:m,layers:h,isInitialized:g,initOverlay:x,addLayer:w,removeLayer:T,updateLayer:E,getLayers:D}}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-CVfar3bo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbols-CVfar3bo.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\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 } = options;\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 overlay.value = new MapboxOverlay({\n interleaved,\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 const syncLayers = () => {\n if (overlay.value) {\n overlay.value.setProps({ layers: layers.value as never });\n }\n };\n\n const addLayer = (layer: unknown): void => {\n const layerId = getLayerId(layer);\n const existingIndex = layers.value.findIndex(\n (l) => getLayerId(l) === layerId,\n );\n\n if (existingIndex >= 0) {\n layers.value = [\n ...layers.value.slice(0, existingIndex),\n layer,\n ...layers.value.slice(existingIndex + 1),\n ];\n } else {\n layers.value = [...layers.value, layer];\n }\n\n if (overlay.value) {\n syncLayers();\n } else {\n initOverlay().then(syncLayers);\n }\n };\n\n const removeLayer = (layerId: string): void => {\n layers.value = layers.value.filter((l) => getLayerId(l) !== layerId);\n syncLayers();\n };\n\n const updateLayer = (layerId: string, newLayer: unknown): void => {\n const index = layers.value.findIndex((l) => getLayerId(l) === layerId);\n if (index >= 0) {\n layers.value = [\n ...layers.value.slice(0, index),\n newLayer,\n ...layers.value.slice(index + 1),\n ];\n syncLayers();\n } else {\n addLayer(newLayer);\n }\n };\n\n const getLayers = (): unknown[] => {\n return [...layers.value];\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,CAiBzB,SAAgB,EACd,EACA,EAAiC,EAAE,CACb,CACtB,GAAM,CAAE,cAAc,IAAU,EAE1B,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,MA6BxB,MA5BI,CAAC,GACD,EAAQ,MAAc,QAAQ,SAAS,CACvC,IAEJ,EAAc,EACZ,sBACM,OAAO,mBACb,yCACD,CACE,MAAM,CAAE,mBAAoB,CACvB,EAAQ,QAEZ,EAAQ,MAAQ,IAAI,EAAc,CAChC,cACA,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,GAG7B,MAAmB,CACnB,EAAQ,OACV,EAAQ,MAAM,SAAS,CAAE,OAAQ,EAAO,MAAgB,CAAC,EAIvD,EAAY,GAAyB,CACzC,IAAM,EAAU,EAAW,EAAM,CAC3B,EAAgB,EAAO,MAAM,UAChC,GAAM,EAAW,EAAE,GAAK,EAC1B,CAEG,GAAiB,EACnB,EAAO,MAAQ,CACb,GAAG,EAAO,MAAM,MAAM,EAAG,EAAc,CACvC,EACA,GAAG,EAAO,MAAM,MAAM,EAAgB,EAAE,CACzC,CAED,EAAO,MAAQ,CAAC,GAAG,EAAO,MAAO,EAAM,CAGrC,EAAQ,MACV,GAAY,CAEZ,GAAa,CAAC,KAAK,EAAW,EAI5B,EAAe,GAA0B,CAC7C,EAAO,MAAQ,EAAO,MAAM,OAAQ,GAAM,EAAW,EAAE,GAAK,EAAQ,CACpE,GAAY,EAGR,GAAe,EAAiB,IAA4B,CAChE,IAAM,EAAQ,EAAO,MAAM,UAAW,GAAM,EAAW,EAAE,GAAK,EAAQ,CAClE,GAAS,GACX,EAAO,MAAQ,CACb,GAAG,EAAO,MAAM,MAAM,EAAG,EAAM,CAC/B,EACA,GAAG,EAAO,MAAM,MAAM,EAAQ,EAAE,CACjC,CACD,GAAY,EAEZ,EAAS,EAAS,EAIhB,MACG,CAAC,GAAG,EAAO,MAAM,CAmD1B,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,CCjQH,MAAM,EAAwC,OAAO,MAAM,CACrD,EAAmD,OAAO,WAAW"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-Vnqb4j1R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terrain-Vnqb4j1R.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-BuHw5Jdf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-BuHw5Jdf.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-CAbU8BnN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile-3d-CAbU8BnN.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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.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-B03s67tw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile-B03s67tw.js","names":[],"sources":["../src/layers/deckgl/tile/VLayerDeckglTile.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Generic XYZ raster / vector tile viewer (deck.gl TileLayer).\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 { TileLayer } from '@deck.gl/geo-layers';\n import type { TileLayerProps } from '@deck.gl/geo-layers';\n import type { Color, PickingInfo, Layer } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n interface TileData {\n x: number;\n y: number;\n z: number;\n url: string;\n signal: AbortSignal;\n bbox: {\n west: number;\n north: number;\n east: number;\n south: number;\n };\n }\n\n interface Props {\n id: string;\n data?: string | string[] | ((tileData: TileData) => Promise<unknown>);\n getTileData?: (tileData: TileData) => Promise<unknown>;\n renderSubLayers?: (props: object) => Layer | Layer[] | null;\n tileSize?: number;\n maxZoom?: number;\n minZoom?: number;\n maxCacheSize?: number;\n maxCacheByteSize?: number;\n refinementStrategy?: 'best-available' | 'no-overlap' | 'never';\n zRange?: [number, number];\n maxRequests?: number;\n extent?: [number, number, number, number];\n loadOptions?: object;\n zoomOffset?: 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 tileSize: 512,\n minZoom: 0,\n refinementStrategy: 'best-available',\n maxRequests: 6,\n zoomOffset: 0,\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 viewportLoad: [tiles: unknown[]];\n tileLoad: [tile: unknown];\n tileUnload: [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 TileLayer({\n id: props.id,\n data: props.data,\n getTileData: props.getTileData,\n renderSubLayers: props.renderSubLayers,\n tileSize: props.tileSize,\n maxZoom: props.maxZoom,\n minZoom: props.minZoom,\n maxCacheSize: props.maxCacheSize,\n maxCacheByteSize: props.maxCacheByteSize,\n refinementStrategy: props.refinementStrategy,\n zRange: props.zRange,\n maxRequests: props.maxRequests,\n extent: props.extent,\n loadOptions: props.loadOptions,\n zoomOffset: props.zoomOffset,\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 onViewportLoad: (tiles: unknown[]) => emit('viewportLoad', tiles),\n onTileLoad: (tile: unknown) => emit('tileLoad', tile),\n onTileUnload: (tile: unknown) => emit('tileUnload', tile),\n onTileError: (error: Error, tile: unknown) =>\n emit('tileError', error, tile),\n } as TileLayerProps);\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.tileSize,\n props.maxZoom,\n props.minZoom,\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":"gwBAwDE,IAAM,EAAQ,EAYR,EAAO,EASP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAU,CACnB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,gBAAiB,EAAM,gBACvB,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,aAAc,EAAM,aACpB,iBAAkB,EAAM,iBACxB,mBAAoB,EAAM,mBAC1B,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,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,CAClD,eAAiB,GAAqB,EAAK,eAAgB,EAAK,CAChE,WAAa,GAAkB,EAAK,WAAY,EAAI,CACpD,aAAe,GAAkB,EAAK,aAAc,EAAI,CACxD,aAAc,EAAc,IAC1B,EAAK,YAAa,EAAO,EAAI,CACd,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,SACN,EAAM,QACN,EAAM,QACN,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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{TripsLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglTrips`,props:{id:{},data:{},getPath:{},getTimestamps:{},getColor:{},getWidth:{},currentTime:{default:0},trailLength:{default:120},fadeTrail:{type:Boolean,default:!0},widthUnits:{default:`pixels`},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},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,getTimestamps:u.getTimestamps,getColor:u.getColor??[253,128,93],getWidth:u.getWidth??1,currentTime:u.currentTime,trailLength:u.trailLength,fadeTrail:u.fadeTrail,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,capRounded:u.capRounded,jointRounded:u.jointRounded,billboard:u.billboard,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.currentTime,u.trailLength,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 VLayerDeckglTrips};
2
- //# sourceMappingURL=trips-Cy2yQXp7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trips-Cy2yQXp7.js","names":[],"sources":["../src/layers/deckgl/trips/VLayerDeckglTrips.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Animated trail paths over time (vehicle / animal tracks).\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 { TripsLayer } from '@deck.gl/geo-layers';\n import type { TripsLayerProps } from '@deck.gl/geo-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 getTimestamps?: Accessor<D, number[]>;\n getColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n currentTime?: number;\n trailLength?: number;\n fadeTrail?: boolean;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n capRounded?: boolean;\n jointRounded?: boolean;\n billboard?: 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 currentTime: 0,\n trailLength: 120,\n fadeTrail: true,\n widthUnits: 'pixels',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n capRounded: false,\n jointRounded: false,\n billboard: 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 return new TripsLayer({\n id: props.id,\n data: props.data,\n getPath: props.getPath,\n getTimestamps: props.getTimestamps,\n getColor: props.getColor ?? [253, 128, 93],\n getWidth: props.getWidth ?? 1,\n currentTime: props.currentTime,\n trailLength: props.trailLength,\n fadeTrail: props.fadeTrail,\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 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 TripsLayerProps);\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.currentTime,\n props.trailLength,\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":"8zBA8CE,IAAM,EAAQ,EAiBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAW,CACpB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,QAAS,EAAM,QACf,cAAe,EAAM,cACrB,SAAU,EAAM,UAAY,CAAC,IAAK,IAAK,GAAE,CACzC,SAAU,EAAM,UAAY,EAC5B,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,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,CAChC,CAAA,CAGhB,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,YACN,EAAM,YACN,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"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.js";import{computed as r,defineComponent as i,onBeforeUnmount as a,onMounted as o,ref as s,renderSlot as c,watch as l}from"vue";import{WindParticleLayer as u,generateWindTexture as d}from"maplibre-gl-wind";const f=i({__name:`VLayerDeckglWindParticle`,props:{id:{},imageUrl:{},windData:{},bounds:{default:()=>[-180,-90,180,90]},uMin:{default:-50},uMax:{default:50},vMin:{default:-50},vMax:{default:50},numParticles:{default:8192},maxAge:{default:30},speedFactor:{default:50},color:{default:()=>[255,255,255,200]},colorRamp:{default:()=>[[0,[59,130,189,255]],[.1,[102,194,165,255]],[.2,[171,221,164,255]],[.3,[230,245,152,255]],[.4,[254,224,139,255]],[.5,[253,174,97,255]],[.6,[244,109,67,255]],[1,[213,62,79,255]]]},speedRange:{default:()=>[0,30]},width:{default:1.5},animate:{type:Boolean,default:!0},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`,`loaded`,`error`],setup(i,{emit:f}){let p=i,m=f,h=e(n),{addLayer:g,removeLayer:_,updateLayer:v}=t(h),y=s(!1),b=s(null),x=s({uMin:p.uMin,uMax:p.uMax,vMin:p.vMin,vMax:p.vMax}),S=r(()=>{let e=x.value.uMax-x.value.uMin,t=x.value.vMax-x.value.vMin;return[Math.min(e,t)*-1,Math.max(e,t)]}),C=()=>b.value?new u({id:p.id,image:b.value,bounds:p.bounds,imageUnscale:S.value,numParticles:p.numParticles,maxAge:p.maxAge,speedFactor:p.speedFactor,color:p.color,colorRamp:p.colorRamp,speedRange:p.speedRange,width:p.width,animate:p.animate,wrapLongitude:!0,opacity:p.opacity,visible:p.visible,pickable:p.pickable,beforeId:p.beforeId,onClick:e=>m(`click`,e),onHover:e=>m(`hover`,e)}):null,w=e=>{try{let t=d(e,{width:360,height:180,bounds:p.bounds});return x.value={uMin:t.uMin,uMax:t.uMax,vMin:t.vMin,vMax:t.vMax},b.value=t.canvas.toDataURL(`image/png`),!0}catch(e){return m(`error`,e instanceof Error?e:Error(String(e))),!1}},T=()=>{if(p.windData&&p.windData.length>0){if(!w(p.windData))return}else if(p.imageUrl)b.value=p.imageUrl,x.value={uMin:p.uMin,uMax:p.uMax,vMin:p.vMin,vMax:p.vMax};else return;let e=C();e&&(g(e),y.value=!0,m(`loaded`))},E=()=>{if(!y.value)return;let e=C();e&&v(p.id,e)};return o(()=>{h.value?.isStyleLoaded()?T():h.value?.once(`style.load`,T)}),l(()=>p.windData,e=>{e&&e.length>0&&w(e)&&E()},{deep:!0}),l(()=>p.imageUrl,e=>{e&&!p.windData&&(b.value=e,x.value={uMin:p.uMin,uMax:p.uMax,vMin:p.vMin,vMax:p.vMax},E())}),l(()=>[p.numParticles,p.maxAge,p.speedFactor,p.color,p.colorRamp,p.speedRange,p.width,p.animate,p.opacity,p.visible],()=>{E()},{deep:!0}),a(()=>{_(p.id)}),(e,t)=>c(e.$slots,`default`)}});export{f as VLayerDeckglWindParticle};
2
- //# sourceMappingURL=wind-particle-C1OQmbu7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wind-particle-C1OQmbu7.js","names":[],"sources":["../src/layers/deckgl/wind-particle/VLayerDeckglWindParticle.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * GPU-animated wind/current particle field on top of a vector field texture.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `maplibre-gl-wind`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox maplibre-gl-wind`\n */\n import { ref, computed, onMounted, onBeforeUnmount, watch } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { WindParticleLayer, generateWindTexture } from 'maplibre-gl-wind';\n import type { ColorStop, WindDataPoint } from 'maplibre-gl-wind';\n import type { Color } from '../_shared/types';\n\n interface Props {\n id: string;\n imageUrl?: string;\n windData?: WindDataPoint[];\n bounds?: [number, number, number, number];\n uMin?: number;\n uMax?: number;\n vMin?: number;\n vMax?: number;\n numParticles?: number;\n maxAge?: number;\n speedFactor?: number;\n color?: Color;\n colorRamp?: ColorStop[];\n speedRange?: [number, number];\n width?: number;\n animate?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n bounds: () => [-180, -90, 180, 90],\n uMin: -50,\n uMax: 50,\n vMin: -50,\n vMax: 50,\n numParticles: 8192,\n maxAge: 30,\n speedFactor: 50,\n color: () => [255, 255, 255, 200] as Color,\n colorRamp: () =>\n [\n [0.0, [59, 130, 189, 255]],\n [0.1, [102, 194, 165, 255]],\n [0.2, [171, 221, 164, 255]],\n [0.3, [230, 245, 152, 255]],\n [0.4, [254, 224, 139, 255]],\n [0.5, [253, 174, 97, 255]],\n [0.6, [244, 109, 67, 255]],\n [1.0, [213, 62, 79, 255]],\n ] as ColorStop[],\n speedRange: () => [0, 30],\n width: 1.5,\n animate: true,\n opacity: 1,\n visible: true,\n pickable: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n loaded: [];\n error: [error: Error];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const isLayerAdded = ref(false);\n const currentImageUrl = ref<string | null>(null);\n const windMetadata = ref({\n uMin: props.uMin,\n uMax: props.uMax,\n vMin: props.vMin,\n vMax: props.vMax,\n });\n\n const imageUnscale = computed(() => {\n const uRange = windMetadata.value.uMax - windMetadata.value.uMin;\n const vRange = windMetadata.value.vMax - windMetadata.value.vMin;\n return [Math.min(uRange, vRange) * -1, Math.max(uRange, vRange)];\n });\n\n const createLayer = () => {\n if (!currentImageUrl.value) return null;\n\n return new WindParticleLayer({\n id: props.id,\n image: currentImageUrl.value,\n bounds: props.bounds,\n imageUnscale: imageUnscale.value,\n numParticles: props.numParticles,\n maxAge: props.maxAge,\n speedFactor: props.speedFactor,\n color: props.color,\n colorRamp: props.colorRamp,\n speedRange: props.speedRange,\n width: props.width,\n animate: props.animate,\n wrapLongitude: true,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n };\n\n const processWindData = (data: WindDataPoint[]) => {\n try {\n const result = generateWindTexture(data, {\n width: 360,\n height: 180,\n bounds: props.bounds,\n });\n\n windMetadata.value = {\n uMin: result.uMin,\n uMax: result.uMax,\n vMin: result.vMin,\n vMax: result.vMax,\n };\n\n currentImageUrl.value = result.canvas.toDataURL('image/png');\n return true;\n } catch (err) {\n emit('error', err instanceof Error ? err : new Error(String(err)));\n return false;\n }\n };\n\n const initializeLayer = () => {\n if (props.windData && props.windData.length > 0) {\n if (!processWindData(props.windData)) return;\n } else if (props.imageUrl) {\n currentImageUrl.value = props.imageUrl;\n windMetadata.value = {\n uMin: props.uMin,\n uMax: props.uMax,\n vMin: props.vMin,\n vMax: props.vMax,\n };\n } else {\n return;\n }\n\n const layer = createLayer();\n if (layer) {\n addLayer(layer);\n isLayerAdded.value = true;\n emit('loaded');\n }\n };\n\n const updateWindLayer = () => {\n if (!isLayerAdded.value) return;\n\n const layer = createLayer();\n if (layer) {\n updateLayer(props.id, layer);\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 () => props.windData,\n (newData) => {\n if (newData && newData.length > 0) {\n if (processWindData(newData)) {\n updateWindLayer();\n }\n }\n },\n { deep: true },\n );\n\n watch(\n () => props.imageUrl,\n (newUrl) => {\n if (newUrl && !props.windData) {\n currentImageUrl.value = newUrl;\n windMetadata.value = {\n uMin: props.uMin,\n uMax: props.uMax,\n vMin: props.vMin,\n vMax: props.vMax,\n };\n updateWindLayer();\n }\n },\n );\n\n watch(\n () => [\n props.numParticles,\n props.maxAge,\n props.speedFactor,\n props.color,\n props.colorRamp,\n props.speedRange,\n props.width,\n props.animate,\n props.opacity,\n props.visible,\n ],\n () => {\n updateWindLayer();\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":"s/BA0CE,IAAM,EAAQ,EA6BR,EAAO,EAOP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAe,EAAI,GAAK,CACxB,EAAkB,EAAmB,KAAI,CACzC,EAAe,EAAI,CACvB,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACb,CAAA,CAEK,EAAe,MAAe,CAClC,IAAM,EAAS,EAAa,MAAM,KAAO,EAAa,MAAM,KACtD,EAAS,EAAa,MAAM,KAAO,EAAa,MAAM,KAC5D,MAAO,CAAC,KAAK,IAAI,EAAQ,EAAM,CAAI,GAAI,KAAK,IAAI,EAAQ,EAAO,CAAA,EAChE,CAEK,MACC,EAAgB,MAEd,IAAI,EAAkB,CAC3B,GAAI,EAAM,GACV,MAAO,EAAgB,MACvB,OAAQ,EAAM,OACd,aAAc,EAAa,MAC3B,aAAc,EAAM,aACpB,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,MAAO,EAAM,MACb,UAAW,EAAM,UACjB,WAAY,EAAM,WAClB,MAAO,EAAM,MACb,QAAS,EAAM,QACf,cAAe,GACf,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CAAA,CAtBkC,KAyB/B,EAAmB,GAA0B,CACjD,GAAI,CACF,IAAM,EAAS,EAAoB,EAAM,CACvC,MAAO,IACP,OAAQ,IACR,OAAQ,EAAM,OACf,CAAA,CAUD,MARA,GAAa,MAAQ,CACnB,KAAM,EAAO,KACb,KAAM,EAAO,KACb,KAAM,EAAO,KACb,KAAM,EAAO,KACf,CAEA,EAAgB,MAAQ,EAAO,OAAO,UAAU,YAAW,CACpD,SACA,EAAK,CAEZ,OADA,EAAK,QAAS,aAAe,MAAQ,EAAU,MAAM,OAAO,EAAI,CAAC,CAAA,CAC1D,KAIL,MAAwB,CAC5B,GAAI,EAAM,UAAY,EAAM,SAAS,OAAS,MACxC,CAAC,EAAgB,EAAM,SAAQ,CAAG,YACjC,GAAI,EAAM,SACf,EAAgB,MAAQ,EAAM,SAC9B,EAAa,MAAQ,CACnB,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACd,MAEA,OAGF,IAAM,EAAQ,GAAY,CACtB,IACF,EAAS,EAAK,CACd,EAAa,MAAQ,GACrB,EAAK,SAAQ,GAIX,MAAwB,CAC5B,GAAI,CAAC,EAAa,MAAO,OAEzB,IAAM,EAAQ,GAAY,CACtB,GACF,EAAY,EAAM,GAAI,EAAK,SAI/B,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,EAAM,SACX,GAAY,CACP,GAAW,EAAQ,OAAS,GAC1B,EAAgB,EAAO,EACzB,GAAgB,EAItB,CAAE,KAAM,GACV,CAAA,CAEA,MACQ,EAAM,SACX,GAAW,CACN,GAAU,CAAC,EAAM,WACnB,EAAgB,MAAQ,EACxB,EAAa,MAAQ,CACnB,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACd,CACA,GAAgB,GAGtB,CAEA,MACQ,CACJ,EAAM,aACN,EAAM,OACN,EAAM,YACN,EAAM,MACN,EAAM,UACN,EAAM,WACN,EAAM,MACN,EAAM,QACN,EAAM,QACN,EAAM,QACR,KACM,CACJ,GAAgB,EAElB,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,t as n}from"./symbols-CVfar3bo.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{_WMSLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglWMS`,props:{id:{},data:{},serviceType:{default:`wms`},layers:{},srs:{default:`EPSG:4326`},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,data:u.data,serviceType:u.serviceType,layers:u.layers,srs:u.srs,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.layers,u.srs,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglWMS};
2
- //# sourceMappingURL=wms-toc-Os2F.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wms-toc-Os2F.js","names":[],"sources":["../src/layers/deckgl/wms/VLayerDeckglWMS.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Consume WMS endpoints as deck.gl tiles.\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 { _WMSLayer as WMSLayer } from '@deck.gl/geo-layers';\n import type { WMSLayerProps } 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 serviceType?: 'wms' | 'template';\n layers?: string[];\n srs?: 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 serviceType: 'wms',\n srs: 'EPSG:4326',\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 WMSLayer({\n id: props.id,\n data: props.data,\n serviceType: props.serviceType,\n layers: props.layers,\n srs: props.srs,\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 WMSLayerProps);\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.layers, props.srs, 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":"ghBAgCE,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAS,CAClB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,OAAQ,EAAM,OACd,IAAK,EAAM,IACX,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,CAClC,CAAA,CAGd,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,OAAQ,EAAM,IAAK,EAAM,QAAS,EAAM,QAAO,KAClE,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -1,2 +0,0 @@
1
- import{c as e,o as t,s as n,t as r}from"./symbols-CVfar3bo.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-raster @developmentseed/deck.gl-zarr @developmentseed/proj zarrita`,p=i({__name:`VLayerDeckglZarr`,props:{id:{},node:{},variable:{},selection:{},metadata:{},getTileData:{},renderTile:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(i,{emit:p}){let m=i,h=e(r),{addLayer:g,removeLayer:_,updateLayer:v}=t(h),y=l(null),b=l(null),x=()=>{if(!y.value)return null;let e={id:u(m.id),node:u(m.node),selection:u(m.selection),getTileData:m.getTileData,renderTile:m.renderTile,opacity:u(m.opacity),visible:u(m.visible),pickable:u(m.pickable)};return b.value&&(e.epsgResolver=b.value),m.variable!==void 0&&(e.variable=u(m.variable)),m.metadata!==void 0&&(e.metadata=u(m.metadata)),m.beforeId!==void 0&&(e.beforeId=u(m.beforeId)),a(new y.value(e))},S=async()=>{try{let[e,t]=await Promise.all([n(`@developmentseed/deck.gl-zarr`,()=>import(`@developmentseed/deck.gl-zarr`),f),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),f)]);y.value=a(e.ZarrLayer),b.value=t.epsgResolver;let r=x();r&&g(r)}catch(e){console.error(`[deck.gl-raster] Error loading ZarrLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-zarr, @developmentseed/proj, and zarrita are installed`)}};return s(()=>{h.value?.isStyleLoaded()?S():h.value?.once(`style.load`,S)}),d(()=>[m.node,m.variable,m.selection,m.metadata,m.opacity,m.visible,m.renderTile,m.getTileData],()=>{let e=x();e&&v(m.id,e)},{deep:!0}),o(()=>{_(m.id)}),(e,t)=>c(e.$slots,`default`)}});export{p as VLayerDeckglZarr};
2
- //# sourceMappingURL=zarr-CGUO8nTA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zarr-CGUO8nTA.js","names":[],"sources":["../src/layers/deckgl/zarr/VLayerDeckglZarr.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * GeoZarr tile renderer with optional reprojection (caller supplies the store).\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@developmentseed/deck.gl-raster`\n * @requires `@developmentseed/deck.gl-zarr`\n * @requires `@developmentseed/proj`\n * @requires `zarrita`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @developmentseed/deck.gl-raster @developmentseed/deck.gl-zarr @developmentseed/proj zarrita`\n */\n /**\n * VLayerDeckglZarr — GeoZarr tile rendering with reprojection.\n *\n * Wraps @developmentseed/deck.gl-zarr ZarrLayer.\n * The caller MUST open the zarr store with zarrita and pass the opened\n * Array/Group as `node`, plus `selection` for non-spatial dims, plus\n * `getTileData` + `renderTile` callbacks. This wrapper is intentionally\n * thin — ZarrLayer is data-format / shader-pipeline agnostic by design.\n *\n * @see https://github.com/developmentseed/deck.gl-raster/blob/main/examples/dynamical-zarr-ecmwf/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 {\n MinimalTileData,\n RenderTileResult,\n } from '@developmentseed/deck.gl-raster';\n import type {\n GetTileDataOptions,\n SliceInput,\n } from '@developmentseed/deck.gl-zarr';\n import type * as zarr from 'zarrita';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n const ZARR_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-raster @developmentseed/deck.gl-zarr @developmentseed/proj zarrita';\n\n interface Props {\n id: string;\n /**\n * Pre-opened zarrita Array OR Group. The caller builds the store\n * (e.g. zarr.FetchStore + withConsolidatedMetadata) and opens it.\n */\n node: zarr.Array<zarr.DataType, zarr.Readable> | zarr.Group<zarr.Readable>;\n /**\n * Optional path to a variable within the store. Only used when `node`\n * is a Group. Ignored for direct Array nodes.\n */\n variable?: string;\n /**\n * Selection for non-spatial dims. One entry per non-spatial dim.\n * Use a number to pin to an index, `zarr.Slice` for a range, or `null`\n * for zarrita's default. For pure spatial arrays, pass `{}`.\n */\n selection: Record<string, SliceInput>;\n /**\n * Optional raw group attrs override. Use when the data source lacks\n * GeoZarr metadata and you want to inject it.\n */\n metadata?: unknown;\n /**\n * Tile fetcher. Receives the zarr Array for the chosen zoom level and\n * a pre-built sliceSpec. Must return a tile-shaped `DataT`.\n */\n getTileData: (\n arr: zarr.Array<zarr.DataType, zarr.Readable>,\n options: GetTileDataOptions,\n ) => Promise<MinimalTileData>;\n /**\n * Convert a loaded tile into a `RenderTileResult` (either `{ image }`\n * or `{ renderPipeline }`).\n */\n renderTile: (data: MinimalTileData) => RenderTileResult;\n /** Layer opacity (0-1). */\n opacity?: number;\n /** Layer visibility. */\n visible?: boolean;\n /** Enable picking. */\n pickable?: boolean;\n /** Insert layer before this layer id. */\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n opacity: 1,\n visible: true,\n pickable: 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 ZarrLayerClass = shallowRef<\n typeof import('@developmentseed/deck.gl-zarr').ZarrLayer | null\n >(null);\n const epsgResolverFn = shallowRef<\n typeof import('@developmentseed/proj').epsgResolver | null\n >(null);\n\n const createLayer = () => {\n if (!ZarrLayerClass.value) return null;\n\n const layerProps: Record<string, unknown> = {\n id: toRaw(props.id),\n node: toRaw(props.node),\n selection: toRaw(props.selection),\n getTileData: props.getTileData,\n renderTile: props.renderTile,\n opacity: toRaw(props.opacity),\n visible: toRaw(props.visible),\n pickable: toRaw(props.pickable),\n };\n\n if (epsgResolverFn.value) {\n layerProps.epsgResolver = epsgResolverFn.value;\n }\n if (props.variable !== undefined) {\n layerProps.variable = toRaw(props.variable);\n }\n if (props.metadata !== undefined) {\n layerProps.metadata = toRaw(props.metadata);\n }\n if (props.beforeId !== undefined) {\n layerProps.beforeId = toRaw(props.beforeId);\n }\n\n const layer = new ZarrLayerClass.value(layerProps);\n return markRaw(layer);\n };\n\n const initializeLayer = async () => {\n try {\n const [zarrModule, projModule] = await Promise.all([\n requirePeer(\n '@developmentseed/deck.gl-zarr',\n () => import('@developmentseed/deck.gl-zarr'),\n ZARR_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/proj',\n () => import('@developmentseed/proj'),\n ZARR_PEER_INSTALL,\n ),\n ]);\n\n ZarrLayerClass.value = markRaw(zarrModule.ZarrLayer);\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 ZarrLayer:', error);\n console.error(\n 'Make sure @developmentseed/deck.gl-zarr, @developmentseed/proj, and zarrita 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.node,\n props.variable,\n props.selection,\n props.metadata,\n props.opacity,\n props.visible,\n // Callbacks must be watched too: ZarrLayer captures `renderTile` and\n // `getTileData` at construction time, so consumers that swap closures\n // (e.g. AEF Mosaic rebuilding the SampleAefRgb shader pipeline with\n // new band indices) need the layer rebuilt to take effect.\n props.renderTile,\n props.getTileData,\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":"4MA8CE,MAAM,EACJ,2ZAgDF,IAAM,EAAQ,EAWR,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAiB,EAErB,KAAI,CACA,EAAiB,EAErB,KAAI,CAEA,MAAoB,CACxB,GAAI,CAAC,EAAe,MAAO,OAAO,KAElC,IAAM,EAAsC,CAC1C,GAAI,EAAM,EAAM,GAAE,CAClB,KAAM,EAAM,EAAM,KAAI,CACtB,UAAW,EAAM,EAAM,UAAS,CAChC,YAAa,EAAM,YACnB,WAAY,EAAM,WAClB,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,SAAU,EAAM,EAAM,SAAQ,CAChC,CAgBA,OAdI,EAAe,QACjB,EAAW,aAAe,EAAe,OAEvC,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAExC,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAExC,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAIrC,EAAQ,IADG,EAAe,MAAM,EACnB,CAAA,EAGhB,EAAkB,SAAY,CAClC,GAAI,CACF,GAAM,CAAC,EAAY,GAAc,MAAM,QAAQ,IAAI,CACjD,EACE,oCACM,OAAO,iCACb,EACF,CACA,EACE,4BACM,OAAO,yBACb,EAEJ,CAAC,CAAA,CAED,EAAe,MAAQ,EAAQ,EAAW,UAAS,CACnD,EAAe,MAAQ,EAAW,aAElC,IAAM,EAAQ,GAAY,CACtB,GACF,EAAS,EAAK,OAET,EAAO,CACd,QAAQ,MAAM,4CAA6C,EAAK,CAChE,QAAQ,MACN,4FACF,UAIJ,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,SACN,EAAM,UACN,EAAM,SACN,EAAM,QACN,EAAM,QAKN,EAAM,WACN,EAAM,YACR,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"}