@geoql/v-maplibre 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +26 -0
  2. package/dist/arc-oPHfD4K7.js +2 -0
  3. package/dist/arc-oPHfD4K7.js.map +1 -0
  4. package/dist/arrow-4ecDVUFv.js +2 -0
  5. package/dist/arrow-4ecDVUFv.js.map +1 -0
  6. package/dist/bitmap-C04WgKea.js +2 -0
  7. package/dist/bitmap-C04WgKea.js.map +1 -0
  8. package/dist/cog-Cq7xvN9B.js +2 -0
  9. package/dist/cog-Cq7xvN9B.js.map +1 -0
  10. package/dist/column-Dx4A711w.js +2 -0
  11. package/dist/column-Dx4A711w.js.map +1 -0
  12. package/dist/contour-Dgvb_bGm.js +2 -0
  13. package/dist/contour-Dgvb_bGm.js.map +1 -0
  14. package/dist/generic-BKvcZn9n.js +2 -0
  15. package/dist/generic-BKvcZn9n.js.map +1 -0
  16. package/dist/geoarrow-path-B2LJ956d.js +2 -0
  17. package/dist/geoarrow-path-B2LJ956d.js.map +1 -0
  18. package/dist/geoarrow-polygon-C9mZ7552.js +2 -0
  19. package/dist/geoarrow-polygon-C9mZ7552.js.map +1 -0
  20. package/dist/geoarrow-scatterplot-CM5842q_.js +2 -0
  21. package/dist/geoarrow-scatterplot-CM5842q_.js.map +1 -0
  22. package/dist/geoarrow-solid-polygon-DIm9mciL.js +2 -0
  23. package/dist/geoarrow-solid-polygon-DIm9mciL.js.map +1 -0
  24. package/dist/geoarrow-text-ClY3q_nR.js +2 -0
  25. package/dist/geoarrow-text-ClY3q_nR.js.map +1 -0
  26. package/dist/geoarrow-trips-BqbIoMt8.js +2 -0
  27. package/dist/geoarrow-trips-BqbIoMt8.js.map +1 -0
  28. package/dist/geohash-Pq83atW2.js +2 -0
  29. package/dist/geohash-Pq83atW2.js.map +1 -0
  30. package/dist/geojson-cOxJcO-8.js +2 -0
  31. package/dist/geojson-cOxJcO-8.js.map +1 -0
  32. package/dist/great-circle-C6GDbX1c.js +2 -0
  33. package/dist/great-circle-C6GDbX1c.js.map +1 -0
  34. package/dist/grid-BPfXfID8.js +2 -0
  35. package/dist/grid-BPfXfID8.js.map +1 -0
  36. package/dist/grid-cell-T0-xdlk_.js +2 -0
  37. package/dist/grid-cell-T0-xdlk_.js.map +1 -0
  38. package/dist/h3-cluster-BsvMbaYv.js +2 -0
  39. package/dist/h3-cluster-BsvMbaYv.js.map +1 -0
  40. package/dist/h3-hexagon-Cx1qlgKb.js +2 -0
  41. package/dist/h3-hexagon-Cx1qlgKb.js.map +1 -0
  42. package/dist/heatmap-ByafStP6.js +2 -0
  43. package/dist/heatmap-ByafStP6.js.map +1 -0
  44. package/dist/hexagon-CWRkTkkj.js +2 -0
  45. package/dist/hexagon-CWRkTkkj.js.map +1 -0
  46. package/dist/icon-WggKPJv7.js +2 -0
  47. package/dist/icon-WggKPJv7.js.map +1 -0
  48. package/dist/index.d.ts +265 -4733
  49. package/dist/index.js +1 -42
  50. package/dist/index.js.map +1 -1
  51. package/dist/line-B5e9w1td.js +2 -0
  52. package/dist/line-B5e9w1td.js.map +1 -0
  53. package/dist/mosaic-Cl7rtAXN.js +43 -0
  54. package/dist/mosaic-Cl7rtAXN.js.map +1 -0
  55. package/dist/multi-cog-DAJbnElE.js +2 -0
  56. package/dist/multi-cog-DAJbnElE.js.map +1 -0
  57. package/dist/mvt-D0GYYs-Z.js +2 -0
  58. package/dist/mvt-D0GYYs-Z.js.map +1 -0
  59. package/dist/path-mcVHjyaA.js +2 -0
  60. package/dist/path-mcVHjyaA.js.map +1 -0
  61. package/dist/point-cloud-CNpLW-hf.js +2 -0
  62. package/dist/point-cloud-CNpLW-hf.js.map +1 -0
  63. package/dist/polygon-B5mGSTte.js +2 -0
  64. package/dist/polygon-B5mGSTte.js.map +1 -0
  65. package/dist/quadkey-DGHCEKmx.js +2 -0
  66. package/dist/quadkey-DGHCEKmx.js.map +1 -0
  67. package/dist/s2-MuPaEFbo.js +2 -0
  68. package/dist/s2-MuPaEFbo.js.map +1 -0
  69. package/dist/scatterplot-BBeJkOdi.js +2 -0
  70. package/dist/scatterplot-BBeJkOdi.js.map +1 -0
  71. package/dist/scenegraph-DTM4oQ_J.js +2 -0
  72. package/dist/scenegraph-DTM4oQ_J.js.map +1 -0
  73. package/dist/screen-grid-CxlQC4Kb.js +2 -0
  74. package/dist/screen-grid-CxlQC4Kb.js.map +1 -0
  75. package/dist/simple-mesh-BxLUvOJK.js +2 -0
  76. package/dist/simple-mesh-BxLUvOJK.js.map +1 -0
  77. package/dist/solid-polygon-DwQBLTy0.js +2 -0
  78. package/dist/solid-polygon-DwQBLTy0.js.map +1 -0
  79. package/dist/starfield-D0gIX-34.js +2 -0
  80. package/dist/starfield-D0gIX-34.js.map +1 -0
  81. package/dist/symbols-CFCXX1_B.js +2 -0
  82. package/dist/symbols-CFCXX1_B.js.map +1 -0
  83. package/dist/terrain-f-XAakfL.js +2 -0
  84. package/dist/terrain-f-XAakfL.js.map +1 -0
  85. package/dist/text-BOvG9JHc.js +2 -0
  86. package/dist/text-BOvG9JHc.js.map +1 -0
  87. package/dist/tile-3d-DG91zS0N.js +2 -0
  88. package/dist/tile-3d-DG91zS0N.js.map +1 -0
  89. package/dist/tile-AhmnAg8V.js +2 -0
  90. package/dist/tile-AhmnAg8V.js.map +1 -0
  91. package/dist/trips-DwzBmfe0.js +2 -0
  92. package/dist/trips-DwzBmfe0.js.map +1 -0
  93. package/dist/v-maplibre.css +2 -2
  94. package/dist/wind-particle-DW0nCMls.js +2 -0
  95. package/dist/wind-particle-DW0nCMls.js.map +1 -0
  96. package/dist/wms-vy1yMBNb.js +2 -0
  97. package/dist/wms-vy1yMBNb.js.map +1 -0
  98. package/dist/zarr-6SNoX07d.js +2 -0
  99. package/dist/zarr-6SNoX07d.js.map +1 -0
  100. package/package.json +13 -8
package/README.md CHANGED
@@ -67,7 +67,16 @@ pnpm add @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @devel
67
67
  # Zarr — VLayerDeckglZarr
68
68
  pnpm add @developmentseed/deck.gl-zarr zarrita
69
69
 
70
+ # GeoArrow — VLayerDeckglGeoArrowScatterplot, VLayerDeckglGeoArrowPath,
71
+ # VLayerDeckglGeoArrowPolygon, VLayerDeckglGeoArrowSolidPolygon,
72
+ # VLayerDeckglGeoArrowText, VLayerDeckglGeoArrowTrips
73
+ # (Trips additionally needs @deck.gl/geo-layers — already covered by the
74
+ # deck.gl tile/route line above.)
75
+ pnpm add apache-arrow
76
+
70
77
  # Wind particles — VLayerDeckglWindParticle
78
+ # (Wind-data helpers — createWindDataFromOpenWeatherMap, generateWindTexture,
79
+ # WindParticleLayer — must be imported directly from 'maplibre-gl-wind'.)
71
80
  pnpm add maplibre-gl-wind
72
81
 
73
82
  # LiDAR point cloud viewer — VControlLidar
@@ -181,10 +190,27 @@ High-performance WebGL visualization layers powered by deck.gl:
181
190
  - `VLayerDeckglCOG` - Cloud-Optimized GeoTIFF visualization (GPU-accelerated, auto-reprojection)
182
191
  - `VLayerDeckglMosaic` - Client-side COG mosaic from STAC items (requires `flatbush`, `proj4`)
183
192
 
193
+ **GeoArrow Layers** (requires `@deck.gl/layers` + `apache-arrow`; trips also needs `@deck.gl/geo-layers`)
194
+
195
+ Render Apache Arrow `Table` / `RecordBatch` data with GeoArrow extension types directly — no GeoJSON parsing. Ideal for GeoParquet / Arrow IPC sources and very large point/polygon datasets. The wrappers extract GeoArrow geometry columns inside the Vue wrapper and feed flat-buffer attributes to stock deck.gl layers — no `@geoarrow/deck.gl-geoarrow` runtime dependency.
196
+
197
+ - `VLayerDeckglGeoArrowScatterplot` - Points from a GeoArrow point / multipoint column
198
+ - `VLayerDeckglGeoArrowPath` - Polylines from a GeoArrow linestring / multilinestring column
199
+ - `VLayerDeckglGeoArrowPolygon` - Filled + stroked polygons from a GeoArrow polygon / multipolygon column
200
+ - `VLayerDeckglGeoArrowSolidPolygon` - 3D extruded polygons (height-mapped choropleths, building footprints)
201
+ - `VLayerDeckglGeoArrowText` - Text labels at GeoArrow point positions
202
+ - `VLayerDeckglGeoArrowTrips` - Animated trips along GeoArrow linestrings with per-vertex timestamps
203
+
184
204
  **Wind Visualization** (requires `maplibre-gl-wind`)
185
205
 
186
206
  - `VLayerDeckglWindParticle` - Animated wind particle flow with speed-based color ramps
187
207
 
208
+ > The wind-data helpers (`createWindDataFromOpenWeatherMap`, `generateWindTexture`, `WindParticleLayer`, `windUniforms`) are **not** re-exported from `@geoql/v-maplibre`. Import them directly from `maplibre-gl-wind`:
209
+ >
210
+ > ```ts
211
+ > import { createWindDataFromOpenWeatherMap } from 'maplibre-gl-wind';
212
+ > ```
213
+
188
214
  **Generic Layer**
189
215
 
