@geoql/v-maplibre 1.11.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +42 -15
  2. package/dist/arc-B_fAMcpz.js +2 -0
  3. package/dist/arc-B_fAMcpz.js.map +1 -0
  4. package/dist/{arrow-4ecDVUFv.js → arrow-B87Hvf8z.js} +1 -1
  5. package/dist/{arrow-4ecDVUFv.js.map → arrow-B87Hvf8z.js.map} +1 -1
  6. package/dist/bitmap-C_yi2tt7.js +2 -0
  7. package/dist/bitmap-C_yi2tt7.js.map +1 -0
  8. package/dist/cog-Cksxp4kb.js +2 -0
  9. package/dist/cog-Cksxp4kb.js.map +1 -0
  10. package/dist/column-CN436hkx.js +2 -0
  11. package/dist/column-CN436hkx.js.map +1 -0
  12. package/dist/contour-DJbs8Kf4.js +2 -0
  13. package/dist/contour-DJbs8Kf4.js.map +1 -0
  14. package/dist/deckgl.d.ts +47 -0
  15. package/dist/deckgl.js +2 -0
  16. package/dist/deckgl.js.map +1 -0
  17. package/dist/generic-B-YSsfL2.js +2 -0
  18. package/dist/generic-B-YSsfL2.js.map +1 -0
  19. package/dist/geoarrow-path-4ompjoL_.js +2 -0
  20. package/dist/{geoarrow-path-B2LJ956d.js.map → geoarrow-path-4ompjoL_.js.map} +1 -1
  21. package/dist/geoarrow-polygon-DUlcZwlA.js +2 -0
  22. package/dist/{geoarrow-polygon-C9mZ7552.js.map → geoarrow-polygon-DUlcZwlA.js.map} +1 -1
  23. package/dist/geoarrow-scatterplot-Cd2DK-iz.js +2 -0
  24. package/dist/{geoarrow-scatterplot-CM5842q_.js.map → geoarrow-scatterplot-Cd2DK-iz.js.map} +1 -1
  25. package/dist/geoarrow-solid-polygon-q14Ff9j9.js +2 -0
  26. package/dist/{geoarrow-solid-polygon-DIm9mciL.js.map → geoarrow-solid-polygon-q14Ff9j9.js.map} +1 -1
  27. package/dist/geoarrow-text-DHvTakUd.js +2 -0
  28. package/dist/{geoarrow-text-ClY3q_nR.js.map → geoarrow-text-DHvTakUd.js.map} +1 -1
  29. package/dist/geoarrow-trips-CwRSQdMU.js +2 -0
  30. package/dist/{geoarrow-trips-BqbIoMt8.js.map → geoarrow-trips-CwRSQdMU.js.map} +1 -1
  31. package/dist/geohash-DfnNENva.js +2 -0
  32. package/dist/geohash-DfnNENva.js.map +1 -0
  33. package/dist/geojson-BRWVICwI.js +2 -0
  34. package/dist/geojson-BRWVICwI.js.map +1 -0
  35. package/dist/geotiff.d.ts +50 -0
  36. package/dist/geotiff.js +2 -0
  37. package/dist/geotiff.js.map +1 -0
  38. package/dist/great-circle-Da5XIa2p.js +2 -0
  39. package/dist/great-circle-Da5XIa2p.js.map +1 -0
  40. package/dist/grid-DKP8clpW.js +2 -0
  41. package/dist/grid-DKP8clpW.js.map +1 -0
  42. package/dist/grid-cell-CZ41kY8K.js +2 -0
  43. package/dist/grid-cell-CZ41kY8K.js.map +1 -0
  44. package/dist/h3-cluster-Cco_QCbU.js +2 -0
  45. package/dist/h3-cluster-Cco_QCbU.js.map +1 -0
  46. package/dist/h3-hexagon-BqvZfU5b.js +2 -0
  47. package/dist/h3-hexagon-BqvZfU5b.js.map +1 -0
  48. package/dist/heatmap-Bq7-L0jp.js +2 -0
  49. package/dist/heatmap-Bq7-L0jp.js.map +1 -0
  50. package/dist/hexagon-T0vesB_G.js +2 -0
  51. package/dist/hexagon-T0vesB_G.js.map +1 -0
  52. package/dist/icon-Bwm2m8b4.js +2 -0
  53. package/dist/icon-Bwm2m8b4.js.map +1 -0
  54. package/dist/index-2D1oVTKr.d.ts +37 -0
  55. package/dist/index.d.ts +113 -492
  56. package/dist/index.js +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/lidar.d.ts +232 -0
  59. package/dist/lidar.js +2 -0
  60. package/dist/lidar.js.map +1 -0
  61. package/dist/line-2EN6ukkf.js +2 -0
  62. package/dist/line-2EN6ukkf.js.map +1 -0
  63. package/dist/mosaic-DUwBxfGg.js +43 -0
  64. package/dist/mosaic-DUwBxfGg.js.map +1 -0
  65. package/dist/multi-cog-B2kVLX90.js +2 -0
  66. package/dist/multi-cog-B2kVLX90.js.map +1 -0
  67. package/dist/mvt-q6iXzmEF.js +2 -0
  68. package/dist/mvt-q6iXzmEF.js.map +1 -0
  69. package/dist/path-CKCx5_Gi.js +2 -0
  70. package/dist/path-CKCx5_Gi.js.map +1 -0
  71. package/dist/point-cloud-C9zJxZDT.js +2 -0
  72. package/dist/point-cloud-C9zJxZDT.js.map +1 -0
  73. package/dist/polygon-DRpsvg1W.js +2 -0
  74. package/dist/polygon-DRpsvg1W.js.map +1 -0
  75. package/dist/quadkey-DfoG2hLL.js +2 -0
  76. package/dist/quadkey-DfoG2hLL.js.map +1 -0
  77. package/dist/s2-DlEDAkpJ.js +2 -0
  78. package/dist/s2-DlEDAkpJ.js.map +1 -0
  79. package/dist/scatterplot-B9zXE6Jf.js +2 -0
  80. package/dist/scatterplot-B9zXE6Jf.js.map +1 -0
  81. package/dist/scenegraph-BVXLw8Cw.js +2 -0
  82. package/dist/scenegraph-BVXLw8Cw.js.map +1 -0
  83. package/dist/screen-grid-Dgj0QdEI.js +2 -0
  84. package/dist/screen-grid-Dgj0QdEI.js.map +1 -0
  85. package/dist/simple-mesh-ypHRymUD.js +2 -0
  86. package/dist/simple-mesh-ypHRymUD.js.map +1 -0
  87. package/dist/solid-polygon-DyWHVxEO.js +2 -0
  88. package/dist/solid-polygon-DyWHVxEO.js.map +1 -0
  89. package/dist/starfield-Djc5vy6K.js +2 -0
  90. package/dist/starfield-Djc5vy6K.js.map +1 -0
  91. package/dist/starfield.d.ts +7 -0
  92. package/dist/starfield.js +2 -0
  93. package/dist/starfield.js.map +1 -0
  94. package/dist/symbols-DXKzIgbY.js +2 -0
  95. package/dist/symbols-DXKzIgbY.js.map +1 -0
  96. package/dist/terrain-D3LKaDfn.js +2 -0
  97. package/dist/terrain-D3LKaDfn.js.map +1 -0
  98. package/dist/text-C6lF4GFS.js +2 -0
  99. package/dist/text-C6lF4GFS.js.map +1 -0
  100. package/dist/tile-3d-DHzr5_s2.js +2 -0
  101. package/dist/tile-3d-DHzr5_s2.js.map +1 -0
  102. package/dist/tile-DqpbfgRL.js +2 -0
  103. package/dist/tile-DqpbfgRL.js.map +1 -0
  104. package/dist/trips-CchyX_8N.js +2 -0
  105. package/dist/trips-CchyX_8N.js.map +1 -0
  106. package/dist/useDeckOverlay-GlkH_rvP.js +2 -0
  107. package/dist/useDeckOverlay-GlkH_rvP.js.map +1 -0
  108. package/dist/useDeckOverlay-JoRzVQ7g.d.ts +43 -0
  109. package/dist/wind-particle-Rs67QBQ9.js +2 -0
  110. package/dist/wind-particle-Rs67QBQ9.js.map +1 -0
  111. package/dist/wind.d.ts +9 -0
  112. package/dist/wind.js +2 -0
  113. package/dist/wind.js.map +1 -0
  114. package/dist/wms-KlHzzqd3.js +2 -0
  115. package/dist/wms-KlHzzqd3.js.map +1 -0
  116. package/dist/zarr-Czf44Tqd.js +2 -0
  117. package/dist/zarr-Czf44Tqd.js.map +1 -0
  118. package/package.json +36 -16
  119. package/dist/arc-oPHfD4K7.js +0 -2
  120. package/dist/arc-oPHfD4K7.js.map +0 -1
  121. package/dist/bitmap-C04WgKea.js +0 -2
  122. package/dist/bitmap-C04WgKea.js.map +0 -1
  123. package/dist/cog-Cq7xvN9B.js +0 -2
  124. package/dist/cog-Cq7xvN9B.js.map +0 -1
  125. package/dist/column-Dx4A711w.js +0 -2
  126. package/dist/column-Dx4A711w.js.map +0 -1
  127. package/dist/contour-Dgvb_bGm.js +0 -2
  128. package/dist/contour-Dgvb_bGm.js.map +0 -1
  129. package/dist/generic-BKvcZn9n.js +0 -2
  130. package/dist/generic-BKvcZn9n.js.map +0 -1
  131. package/dist/geoarrow-path-B2LJ956d.js +0 -2
  132. package/dist/geoarrow-polygon-C9mZ7552.js +0 -2
  133. package/dist/geoarrow-scatterplot-CM5842q_.js +0 -2
  134. package/dist/geoarrow-solid-polygon-DIm9mciL.js +0 -2
  135. package/dist/geoarrow-text-ClY3q_nR.js +0 -2
  136. package/dist/geoarrow-trips-BqbIoMt8.js +0 -2
  137. package/dist/geohash-Pq83atW2.js +0 -2
  138. package/dist/geohash-Pq83atW2.js.map +0 -1
  139. package/dist/geojson-cOxJcO-8.js +0 -2
  140. package/dist/geojson-cOxJcO-8.js.map +0 -1
  141. package/dist/great-circle-C6GDbX1c.js +0 -2
  142. package/dist/great-circle-C6GDbX1c.js.map +0 -1
  143. package/dist/grid-BPfXfID8.js +0 -2
  144. package/dist/grid-BPfXfID8.js.map +0 -1
  145. package/dist/grid-cell-T0-xdlk_.js +0 -2
  146. package/dist/grid-cell-T0-xdlk_.js.map +0 -1
  147. package/dist/h3-cluster-BsvMbaYv.js +0 -2
  148. package/dist/h3-cluster-BsvMbaYv.js.map +0 -1
  149. package/dist/h3-hexagon-Cx1qlgKb.js +0 -2
  150. package/dist/h3-hexagon-Cx1qlgKb.js.map +0 -1
  151. package/dist/heatmap-ByafStP6.js +0 -2
  152. package/dist/heatmap-ByafStP6.js.map +0 -1
  153. package/dist/hexagon-CWRkTkkj.js +0 -2
  154. package/dist/hexagon-CWRkTkkj.js.map +0 -1
  155. package/dist/icon-WggKPJv7.js +0 -2
  156. package/dist/icon-WggKPJv7.js.map +0 -1
  157. package/dist/line-B5e9w1td.js +0 -2
  158. package/dist/line-B5e9w1td.js.map +0 -1
  159. package/dist/mosaic-Cl7rtAXN.js +0 -43
  160. package/dist/mosaic-Cl7rtAXN.js.map +0 -1
  161. package/dist/multi-cog-DAJbnElE.js +0 -2
  162. package/dist/multi-cog-DAJbnElE.js.map +0 -1
  163. package/dist/mvt-D0GYYs-Z.js +0 -2
  164. package/dist/mvt-D0GYYs-Z.js.map +0 -1
  165. package/dist/path-mcVHjyaA.js +0 -2
  166. package/dist/path-mcVHjyaA.js.map +0 -1
  167. package/dist/point-cloud-CNpLW-hf.js +0 -2
  168. package/dist/point-cloud-CNpLW-hf.js.map +0 -1
  169. package/dist/polygon-B5mGSTte.js +0 -2
  170. package/dist/polygon-B5mGSTte.js.map +0 -1
  171. package/dist/quadkey-DGHCEKmx.js +0 -2
  172. package/dist/quadkey-DGHCEKmx.js.map +0 -1
  173. package/dist/s2-MuPaEFbo.js +0 -2
  174. package/dist/s2-MuPaEFbo.js.map +0 -1
  175. package/dist/scatterplot-BBeJkOdi.js +0 -2
  176. package/dist/scatterplot-BBeJkOdi.js.map +0 -1
  177. package/dist/scenegraph-DTM4oQ_J.js +0 -2
  178. package/dist/scenegraph-DTM4oQ_J.js.map +0 -1
  179. package/dist/screen-grid-CxlQC4Kb.js +0 -2
  180. package/dist/screen-grid-CxlQC4Kb.js.map +0 -1
  181. package/dist/simple-mesh-BxLUvOJK.js +0 -2
  182. package/dist/simple-mesh-BxLUvOJK.js.map +0 -1
  183. package/dist/solid-polygon-DwQBLTy0.js +0 -2
  184. package/dist/solid-polygon-DwQBLTy0.js.map +0 -1
  185. package/dist/starfield-D0gIX-34.js +0 -2
  186. package/dist/starfield-D0gIX-34.js.map +0 -1
  187. package/dist/symbols-CFCXX1_B.js +0 -2
  188. package/dist/symbols-CFCXX1_B.js.map +0 -1
  189. package/dist/terrain-f-XAakfL.js +0 -2
  190. package/dist/terrain-f-XAakfL.js.map +0 -1
  191. package/dist/text-BOvG9JHc.js +0 -2
  192. package/dist/text-BOvG9JHc.js.map +0 -1
  193. package/dist/tile-3d-DG91zS0N.js +0 -2
  194. package/dist/tile-3d-DG91zS0N.js.map +0 -1
  195. package/dist/tile-AhmnAg8V.js +0 -2
  196. package/dist/tile-AhmnAg8V.js.map +0 -1
  197. package/dist/trips-DwzBmfe0.js +0 -2
  198. package/dist/trips-DwzBmfe0.js.map +0 -1
  199. package/dist/wind-particle-DW0nCMls.js +0 -2
  200. package/dist/wind-particle-DW0nCMls.js.map +0 -1
  201. package/dist/wms-vy1yMBNb.js +0 -2
  202. package/dist/wms-vy1yMBNb.js.map +0 -1
  203. package/dist/zarr-6SNoX07d.js +0 -2
  204. package/dist/zarr-6SNoX07d.js.map +0 -1