190
216
  - `VLayerDeckgl` - Use any deck.gl layer class directly
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ArcLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglArc`,props:{id:{},data:{},getSourcePosition:{},getTargetPosition:{},getSourceColor:{},getTargetColor:{},getWidth:{},getHeight:{},getTilt:{},greatCircle:{type:Boolean,default:!1},numSegments:{default:50},widthUnits:{default:`pixels`},widthScale:{default:1},widthMinPixels:{default:0},widthMaxPixels:{default:2**53-1},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getSourcePosition:u.getSourcePosition,getTargetPosition:u.getTargetPosition,getSourceColor:u.getSourceColor??[255,140,0],getTargetColor:u.getTargetColor??[0,200,255],getWidth:u.getWidth??1,getHeight:u.getHeight??1,getTilt:u.getTilt??0,greatCircle:u.greatCircle,numSegments:u.numSegments,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getSourcePosition,u.getTargetPosition,u.getSourceColor,u.getTargetColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglArc};
2
+ //# sourceMappingURL=arc-oPHfD4K7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arc-oPHfD4K7.js","names":[],"sources":["../src/layers/deckgl/arc/VLayerDeckglArc.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render curved 3D arcs between coordinate pairs.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ArcLayer } from '@deck.gl/layers';\n import type { ArcLayerProps } 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 getSourcePosition: Accessor<D, Position>;\n getTargetPosition: Accessor<D, Position>;\n getSourceColor?: Accessor<D, Color>;\n getTargetColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n getHeight?: Accessor<D, number>;\n getTilt?: Accessor<D, number>;\n greatCircle?: boolean;\n numSegments?: number;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n greatCircle: false,\n numSegments: 50,\n widthUnits: 'pixels',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ArcLayer({\n id: props.id,\n data: props.data,\n getSourcePosition: props.getSourcePosition,\n getTargetPosition: props.getTargetPosition,\n getSourceColor: props.getSourceColor ?? [255, 140, 0],\n getTargetColor: props.getTargetColor ?? [0, 200, 255],\n getWidth: props.getWidth ?? 1,\n getHeight: props.getHeight ?? 1,\n getTilt: props.getTilt ?? 0,\n greatCircle: props.greatCircle,\n numSegments: props.numSegments,\n widthUnits: props.widthUnits,\n widthScale: props.widthScale,\n widthMinPixels: props.widthMinPixels,\n widthMaxPixels: props.widthMaxPixels,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as ArcLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getSourcePosition,\n props.getTargetPosition,\n props.getSourceColor,\n props.getTargetColor,\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":"6uBA4CE,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAS,CAClB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,eAAgB,EAAM,gBAAkB,CAAC,IAAK,IAAK,EAAC,CACpD,eAAgB,EAAM,gBAAkB,CAAC,EAAG,IAAK,IAAG,CACpD,SAAU,EAAM,UAAY,EAC5B,UAAW,EAAM,WAAa,EAC9B,QAAS,EAAM,SAAW,EAC1B,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,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,CACJ,EAAM,KACN,EAAM,kBACN,EAAM,kBACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{onMounted as e,watch as t}from"vue";function n(n,r){let i=!1,a=()=>{i||(i=!0,r())},o=e=>{if(e.isStyleLoaded()){a();return}e.once(`style.load`,a);let t=setInterval(()=>{if(i){clearInterval(t);return}e.isStyleLoaded()&&(clearInterval(t),a())},100);setTimeout(()=>clearInterval(t),1e4)};e(()=>{if(n.value)o(n.value);else{let e=t(n,t=>{t&&(e(),o(t))})}})}const r=(e,t)=>e.getChild(t),i=e=>{let t=e.children?.[0]?.values,n=e.children?.[1]?.values,r=e.children?.[2]?.values;if(!t||!n)return new Float64Array;let i=e.length,a=new Float64Array(i*3);for(let e=0;e<i;e++)a[e*3]=t[e]??0,a[e*3+1]=n[e]??0,a[e*3+2]=r?r[e]??0:0;return a},a=(e,t=`geometry`)=>{let n=r(e,t);if(!n)return null;let a=n.data[0];if(!a||!a.children)return null;let o=i(a);return o.length===0?null:{positions:o,length:a.length}},o=(e,t=`geometry`)=>{let n=r(e,t);if(!n)return null;let a=n.data[0];if(!a||!a.valueOffsets)return null;let o=a.children?.[0];if(!o)return null;let s=i(o);return s.length===0?null:{positions:s,startIndices:Int32Array.from(a.valueOffsets),length:a.length}},s=(e,t=`geometry`)=>{let n=r(e,t);if(!n)return null;let a=n.data[0];if(!a||!a.valueOffsets)return null;let o=a.children?.[0];if(!o||!o.valueOffsets)return null;let s=o.children?.[0];if(!s)return null;let c=i(s);return c.length===0?null:{positions:c,startIndices:Int32Array.from(o.valueOffsets),length:o.length}},c=(e,t=`geometry`)=>{let n=r(e,t);if(!n)return null;let a=n.data[0];if(!a||!a.valueOffsets)return null;let o=a.children?.[0];if(!o||!o.valueOffsets)return null;let s=o.children?.[0];if(!s)return null;let c=i(s);return c.length===0?null:{positions:c,polygonIndices:Int32Array.from(a.valueOffsets),primitivePolygonIndices:Int32Array.from(o.valueOffsets),length:a.length}},l=(e,t=`geometry`)=>{let n=r(e,t);if(!n)return null;let a=n.data[0];if(!a||!a.valueOffsets)return null;let o=a.children?.[0];if(!o||!o.valueOffsets)return null;let s=o.children?.[0];if(!s||!s.valueOffsets)return null;let c=s.children?.[0];if(!c)return null;let l=i(c);return l.length===0?null:{positions:l,polygonIndices:Int32Array.from(o.valueOffsets),primitivePolygonIndices:Int32Array.from(s.valueOffsets),length:a.length}},u=e=>{let{positions:t,polygonIndices:n,primitivePolygonIndices:r}=e,i=[];for(let e=0;e<n.length-1;e++){let a=n[e]??0,o=n[e+1]??0;for(let e=a;e<o;e++){let n=r[e]??0,a=r[e+1]??0,o=[];for(let e=n;e<a;e++){let n=t[e*3]??0,r=t[e*3+1]??0;o.push([n,r])}o.length&&i.push(o)}}return i},d=(e,t)=>{let n={};for(let[r,i]of Object.entries(e))t.has(r)||i===void 0||(n[r]=i);return n};export{c as a,n as c,a as i,s as n,d as o,l as r,u as s,o as t};
2
+ //# sourceMappingURL=arrow-4ecDVUFv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-4ecDVUFv.js","names":["lookup"],"sources":["../src/layers/deckgl/_shared/useMapReady.ts","../src/layers/deckgl/_shared/arrow.ts"],"sourcesContent":["import { onMounted, watch, type Ref } from 'vue';\nimport type { Map } from 'maplibre-gl';\n\n/**\n * Run a callback as soon as the MapLibre map's style is loaded.\n *\n * MapLibre's `style.load` event fires exactly once per style change. If the\n * style is already loaded by the time a child wrapper mounts (the common case\n * in production where lazy-loaded chunks arrive AFTER the basemap has\n * rendered), the `.once()` listener never fires and the layer never\n * initialises. This helper polls `isStyleLoaded()` every 100ms (capped at\n * 10s) alongside the event listener so the callback runs whether the style\n * loaded before or after the wrapper mounted, and whether the map ref\n * arrived synchronously or asynchronously.\n */\nexport function useMapReady(map: Ref<Map | null>, cb: () => void): void {\n let fired = false;\n const fireOnce = () => {\n if (fired) return;\n fired = true;\n cb();\n };\n\n const waitForStyle = (m: Map) => {\n if (m.isStyleLoaded()) {\n fireOnce();\n return;\n }\n m.once('style.load', fireOnce);\n const interval = setInterval(() => {\n if (fired) {\n clearInterval(interval);\n return;\n }\n if (m.isStyleLoaded()) {\n clearInterval(interval);\n fireOnce();\n }\n }, 100);\n setTimeout(() => clearInterval(interval), 10000);\n };\n\n onMounted(() => {\n if (map.value) {\n waitForStyle(map.value);\n } else {\n const stop = watch(map, (m) => {\n if (m) {\n stop();\n waitForStyle(m);\n }\n });\n }\n });\n}\n","import type { ArrowTableLike } from './types';\n\ntype StructChildData = { values?: Float64Array };\ntype StructData = { children?: StructChildData[]; length: number };\ntype ListData = {\n valueOffsets?: Int32Array;\n children?: { type?: unknown }[];\n length: number;\n values?: unknown;\n};\n\ntype RawData = StructData & {\n type?: { children?: { name?: string }[] };\n};\n\ntype RawList = ListData & {\n type?: { children?: { name?: string }[] };\n};\n\nconst getColumn = (\n table: ArrowTableLike,\n name: string,\n): { data: unknown[] } | null => {\n const lookup = table as unknown as {\n getChild: (n: string) => { data: unknown[] } | null;\n };\n return lookup.getChild(name);\n};\n\nconst interleave = (struct: RawData): Float64Array => {\n const xs = struct.children?.[0]?.values;\n const ys = struct.children?.[1]?.values;\n const zs = struct.children?.[2]?.values;\n if (!xs || !ys) return new Float64Array(0);\n const n = struct.length;\n const out = new Float64Array(n * 3);\n for (let i = 0; i < n; i++) {\n out[i * 3] = xs[i] ?? 0;\n out[i * 3 + 1] = ys[i] ?? 0;\n out[i * 3 + 2] = zs ? (zs[i] ?? 0) : 0;\n }\n return out;\n};\n\nexport type GeoArrowPointExtract = {\n positions: Float64Array;\n length: number;\n};\n\nexport const extractPoints = (\n table: ArrowTableLike,\n column = 'geometry',\n): GeoArrowPointExtract | null => {\n const col = getColumn(table, column);\n if (!col) return null;\n const data = col.data[0] as RawData | undefined;\n if (!data || !data.children) return null;\n const positions = interleave(data);\n if (positions.length === 0) return null;\n return { positions, length: data.length };\n};\n\nexport type GeoArrowPathExtract = {\n positions: Float64Array;\n startIndices: Int32Array;\n length: number;\n};\n\nexport const extractLineStrings = (\n table: ArrowTableLike,\n column = 'geometry',\n): GeoArrowPathExtract | null => {\n const col = getColumn(table, column);\n if (!col) return null;\n const list = col.data[0] as RawList | undefined;\n if (!list || !list.valueOffsets) return null;\n const innerStruct = (list as unknown as { children?: RawData[] })\n .children?.[0];\n if (!innerStruct) return null;\n const positions = interleave(innerStruct);\n if (positions.length === 0) return null;\n return {\n positions,\n startIndices: Int32Array.from(list.valueOffsets),\n length: list.length,\n };\n};\n\nexport type GeoArrowMultiPathExtract = {\n positions: Float64Array;\n startIndices: Int32Array;\n length: number;\n};\n\nexport const extractMultiLineStrings = (\n table: ArrowTableLike,\n column = 'geometry',\n): GeoArrowMultiPathExtract | null => {\n const col = getColumn(table, column);\n if (!col) return null;\n const outer = col.data[0] as RawList | undefined;\n if (!outer || !outer.valueOffsets) return null;\n const innerList = (outer as unknown as { children?: RawList[] })\n .children?.[0];\n if (!innerList || !innerList.valueOffsets) return null;\n const struct = (innerList as unknown as { children?: RawData[] })\n .children?.[0];\n if (!struct) return null;\n const positions = interleave(struct);\n if (positions.length === 0) return null;\n return {\n positions,\n startIndices: Int32Array.from(innerList.valueOffsets),\n length: innerList.length,\n };\n};\n\nexport type GeoArrowPolygonExtract = {\n positions: Float64Array;\n polygonIndices: Int32Array;\n primitivePolygonIndices: Int32Array;\n length: number;\n};\n\nexport const extractPolygons = (\n table: ArrowTableLike,\n column = 'geometry',\n): GeoArrowPolygonExtract | null => {\n const col = getColumn(table, column);\n if (!col) return null;\n const outer = col.data[0] as RawList | undefined;\n if (!outer || !outer.valueOffsets) return null;\n const rings = (outer as unknown as { children?: RawList[] }).children?.[0];\n if (!rings || !rings.valueOffsets) return null;\n const struct = (rings as unknown as { children?: RawData[] }).children?.[0];\n if (!struct) return null;\n const positions = interleave(struct);\n if (positions.length === 0) return null;\n return {\n positions,\n polygonIndices: Int32Array.from(outer.valueOffsets),\n primitivePolygonIndices: Int32Array.from(rings.valueOffsets),\n length: outer.length,\n };\n};\n\nexport type GeoArrowMultiPolygonExtract = GeoArrowPolygonExtract;\n\nexport const extractMultiPolygons = (\n table: ArrowTableLike,\n column = 'geometry',\n): GeoArrowMultiPolygonExtract | null => {\n const col = getColumn(table, column);\n if (!col) return null;\n const outer = col.data[0] as RawList | undefined;\n if (!outer || !outer.valueOffsets) return null;\n const polysList = (outer as unknown as { children?: RawList[] })\n .children?.[0];\n if (!polysList || !polysList.valueOffsets) return null;\n const ringsList = (polysList as unknown as { children?: RawList[] })\n .children?.[0];\n if (!ringsList || !ringsList.valueOffsets) return null;\n const struct = (ringsList as unknown as { children?: RawData[] })\n .children?.[0];\n if (!struct) return null;\n const positions = interleave(struct);\n if (positions.length === 0) return null;\n return {\n positions,\n polygonIndices: Int32Array.from(polysList.valueOffsets),\n primitivePolygonIndices: Int32Array.from(ringsList.valueOffsets),\n length: outer.length,\n };\n};\n\nexport type RingPolygons = number[][][];\n\nexport const polygonsToRingArrays = (\n geom: GeoArrowMultiPolygonExtract,\n): RingPolygons => {\n const { positions, polygonIndices, primitivePolygonIndices } = geom;\n const result: RingPolygons = [];\n for (let p = 0; p < polygonIndices.length - 1; p++) {\n const polyStart = polygonIndices[p] ?? 0;\n const polyEnd = polygonIndices[p + 1] ?? 0;\n for (let r = polyStart; r < polyEnd; r++) {\n const ringStart = primitivePolygonIndices[r] ?? 0;\n const ringEnd = primitivePolygonIndices[r + 1] ?? 0;\n const ring: number[][] = [];\n for (let v = ringStart; v < ringEnd; v++) {\n const x = positions[v * 3] ?? 0;\n const y = positions[v * 3 + 1] ?? 0;\n ring.push([x, y]);\n }\n if (ring.length) result.push(ring);\n }\n }\n return result;\n};\n\nexport const linestringsToCoordArrays = (\n geom: GeoArrowPathExtract,\n): number[][][] => {\n const { positions, startIndices } = geom;\n const result: number[][][] = [];\n for (let i = 0; i < startIndices.length - 1; i++) {\n const start = startIndices[i] ?? 0;\n const end = startIndices[i + 1] ?? 0;\n const line: number[][] = [];\n for (let v = start; v < end; v++) {\n const x = positions[v * 3] ?? 0;\n const y = positions[v * 3 + 1] ?? 0;\n line.push([x, y]);\n }\n if (line.length) result.push(line);\n }\n return result;\n};\n\nexport const pointsToCoordArray = (geom: GeoArrowPointExtract): number[][] => {\n const { positions, length } = geom;\n const result: number[][] = [];\n for (let i = 0; i < length; i++) {\n result.push([positions[i * 3] ?? 0, positions[i * 3 + 1] ?? 0]);\n }\n return result;\n};\n\nexport const filterDefined = (\n source: Record<string, unknown>,\n exclude: ReadonlySet<string>,\n): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(source)) {\n if (exclude.has(key) || value === undefined) continue;\n out[key] = value;\n }\n return out;\n};\n"],"mappings":"2CAeA,SAAgB,EAAY,EAAsB,EAAsB,CACtE,IAAI,EAAQ,GACN,MAAiB,CACjB,IACJ,EAAQ,GACR,GAAI,GAGA,EAAgB,GAAW,CAC/B,GAAI,EAAE,eAAe,CAAE,CACrB,GAAU,CACV,OAEF,EAAE,KAAK,aAAc,EAAS,CAC9B,IAAM,EAAW,gBAAkB,CACjC,GAAI,EAAO,CACT,cAAc,EAAS,CACvB,OAEE,EAAE,eAAe,GACnB,cAAc,EAAS,CACvB,GAAU,GAEX,IAAI,CACP,eAAiB,cAAc,EAAS,CAAE,IAAM,EAGlD,MAAgB,CACd,GAAI,EAAI,MACN,EAAa,EAAI,MAAM,KAClB,CACL,IAAM,EAAO,EAAM,EAAM,GAAM,CACzB,IACF,GAAM,CACN,EAAa,EAAE,GAEjB,GAEJ,CClCJ,MAAM,GACJ,EACA,IAKOA,EAAO,SAAS,EAAK,CAGxB,EAAc,GAAkC,CACpD,IAAM,EAAK,EAAO,WAAW,IAAI,OAC3B,EAAK,EAAO,WAAW,IAAI,OAC3B,EAAK,EAAO,WAAW,IAAI,OACjC,GAAI,CAAC,GAAM,CAAC,EAAI,OAAO,IAAI,aAC3B,IAAM,EAAI,EAAO,OACX,EAAM,IAAI,aAAa,EAAI,EAAE,CACnC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACrB,EAAI,EAAI,GAAK,EAAG,IAAM,EACtB,EAAI,EAAI,EAAI,GAAK,EAAG,IAAM,EAC1B,EAAI,EAAI,EAAI,GAAK,EAAM,EAAG,IAAM,EAAK,EAEvC,OAAO,GAQI,GACX,EACA,EAAS,aACuB,CAChC,IAAM,EAAM,EAAU,EAAO,EAAO,CACpC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAO,EAAI,KAAK,GACtB,GAAI,CAAC,GAAQ,CAAC,EAAK,SAAU,OAAO,KACpC,IAAM,EAAY,EAAW,EAAK,CAElC,OADI,EAAU,SAAW,EAAU,KAC5B,CAAE,YAAW,OAAQ,EAAK,OAAQ,EAS9B,GACX,EACA,EAAS,aACsB,CAC/B,IAAM,EAAM,EAAU,EAAO,EAAO,CACpC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAO,EAAI,KAAK,GACtB,GAAI,CAAC,GAAQ,CAAC,EAAK,aAAc,OAAO,KACxC,IAAM,EAAe,EAClB,WAAW,GACd,GAAI,CAAC,EAAa,OAAO,KACzB,IAAM,EAAY,EAAW,EAAY,CAEzC,OADI,EAAU,SAAW,EAAU,KAC5B,CACL,YACA,aAAc,WAAW,KAAK,EAAK,aAAa,CAChD,OAAQ,EAAK,OACd,EASU,GACX,EACA,EAAS,aAC2B,CACpC,IAAM,EAAM,EAAU,EAAO,EAAO,CACpC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAQ,EAAI,KAAK,GACvB,GAAI,CAAC,GAAS,CAAC,EAAM,aAAc,OAAO,KAC1C,IAAM,EAAa,EAChB,WAAW,GACd,GAAI,CAAC,GAAa,CAAC,EAAU,aAAc,OAAO,KAClD,IAAM,EAAU,EACb,WAAW,GACd,GAAI,CAAC,EAAQ,OAAO,KACpB,IAAM,EAAY,EAAW,EAAO,CAEpC,OADI,EAAU,SAAW,EAAU,KAC5B,CACL,YACA,aAAc,WAAW,KAAK,EAAU,aAAa,CACrD,OAAQ,EAAU,OACnB,EAUU,GACX,EACA,EAAS,aACyB,CAClC,IAAM,EAAM,EAAU,EAAO,EAAO,CACpC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAQ,EAAI,KAAK,GACvB,GAAI,CAAC,GAAS,CAAC,EAAM,aAAc,OAAO,KAC1C,IAAM,EAAS,EAA8C,WAAW,GACxE,GAAI,CAAC,GAAS,CAAC,EAAM,aAAc,OAAO,KAC1C,IAAM,EAAU,EAA8C,WAAW,GACzE,GAAI,CAAC,EAAQ,OAAO,KACpB,IAAM,EAAY,EAAW,EAAO,CAEpC,OADI,EAAU,SAAW,EAAU,KAC5B,CACL,YACA,eAAgB,WAAW,KAAK,EAAM,aAAa,CACnD,wBAAyB,WAAW,KAAK,EAAM,aAAa,CAC5D,OAAQ,EAAM,OACf,EAKU,GACX,EACA,EAAS,aAC8B,CACvC,IAAM,EAAM,EAAU,EAAO,EAAO,CACpC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAQ,EAAI,KAAK,GACvB,GAAI,CAAC,GAAS,CAAC,EAAM,aAAc,OAAO,KAC1C,IAAM,EAAa,EAChB,WAAW,GACd,GAAI,CAAC,GAAa,CAAC,EAAU,aAAc,OAAO,KAClD,IAAM,EAAa,EAChB,WAAW,GACd,GAAI,CAAC,GAAa,CAAC,EAAU,aAAc,OAAO,KAClD,IAAM,EAAU,EACb,WAAW,GACd,GAAI,CAAC,EAAQ,OAAO,KACpB,IAAM,EAAY,EAAW,EAAO,CAEpC,OADI,EAAU,SAAW,EAAU,KAC5B,CACL,YACA,eAAgB,WAAW,KAAK,EAAU,aAAa,CACvD,wBAAyB,WAAW,KAAK,EAAU,aAAa,CAChE,OAAQ,EAAM,OACf,EAKU,EACX,GACiB,CACjB,GAAM,CAAE,YAAW,iBAAgB,2BAA4B,EACzD,EAAuB,EAAE,CAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAe,OAAS,EAAG,IAAK,CAClD,IAAM,EAAY,EAAe,IAAM,EACjC,EAAU,EAAe,EAAI,IAAM,EACzC,IAAK,IAAI,EAAI,EAAW,EAAI,EAAS,IAAK,CACxC,IAAM,EAAY,EAAwB,IAAM,EAC1C,EAAU,EAAwB,EAAI,IAAM,EAC5C,EAAmB,EAAE,CAC3B,IAAK,IAAI,EAAI,EAAW,EAAI,EAAS,IAAK,CACxC,IAAM,EAAI,EAAU,EAAI,IAAM,EACxB,EAAI,EAAU,EAAI,EAAI,IAAM,EAClC,EAAK,KAAK,CAAC,EAAG,EAAE,CAAC,CAEf,EAAK,QAAQ,EAAO,KAAK,EAAK,EAGtC,OAAO,GA+BI,GACX,EACA,IAC4B,CAC5B,IAAM,EAA+B,EAAE,CACvC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAO,CAC3C,EAAQ,IAAI,EAAI,EAAI,IAAU,IAAA,KAClC,EAAI,GAAO,GAEb,OAAO"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{BitmapLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglBitmap`,props:{id:{},image:{},bounds:{},loadOptions:{},textureParameters:{},desaturate:{default:0},transparentColor:{},tintColor:{},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,image:u.image,bounds:u.bounds,loadOptions:u.loadOptions,textureParameters:u.textureParameters,desaturate:u.desaturate,transparentColor:u.transparentColor??[0,0,0,0],tintColor:u.tintColor??[255,255,255],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.image,u.bounds,u.desaturate,u.tintColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglBitmap};
2
+ //# sourceMappingURL=bitmap-C04WgKea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitmap-C04WgKea.js","names":[],"sources":["../src/layers/deckgl/bitmap/VLayerDeckglBitmap.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render a single bitmap image at geographic bounds.\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 { BitmapLayer } 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 interface Props {\n id: string;\n image:\n | string\n | HTMLImageElement\n | ImageBitmap\n | HTMLCanvasElement\n | ImageData\n | HTMLVideoElement;\n bounds:\n | [number, number, number, number]\n | [Position, Position, Position, Position];\n loadOptions?: object;\n textureParameters?: object;\n desaturate?: number;\n transparentColor?: Color;\n tintColor?: 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 desaturate: 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 BitmapLayer({\n id: props.id,\n image: props.image,\n bounds: props.bounds,\n loadOptions: props.loadOptions,\n textureParameters: props.textureParameters,\n desaturate: props.desaturate,\n transparentColor: props.transparentColor ?? [0, 0, 0, 0],\n tintColor: props.tintColor ?? [255, 255, 255],\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 BitmapLayer>[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.image,\n props.bounds,\n props.desaturate,\n props.tintColor,\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":"wjBA0CE,IAAM,EAAQ,EAQR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAY,CACrB,GAAI,EAAM,GACV,MAAO,EAAM,MACb,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,kBAAmB,EAAM,kBACzB,WAAY,EAAM,WAClB,iBAAkB,EAAM,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAC,CACvD,UAAW,EAAM,WAAa,CAAC,IAAK,IAAK,IAAG,CAC5C,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,CACQ,CAAA,CAGxD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,MACN,EAAM,OACN,EAAM,WACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{defineComponent as i,markRaw as a,onBeforeUnmount as o,onMounted as s,renderSlot as c,shallowRef as l,toRaw as u,watch as d}from"vue";const f=`pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`,p=i({__name:`VLayerDeckglCOG`,props:{id:{},geotiff:{},tileSize:{default:256},maxZoom:{},minZoom:{default:0},maxCacheSize:{},refinementStrategy:{default:`best-available`},maxRequests:{default:6},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{},debug:{type:Boolean,default:!1},debugOpacity:{default:.25}},emits:[`click`,`hover`,`geotiffLoad`],setup(i,{emit:p}){let m=i,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=l(null),x=l(null),S=()=>{if(!b.value)return null;let e={id:u(m.id),geotiff:u(m.geotiff),opacity:u(m.opacity),visible:u(m.visible),pickable:u(m.pickable),autoHighlight:u(m.autoHighlight),debug:u(m.debug),debugOpacity:u(m.debugOpacity)};return x.value&&(e.epsgResolver=x.value),e.onGeoTIFFLoad=(e,t)=>{h(`geotiffLoad`,e,t)},m.tileSize!==256&&(e.tileSize=u(m.tileSize)),m.maxZoom!==void 0&&(e.maxZoom=u(m.maxZoom)),m.minZoom!==0&&(e.minZoom=u(m.minZoom)),m.maxCacheSize!==void 0&&(e.maxCacheSize=u(m.maxCacheSize)),m.refinementStrategy!==`best-available`&&(e.refinementStrategy=u(m.refinementStrategy)),m.maxRequests!==6&&(e.maxRequests=u(m.maxRequests)),m.highlightColor!==void 0&&(e.highlightColor=u(m.highlightColor)),m.beforeId!==void 0&&(e.beforeId=u(m.beforeId)),a(new b.value(e))},C=async()=>{try{let[e,t]=await Promise.all([n(`@developmentseed/deck.gl-geotiff`,()=>import(`@developmentseed/deck.gl-geotiff`),f),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),f)]);b.value=a(e.COGLayer),x.value=t.epsgResolver;let r=S();r&&_(r)}catch(e){console.error(`[deck.gl-raster] Error loading COGLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-geotiff is installed`)}};return s(()=>{g.value?.isStyleLoaded()?C():g.value?.once(`style.load`,C)}),d(()=>[m.geotiff,m.tileSize,m.maxZoom,m.minZoom,m.opacity,m.visible,m.debug,m.debugOpacity],()=>{let e=S();e&&y(m.id,e)},{deep:!0}),o(()=>{v(m.id)}),(e,t)=>c(e.$slots,`default`)}});export{p as VLayerDeckglCOG};
2
+ //# sourceMappingURL=cog-Cq7xvN9B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cog-Cq7xvN9B.js","names":[],"sources":["../src/layers/deckgl/cog/VLayerDeckglCOG.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Single Cloud-Optimized GeoTIFF (COG) viewer with automatic CRS reprojection.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n * @requires `@developmentseed/deck.gl-geotiff`\n * @requires `@developmentseed/deck.gl-raster`\n * @requires `@developmentseed/geotiff`\n * @requires `@developmentseed/proj`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`\n */\n import {\n onMounted,\n onBeforeUnmount,\n watch,\n shallowRef,\n toRaw,\n markRaw,\n } from 'vue';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n const COG_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj';\n\n interface Props {\n id: string;\n /**\n * GeoTIFF source - URL string, ArrayBuffer, Blob, or geotiff.js instance\n */\n geotiff: string | ArrayBuffer | Blob | object;\n /**\n * Tile size in pixels\n */\n tileSize?: number;\n /**\n * Maximum zoom level\n */\n maxZoom?: number;\n /**\n * Minimum zoom level\n */\n minZoom?: number;\n /**\n * Maximum number of tiles to cache\n */\n maxCacheSize?: number;\n /**\n * Refinement strategy for tile loading\n */\n refinementStrategy?: 'best-available' | 'no-overlap' | 'never';\n /**\n * Maximum concurrent requests\n */\n maxRequests?: number;\n /**\n * Layer opacity (0-1)\n */\n opacity?: number;\n /**\n * Layer visibility\n */\n visible?: boolean;\n /**\n * Enable picking on this layer\n */\n pickable?: boolean;\n /**\n * Auto highlight on hover\n */\n autoHighlight?: boolean;\n /**\n * Highlight color when autoHighlight is enabled\n */\n highlightColor?: Color;\n /**\n * Insert layer before this layer id\n */\n beforeId?: string;\n /**\n * Show debug overlay on tiles\n */\n debug?: boolean;\n /**\n * Opacity of debug overlay (0-1)\n */\n debugOpacity?: number;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n tileSize: 256,\n minZoom: 0,\n refinementStrategy: 'best-available',\n maxRequests: 6,\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n debug: false,\n debugOpacity: 0.25,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n geotiffLoad: [\n tiff: unknown,\n options: {\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n // Store module references\n const COGLayerClass = shallowRef<\n typeof import('@developmentseed/deck.gl-geotiff').COGLayer | null\n >(null);\n const epsgResolverFn = shallowRef<\n typeof import('@developmentseed/proj').epsgResolver | null\n >(null);\n\n const createLayer = () => {\n if (!COGLayerClass.value) return null;\n\n const layerProps: Record<string, unknown> = {\n id: toRaw(props.id),\n geotiff: toRaw(props.geotiff),\n opacity: toRaw(props.opacity),\n visible: toRaw(props.visible),\n pickable: toRaw(props.pickable),\n autoHighlight: toRaw(props.autoHighlight),\n debug: toRaw(props.debug),\n debugOpacity: toRaw(props.debugOpacity),\n };\n\n if (epsgResolverFn.value) {\n layerProps.epsgResolver = epsgResolverFn.value;\n }\n\n layerProps.onGeoTIFFLoad = (\n tiff: unknown,\n options: {\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ) => {\n emit('geotiffLoad', tiff, options);\n };\n\n if (props.tileSize !== 256) layerProps.tileSize = toRaw(props.tileSize);\n if (props.maxZoom !== undefined) layerProps.maxZoom = toRaw(props.maxZoom);\n if (props.minZoom !== 0) layerProps.minZoom = toRaw(props.minZoom);\n if (props.maxCacheSize !== undefined)\n layerProps.maxCacheSize = toRaw(props.maxCacheSize);\n if (props.refinementStrategy !== 'best-available')\n layerProps.refinementStrategy = toRaw(props.refinementStrategy);\n if (props.maxRequests !== 6)\n layerProps.maxRequests = toRaw(props.maxRequests);\n if (props.highlightColor !== undefined)\n layerProps.highlightColor = toRaw(props.highlightColor);\n if (props.beforeId !== undefined)\n layerProps.beforeId = toRaw(props.beforeId);\n\n const layer = new COGLayerClass.value(layerProps);\n return markRaw(layer);\n };\n\n const initializeLayer = async () => {\n try {\n const [geotiffModule, projModule] = await Promise.all([\n requirePeer(\n '@developmentseed/deck.gl-geotiff',\n () => import('@developmentseed/deck.gl-geotiff'),\n COG_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/proj',\n () => import('@developmentseed/proj'),\n COG_PEER_INSTALL,\n ),\n ]);\n\n COGLayerClass.value = markRaw(geotiffModule.COGLayer);\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 COGLayer:', error);\n console.error('Make sure @developmentseed/deck.gl-geotiff is installed');\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.geotiff,\n props.tileSize,\n props.maxZoom,\n props.minZoom,\n props.opacity,\n props.visible,\n props.debug,\n props.debugOpacity,\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":"4MA2BE,MAAM,EACJ,8nBAkEF,IAAM,EAAQ,EAaR,EAAO,EAgBP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAG3D,EAAgB,EAEpB,KAAI,CACA,EAAiB,EAErB,KAAI,CAEA,MAAoB,CACxB,GAAI,CAAC,EAAc,MAAO,OAAO,KAEjC,IAAM,EAAsC,CAC1C,GAAI,EAAM,EAAM,GAAE,CAClB,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,SAAU,EAAM,EAAM,SAAQ,CAC9B,cAAe,EAAM,EAAM,cAAa,CACxC,MAAO,EAAM,EAAM,MAAK,CACxB,aAAc,EAAM,EAAM,aAAY,CACxC,CAmCA,OAjCI,EAAe,QACjB,EAAW,aAAe,EAAe,OAG3C,EAAW,eACT,EACA,IAQG,CACH,EAAK,cAAe,EAAM,EAAO,EAG/B,EAAM,WAAa,MAAK,EAAW,SAAW,EAAM,EAAM,SAAQ,EAClE,EAAM,UAAY,IAAA,KAAW,EAAW,QAAU,EAAM,EAAM,QAAO,EACrE,EAAM,UAAY,IAAG,EAAW,QAAU,EAAM,EAAM,QAAO,EAC7D,EAAM,eAAiB,IAAA,KACzB,EAAW,aAAe,EAAM,EAAM,aAAY,EAChD,EAAM,qBAAuB,mBAC/B,EAAW,mBAAqB,EAAM,EAAM,mBAAkB,EAC5D,EAAM,cAAgB,IACxB,EAAW,YAAc,EAAM,EAAM,YAAW,EAC9C,EAAM,iBAAmB,IAAA,KAC3B,EAAW,eAAiB,EAAM,EAAM,eAAc,EACpD,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAGrC,EAAQ,IADG,EAAc,MAAM,EAClB,CAAA,EAGhB,EAAkB,SAAY,CAClC,GAAI,CACF,GAAM,CAAC,EAAe,GAAc,MAAM,QAAQ,IAAI,CACpD,EACE,uCACM,OAAO,oCACb,EACF,CACA,EACE,4BACM,OAAO,yBACb,EAEJ,CAAC,CAAA,CAED,EAAc,MAAQ,EAAQ,EAAc,SAAQ,CACpD,EAAe,MAAQ,EAAW,aAElC,IAAM,EAAQ,GAAY,CACtB,GACF,EAAS,EAAK,OAET,EAAO,CACd,QAAQ,MAAM,2CAA4C,EAAK,CAC/D,QAAQ,MAAM,0DAAyD,UAI3E,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,QACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,MACN,EAAM,aACR,KACM,CACJ,IAAM,EAAQ,GAAY,CACtB,GACF,EAAY,EAAM,GAAI,EAAK,EAG/B,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ColumnLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglColumn`,props:{id:{},data:{},getPosition:{},getFillColor:{},getLineColor:{},getElevation:{},diskResolution:{default:20},radius:{default:1e3},angle:{default:0},vertices:{},offset:{},coverage:{default:1},elevationScale:{default:1},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!1},extruded:{type:Boolean,default:!0},wireframe:{type:Boolean,default:!1},flatShading:{type:Boolean,default:!1},radiusUnits:{default:`meters`},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,getPosition:u.getPosition,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,diskResolution:u.diskResolution,radius:u.radius,angle:u.angle,vertices:u.vertices,offset:u.offset,coverage:u.coverage,elevationScale:u.elevationScale,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,flatShading:u.flatShading,radiusUnits:u.radiusUnits,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.getPosition,u.getFillColor,u.getElevation,u.radius,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 VLayerDeckglColumn};
2
+ //# sourceMappingURL=column-Dx4A711w.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-Dx4A711w.js","names":[],"sources":["../src/layers/deckgl/column/VLayerDeckglColumn.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Extruded hexagonal / cylindrical columns at point 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 { ColumnLayer } from '@deck.gl/layers';\n import type { ColumnLayerProps } 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 getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n diskResolution?: number;\n radius?: number;\n angle?: number;\n vertices?: Position[];\n offset?: [number, number];\n coverage?: number;\n elevationScale?: number;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n flatShading?: boolean;\n radiusUnits?: 'meters' | 'common' | 'pixels';\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 diskResolution: 20,\n radius: 1000,\n angle: 0,\n coverage: 1,\n elevationScale: 1,\n filled: true,\n stroked: false,\n extruded: true,\n wireframe: false,\n flatShading: false,\n radiusUnits: 'meters',\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 ColumnLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n diskResolution: props.diskResolution,\n radius: props.radius,\n angle: props.angle,\n vertices: props.vertices,\n offset: props.offset,\n coverage: props.coverage,\n elevationScale: props.elevationScale,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n flatShading: props.flatShading,\n radiusUnits: props.radiusUnits,\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 ColumnLayerProps);\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.getFillColor,\n props.getElevation,\n props.radius,\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":"0gCAqDE,IAAM,EAAQ,EAsBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAY,CACrB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,eAAgB,EAAM,eACtB,OAAQ,EAAM,OACd,MAAO,EAAM,MACb,SAAU,EAAM,SAChB,OAAQ,EAAM,OACd,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,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,CAC/B,CAAA,CAGjB,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,aACN,EAAM,aACN,EAAM,OACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ContourLayer as c}from"@deck.gl/aggregation-layers";const l=r({__name:`VLayerDeckglContour`,props:{id:{},data:{},getPosition:{},getWeight:{},cellSize:{default:1e3},contours:{},gpuAggregation:{type:Boolean,default:!1},aggregation:{default:`SUM`},zOffset:{default:.005},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,cellSize:u.cellSize,contours:u.contours,gpuAggregation:u.gpuAggregation,aggregation:u.aggregation,zOffset:u.zOffset,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.cellSize,u.contours,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglContour};
2
+ //# sourceMappingURL=contour-Dgvb_bGm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-Dgvb_bGm.js","names":[],"sources":["../src/layers/deckgl/contour/VLayerDeckglContour.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Generate contour lines or isobands from point aggregations.\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 { ContourLayer } 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 ContourDefinition {\n threshold: number | [number, number];\n color?: Color;\n strokeWidth?: number;\n zIndex?: number;\n }\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 cellSize?: number;\n contours: ContourDefinition[];\n gpuAggregation?: boolean;\n aggregation?: 'SUM' | 'MEAN' | 'MIN' | 'MAX';\n zOffset?: 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 cellSize: 1000,\n gpuAggregation: false,\n aggregation: 'SUM',\n zOffset: 0.005,\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 ContourLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getWeight: props.getWeight ?? 1,\n cellSize: props.cellSize,\n contours: props.contours,\n gpuAggregation: props.gpuAggregation,\n aggregation: props.aggregation,\n zOffset: props.zOffset,\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 ContourLayer>[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.cellSize,\n props.contours,\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":"0nBA4CE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,UAAW,EAAM,WAAa,EAC9B,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,YAAa,EAAM,YACnB,QAAS,EAAM,QACf,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,KACN,EAAM,YACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";const c=r({__name:`VLayerDeckgl`,props:{layer:{}},emits:[`click`,`hover`],setup(r,{emit:c}){let l=r,u=e(n),{addLayer:d,removeLayer:f,updateLayer:p}=t(u),m=e=>e.id,h=()=>{d(l.layer)};return a(()=>{u.value?.isStyleLoaded()?h():u.value?.once(`style.load`,h)}),s(()=>l.layer,(e,t)=>{let n=t?m(t):null,r=m(e);n&&n!==r?(f(n),d(e)):p(r,e)},{deep:!0}),i(()=>{f(m(l.layer))}),(e,t)=>o(e.$slots,`default`)}});export{c as VLayerDeckgl};
2
+ //# sourceMappingURL=generic-BKvcZn9n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-BKvcZn9n.js","names":[],"sources":["../src/layers/deckgl/generic/VLayerDeckgl.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Generic deck.gl layer wrapper — supply your own deck.gl Layer instance via the `layer` prop.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox`\n */\n import { 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\n interface Props {\n layer: unknown;\n }\n\n const props = defineProps<Props>();\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 getLayerId = (layer: unknown): string => {\n return (layer as { id: string }).id;\n };\n\n const initializeLayer = () => {\n addLayer(props.layer);\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.layer,\n (newLayer, oldLayer) => {\n const oldId = oldLayer ? getLayerId(oldLayer) : null;\n const newId = getLayerId(newLayer);\n\n if (oldId && oldId !== newId) {\n removeLayer(oldId);\n addLayer(newLayer);\n } else {\n updateLayer(newId, newLayer);\n }\n },\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(getLayerId(props.layer));\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"yPAmBE,IAAM,EAAQ,EAOR,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAc,GACV,EAAyB,GAG7B,MAAwB,CAC5B,EAAS,EAAM,MAAK,SAGtB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,EAAM,OACX,EAAU,IAAa,CACtB,IAAM,EAAQ,EAAW,EAAW,EAAQ,CAAI,KAC1C,EAAQ,EAAW,EAAQ,CAE7B,GAAS,IAAU,GACrB,EAAY,EAAK,CACjB,EAAS,EAAQ,EAEjB,EAAY,EAAO,EAAQ,EAG/B,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAW,EAAM,MAAM,CAAA,EACpC,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,n as a,o,t as s}from"./arrow-4ecDVUFv.js";import{defineComponent as c,markRaw as l,onBeforeUnmount as u,renderSlot as d,shallowRef as f,watch as p}from"vue";const m=c({__name:`VLayerDeckglGeoArrowPath`,props:{id:{},data:{},getPath:{},getColor:{},getWidth:{},widthUnits:{},widthScale:{},widthMinPixels:{},widthMaxPixels:{},jointRounded:{type:Boolean,default:!1},capRounded:{type:Boolean,default:!1},miterLimit:{},billboard:{type:Boolean,default:!1},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(c,{emit:m}){let h=c,g=m,_=e(r),{addLayer:v,removeLayer:y,updateLayer:b}=t(_),x=f(null),S=new Set([`id`,`data`,`getPath`]),C=()=>{if(!x.value||!h.data)return null;let e=s(h.data)??a(h.data);if(!e)return console.error(`[VLayerDeckglGeoArrowPath] no GeoArrow linestring / multilinestring column found in data`),null;try{return l(new x.value({...o(h,S),id:h.id,data:{length:e.length,startIndices:e.startIndices,attributes:{getPath:{value:e.positions,size:3}}},_pathType:`open`,onClick:e=>g(`click`,e),onHover:e=>g(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowPath] failed to construct layer:`,e),null}};return i(_,async()=>{x.value=l((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).PathLayer)}),p(x,e=>{if(!e||!h.data)return;let t=C();t&&v(t)}),p(()=>h.data,()=>{if(!x.value||!h.data)return;let e=C();e&&b(h.id,e)}),p(()=>[h.getColor,h.getWidth,h.widthUnits,h.widthScale,h.widthMinPixels,h.widthMaxPixels,h.jointRounded,h.capRounded,h.miterLimit,h.opacity,h.visible,h.pickable],()=>{if(!x.value||!h.data)return;let e=C();e&&b(h.id,e)}),u(()=>{y(h.id)}),(e,t)=>d(e.$slots,`default`)}});export{m as VLayerDeckglGeoArrowPath};
2
+ //# sourceMappingURL=geoarrow-path-B2LJ956d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-path-B2LJ956d.js","names":[],"sources":["../src/layers/deckgl/geoarrow-path/VLayerDeckglGeoArrowPath.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render polylines from an Apache Arrow `Table` or `RecordBatch` containing\n * GeoArrow line geometries (extension type `geoarrow.linestring` or\n * `geoarrow.multilinestring`).\n *\n * Wraps deck.gl's stock `PathLayer`. The wrapper extracts vertex offsets\n * directly from the Arrow column — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractLineStrings,\n extractMultiLineStrings,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const PATH_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPath?: unknown;\n getColor?: unknown;\n getWidth?: unknown;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n jointRounded?: boolean;\n capRounded?: boolean;\n miterLimit?: number;\n billboard?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n jointRounded: false,\n capRounded: false,\n billboard: 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 LayerClass = shallowRef<\n typeof import('@deck.gl/layers').PathLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data', 'getPath']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const extracted =\n extractLineStrings(props.data) ?? extractMultiLineStrings(props.data);\n if (!extracted) {\n console.error(\n '[VLayerDeckglGeoArrowPath] no GeoArrow linestring / multilinestring column found in data',\n );\n return null;\n }\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: {\n length: extracted.length,\n startIndices: extracted.startIndices,\n attributes: {\n getPath: { value: extracted.positions, size: 3 },\n },\n },\n _pathType: 'open',\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowPath] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n PATH_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.PathLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getColor,\n props.getWidth,\n props.widthUnits,\n props.widthScale,\n props.widthMinPixels,\n props.widthMaxPixels,\n props.jointRounded,\n props.capRounded,\n props.miterLimit,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"0OA8BE,kdAwBA,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAQ,UAAU,CAAA,CAE3C,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EACJ,EAAmB,EAAM,KAAI,EAAK,EAAwB,EAAM,KAAI,CACtE,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,2FACF,CACO,KAET,GAAI,CAeF,OAAO,EAAQ,IAdG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,aAAc,EAAU,aACxB,WAAY,CACV,QAAS,CAAE,MAAO,EAAU,UAAW,KAAM,EAAE,CACjD,CACF,CACA,UAAW,OACX,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,wDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,UAAS,EAGV,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,SACN,EAAM,SACN,EAAM,WACN,EAAM,WACN,EAAM,eACN,EAAM,eACN,EAAM,aACN,EAAM,WACN,EAAM,WACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-4ecDVUFv.js";import{defineComponent as l,markRaw as u,onBeforeUnmount as d,renderSlot as f,shallowRef as p,watch as m}from"vue";const h=l({__name:`VLayerDeckglGeoArrowPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getLineWidth:{},getElevation:{},lineWidthUnits:{},lineWidthScale:{},lineWidthMinPixels:{},lineWidthMaxPixels:{},stroked:{type:Boolean,default:!0},filled:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{},earcutWorkerUrl:{},_normalize:{type:Boolean},wrapLongitude:{type:Boolean}},emits:[`click`,`hover`],setup(l,{emit:h}){let g=l,_=h,v=e(r),{addLayer:y,removeLayer:b,updateLayer:x}=t(v),S=p(null),C=new Set([`id`,`data`,`getPolygon`,`earcutWorkerUrl`,`_normalize`]),w=()=>{if(!S.value||!g.data)return null;let e=s(g.data),t=e?null:i(g.data),n=e??t;if(!n)return console.error(`[VLayerDeckglGeoArrowPolygon] no GeoArrow polygon / multipolygon column found in data`),null;let r=c(n);try{return u(new S.value({...o(g,C),id:g.id,data:r,getPolygon:e=>e,onClick:e=>_(`click`,e),onHover:e=>_(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowPolygon] failed to construct layer:`,e),null}};return a(v,async()=>{S.value=u((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).PolygonLayer)}),m(S,e=>{if(!e||!g.data)return;let t=w();t&&y(t)}),m(()=>g.data,()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),m(()=>[g.extruded,g.getElevation,g.elevationScale,g.opacity,g.stroked,g.filled,g.wireframe,g.getFillColor,g.getLineColor,g.getLineWidth,g.lineWidthMinPixels,g.lineWidthMaxPixels,g.lineWidthScale,g.visible,g.pickable],()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),d(()=>{b(g.id)}),(e,t)=>f(e.$slots,`default`)}});export{h as VLayerDeckglGeoArrowPolygon};
2
+ //# sourceMappingURL=geoarrow-polygon-C9mZ7552.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-polygon-C9mZ7552.js","names":[],"sources":["../src/layers/deckgl/geoarrow-polygon/VLayerDeckglGeoArrowPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render filled polygons with optional stroke from an Apache Arrow `Table`\n * or `RecordBatch` containing GeoArrow polygon geometries (extension type\n * `geoarrow.polygon` or `geoarrow.multipolygon`).\n *\n * Wraps deck.gl's stock `PolygonLayer` (composite of `SolidPolygonLayer` +\n * `PathLayer`). The wrapper flattens multi-polygons into per-ring arrays\n * extracted from the Arrow column — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractPolygons,\n extractMultiPolygons,\n polygonsToRingArrays,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const POLYGON_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPolygon?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getLineWidth?: unknown;\n getElevation?: unknown;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n stroked?: boolean;\n filled?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n earcutWorkerUrl?: string | URL | null;\n /** Normalize polygons that cross the antimeridian. Default: true. */\n _normalize?: boolean;\n /** Wrap polygons across the antimeridian. Default: true. */\n wrapLongitude?: boolean;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n // _normalize default left undefined — GeoArrow native data is already\n // normalized; setting true causes deck.gl to re-normalize Struct-based\n // coords and produces stretched polygons.\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 LayerClass = shallowRef<\n typeof import('@deck.gl/layers').PolygonLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPolygon',\n 'earcutWorkerUrl',\n '_normalize',\n ]);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const multi = extractMultiPolygons(props.data);\n const single = multi ? null : extractPolygons(props.data);\n const geom = multi ?? single;\n if (!geom) {\n console.error(\n '[VLayerDeckglGeoArrowPolygon] no GeoArrow polygon / multipolygon column found in data',\n );\n return null;\n }\n const rings = polygonsToRingArrays(geom);\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: rings,\n getPolygon: (ring: number[][]) => ring,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowPolygon] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n POLYGON_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.PolygonLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n // Reactive props that should rebuild the layer when changed (extruded toggle,\n // elevation slider, opacity slider, etc.). deck.gl Layer instances are\n // immutable — we have to recreate the layer on any reactive change.\n watch(\n () => [\n props.extruded,\n props.getElevation,\n props.elevationScale,\n props.opacity,\n props.stroked,\n props.filled,\n props.wireframe,\n props.getFillColor,\n props.getLineColor,\n props.getLineWidth,\n props.lineWidthMinPixels,\n props.lineWidthMaxPixels,\n props.lineWidthScale,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"iPAgCE,wnBAgCA,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,aACA,kBACA,aACD,CAAA,CAEK,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAqB,EAAM,KAAI,CACvC,EAAS,EAAQ,KAAO,EAAgB,EAAM,KAAI,CAClD,EAAO,GAAS,EACtB,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,wFACF,CACO,KAET,IAAM,EAAQ,EAAqB,EAAI,CACvC,GAAI,CASF,OAAO,EAAQ,IARG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,EACN,WAAa,GAAqB,EAClC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,2DACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,aAAY,EAGb,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAKA,MACQ,CACJ,EAAM,SACN,EAAM,aACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,OACN,EAAM,UACN,EAAM,aACN,EAAM,aACN,EAAM,aACN,EAAM,mBACN,EAAM,mBACN,EAAM,eACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,i as a,o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowScatterplot`,props:{id:{},data:{},getPosition:{},getRadius:{},getFillColor:{},getLineColor:{},getLineWidth:{},radiusUnits:{},radiusScale:{},radiusMinPixels:{},radiusMaxPixels:{},lineWidthUnits:{},lineWidthScale:{},lineWidthMinPixels:{},lineWidthMaxPixels:{},stroked:{type:Boolean,default:!1},filled:{type:Boolean,default:!0},billboard:{type:Boolean,default:!1},antialiasing:{type:Boolean,default:!0},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`]),S=()=>{if(!b.value||!m.data)return null;let e=a(m.data);if(!e)return console.error(`[VLayerDeckglGeoArrowScatterplot] no GeoArrow point geometry column found in data`),null;try{return c(new b.value({...o(m,x),id:m.id,data:{length:e.length,attributes:{getPosition:{value:e.positions,size:3}}},onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowScatterplot] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).ScatterplotLayer)}),f(b,e=>{if(!e||!m.data)return;let t=S();t&&_(t)}),f(()=>m.data,()=>{if(!b.value||!m.data)return;let e=S();e&&y(m.id,e)}),f(()=>[m.getFillColor,m.getLineColor,m.getRadius,m.getLineWidth,m.radiusUnits,m.radiusScale,m.radiusMinPixels,m.radiusMaxPixels,m.lineWidthUnits,m.lineWidthScale,m.stroked,m.filled,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=S();e&&y(m.id,e)}),l(()=>{v(m.id)}),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowScatterplot};
2
+ //# sourceMappingURL=geoarrow-scatterplot-CM5842q_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-scatterplot-CM5842q_.js","names":[],"sources":["../src/layers/deckgl/geoarrow-scatterplot/VLayerDeckglGeoArrowScatterplot.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render circles at coordinate positions from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow point geometries (extension type\n * `geoarrow.point` or `geoarrow.multipoint`).\n *\n * Wraps deck.gl's stock `ScatterplotLayer`. The wrapper reads the GeoArrow\n * geometry column directly from the Arrow Table and feeds a flat\n * `Float64Array` of XYZ positions to the GPU — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractPoints, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const SCATTERPLOT_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPosition?: unknown;\n getRadius?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getLineWidth?: unknown;\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 beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\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 LayerClass = shallowRef<\n typeof import('@deck.gl/layers').ScatterplotLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const extracted = extractPoints(props.data);\n if (!extracted) {\n console.error(\n '[VLayerDeckglGeoArrowScatterplot] no GeoArrow point geometry column found in data',\n );\n return null;\n }\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: {\n length: extracted.length,\n attributes: {\n getPosition: { value: extracted.positions, size: 3 },\n },\n },\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowScatterplot] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n SCATTERPLOT_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.ScatterplotLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getFillColor,\n props.getLineColor,\n props.getRadius,\n props.getLineWidth,\n props.radiusUnits,\n props.radiusScale,\n props.radiusMinPixels,\n props.radiusMaxPixels,\n props.lineWidthUnits,\n props.lineWidthScale,\n props.stroked,\n props.filled,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"mOA2BE,smBA8BA,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAO,CAAA,CAEhC,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAY,EAAc,EAAM,KAAI,CAC1C,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,oFACF,CACO,KAET,GAAI,CAaF,OAAO,EAAQ,IAZG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,WAAY,CACV,YAAa,CAAE,MAAO,EAAU,UAAW,KAAM,EAAE,CACrD,CACF,CACA,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,+DACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,iBAAgB,EAGjB,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,aACN,EAAM,aACN,EAAM,UACN,EAAM,aACN,EAAM,YACN,EAAM,YACN,EAAM,gBACN,EAAM,gBACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,OACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-4ecDVUFv.js";import{defineComponent as l,markRaw as u,onBeforeUnmount as d,renderSlot as f,shallowRef as p,watch as m}from"vue";const h=l({__name:`VLayerDeckglGeoArrowSolidPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getElevation:{},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},filled:{type:Boolean,default:!0},elevationScale:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},metrics:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(l,{emit:h}){let g=l,_=h,v=e(r),{addLayer:y,removeLayer:b,updateLayer:x}=t(v),S=p(null),C=new Set([`id`,`data`,`getPolygon`]),w=()=>{if(!S.value||!g.data)return null;let e=s(g.data),t=e?null:i(g.data),n=e??t;if(!n)return console.error(`[VLayerDeckglGeoArrowSolidPolygon] no GeoArrow polygon / multipolygon column found in data`),null;let r=c(n);try{return u(new S.value({...o(g,C),id:g.id,data:r,getPolygon:e=>e,onClick:e=>_(`click`,e),onHover:e=>_(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowSolidPolygon] failed to construct layer:`,e),null}};return a(v,async()=>{S.value=u((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).SolidPolygonLayer)}),m(S,e=>{if(!e||!g.data)return;let t=w();t&&y(t)}),m(()=>g.data,()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),m(()=>[g.getFillColor,g.getLineColor,g.getElevation,g.extruded,g.wireframe,g.filled,g.elevationScale,g.opacity,g.visible,g.pickable],()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),d(()=>{b(g.id)}),(e,t)=>f(e.$slots,`default`)}});export{h as VLayerDeckglGeoArrowSolidPolygon};
2
+ //# sourceMappingURL=geoarrow-solid-polygon-DIm9mciL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-solid-polygon-DIm9mciL.js","names":[],"sources":["../src/layers/deckgl/geoarrow-solid-polygon/VLayerDeckglGeoArrowSolidPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render extruded (3D) polygons from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow polygon geometries (extension type\n * `geoarrow.polygon` or `geoarrow.multipolygon`).\n *\n * Wraps deck.gl's stock `SolidPolygonLayer`. The wrapper flattens\n * multi-polygons into per-ring arrays extracted from the Arrow column — no\n * GeoJSON parse pass, no `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractPolygons,\n extractMultiPolygons,\n polygonsToRingArrays,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const SOLID_POLYGON_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPolygon?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getElevation?: unknown;\n extruded?: boolean;\n wireframe?: boolean;\n filled?: boolean;\n elevationScale?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n metrics?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n extruded: false,\n wireframe: false,\n filled: true,\n metrics: 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 LayerClass = shallowRef<\n typeof import('@deck.gl/layers').SolidPolygonLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data', 'getPolygon']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const multi = extractMultiPolygons(props.data);\n const single = multi ? null : extractPolygons(props.data);\n const geom = multi ?? single;\n if (!geom) {\n console.error(\n '[VLayerDeckglGeoArrowSolidPolygon] no GeoArrow polygon / multipolygon column found in data',\n );\n return null;\n }\n const rings = polygonsToRingArrays(geom);\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: rings,\n getPolygon: (ring: number[][]) => ring,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowSolidPolygon] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n SOLID_POLYGON_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.SolidPolygonLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getFillColor,\n props.getLineColor,\n props.getElevation,\n props.extruded,\n props.wireframe,\n props.filled,\n props.elevationScale,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"iPA+BE,mdAsBA,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAQ,aAAa,CAAA,CAE9C,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAqB,EAAM,KAAI,CACvC,EAAS,EAAQ,KAAO,EAAgB,EAAM,KAAI,CAClD,EAAO,GAAS,EACtB,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,6FACF,CACO,KAET,IAAM,EAAQ,EAAqB,EAAI,CACvC,GAAI,CASF,OAAO,EAAQ,IARG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,EACN,WAAa,GAAqB,EAClC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,gEACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,kBAAiB,EAGlB,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,aACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,UACN,EAAM,OACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,i as a,o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowText`,props:{id:{},data:{},textColumn:{},getPosition:{},getText:{},getColor:{},getSize:{},getAngle:{},getTextAnchor:{},getAlignmentBaseline:{},sizeUnits:{},sizeScale:{},sizeMinPixels:{},sizeMaxPixels:{},billboard:{type:Boolean,default:!0},fontFamily:{},fontWeight:{},characterSet:{},background:{type:Boolean,default:!1},backgroundPadding:{},getBackgroundColor:{},getBorderColor:{},getBorderWidth:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`,`getPosition`,`getText`,`textColumn`]),S=(e,t)=>{let n=a(e);if(!n)return null;let r=e.getChild(t),i=[];if(r){let e=r.toArray?.();if(e)for(let t=0;t<n.length;t++)i.push(String(e[t]??``));else if(r.get)for(let e=0;e<n.length;e++)i.push(String(r.get(e)??``))}let o=[];for(let e=0;e<n.length;e++)o.push({position:[n.positions[e*3]??0,n.positions[e*3+1]??0],label:i[e]??``});return o},C=()=>{if(!b.value||!m.data)return null;let e=S(m.data,m.textColumn??`name`);if(!e)return console.error(`[VLayerDeckglGeoArrowText] no GeoArrow point geometry column found in data`),null;try{return c(new b.value({...o(m,x),id:m.id,data:e,getPosition:e=>e.position,getText:e=>e.label,onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowText] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).TextLayer)}),f(b,e=>{if(!e||!m.data)return;let t=C();t&&_(t)}),f(()=>m.data,()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),f(()=>[m.getText,m.getPosition,m.getColor,m.getSize,m.getAngle,m.getTextAnchor,m.getAlignmentBaseline,m.sizeUnits,m.sizeScale,m.sizeMinPixels,m.sizeMaxPixels,m.billboard,m.fontFamily,m.fontWeight,m.background,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),l(()=>v(m.id)),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowText};
2
+ //# sourceMappingURL=geoarrow-text-ClY3q_nR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-text-ClY3q_nR.js","names":[],"sources":["../src/layers/deckgl/geoarrow-text/VLayerDeckglGeoArrowText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render text labels at point positions from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow point geometries (extension type\n * `geoarrow.point` or `geoarrow.multipoint`).\n *\n * Wraps deck.gl's stock `TextLayer`. The wrapper extracts XY positions plus\n * a per-row label string from the configured `textColumn` (default `name`).\n * No `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractPoints, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const TEXT_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n textColumn?: string;\n getPosition?: unknown;\n getText?: unknown;\n getColor?: unknown;\n getSize?: unknown;\n getAngle?: unknown;\n getTextAnchor?: unknown;\n getAlignmentBaseline?: unknown;\n sizeUnits?: 'meters' | 'common' | 'pixels';\n sizeScale?: number;\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n billboard?: boolean;\n fontFamily?: string;\n fontWeight?: number | string;\n characterSet?: 'auto' | string[] | Set<string>;\n background?: boolean;\n backgroundPadding?: [number, number] | [number, number, number, number];\n getBackgroundColor?: unknown;\n getBorderColor?: unknown;\n getBorderWidth?: unknown;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n billboard: true,\n background: 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 LayerClass = shallowRef<\n typeof import('@deck.gl/layers').TextLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPosition',\n 'getText',\n 'textColumn',\n ]);\n\n type ItemWithLabel = { position: [number, number]; label: string };\n\n const buildItems = (\n table: ArrowTableLike,\n textColumn: string,\n ): ItemWithLabel[] | null => {\n const extracted = extractPoints(table);\n if (!extracted) return null;\n const labelColumn = (\n table as unknown as {\n getChild: (\n k: string,\n ) => { toArray?: () => unknown[]; get?: (i: number) => unknown } | null;\n }\n ).getChild(textColumn);\n const labels: string[] = [];\n if (labelColumn) {\n const arr = labelColumn.toArray?.();\n if (arr) {\n for (let i = 0; i < extracted.length; i++) {\n labels.push(String(arr[i] ?? ''));\n }\n } else if (labelColumn.get) {\n for (let i = 0; i < extracted.length; i++) {\n labels.push(String(labelColumn.get(i) ?? ''));\n }\n }\n }\n const items: ItemWithLabel[] = [];\n for (let i = 0; i < extracted.length; i++) {\n items.push({\n position: [\n extracted.positions[i * 3] ?? 0,\n extracted.positions[i * 3 + 1] ?? 0,\n ],\n label: labels[i] ?? '',\n });\n }\n return items;\n };\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const items = buildItems(props.data, props.textColumn ?? 'name');\n if (!items) {\n console.error(\n '[VLayerDeckglGeoArrowText] no GeoArrow point geometry column found in data',\n );\n return null;\n }\n try {\n return markRaw(\n new LayerClass.value({\n ...filterDefined(\n props as unknown as Record<string, unknown>,\n EXCLUDE,\n ),\n id: props.id,\n data: items,\n getPosition: (d: ItemWithLabel) => d.position,\n getText: (d: ItemWithLabel) => d.label,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n }),\n );\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowText] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n TEXT_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.TextLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getText,\n props.getPosition,\n props.getColor,\n props.getSize,\n props.getAngle,\n props.getTextAnchor,\n props.getAlignmentBaseline,\n props.sizeUnits,\n props.sizeScale,\n props.sizeMinPixels,\n props.sizeMaxPixels,\n props.billboard,\n props.fontFamily,\n props.fontWeight,\n props.background,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => removeLayer(props.id));\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"mOA0BE,qmBAkCA,IAAM,EAAQ,EAQR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,cACA,UACA,aACD,CAAA,CAIK,GACJ,EACA,IAC2B,CAC3B,IAAM,EAAY,EAAc,EAAK,CACrC,GAAI,CAAC,EAAW,OAAO,KACvB,IAAM,EACJ,EAKA,SAAS,EAAU,CACf,EAAmB,EAAC,CAC1B,GAAI,EAAa,CACf,IAAM,EAAM,EAAY,WAAU,CAClC,GAAI,EACF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAO,KAAK,OAAO,EAAI,IAAM,GAAG,CAAA,MAE7B,GAAI,EAAY,IACrB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAO,KAAK,OAAO,EAAY,IAAI,EAAC,EAAK,GAAG,CAAA,CAIlD,IAAM,EAAyB,EAAC,CAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAM,KAAK,CACT,SAAU,CACR,EAAU,UAAU,EAAI,IAAM,EAC9B,EAAU,UAAU,EAAI,EAAI,IAAM,EACpC,CACA,MAAO,EAAO,IAAM,GACrB,CAAA,CAEH,OAAO,GAGH,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAW,EAAM,KAAM,EAAM,YAAc,OAAM,CAC/D,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,6EACF,CACO,KAET,GAAI,CACF,OAAO,EACL,IAAI,EAAW,MAAM,CACnB,GAAG,EACD,EACA,EACF,CACA,GAAI,EAAM,GACV,KAAM,EACN,YAAc,GAAqB,EAAE,SACrC,QAAU,GAAqB,EAAE,MACjC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACH,CAAA,OACO,EAAK,CAKZ,OAJA,QAAQ,MACN,wDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,UAAS,EAGV,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,QACN,EAAM,YACN,EAAM,SACN,EAAM,QACN,EAAM,SACN,EAAM,cACN,EAAM,qBACN,EAAM,UACN,EAAM,UACN,EAAM,cACN,EAAM,cACN,EAAM,UACN,EAAM,WACN,EAAM,WACN,EAAM,WACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,EAAY,EAAM,GAAG,CAAA,QAI3C,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,o as a,t as o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowTrips`,props:{id:{},data:{},timestampsColumn:{},getPath:{},getTimestamps:{},getColor:{},getWidth:{},widthUnits:{},widthScale:{},widthMinPixels:{},widthMaxPixels:{},jointRounded:{type:Boolean,default:!1},capRounded:{type:Boolean,default:!1},miterLimit:{},billboard:{type:Boolean,default:!1},currentTime:{default:0},trailLength:{default:180},fadeTrail:{type:Boolean,default:!0},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`,`getPath`,`getTimestamps`,`timestampsColumn`]),S=(e,t)=>{let n=o(e);if(!n)return null;let r=e.getChild(t)?.data[0],i=r?.valueOffsets,a=r?.values,s=[];for(let e=0;e<n.length;e++){let t=n.startIndices[e]??0,r=n.startIndices[e+1]??0,o=[];for(let e=t;e<r;e++)o.push([n.positions[e*3]??0,n.positions[e*3+1]??0]);let c=[];if(i&&a){let t=i[e]??0,n=i[e+1]??0;for(let e=t;e<n;e++)c.push(Number(a[e]??0))}s.push({path:o,timestamps:c})}return s},C=()=>{if(!b.value||!m.data)return null;let e=S(m.data,m.timestampsColumn??`timestamps`);if(!e)return console.error(`[VLayerDeckglGeoArrowTrips] no GeoArrow linestring column found in data`),null;try{return c(new b.value({...a(m,x),id:m.id,data:e,getPath:e=>e.path,getTimestamps:e=>e.timestamps,onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowTrips] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/geo-layers`,()=>import(`@deck.gl/geo-layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow`)).TripsLayer)}),f(b,e=>{if(!e||!m.data)return;let t=C();t&&_(t)}),f(()=>[m.data,m.currentTime,m.trailLength,m.fadeTrail,m.getPath,m.getTimestamps,m.getColor,m.getWidth,m.widthUnits,m.widthScale,m.widthMinPixels,m.widthMaxPixels,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),l(()=>v(m.id)),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowTrips};
2
+ //# sourceMappingURL=geoarrow-trips-BqbIoMt8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geoarrow-trips-BqbIoMt8.js","names":[],"sources":["../src/layers/deckgl/geoarrow-trips/VLayerDeckglGeoArrowTrips.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render animated trips from an Apache Arrow `Table` or `RecordBatch`\n * containing GeoArrow linestring geometries (extension type\n * `geoarrow.linestring` or `geoarrow.multilinestring`) with per-vertex\n * timestamps in a parallel `List<float64>` column (default name\n * `timestamps`, overridable via the `timestampsColumn` prop).\n *\n * Wraps deck.gl's stock `TripsLayer` from `@deck.gl/geo-layers`. No\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/geo-layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractLineStrings, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const TRIPS_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n timestampsColumn?: string;\n getPath?: unknown;\n getTimestamps?: unknown;\n getColor?: unknown;\n getWidth?: unknown;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n jointRounded?: boolean;\n capRounded?: boolean;\n miterLimit?: number;\n billboard?: boolean;\n currentTime?: number;\n trailLength?: number;\n fadeTrail?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n jointRounded: false,\n capRounded: false,\n billboard: false,\n fadeTrail: true,\n trailLength: 180,\n currentTime: 0,\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 LayerClass = shallowRef<\n typeof import('@deck.gl/geo-layers').TripsLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPath',\n 'getTimestamps',\n 'timestampsColumn',\n ]);\n\n type Trip = { path: number[][]; timestamps: number[] };\n\n const buildTrips = (\n table: ArrowTableLike,\n timestampsColumn: string,\n ): Trip[] | null => {\n const extracted = extractLineStrings(table);\n if (!extracted) return null;\n const tsListColumn = (\n table as unknown as {\n getChild: (k: string) => {\n data: { valueOffsets?: Int32Array; values?: ArrayLike<number> }[];\n } | null;\n }\n ).getChild(timestampsColumn);\n const tsList = tsListColumn?.data[0];\n const tsOffsets = tsList?.valueOffsets;\n const tsValues = tsList?.values;\n const trips: Trip[] = [];\n for (let i = 0; i < extracted.length; i++) {\n const start = extracted.startIndices[i] ?? 0;\n const end = extracted.startIndices[i + 1] ?? 0;\n const path: number[][] = [];\n for (let v = start; v < end; v++) {\n path.push([\n extracted.positions[v * 3] ?? 0,\n extracted.positions[v * 3 + 1] ?? 0,\n ]);\n }\n const timestamps: number[] = [];\n if (tsOffsets && tsValues) {\n const tStart = tsOffsets[i] ?? 0;\n const tEnd = tsOffsets[i + 1] ?? 0;\n for (let t = tStart; t < tEnd; t++) {\n timestamps.push(Number(tsValues[t] ?? 0));\n }\n }\n trips.push({ path, timestamps });\n }\n return trips;\n };\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const trips = buildTrips(\n props.data,\n props.timestampsColumn ?? 'timestamps',\n );\n if (!trips) {\n console.error(\n '[VLayerDeckglGeoArrowTrips] no GeoArrow linestring column found in data',\n );\n return null;\n }\n try {\n return markRaw(\n new LayerClass.value({\n ...filterDefined(\n props as unknown as Record<string, unknown>,\n EXCLUDE,\n ),\n id: props.id,\n data: trips,\n getPath: (d: Trip) => d.path,\n getTimestamps: (d: Trip) => d.timestamps,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n }),\n );\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowTrips] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/geo-layers',\n () => import('@deck.gl/geo-layers'),\n TRIPS_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.TripsLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => [\n props.data,\n props.currentTime,\n props.trailLength,\n props.fadeTrail,\n props.getPath,\n props.getTimestamps,\n props.getColor,\n props.getWidth,\n props.widthUnits,\n props.widthScale,\n props.widthMinPixels,\n props.widthMaxPixels,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => removeLayer(props.id));\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"wOA4BE,8kBA6BA,IAAM,EAAQ,EAYR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,UACA,gBACA,mBACD,CAAA,CAIK,GACJ,EACA,IACkB,CAClB,IAAM,EAAY,EAAmB,EAAK,CAC1C,GAAI,CAAC,EAAW,OAAO,KAQvB,IAAM,EANJ,EAKA,SAAS,EACI,EAAc,KAAK,GAC5B,EAAY,GAAQ,aACpB,EAAW,GAAQ,OACnB,EAAgB,EAAC,CACvB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CACzC,IAAM,EAAQ,EAAU,aAAa,IAAM,EACrC,EAAM,EAAU,aAAa,EAAI,IAAM,EACvC,EAAmB,EAAC,CAC1B,IAAK,IAAI,EAAI,EAAO,EAAI,EAAK,IAC3B,EAAK,KAAK,CACR,EAAU,UAAU,EAAI,IAAM,EAC9B,EAAU,UAAU,EAAI,EAAI,IAAM,EACnC,CAAA,CAEH,IAAM,EAAuB,EAAC,CAC9B,GAAI,GAAa,EAAU,CACzB,IAAM,EAAS,EAAU,IAAM,EACzB,EAAO,EAAU,EAAI,IAAM,EACjC,IAAK,IAAI,EAAI,EAAQ,EAAI,EAAM,IAC7B,EAAW,KAAK,OAAO,EAAS,IAAM,EAAE,CAAA,CAG5C,EAAM,KAAK,CAAE,OAAM,aAAY,CAAA,CAEjC,OAAO,GAGH,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EACZ,EAAM,KACN,EAAM,kBAAoB,aAC5B,CACA,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,0EACF,CACO,KAET,GAAI,CACF,OAAO,EACL,IAAI,EAAW,MAAM,CACnB,GAAG,EACD,EACA,EACF,CACA,GAAI,EAAM,GACV,KAAM,EACN,QAAU,GAAY,EAAE,KACxB,cAAgB,GAAY,EAAE,WAC9B,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACH,CAAA,OACO,EAAK,CAKZ,OAJA,QAAQ,MACN,yDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,0BACM,OAAO,uBACb,0FACF,EAC+B,WAAU,EAGX,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,YACN,EAAM,UACN,EAAM,QACN,EAAM,cACN,EAAM,SACN,EAAM,SACN,EAAM,WACN,EAAM,WACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,EAAY,EAAM,GAAG,CAAA,QAI3C,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{GeohashLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglGeohash`,props:{id:{},data:{},getGeohash:{},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,getGeohash:u.getGeohash,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.getGeohash,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 VLayerDeckglGeohash};
2
+ //# sourceMappingURL=geohash-Pq83atW2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geohash-Pq83atW2.js","names":[],"sources":["../src/layers/deckgl/geohash/VLayerDeckglGeohash.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render Geohash 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 { GeohashLayer } from '@deck.gl/geo-layers';\n import type { GeohashLayerProps } 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 getGeohash: 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 GeohashLayer({\n id: props.id,\n data: props.data,\n getGeohash: props.getGeohash,\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 GeohashLayerProps);\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.getGeohash,\n props.getFillColor,\n props.getElevation,\n props.extruded,\n props.elevationScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"41BA6CE,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,WAAY,EAAM,WAClB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC9B,CAAA,CAGlB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{GeoJsonLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglGeojson`,props:{id:{},data:{},getFillColor:{},getLineColor:{},getLineWidth:{},getPointRadius:{},getElevation:{},getText:{},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},pointType:{default:`circle`},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},lineJointRounded:{type:Boolean,default:!1},lineCapRounded:{type:Boolean,default:!1},lineMiterLimit:{default:4},pointRadiusUnits:{default:`meters`},pointRadiusScale:{default:1},pointRadiusMinPixels:{default:0},pointRadiusMaxPixels:{default:2**53-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,getFillColor:u.getFillColor??[200,200,200,200],getLineColor:u.getLineColor??[0,0,0,255],getLineWidth:u.getLineWidth??1,getPointRadius:u.getPointRadius??1,getElevation:u.getElevation??1e3,getText:u.getText,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,pointType:u.pointType,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,lineJointRounded:u.lineJointRounded,lineCapRounded:u.lineCapRounded,lineMiterLimit:u.lineMiterLimit,pointRadiusUnits:u.pointRadiusUnits,pointRadiusScale:u.pointRadiusScale,pointRadiusMinPixels:u.pointRadiusMinPixels,pointRadiusMaxPixels:u.pointRadiusMaxPixels,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.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 VLayerDeckglGeojson};
2
+ //# sourceMappingURL=geojson-cOxJcO-8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geojson-cOxJcO-8.js","names":[],"sources":["../src/layers/deckgl/geojson/VLayerDeckglGeojson.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render GeoJSON FeatureCollections as deck.gl points/lines/polygons.\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 { GeoJsonLayer } from '@deck.gl/layers';\n import type { PickingInfo } 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 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 getText?: Accessor<D, string>;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n pointType?: string;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n lineJointRounded?: boolean;\n lineCapRounded?: boolean;\n lineMiterLimit?: number;\n pointRadiusUnits?: 'meters' | 'common' | 'pixels';\n pointRadiusScale?: number;\n pointRadiusMinPixels?: number;\n pointRadiusMaxPixels?: number;\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 stroked: true,\n extruded: false,\n wireframe: false,\n pointType: 'circle',\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineCapRounded: false,\n lineMiterLimit: 4,\n pointRadiusUnits: 'meters',\n pointRadiusScale: 1,\n pointRadiusMinPixels: 0,\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\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 GeoJsonLayer({\n id: props.id,\n data: props.data,\n getFillColor: props.getFillColor ?? [200, 200, 200, 200],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getLineWidth: props.getLineWidth ?? 1,\n getPointRadius: props.getPointRadius ?? 1,\n getElevation: props.getElevation ?? 1000,\n getText: props.getText,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n pointType: props.pointType,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n lineJointRounded: props.lineJointRounded,\n lineCapRounded: props.lineCapRounded,\n lineMiterLimit: props.lineMiterLimit,\n pointRadiusUnits: props.pointRadiusUnits,\n pointRadiusScale: props.pointRadiusScale,\n pointRadiusMinPixels: props.pointRadiusMinPixels,\n pointRadiusMaxPixels: props.pointRadiusMaxPixels,\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 unknown as ConstructorParameters<typeof GeoJsonLayer>[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.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":"4oCAuDE,IAAM,EAAQ,EAwBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,aAAc,EAAM,cAAgB,CAAC,IAAK,IAAK,IAAK,IAAG,CACvD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,EACpC,eAAgB,EAAM,gBAAkB,EACxC,aAAc,EAAM,cAAgB,IACpC,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,UAAW,EAAM,UACjB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,iBAAkB,EAAM,iBACxB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,iBAAkB,EAAM,iBACxB,iBAAkB,EAAM,iBACxB,qBAAsB,EAAM,qBAC5B,qBAAsB,EAAM,qBAC5B,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,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,KACN,EAAM,aACN,EAAM,aACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{GreatCircleLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglGreatCircle`,props:{id:{},data:{},getSourcePosition:{},getTargetPosition:{},getSourceColor:{},getTargetColor:{},getWidth:{},getHeight:{},getTilt:{},numSegments:{default:50},widthUnits:{default:`pixels`},widthScale:{default:1},widthMinPixels:{default:0},widthMaxPixels:{default:2**53-1},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getSourcePosition:u.getSourcePosition,getTargetPosition:u.getTargetPosition,getSourceColor:u.getSourceColor??[0,0,255],getTargetColor:u.getTargetColor??[0,255,0],getWidth:u.getWidth??1,getHeight:u.getHeight??1,getTilt:u.getTilt??0,numSegments:u.numSegments,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getSourcePosition,u.getTargetPosition,u.getSourceColor,u.getTargetColor,u.getWidth,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglGreatCircle};
2
+ //# sourceMappingURL=great-circle-C6GDbX1c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"great-circle-C6GDbX1c.js","names":[],"sources":["../src/layers/deckgl/great-circle/VLayerDeckglGreatCircle.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render great-circle arcs between coordinate pairs.\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 { GreatCircleLayer } from '@deck.gl/geo-layers';\n import type { GreatCircleLayerProps } from '@deck.gl/geo-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 getSourcePosition: Accessor<D, Position>;\n getTargetPosition: Accessor<D, Position>;\n getSourceColor?: Accessor<D, Color>;\n getTargetColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n getHeight?: Accessor<D, number>;\n getTilt?: Accessor<D, number>;\n numSegments?: number;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n numSegments: 50,\n widthUnits: 'pixels',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new GreatCircleLayer({\n id: props.id,\n data: props.data,\n getSourcePosition: props.getSourcePosition,\n getTargetPosition: props.getTargetPosition,\n getSourceColor: props.getSourceColor ?? [0, 0, 255],\n getTargetColor: props.getTargetColor ?? [0, 255, 0],\n getWidth: props.getWidth ?? 1,\n getHeight: props.getHeight ?? 1,\n getTilt: props.getTilt ?? 0,\n numSegments: props.numSegments,\n widthUnits: props.widthUnits,\n widthScale: props.widthScale,\n widthMinPixels: props.widthMinPixels,\n widthMaxPixels: props.widthMaxPixels,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as GreatCircleLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getSourcePosition,\n props.getTargetPosition,\n props.getSourceColor,\n props.getTargetColor,\n props.getWidth,\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":"2tBA2CE,IAAM,EAAQ,EAYR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAiB,CAC1B,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,eAAgB,EAAM,gBAAkB,CAAC,EAAG,EAAG,IAAG,CAClD,eAAgB,EAAM,gBAAkB,CAAC,EAAG,IAAK,EAAC,CAClD,SAAU,EAAM,UAAY,EAC5B,UAAW,EAAM,WAAa,EAC9B,QAAS,EAAM,SAAW,EAC1B,YAAa,EAAM,YACnB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,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,kBACN,EAAM,kBACN,EAAM,eACN,EAAM,eACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{GridLayer as c}from"@deck.gl/aggregation-layers";const l=r({__name:`VLayerDeckglGrid`,props:{id:{},data:{},getPosition:{},getColorWeight:{},getElevationWeight:{},cellSize:{default:1e3},colorRange:{},coverage:{default:1},elevationDomain:{},elevationRange:{},elevationScale:{default:1},extruded:{type:Boolean,default:!1},upperPercentile:{default:100},lowerPercentile:{default:0},elevationUpperPercentile:{default:100},elevationLowerPercentile:{default:0},colorScaleType:{default:`quantize`},colorAggregation:{default:`SUM`},elevationAggregation:{default:`SUM`},gpuAggregation:{type:Boolean,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,getPosition:u.getPosition,getColorWeight:u.getColorWeight??1,getElevationWeight:u.getElevationWeight??1,cellSize:u.cellSize,colorRange:u.colorRange,coverage:u.coverage,elevationDomain:u.elevationDomain,elevationRange:u.elevationRange,elevationScale:u.elevationScale,extruded:u.extruded,upperPercentile:u.upperPercentile,lowerPercentile:u.lowerPercentile,elevationUpperPercentile:u.elevationUpperPercentile,elevationLowerPercentile:u.elevationLowerPercentile,colorScaleType:u.colorScaleType,colorAggregation:u.colorAggregation,elevationAggregation:u.elevationAggregation,gpuAggregation:u.gpuAggregation,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.cellSize,u.colorRange,u.elevationScale,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 VLayerDeckglGrid};
2
+ //# sourceMappingURL=grid-BPfXfID8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-BPfXfID8.js","names":[],"sources":["../src/layers/deckgl/grid/VLayerDeckglGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Aggregate points into a regular square grid (GPU or CPU).\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 { GridLayer } 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 getColorWeight?: Accessor<D, number>;\n getElevationWeight?: Accessor<D, number>;\n cellSize?: number;\n colorRange?: Color[];\n coverage?: number;\n elevationDomain?: [number, number];\n elevationRange?: [number, number];\n elevationScale?: number;\n extruded?: boolean;\n upperPercentile?: number;\n lowerPercentile?: number;\n elevationUpperPercentile?: number;\n elevationLowerPercentile?: number;\n colorScaleType?: 'quantize' | 'linear' | 'quantile' | 'ordinal';\n colorAggregation?: 'SUM' | 'MEAN' | 'MIN' | 'MAX';\n elevationAggregation?: 'SUM' | 'MEAN' | 'MIN' | 'MAX';\n gpuAggregation?: 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 cellSize: 1000,\n coverage: 1,\n elevationScale: 1,\n extruded: false,\n upperPercentile: 100,\n lowerPercentile: 0,\n elevationUpperPercentile: 100,\n elevationLowerPercentile: 0,\n colorScaleType: 'quantize',\n colorAggregation: 'SUM',\n elevationAggregation: 'SUM',\n gpuAggregation: 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 GridLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getColorWeight: props.getColorWeight ?? 1,\n getElevationWeight: props.getElevationWeight ?? 1,\n cellSize: props.cellSize,\n colorRange: props.colorRange,\n coverage: props.coverage,\n elevationDomain: props.elevationDomain,\n elevationRange: props.elevationRange,\n elevationScale: props.elevationScale,\n extruded: props.extruded,\n upperPercentile: props.upperPercentile,\n lowerPercentile: props.lowerPercentile,\n elevationUpperPercentile: props.elevationUpperPercentile,\n elevationLowerPercentile: props.elevationLowerPercentile,\n colorScaleType: props.colorScaleType,\n colorAggregation: props.colorAggregation,\n elevationAggregation: props.elevationAggregation,\n gpuAggregation: props.gpuAggregation,\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 GridLayer>[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.cellSize,\n props.colorRange,\n props.elevationScale,\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":"u+BAiDE,IAAM,EAAQ,EAmBR,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,eAAgB,EAAM,gBAAkB,EACxC,mBAAoB,EAAM,oBAAsB,EAChD,SAAU,EAAM,SAChB,WAAY,EAAM,WAClB,SAAU,EAAM,SAChB,gBAAiB,EAAM,gBACvB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,gBAAiB,EAAM,gBACvB,gBAAiB,EAAM,gBACvB,yBAA0B,EAAM,yBAChC,yBAA0B,EAAM,yBAChC,eAAgB,EAAM,eACtB,iBAAkB,EAAM,iBACxB,qBAAsB,EAAM,qBAC5B,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,CACM,CAAA,CAGtD,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,WACN,EAAM,eACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{GridCellLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglGridCell`,props:{id:{},data:{},getPosition:{},getFillColor:{},getElevation:{},cellSize:{default:1e3},coverage:{default:1},elevationScale:{default:1},extruded:{type:Boolean,default:!0},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,getFillColor:u.getFillColor??[255,0,0,255],getElevation:u.getElevation??1e3,cellSize:u.cellSize,coverage:u.coverage,elevationScale:u.elevationScale,extruded:u.extruded,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.getFillColor,u.getElevation,u.cellSize,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 VLayerDeckglGridCell};
2
+ //# sourceMappingURL=grid-cell-T0-xdlk_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-cell-T0-xdlk_.js","names":[],"sources":["../src/layers/deckgl/grid-cell/VLayerDeckglGridCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render arbitrary axis-aligned grid cells with extrusion.\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 { GridCellLayer } from '@deck.gl/layers';\n import type { GridCellLayerProps } 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 getFillColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n cellSize?: number;\n coverage?: number;\n elevationScale?: number;\n extruded?: 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 cellSize: 1000,\n coverage: 1,\n elevationScale: 1,\n extruded: 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 GridCellLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n cellSize: props.cellSize,\n coverage: props.coverage,\n elevationScale: props.elevationScale,\n extruded: props.extruded,\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 GridCellLayerProps);\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.getFillColor,\n props.getElevation,\n props.cellSize,\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":"+oBAuCE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAc,CACvB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,IACpC,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,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,CAC7B,CAAA,CAGnB,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,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{H3ClusterLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglH3Cluster`,props:{id:{},data:{},getHexagons:{},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,getHexagons:u.getHexagons,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.getHexagons,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 VLayerDeckglH3Cluster};
2
+ //# sourceMappingURL=h3-cluster-BsvMbaYv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h3-cluster-BsvMbaYv.js","names":[],"sources":["../src/layers/deckgl/h3-cluster/VLayerDeckglH3Cluster.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render groups of contiguous H3 cells as merged 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 { H3ClusterLayer } from '@deck.gl/geo-layers';\n import type { H3ClusterLayerProps } 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 getHexagons: 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 H3ClusterLayer({\n id: props.id,\n data: props.data,\n getHexagons: props.getHexagons,\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 H3ClusterLayerProps);\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.getHexagons,\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":"i2BA6CE,IAAM,EAAQ,EAgBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAe,CACxB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,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,CAC5B,CAAA,CAGpB,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,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{H3HexagonLayer as c}from"@deck.gl/geo-layers";const l=r({__name:`VLayerDeckglH3Hexagon`,props:{id:{},data:{},getHexagon:{},getFillColor:{},getLineColor:{},getElevation:{},highPrecision:{type:[Boolean,String],default:`auto`},coverage:{default:1},elevationScale:{default:1},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,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,getHexagon:u.getHexagon,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,highPrecision:u.highPrecision,coverage:u.coverage,elevationScale:u.elevationScale,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,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.getHexagon,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 VLayerDeckglH3Hexagon};
2
+ //# sourceMappingURL=h3-hexagon-Cx1qlgKb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h3-hexagon-Cx1qlgKb.js","names":[],"sources":["../src/layers/deckgl/h3-hexagon/VLayerDeckglH3Hexagon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render Uber H3 hexagons as individual filled cells.\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 { H3HexagonLayer } from '@deck.gl/geo-layers';\n import type { H3HexagonLayerProps } 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 getHexagon: Accessor<D, string>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n highPrecision?: boolean | 'auto';\n coverage?: number;\n elevationScale?: number;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\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 highPrecision: 'auto',\n coverage: 1,\n elevationScale: 1,\n filled: true,\n stroked: true,\n extruded: false,\n wireframe: false,\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 H3HexagonLayer({\n id: props.id,\n data: props.data,\n getHexagon: props.getHexagon,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n highPrecision: props.highPrecision,\n coverage: props.coverage,\n elevationScale: props.elevationScale,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\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 H3HexagonLayerProps);\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.getHexagon,\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":"06BA+CE,IAAM,EAAQ,EAkBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAe,CACxB,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,cAAe,EAAM,cACrB,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,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,CAC5B,CAAA,CAGpB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{HeatmapLayer as c}from"@deck.gl/aggregation-layers";const l=r({__name:`VLayerDeckglHeatmap`,props:{id:{},data:{},getPosition:{},getWeight:{},intensity:{default:1},radiusPixels:{default:30},colorRange:{},threshold:{default:.05},colorDomain:{},aggregation:{default:`SUM`},weightsTextureSize:{default:2048},debounceTimeout:{default:500},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},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,intensity:u.intensity,radiusPixels:u.radiusPixels,colorRange:u.colorRange,threshold:u.threshold,colorDomain:u.colorDomain,aggregation:u.aggregation,weightsTextureSize:u.weightsTextureSize,debounceTimeout:u.debounceTimeout,opacity:u.opacity,visible:u.visible,pickable:u.pickable,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.getWeight,u.intensity,u.radiusPixels,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglHeatmap};
2
+ //# sourceMappingURL=heatmap-ByafStP6.js.map