package/README.md CHANGED
@@ -39,10 +39,11 @@ That covers `VMap`, `VMarker`, `VPopup`, all controls (`VControl*`), and every M
39
39
 
40
40
  ### Optional peer dependencies
41
41
 
42
- Add these **only** for the layers you actually use — picking what you need keeps your bundle lean:
42
+ Add these **only** for the layers you actually use — picking what you need keeps your bundle lean. Since **v2.0.0**, each group is imported from a dedicated subpath (`@geoql/v-maplibre/deck.gl`, `/geotiff`, `/wind`, `/lidar`, `/starfield`) so the core entry never references deck.gl — see [Migrating to v2.0.0](#migrating-to-v200).
43
43
 
44
44
  ```bash
45
- # deck.gl base — VLayerDeckgl, VLayerDeckglScatterplot, VLayerDeckglArc,
45
+ # deck.gl base — import from '@geoql/v-maplibre/deck.gl'
46
+ # VLayerDeckgl, VLayerDeckglScatterplot, VLayerDeckglArc,
46
47
  # VLayerDeckglLine, VLayerDeckglPath, VLayerDeckglPolygon, VLayerDeckglSolidPolygon,
47
48
  # VLayerDeckglGeojson, VLayerDeckglIcon, VLayerDeckglText, VLayerDeckglColumn,
48
49
  # VLayerDeckglBitmap, VLayerDeckglPointCloud
@@ -61,33 +62,59 @@ pnpm add @deck.gl/geo-layers
61
62
  # 3D mesh — VLayerDeckglSimpleMesh, VLayerDeckglScenegraph
62
63
  pnpm add @deck.gl/mesh-layers
63
64
 
64
- # Cloud-Optimized GeoTIFF — VLayerDeckglCOG, VLayerDeckglMultiCOG, VLayerDeckglMosaic
65
+ # Cloud-Optimized GeoTIFF — import from '@geoql/v-maplibre/geotiff'
66
+ # VLayerCog, VLayerMultiCog, VLayerMosaic
65
67
  pnpm add @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj
66
68
 
67
- # Zarr — VLayerDeckglZarr
69
+ # Zarr — import from '@geoql/v-maplibre/geotiff'
70
+ # VLayerZarr
68
71
  pnpm add @developmentseed/deck.gl-zarr zarrita
69
72
 
70
- # GeoArrow — VLayerDeckglGeoArrowScatterplot, VLayerDeckglGeoArrowPath,
73
+ # GeoArrow — import from '@geoql/v-maplibre/deck.gl'
74
+ # VLayerDeckglGeoArrowScatterplot, VLayerDeckglGeoArrowPath,
71
75
  # VLayerDeckglGeoArrowPolygon, VLayerDeckglGeoArrowSolidPolygon,
72
76
  # VLayerDeckglGeoArrowText, VLayerDeckglGeoArrowTrips
73
77
  # (Trips additionally needs @deck.gl/geo-layers — already covered by the
74
78
  # deck.gl tile/route line above.)
75
79
  pnpm add apache-arrow
76
80
 
77
- # Wind particles — VLayerDeckglWindParticle
81
+ # Wind particles — import from '@geoql/v-maplibre/wind'
82
+ # VLayerWindParticle
78
83
  # (Wind-data helpers — createWindDataFromOpenWeatherMap, generateWindTexture,
79
84
  # WindParticleLayer — must be imported directly from 'maplibre-gl-wind'.)
80
85
  pnpm add maplibre-gl-wind
81
86
 
82
- # LiDAR point cloud viewer — VControlLidar
87
+ # LiDAR point cloud viewer — import from '@geoql/v-maplibre/lidar'
88
+ # VControlLidar
83
89
  pnpm add maplibre-gl-lidar
84
90
 
85
- # Three.js starfield skybox for globe projections — VLayerMaplibreStarfield
91
+ # Three.js starfield skybox for globe projections — import from '@geoql/v-maplibre/starfield'
92
+ # VLayerStarfield
86
93
  pnpm add @geoql/maplibre-gl-starfield three
87
94
  ```
88
95
 
89
96
  If you import a layer without its peer deps installed, your bundler will surface a `Cannot find module '...'` error — install the missing package(s) from the table above to resolve it.
90
97
 
98
+ ## Migrating to v2.0.0
99
+
100
+ v2.0.0 moves the optional-peer layers off the root entry onto dedicated subpaths so a core-only install no longer transitively references deck.gl / lidar / wind (fixes [#114](https://github.com/geoql/v-maplibre/issues/114)). Core components are unchanged — keep importing `VMap`, `VMarker`, `VPopup`, every `VControl*` (except `VControlLidar`), and every `VLayerMaplibre*` (except `VLayerStarfield`) from `@geoql/v-maplibre`. Only update the optional-peer components:
101
+
102
+ | Components | New import |
103
+ | ------------------------------------------------------------ | ----------------------------- |
104
+ | All `VLayerDeckgl*` (base, aggregation, geo, mesh, GeoArrow) | `@geoql/v-maplibre/deck.gl` |
105
+ | `VLayerCog`/`MultiCog`/`Mosaic`/`Zarr` | `@geoql/v-maplibre/geotiff` |
106
+ | `VLayerWindParticle` | `@geoql/v-maplibre/wind` |
107
+ | `VLayerStarfield` | `@geoql/v-maplibre/starfield` |
108
+ | `VControlLidar` | `@geoql/v-maplibre/lidar` |
109
+
110
+ ```diff
111
+ - import { VMap, VLayerDeckglScatterplot } from '@geoql/v-maplibre';
112
+ + import { VMap } from '@geoql/v-maplibre';
113
+ + import { VLayerDeckglScatterplot } from '@geoql/v-maplibre/deck.gl';
114
+ ```
115
+
116
+ Component-specific TypeScript types (e.g. `MosaicSource`, `WindDataPoint`, `LidarControlOptions`) move to the same subpath as their component.
117
+
91
118
  ## Quick Start
92
119
 
93
120
  ```vue
@@ -129,7 +156,7 @@ If you import a layer without its peer deps installed, your bundler will surface
129
156
  - **`VLayerMaplibreCluster`** - Clustered point layers
130
157
  - **`VLayerMaplibrePmtile`** - PMTiles layers
131
158
  - **`VLayerMaplibreRoute`** - Route/delivery tracking visualization
132
- - **`VLayerMaplibreStarfield`** - Three.js starfield skybox for globe projections (requires `@geoql/maplibre-gl-starfield`, `three`)
159
+ - **`VLayerStarfield`** - Three.js starfield skybox for globe projections (requires `@geoql/maplibre-gl-starfield`, `three`)
133
160
 
134
161
  ### deck.gl Layer Components
135
162
 
@@ -187,8 +214,8 @@ High-performance WebGL visualization layers powered by deck.gl:
187
214
 
188
215
  **Raster Layers** (requires `@developmentseed/deck.gl-raster` and `@developmentseed/deck.gl-geotiff`)
189
216
 
190
- - `VLayerDeckglCOG` - Cloud-Optimized GeoTIFF visualization (GPU-accelerated, auto-reprojection)
191
- - `VLayerDeckglMosaic` - Client-side COG mosaic from STAC items (requires `flatbush`, `proj4`)
217
+ - `VLayerCog` - Cloud-Optimized GeoTIFF visualization (GPU-accelerated, auto-reprojection)
218
+ - `VLayerMosaic` - Client-side COG mosaic from STAC items (requires `flatbush`, `proj4`)
192
219
 
193
220
  **GeoArrow Layers** (requires `@deck.gl/layers` + `apache-arrow`; trips also needs `@deck.gl/geo-layers`)
194
221
 
@@ -203,7 +230,7 @@ Render Apache Arrow `Table` / `RecordBatch` data with GeoArrow extension types d
203
230
 
204
231
  **Wind Visualization** (requires `maplibre-gl-wind`)
205
232
 
206
- - `VLayerDeckglWindParticle` - Animated wind particle flow with speed-based color ramps
233
+ - `VLayerWindParticle` - Animated wind particle flow with speed-based color ramps
207
234
 
208
235
  > The wind-data helpers (`createWindDataFromOpenWeatherMap`, `generateWindTexture`, `WindParticleLayer`, `windUniforms`) are **not** re-exported from `@geoql/v-maplibre`. Import them directly from `maplibre-gl-wind`:
209
236
  >
@@ -262,7 +289,7 @@ Render Apache Arrow `Table` / `RecordBatch` data with GeoArrow extension types d
262
289
 
263
290
  ```vue
264
291
  <script setup lang="ts">
265
- import { VMap, VLayerDeckglWindParticle } from '@geoql/v-maplibre';
292
+ import { VMap, VLayerWindParticle } from '@geoql/v-maplibre';
266
293
 
267
294
  const mapOptions = {
268
295
  style: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
@@ -280,7 +307,7 @@ Render Apache Arrow `Table` / `RecordBatch` data with GeoArrow extension types d
280
307
 
281
308
  <template>
282
309
  <VMap :options="mapOptions" style="height: 500px">
283
- <VLayerDeckglWindParticle
310
+ <VLayerWindParticle
284
311
  id="wind"
285
312
  :wind-data="windData"
286
313
  :num-particles="8192"
@@ -291,7 +318,7 @@ Render Apache Arrow `Table` / `RecordBatch` data with GeoArrow extension types d
291
318
  [1.0, [213, 62, 79, 255]],
292
319
  ]"
293
320
  :speed-range="[0, 30]"
294
- ></VLayerDeckglWindParticle>
321
+ ></VLayerWindParticle>
295
322
  </VMap>
296
323
  </template>
297
324
  ```
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{i as n}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as r,onBeforeUnmount as i,renderSlot as a,watch as o}from"vue";import{ArcLayer as s}from"@deck.gl/layers";const c=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:c}){let l=r,u=c,d=e(t),{addLayer:f,removeLayer:p,updateLayer:m}=n(d),h=()=>new s({id:l.id,data:l.data,getSourcePosition:l.getSourcePosition,getTargetPosition:l.getTargetPosition,getSourceColor:l.getSourceColor??[255,140,0],getTargetColor:l.getTargetColor??[0,200,255],getWidth:l.getWidth??1,getHeight:l.getHeight??1,getTilt:l.getTilt??0,greatCircle:l.greatCircle,numSegments:l.numSegments,widthUnits:l.widthUnits,widthScale:l.widthScale,widthMinPixels:l.widthMinPixels,widthMaxPixels:l.widthMaxPixels,opacity:l.opacity,visible:l.visible,pickable:l.pickable,autoHighlight:l.autoHighlight,highlightColor:l.highlightColor,beforeId:l.beforeId,onClick:e=>u(`click`,e),onHover:e=>u(`hover`,e)}),g=()=>{f(h())};return o(d,e=>{e&&g()},{immediate:!0}),o(()=>[l.data,l.getSourcePosition,l.getTargetPosition,l.getSourceColor,l.getTargetColor,l.opacity,l.visible],()=>m(l.id,h()),{deep:!0}),i(()=>{p(l.id)}),(e,t)=>a(e.$slots,`default`)}});export{c as VLayerDeckglArc};
2
+ //# sourceMappingURL=arc-B_fAMcpz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arc-B_fAMcpz.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 { 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"mwBA4CE,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,MACG,IAAI,EAAS,CAClB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,eAAgB,EAAM,gBAAkB,CAAC,IAAK,IAAK,CAAC,EACpD,eAAgB,EAAM,gBAAkB,CAAC,EAAG,IAAK,GAAG,EACpD,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,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CAAkB,EAGd,MAAwB,CAC5B,EAAS,EAAY,CAAC,CACxB,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,CACJ,EAAM,KACN,EAAM,kBACN,EAAM,kBACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,OACR,MACM,EAAY,EAAM,GAAI,EAAY,CAAC,EACzC,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -1,2 +1,2 @@
1
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
2
+ //# sourceMappingURL=arrow-B87Hvf8z.js.map
@@ -1 +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":"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"}
1
+ {"version":3,"file":"arrow-B87Hvf8z.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":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{i as n}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as r,onBeforeUnmount as i,renderSlot as a,watch as o}from"vue";import{BitmapLayer as s}from"@deck.gl/layers";const c=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:c}){let l=r,u=c,d=e(t),{addLayer:f,removeLayer:p,updateLayer:m}=n(d),h=()=>new s({id:l.id,image:l.image,bounds:l.bounds,loadOptions:l.loadOptions,textureParameters:l.textureParameters,desaturate:l.desaturate,transparentColor:l.transparentColor??[0,0,0,0],tintColor:l.tintColor??[255,255,255],opacity:l.opacity,visible:l.visible,pickable:l.pickable,autoHighlight:l.autoHighlight,highlightColor:l.highlightColor,beforeId:l.beforeId,onClick:e=>u(`click`,e),onHover:e=>u(`hover`,e)}),g=()=>{f(h())};return o(d,e=>{e&&g()},{immediate:!0}),o(()=>[l.image,l.bounds,l.desaturate,l.tintColor,l.opacity,l.visible],()=>m(l.id,h()),{deep:!0}),i(()=>{p(l.id)}),(e,t)=>a(e.$slots,`default`)}});export{c as VLayerDeckglBitmap};
2
+ //# sourceMappingURL=bitmap-C_yi2tt7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitmap-C_yi2tt7.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 { 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"8kBA0CE,IAAM,EAAQ,EAQR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,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,CAAC,EACvD,UAAW,EAAM,WAAa,CAAC,IAAK,IAAK,GAAG,EAC5C,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CAA4D,EAGxD,MAAwB,CAC5B,EAAS,EAAY,CAAC,CACxB,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,CACJ,EAAM,MACN,EAAM,OACN,EAAM,WACN,EAAM,UACN,EAAM,QACN,EAAM,OACR,MACM,EAAY,EAAM,GAAI,EAAY,CAAC,EACzC,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{a as n,i as r}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as i,markRaw as a,onBeforeUnmount as o,renderSlot as s,shallowRef as c,toRaw as l,watch as u}from"vue";const d=`pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`,f=i({__name:`VLayerCog`,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:f}){let p=i,m=f,h=e(t),{addLayer:g,removeLayer:_,updateLayer:v}=r(h),y=c(null),b=c(null),x=()=>{if(!y.value)return null;let e={id:l(p.id),geotiff:l(p.geotiff),opacity:l(p.opacity),visible:l(p.visible),pickable:l(p.pickable),autoHighlight:l(p.autoHighlight),debug:l(p.debug),debugOpacity:l(p.debugOpacity)};return b.value&&(e.epsgResolver=b.value),e.onGeoTIFFLoad=(e,t)=>{m(`geotiffLoad`,e,t)},p.tileSize!==256&&(e.tileSize=l(p.tileSize)),p.maxZoom!==void 0&&(e.maxZoom=l(p.maxZoom)),p.minZoom!==0&&(e.minZoom=l(p.minZoom)),p.maxCacheSize!==void 0&&(e.maxCacheSize=l(p.maxCacheSize)),p.refinementStrategy!==`best-available`&&(e.refinementStrategy=l(p.refinementStrategy)),p.maxRequests!==6&&(e.maxRequests=l(p.maxRequests)),p.highlightColor!==void 0&&(e.highlightColor=l(p.highlightColor)),p.beforeId!==void 0&&(e.beforeId=l(p.beforeId)),a(new y.value(e))},S=async()=>{try{let[e,t]=await Promise.all([n(`@developmentseed/deck.gl-geotiff`,()=>import(`@developmentseed/deck.gl-geotiff`),d),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),d)]);y.value=a(e.COGLayer),b.value=t.epsgResolver;let r=x();r&&g(r)}catch(e){console.error(`[deck.gl-raster] Error loading COGLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-geotiff is installed`)}};return u(h,e=>{e&&S()},{immediate:!0}),u(()=>[p.geotiff,p.tileSize,p.maxZoom,p.minZoom,p.opacity,p.visible,p.debug,p.debugOpacity],()=>{let e=x();e&&v(p.id,e)},{deep:!0}),o(()=>{_(p.id)}),(e,t)=>s(e.$slots,`default`)}});export{f as VLayerCog};
2
+ //# sourceMappingURL=cog-Cksxp4kb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cog-Cksxp4kb.js","names":[],"sources":["../src/layers/deckgl/cog/VLayerCog.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 { onBeforeUnmount, watch, shallowRef, toRaw, markRaw } 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"kOAoBE,MAAM,EACJ,wnBAkEF,IAAM,EAAQ,EAaR,EAAO,EAgBP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAG3D,EAAgB,EAEpB,IAAI,EACA,EAAiB,EAErB,IAAI,EAEA,MAAoB,CACxB,GAAI,CAAC,EAAc,MAAO,OAAO,KAEjC,IAAM,EAAsC,CAC1C,GAAI,EAAM,EAAM,EAAE,EAClB,QAAS,EAAM,EAAM,OAAO,EAC5B,QAAS,EAAM,EAAM,OAAO,EAC5B,QAAS,EAAM,EAAM,OAAO,EAC5B,SAAU,EAAM,EAAM,QAAQ,EAC9B,cAAe,EAAM,EAAM,aAAa,EACxC,MAAO,EAAM,EAAM,KAAK,EACxB,aAAc,EAAM,EAAM,YAAY,CACxC,EAmCA,OAjCI,EAAe,QACjB,EAAW,aAAe,EAAe,OAG3C,EAAW,eACT,EACA,IAQG,CACH,EAAK,cAAe,EAAM,CAAO,CACnC,EAEI,EAAM,WAAa,MAAK,EAAW,SAAW,EAAM,EAAM,QAAQ,GAClE,EAAM,UAAY,IAAA,KAAW,EAAW,QAAU,EAAM,EAAM,OAAO,GACrE,EAAM,UAAY,IAAG,EAAW,QAAU,EAAM,EAAM,OAAO,GAC7D,EAAM,eAAiB,IAAA,KACzB,EAAW,aAAe,EAAM,EAAM,YAAY,GAChD,EAAM,qBAAuB,mBAC/B,EAAW,mBAAqB,EAAM,EAAM,kBAAkB,GAC5D,EAAM,cAAgB,IACxB,EAAW,YAAc,EAAM,EAAM,WAAW,GAC9C,EAAM,iBAAmB,IAAA,KAC3B,EAAW,eAAiB,EAAM,EAAM,cAAc,GACpD,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,QAAQ,GAGrC,EAAQ,IADG,EAAc,MAAM,CACvB,CAAK,CACtB,EAEM,EAAkB,SAAY,CAClC,GAAI,CACF,GAAM,CAAC,EAAe,GAAc,MAAM,QAAQ,IAAI,CACpD,EACE,uCACM,OAAO,oCACb,CACF,EACA,EACE,4BACM,OAAO,yBACb,CACF,CACF,CAAC,EAED,EAAc,MAAQ,EAAQ,EAAc,QAAQ,EACpD,EAAe,MAAQ,EAAW,aAElC,IAAM,EAAQ,EAAY,EACtB,GACF,EAAS,CAAK,CAElB,OAAS,EAAO,CACd,QAAQ,MAAM,2CAA4C,CAAK,EAC/D,QAAQ,MAAM,yDAAyD,CACzE,CACF,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,CACJ,EAAM,QACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,MACN,EAAM,YACR,MACM,CACJ,IAAM,EAAQ,EAAY,EACtB,GACF,EAAY,EAAM,GAAI,CAAK,CAE/B,EACA,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{i as n}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as r,onBeforeUnmount as i,renderSlot as a,watch as o}from"vue";import{ColumnLayer as s}from"@deck.gl/layers";const c=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:c}){let l=r,u=c,d=e(t),{addLayer:f,removeLayer:p,updateLayer:m}=n(d),h=()=>new s({id:l.id,data:l.data,getPosition:l.getPosition,getFillColor:l.getFillColor??[255,0,0,255],getLineColor:l.getLineColor??[0,0,0,255],getElevation:l.getElevation??1e3,diskResolution:l.diskResolution,radius:l.radius,angle:l.angle,vertices:l.vertices,offset:l.offset,coverage:l.coverage,elevationScale:l.elevationScale,filled:l.filled,stroked:l.stroked,extruded:l.extruded,wireframe:l.wireframe,flatShading:l.flatShading,radiusUnits:l.radiusUnits,lineWidthUnits:l.lineWidthUnits,lineWidthScale:l.lineWidthScale,lineWidthMinPixels:l.lineWidthMinPixels,lineWidthMaxPixels:l.lineWidthMaxPixels,material:l.material,opacity:l.opacity,visible:l.visible,pickable:l.pickable,autoHighlight:l.autoHighlight,highlightColor:l.highlightColor,beforeId:l.beforeId,onClick:e=>u(`click`,e),onHover:e=>u(`hover`,e)}),g=()=>{f(h())};return o(d,e=>{e&&g()},{immediate:!0}),o(()=>[l.data,l.getPosition,l.getFillColor,l.getElevation,l.radius,l.elevationScale,l.opacity,l.visible],()=>m(l.id,h()),{deep:!0}),i(()=>{p(l.id)}),(e,t)=>a(e.$slots,`default`)}});export{c as VLayerDeckglColumn};
2
+ //# sourceMappingURL=column-CN436hkx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-CN436hkx.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 { 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"giCAqDE,IAAM,EAAQ,EAsBR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,MACG,IAAI,EAAY,CACrB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,GAAG,EACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,GAAG,EACjD,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,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CAAqB,EAGjB,MAAwB,CAC5B,EAAS,EAAY,CAAC,CACxB,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,aACN,EAAM,aACN,EAAM,OACN,EAAM,eACN,EAAM,QACN,EAAM,OACR,MACM,EAAY,EAAM,GAAI,EAAY,CAAC,EACzC,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{i as n}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as r,onBeforeUnmount as i,renderSlot as a,watch as o}from"vue";import{ContourLayer as s}from"@deck.gl/aggregation-layers";const c=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:c}){let l=r,u=c,d=e(t),{addLayer:f,removeLayer:p,updateLayer:m}=n(d),h=()=>new s({id:l.id,data:l.data,getPosition:l.getPosition,getWeight:l.getWeight??1,cellSize:l.cellSize,contours:l.contours,gpuAggregation:l.gpuAggregation,aggregation:l.aggregation,zOffset:l.zOffset,opacity:l.opacity,visible:l.visible,pickable:l.pickable,autoHighlight:l.autoHighlight,highlightColor:l.highlightColor,beforeId:l.beforeId,onClick:e=>u(`click`,e),onHover:e=>u(`hover`,e)}),g=()=>{f(h())};return o(d,e=>{e&&g()},{immediate:!0}),o(()=>[l.data,l.getPosition,l.cellSize,l.contours,l.opacity,l.visible],()=>m(l.id,h()),{deep:!0}),i(()=>{p(l.id)}),(e,t)=>a(e.$slots,`default`)}});export{c as VLayerDeckglContour};
2
+ //# sourceMappingURL=contour-DJbs8Kf4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-DJbs8Kf4.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 { 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"gpBA4CE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,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,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CAA6D,EAGzD,MAAwB,CAC5B,EAAS,EAAY,CAAC,CACxB,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,OACR,MACM,EAAY,EAAM,GAAI,EAAY,CAAC,EACzC,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,47 @@
1
+ import { i as useDeckOverlay, n as DeckOverlayKey, r as useDeckLayers, t as DeckLayersKey } from "./useDeckOverlay-JoRzVQ7g.js";
2
+ import { a as ColorAccessor, c as Position, i as Color, l as PositionAccessor, n as ArrowTableLike, o as DeckLayerEvent, r as BaseDeckLayerProps, s as NumberAccessor, t as Accessor, u as StringAccessor } from "./index-2D1oVTKr.js";
3
+ import { Component } from "vue";
4
+
5
+ //#region src/layers/deckgl/index.d.ts
6
+ declare const VLayerDeckgl: Component;
7
+ declare const VLayerDeckglScatterplot: Component;
8
+ declare const VLayerDeckglArc: Component;
9
+ declare const VLayerDeckglGeojson: Component;
10
+ declare const VLayerDeckglPath: Component;
11
+ declare const VLayerDeckglLine: Component;
12
+ declare const VLayerDeckglPolygon: Component;
13
+ declare const VLayerDeckglSolidPolygon: Component;
14
+ declare const VLayerDeckglIcon: Component;
15
+ declare const VLayerDeckglText: Component;
16
+ declare const VLayerDeckglColumn: Component;
17
+ declare const VLayerDeckglBitmap: Component;
18
+ declare const VLayerDeckglGridCell: Component;
19
+ declare const VLayerDeckglPointCloud: Component;
20
+ declare const VLayerDeckglHeatmap: Component;
21
+ declare const VLayerDeckglHexagon: Component;
22
+ declare const VLayerDeckglGrid: Component;
23
+ declare const VLayerDeckglContour: Component;
24
+ declare const VLayerDeckglScreenGrid: Component;
25
+ declare const VLayerDeckglTrips: Component;
26
+ declare const VLayerDeckglH3Hexagon: Component;
27
+ declare const VLayerDeckglH3Cluster: Component;
28
+ declare const VLayerDeckglMVT: Component;
29
+ declare const VLayerDeckglTile: Component;
30
+ declare const VLayerDeckglTile3D: Component;
31
+ declare const VLayerDeckglTerrain: Component;
32
+ declare const VLayerDeckglGreatCircle: Component;
33
+ declare const VLayerDeckglS2: Component;
34
+ declare const VLayerDeckglGeohash: Component;
35
+ declare const VLayerDeckglQuadkey: Component;
36
+ declare const VLayerDeckglWMS: Component;
37
+ declare const VLayerDeckglSimpleMesh: Component;
38
+ declare const VLayerDeckglScenegraph: Component;
39
+ declare const VLayerDeckglGeoArrowScatterplot: Component;
40
+ declare const VLayerDeckglGeoArrowPath: Component;
41
+ declare const VLayerDeckglGeoArrowPolygon: Component;
42
+ declare const VLayerDeckglGeoArrowSolidPolygon: Component;
43
+ declare const VLayerDeckglGeoArrowText: Component;
44
+ declare const VLayerDeckglGeoArrowTrips: Component;
45
+ //#endregion
46
+ export { Accessor, ArrowTableLike, BaseDeckLayerProps, Color, ColorAccessor, DeckLayerEvent, DeckLayersKey, DeckOverlayKey, NumberAccessor, Position, PositionAccessor, StringAccessor, VLayerDeckgl, VLayerDeckglArc, VLayerDeckglBitmap, VLayerDeckglColumn, VLayerDeckglContour, VLayerDeckglGeoArrowPath, VLayerDeckglGeoArrowPolygon, VLayerDeckglGeoArrowScatterplot, VLayerDeckglGeoArrowSolidPolygon, VLayerDeckglGeoArrowText, VLayerDeckglGeoArrowTrips, VLayerDeckglGeohash, VLayerDeckglGeojson, VLayerDeckglGreatCircle, VLayerDeckglGrid, VLayerDeckglGridCell, VLayerDeckglH3Cluster, VLayerDeckglH3Hexagon, VLayerDeckglHeatmap, VLayerDeckglHexagon, VLayerDeckglIcon, VLayerDeckglLine, VLayerDeckglMVT, VLayerDeckglPath, VLayerDeckglPointCloud, VLayerDeckglPolygon, VLayerDeckglQuadkey, VLayerDeckglS2, VLayerDeckglScatterplot, VLayerDeckglScenegraph, VLayerDeckglScreenGrid, VLayerDeckglSimpleMesh, VLayerDeckglSolidPolygon, VLayerDeckglTerrain, VLayerDeckglText, VLayerDeckglTile, VLayerDeckglTile3D, VLayerDeckglTrips, VLayerDeckglWMS, useDeckLayers, useDeckOverlay };
47
+ //# sourceMappingURL=deckgl.d.ts.map
package/dist/deckgl.js ADDED
@@ -0,0 +1,2 @@
1
+ import{i as e,n as t,r as n,t as r}from"./useDeckOverlay-GlkH_rvP.js";import{defineAsyncComponent as i}from"vue";const a=i(()=>import(`./generic-B-YSsfL2.js`).then(e=>e.VLayerDeckgl)),o=i(()=>import(`./scatterplot-B9zXE6Jf.js`).then(e=>e.VLayerDeckglScatterplot)),s=i(()=>import(`./arc-B_fAMcpz.js`).then(e=>e.VLayerDeckglArc)),c=i(()=>import(`./geojson-BRWVICwI.js`).then(e=>e.VLayerDeckglGeojson)),l=i(()=>import(`./path-CKCx5_Gi.js`).then(e=>e.VLayerDeckglPath)),u=i(()=>import(`./line-2EN6ukkf.js`).then(e=>e.VLayerDeckglLine)),d=i(()=>import(`./polygon-DRpsvg1W.js`).then(e=>e.VLayerDeckglPolygon)),f=i(()=>import(`./solid-polygon-DyWHVxEO.js`).then(e=>e.VLayerDeckglSolidPolygon)),p=i(()=>import(`./icon-Bwm2m8b4.js`).then(e=>e.VLayerDeckglIcon)),m=i(()=>import(`./text-C6lF4GFS.js`).then(e=>e.VLayerDeckglText)),h=i(()=>import(`./column-CN436hkx.js`).then(e=>e.VLayerDeckglColumn)),g=i(()=>import(`./bitmap-C_yi2tt7.js`).then(e=>e.VLayerDeckglBitmap)),_=i(()=>import(`./grid-cell-CZ41kY8K.js`).then(e=>e.VLayerDeckglGridCell)),v=i(()=>import(`./point-cloud-C9zJxZDT.js`).then(e=>e.VLayerDeckglPointCloud)),y=i(()=>import(`./heatmap-Bq7-L0jp.js`).then(e=>e.VLayerDeckglHeatmap)),b=i(()=>import(`./hexagon-T0vesB_G.js`).then(e=>e.VLayerDeckglHexagon)),x=i(()=>import(`./grid-DKP8clpW.js`).then(e=>e.VLayerDeckglGrid)),S=i(()=>import(`./contour-DJbs8Kf4.js`).then(e=>e.VLayerDeckglContour)),C=i(()=>import(`./screen-grid-Dgj0QdEI.js`).then(e=>e.VLayerDeckglScreenGrid)),w=i(()=>import(`./trips-CchyX_8N.js`).then(e=>e.VLayerDeckglTrips)),T=i(()=>import(`./h3-hexagon-BqvZfU5b.js`).then(e=>e.VLayerDeckglH3Hexagon)),E=i(()=>import(`./h3-cluster-Cco_QCbU.js`).then(e=>e.VLayerDeckglH3Cluster)),D=i(()=>import(`./mvt-q6iXzmEF.js`).then(e=>e.VLayerDeckglMVT)),O=i(()=>import(`./tile-DqpbfgRL.js`).then(e=>e.VLayerDeckglTile)),k=i(()=>import(`./tile-3d-DHzr5_s2.js`).then(e=>e.VLayerDeckglTile3D)),A=i(()=>import(`./terrain-D3LKaDfn.js`).then(e=>e.VLayerDeckglTerrain)),j=i(()=>import(`./great-circle-Da5XIa2p.js`).then(e=>e.VLayerDeckglGreatCircle)),M=i(()=>import(`./s2-DlEDAkpJ.js`).then(e=>e.VLayerDeckglS2)),N=i(()=>import(`./geohash-DfnNENva.js`).then(e=>e.VLayerDeckglGeohash)),P=i(()=>import(`./quadkey-DfoG2hLL.js`).then(e=>e.VLayerDeckglQuadkey)),F=i(()=>import(`./wms-KlHzzqd3.js`).then(e=>e.VLayerDeckglWMS)),I=i(()=>import(`./simple-mesh-ypHRymUD.js`).then(e=>e.VLayerDeckglSimpleMesh)),L=i(()=>import(`./scenegraph-BVXLw8Cw.js`).then(e=>e.VLayerDeckglScenegraph)),R=i(()=>import(`./geoarrow-scatterplot-Cd2DK-iz.js`).then(e=>e.VLayerDeckglGeoArrowScatterplot)),z=i(()=>import(`./geoarrow-path-4ompjoL_.js`).then(e=>e.VLayerDeckglGeoArrowPath)),B=i(()=>import(`./geoarrow-polygon-DUlcZwlA.js`).then(e=>e.VLayerDeckglGeoArrowPolygon)),V=i(()=>import(`./geoarrow-solid-polygon-q14Ff9j9.js`).then(e=>e.VLayerDeckglGeoArrowSolidPolygon)),H=i(()=>import(`./geoarrow-text-DHvTakUd.js`).then(e=>e.VLayerDeckglGeoArrowText)),U=i(()=>import(`./geoarrow-trips-CwRSQdMU.js`).then(e=>e.VLayerDeckglGeoArrowTrips));export{r as DeckLayersKey,t as DeckOverlayKey,a as VLayerDeckgl,s as VLayerDeckglArc,g as VLayerDeckglBitmap,h as VLayerDeckglColumn,S as VLayerDeckglContour,z as VLayerDeckglGeoArrowPath,B as VLayerDeckglGeoArrowPolygon,R as VLayerDeckglGeoArrowScatterplot,V as VLayerDeckglGeoArrowSolidPolygon,H as VLayerDeckglGeoArrowText,U as VLayerDeckglGeoArrowTrips,N as VLayerDeckglGeohash,c as VLayerDeckglGeojson,j as VLayerDeckglGreatCircle,x as VLayerDeckglGrid,_ as VLayerDeckglGridCell,E as VLayerDeckglH3Cluster,T as VLayerDeckglH3Hexagon,y as VLayerDeckglHeatmap,b as VLayerDeckglHexagon,p as VLayerDeckglIcon,u as VLayerDeckglLine,D as VLayerDeckglMVT,l as VLayerDeckglPath,v as VLayerDeckglPointCloud,d as VLayerDeckglPolygon,P as VLayerDeckglQuadkey,M as VLayerDeckglS2,o as VLayerDeckglScatterplot,L as VLayerDeckglScenegraph,C as VLayerDeckglScreenGrid,I as VLayerDeckglSimpleMesh,f as VLayerDeckglSolidPolygon,A as VLayerDeckglTerrain,m as VLayerDeckglText,O as VLayerDeckglTile,k as VLayerDeckglTile3D,w as VLayerDeckglTrips,F as VLayerDeckglWMS,n as useDeckLayers,e as useDeckOverlay};
2
+ //# sourceMappingURL=deckgl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deckgl.js","names":[],"sources":["../src/layers/deckgl/index.ts"],"sourcesContent":["import { defineAsyncComponent, type Component } from 'vue';\n\nexport const VLayerDeckgl: Component = defineAsyncComponent(() =>\n import('./generic').then((m) => m.VLayerDeckgl),\n);\n\nexport const VLayerDeckglScatterplot: Component = defineAsyncComponent(() =>\n import('./scatterplot').then((m) => m.VLayerDeckglScatterplot),\n);\nexport const VLayerDeckglArc: Component = defineAsyncComponent(() =>\n import('./arc').then((m) => m.VLayerDeckglArc),\n);\nexport const VLayerDeckglGeojson: Component = defineAsyncComponent(() =>\n import('./geojson').then((m) => m.VLayerDeckglGeojson),\n);\nexport const VLayerDeckglPath: Component = defineAsyncComponent(() =>\n import('./path').then((m) => m.VLayerDeckglPath),\n);\nexport const VLayerDeckglLine: Component = defineAsyncComponent(() =>\n import('./line').then((m) => m.VLayerDeckglLine),\n);\nexport const VLayerDeckglPolygon: Component = defineAsyncComponent(() =>\n import('./polygon').then((m) => m.VLayerDeckglPolygon),\n);\nexport const VLayerDeckglSolidPolygon: Component = defineAsyncComponent(() =>\n import('./solid-polygon').then((m) => m.VLayerDeckglSolidPolygon),\n);\nexport const VLayerDeckglIcon: Component = defineAsyncComponent(() =>\n import('./icon').then((m) => m.VLayerDeckglIcon),\n);\nexport const VLayerDeckglText: Component = defineAsyncComponent(() =>\n import('./text').then((m) => m.VLayerDeckglText),\n);\nexport const VLayerDeckglColumn: Component = defineAsyncComponent(() =>\n import('./column').then((m) => m.VLayerDeckglColumn),\n);\nexport const VLayerDeckglBitmap: Component = defineAsyncComponent(() =>\n import('./bitmap').then((m) => m.VLayerDeckglBitmap),\n);\nexport const VLayerDeckglGridCell: Component = defineAsyncComponent(() =>\n import('./grid-cell').then((m) => m.VLayerDeckglGridCell),\n);\nexport const VLayerDeckglPointCloud: Component = defineAsyncComponent(() =>\n import('./point-cloud').then((m) => m.VLayerDeckglPointCloud),\n);\n\nexport const VLayerDeckglHeatmap: Component = defineAsyncComponent(() =>\n import('./heatmap').then((m) => m.VLayerDeckglHeatmap),\n);\nexport const VLayerDeckglHexagon: Component = defineAsyncComponent(() =>\n import('./hexagon').then((m) => m.VLayerDeckglHexagon),\n);\nexport const VLayerDeckglGrid: Component = defineAsyncComponent(() =>\n import('./grid').then((m) => m.VLayerDeckglGrid),\n);\nexport const VLayerDeckglContour: Component = defineAsyncComponent(() =>\n import('./contour').then((m) => m.VLayerDeckglContour),\n);\nexport const VLayerDeckglScreenGrid: Component = defineAsyncComponent(() =>\n import('./screen-grid').then((m) => m.VLayerDeckglScreenGrid),\n);\n\nexport const VLayerDeckglTrips: Component = defineAsyncComponent(() =>\n import('./trips').then((m) => m.VLayerDeckglTrips),\n);\nexport const VLayerDeckglH3Hexagon: Component = defineAsyncComponent(() =>\n import('./h3-hexagon').then((m) => m.VLayerDeckglH3Hexagon),\n);\nexport const VLayerDeckglH3Cluster: Component = defineAsyncComponent(() =>\n import('./h3-cluster').then((m) => m.VLayerDeckglH3Cluster),\n);\nexport const VLayerDeckglMVT: Component = defineAsyncComponent(() =>\n import('./mvt').then((m) => m.VLayerDeckglMVT),\n);\nexport const VLayerDeckglTile: Component = defineAsyncComponent(() =>\n import('./tile').then((m) => m.VLayerDeckglTile),\n);\nexport const VLayerDeckglTile3D: Component = defineAsyncComponent(() =>\n import('./tile-3d').then((m) => m.VLayerDeckglTile3D),\n);\nexport const VLayerDeckglTerrain: Component = defineAsyncComponent(() =>\n import('./terrain').then((m) => m.VLayerDeckglTerrain),\n);\nexport const VLayerDeckglGreatCircle: Component = defineAsyncComponent(() =>\n import('./great-circle').then((m) => m.VLayerDeckglGreatCircle),\n);\nexport const VLayerDeckglS2: Component = defineAsyncComponent(() =>\n import('./s2').then((m) => m.VLayerDeckglS2),\n);\nexport const VLayerDeckglGeohash: Component = defineAsyncComponent(() =>\n import('./geohash').then((m) => m.VLayerDeckglGeohash),\n);\nexport const VLayerDeckglQuadkey: Component = defineAsyncComponent(() =>\n import('./quadkey').then((m) => m.VLayerDeckglQuadkey),\n);\nexport const VLayerDeckglWMS: Component = defineAsyncComponent(() =>\n import('./wms').then((m) => m.VLayerDeckglWMS),\n);\n\nexport const VLayerDeckglSimpleMesh: Component = defineAsyncComponent(() =>\n import('./simple-mesh').then((m) => m.VLayerDeckglSimpleMesh),\n);\nexport const VLayerDeckglScenegraph: Component = defineAsyncComponent(() =>\n import('./scenegraph').then((m) => m.VLayerDeckglScenegraph),\n);\n\nexport const VLayerDeckglGeoArrowScatterplot: Component = defineAsyncComponent(\n () =>\n import('./geoarrow-scatterplot').then(\n (m) => m.VLayerDeckglGeoArrowScatterplot,\n ),\n);\nexport const VLayerDeckglGeoArrowPath: Component = defineAsyncComponent(() =>\n import('./geoarrow-path').then((m) => m.VLayerDeckglGeoArrowPath),\n);\nexport const VLayerDeckglGeoArrowPolygon: Component = defineAsyncComponent(() =>\n import('./geoarrow-polygon').then((m) => m.VLayerDeckglGeoArrowPolygon),\n);\nexport const VLayerDeckglGeoArrowSolidPolygon: Component = defineAsyncComponent(\n () =>\n import('./geoarrow-solid-polygon').then(\n (m) => m.VLayerDeckglGeoArrowSolidPolygon,\n ),\n);\nexport const VLayerDeckglGeoArrowText: Component = defineAsyncComponent(() =>\n import('./geoarrow-text').then((m) => m.VLayerDeckglGeoArrowText),\n);\nexport const VLayerDeckglGeoArrowTrips: Component = defineAsyncComponent(() =>\n import('./geoarrow-trips').then((m) => m.VLayerDeckglGeoArrowTrips),\n);\n\nexport {\n useDeckOverlay,\n useDeckLayers,\n DeckOverlayKey,\n DeckLayersKey,\n} from './_shared';\nexport * from './_shared/types';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{i as n}from"./useDeckOverlay-GlkH_rvP.js";import{defineComponent as r,onBeforeUnmount as i,renderSlot as a,watch as o}from"vue";const s=r({__name:`VLayerDeckgl`,props:{layer:{}},emits:[`click`,`hover`],setup(r,{emit:s}){let c=r,l=e(t),{addLayer:u,removeLayer:d,updateLayer:f}=n(l),p=e=>e.id,m=()=>{u(c.layer)};return o(l,e=>{e&&m()},{immediate:!0}),o(()=>c.layer,(e,t)=>{let n=t?p(t):null,r=p(e);n&&n!==r?(d(n),u(e)):f(r,e)},{deep:!0}),i(()=>{d(p(c.layer))}),(e,t)=>a(e.$slots,`default`)}});export{s as VLayerDeckgl};
2
+ //# sourceMappingURL=generic-B-YSsfL2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-B-YSsfL2.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 { 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 watch(\n map,\n (mapInstance) => {\n if (!mapInstance) return;\n // Register unconditionally once the map exists. addLayer() routes through\n // useDeckOverlay's initOverlay(), which robustly waits for style.load via\n // its own once-listener + polling. Gating here on isStyleLoaded() was racy:\n // if style.load already fired before this watch ran, the one-shot\n // .once('style.load') never fired and the layer was never registered.\n initializeLayer();\n },\n { immediate: true },\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":"+QAmBE,IAAM,EAAQ,EAOR,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,EAAc,GACV,EAAyB,GAG7B,MAAwB,CAC5B,EAAS,EAAM,KAAK,CACtB,SAEA,EACE,EACC,GAAgB,CACV,GAML,EAAgB,CAClB,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MACQ,EAAM,OACX,EAAU,IAAa,CACtB,IAAM,EAAQ,EAAW,EAAW,CAAQ,EAAI,KAC1C,EAAQ,EAAW,CAAQ,EAE7B,GAAS,IAAU,GACrB,EAAY,CAAK,EACjB,EAAS,CAAQ,GAEjB,EAAY,EAAO,CAAQ,CAE/B,EACA,CAAE,KAAM,EAAK,CACf,EAEA,MAAsB,CACpB,EAAY,EAAW,EAAM,KAAK,CAAC,CACrC,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{a as n,i as r}from"./useDeckOverlay-GlkH_rvP.js";import{c as i,n as a,o,t as s}from"./arrow-B87Hvf8z.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(t),{addLayer:v,removeLayer:y,updateLayer:b}=r(_),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-4ompjoL_.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"geoarrow-path-4ompjoL_.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":"+QA8BE,kdAwBA,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,EAAa,EAEjB,IAAI,EAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAQ,SAAS,CAAC,EAE3C,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EACJ,EAAmB,EAAM,IAAI,GAAK,EAAwB,EAAM,IAAI,EACtE,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,0FACF,EACO,KAET,GAAI,CAeF,OAAO,EAAQ,IAdG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,CAAO,EACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,aAAc,EAAU,aACxB,WAAY,CACV,QAAS,CAAE,MAAO,EAAU,UAAW,KAAM,CAAE,CACjD,CACF,EACA,UAAW,OACX,QAAU,GAAsB,EAAK,QAAS,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CACe,CAAK,CACtB,OAAS,EAAK,CAKZ,OAJA,QAAQ,MACN,wDACA,CACF,EACO,IACT,CACF,SAWA,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,qEACF,GAC+B,SAAS,CAC1C,CAEgC,EAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAS,CAAK,CAC3B,CAAC,EAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAEA,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,QACR,MACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{a as n,i as r}from"./useDeckOverlay-GlkH_rvP.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-B87Hvf8z.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(t),{addLayer:y,removeLayer:b,updateLayer:x}=r(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-DUlcZwlA.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"geoarrow-polygon-DUlcZwlA.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":"sRAgCE,wnBAgCA,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,EAAa,EAEjB,IAAI,EAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,aACA,kBACA,YACF,CAAC,EAEK,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAqB,EAAM,IAAI,EACvC,EAAS,EAAQ,KAAO,EAAgB,EAAM,IAAI,EAClD,EAAO,GAAS,EACtB,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,uFACF,EACO,KAET,IAAM,EAAQ,EAAqB,CAAI,EACvC,GAAI,CASF,OAAO,EAAQ,IARG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,CAAO,EACrE,GAAI,EAAM,GACV,KAAM,EACN,WAAa,GAAqB,EAClC,QAAU,GAAsB,EAAK,QAAS,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CACe,CAAK,CACtB,OAAS,EAAK,CAKZ,OAJA,QAAQ,MACN,2DACA,CACF,EACO,IACT,CACF,SAWA,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,qEACF,GAC+B,YAAY,CAC7C,CAEgC,EAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAS,CAAK,CAC3B,CAAC,EAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAKA,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,QACR,MACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{a as n,i as r}from"./useDeckOverlay-GlkH_rvP.js";import{c as i,i as a,o}from"./arrow-B87Hvf8z.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(t),{addLayer:_,removeLayer:v,updateLayer:y}=r(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-Cd2DK-iz.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"geoarrow-scatterplot-Cd2DK-iz.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":"wQA2BE,smBA8BA,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,CAAM,EACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,CAAG,EAE3D,EAAa,EAEjB,IAAI,EAEA,EAAU,IAAI,IAAI,CAAC,KAAM,MAAM,CAAC,EAEhC,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAY,EAAc,EAAM,IAAI,EAC1C,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,mFACF,EACO,KAET,GAAI,CAaF,OAAO,EAAQ,IAZG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,CAAO,EACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,WAAY,CACV,YAAa,CAAE,MAAO,EAAU,UAAW,KAAM,CAAE,CACrD,CACF,EACA,QAAU,GAAsB,EAAK,QAAS,CAAI,EAClD,QAAU,GAAsB,EAAK,QAAS,CAAI,CACpD,CACe,CAAK,CACtB,OAAS,EAAK,CAKZ,OAJA,QAAQ,MACN,+DACA,CACF,EACO,IACT,CACF,SAWA,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,qEACF,GAC+B,gBAAgB,CACjD,CAEgC,EAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAS,CAAK,CAC3B,CAAC,EAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAEA,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,QACR,MACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,EAAY,EACtB,GAAO,EAAY,EAAM,GAAI,CAAK,CACxC,CACF,EAEA,MAAsB,CACpB,EAAY,EAAM,EAAE,CACtB,CAAC,SAID,EAAa,EAAA,OAAA,SAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"./symbols-DXKzIgbY.js";import{a as n,i as r}from"./useDeckOverlay-GlkH_rvP.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-B87Hvf8z.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(t),{addLayer:y,removeLayer:b,updateLayer:x}=r(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-q14Ff9j9.js.map