@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.
- package/README.md +42 -15
- package/dist/arc-B_fAMcpz.js +2 -0
- package/dist/arc-B_fAMcpz.js.map +1 -0
- package/dist/{arrow-4ecDVUFv.js → arrow-B87Hvf8z.js} +1 -1
- package/dist/{arrow-4ecDVUFv.js.map → arrow-B87Hvf8z.js.map} +1 -1
- package/dist/bitmap-C_yi2tt7.js +2 -0
- package/dist/bitmap-C_yi2tt7.js.map +1 -0
- package/dist/cog-Cksxp4kb.js +2 -0
- package/dist/cog-Cksxp4kb.js.map +1 -0
- package/dist/column-CN436hkx.js +2 -0
- package/dist/column-CN436hkx.js.map +1 -0
- package/dist/contour-DJbs8Kf4.js +2 -0
- package/dist/contour-DJbs8Kf4.js.map +1 -0
- package/dist/deckgl.d.ts +47 -0
- package/dist/deckgl.js +2 -0
- package/dist/deckgl.js.map +1 -0
- package/dist/generic-B-YSsfL2.js +2 -0
- package/dist/generic-B-YSsfL2.js.map +1 -0
- package/dist/geoarrow-path-4ompjoL_.js +2 -0
- package/dist/{geoarrow-path-B2LJ956d.js.map → geoarrow-path-4ompjoL_.js.map} +1 -1
- package/dist/geoarrow-polygon-DUlcZwlA.js +2 -0
- package/dist/{geoarrow-polygon-C9mZ7552.js.map → geoarrow-polygon-DUlcZwlA.js.map} +1 -1
- package/dist/geoarrow-scatterplot-Cd2DK-iz.js +2 -0
- package/dist/{geoarrow-scatterplot-CM5842q_.js.map → geoarrow-scatterplot-Cd2DK-iz.js.map} +1 -1
- package/dist/geoarrow-solid-polygon-q14Ff9j9.js +2 -0
- package/dist/{geoarrow-solid-polygon-DIm9mciL.js.map → geoarrow-solid-polygon-q14Ff9j9.js.map} +1 -1
- package/dist/geoarrow-text-DHvTakUd.js +2 -0
- package/dist/{geoarrow-text-ClY3q_nR.js.map → geoarrow-text-DHvTakUd.js.map} +1 -1
- package/dist/geoarrow-trips-CwRSQdMU.js +2 -0
- package/dist/{geoarrow-trips-BqbIoMt8.js.map → geoarrow-trips-CwRSQdMU.js.map} +1 -1
- package/dist/geohash-DfnNENva.js +2 -0
- package/dist/geohash-DfnNENva.js.map +1 -0
- package/dist/geojson-BRWVICwI.js +2 -0
- package/dist/geojson-BRWVICwI.js.map +1 -0
- package/dist/geotiff.d.ts +50 -0
- package/dist/geotiff.js +2 -0
- package/dist/geotiff.js.map +1 -0
- package/dist/great-circle-Da5XIa2p.js +2 -0
- package/dist/great-circle-Da5XIa2p.js.map +1 -0
- package/dist/grid-DKP8clpW.js +2 -0
- package/dist/grid-DKP8clpW.js.map +1 -0
- package/dist/grid-cell-CZ41kY8K.js +2 -0
- package/dist/grid-cell-CZ41kY8K.js.map +1 -0
- package/dist/h3-cluster-Cco_QCbU.js +2 -0
- package/dist/h3-cluster-Cco_QCbU.js.map +1 -0
- package/dist/h3-hexagon-BqvZfU5b.js +2 -0
- package/dist/h3-hexagon-BqvZfU5b.js.map +1 -0
- package/dist/heatmap-Bq7-L0jp.js +2 -0
- package/dist/heatmap-Bq7-L0jp.js.map +1 -0
- package/dist/hexagon-T0vesB_G.js +2 -0
- package/dist/hexagon-T0vesB_G.js.map +1 -0
- package/dist/icon-Bwm2m8b4.js +2 -0
- package/dist/icon-Bwm2m8b4.js.map +1 -0
- package/dist/index-2D1oVTKr.d.ts +37 -0
- package/dist/index.d.ts +113 -492
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lidar.d.ts +232 -0
- package/dist/lidar.js +2 -0
- package/dist/lidar.js.map +1 -0
- package/dist/line-2EN6ukkf.js +2 -0
- package/dist/line-2EN6ukkf.js.map +1 -0
- package/dist/mosaic-DUwBxfGg.js +43 -0
- package/dist/mosaic-DUwBxfGg.js.map +1 -0
- package/dist/multi-cog-B2kVLX90.js +2 -0
- package/dist/multi-cog-B2kVLX90.js.map +1 -0
- package/dist/mvt-q6iXzmEF.js +2 -0
- package/dist/mvt-q6iXzmEF.js.map +1 -0
- package/dist/path-CKCx5_Gi.js +2 -0
- package/dist/path-CKCx5_Gi.js.map +1 -0
- package/dist/point-cloud-C9zJxZDT.js +2 -0
- package/dist/point-cloud-C9zJxZDT.js.map +1 -0
- package/dist/polygon-DRpsvg1W.js +2 -0
- package/dist/polygon-DRpsvg1W.js.map +1 -0
- package/dist/quadkey-DfoG2hLL.js +2 -0
- package/dist/quadkey-DfoG2hLL.js.map +1 -0
- package/dist/s2-DlEDAkpJ.js +2 -0
- package/dist/s2-DlEDAkpJ.js.map +1 -0
- package/dist/scatterplot-B9zXE6Jf.js +2 -0
- package/dist/scatterplot-B9zXE6Jf.js.map +1 -0
- package/dist/scenegraph-BVXLw8Cw.js +2 -0
- package/dist/scenegraph-BVXLw8Cw.js.map +1 -0
- package/dist/screen-grid-Dgj0QdEI.js +2 -0
- package/dist/screen-grid-Dgj0QdEI.js.map +1 -0
- package/dist/simple-mesh-ypHRymUD.js +2 -0
- package/dist/simple-mesh-ypHRymUD.js.map +1 -0
- package/dist/solid-polygon-DyWHVxEO.js +2 -0
- package/dist/solid-polygon-DyWHVxEO.js.map +1 -0
- package/dist/starfield-Djc5vy6K.js +2 -0
- package/dist/starfield-Djc5vy6K.js.map +1 -0
- package/dist/starfield.d.ts +7 -0
- package/dist/starfield.js +2 -0
- package/dist/starfield.js.map +1 -0
- package/dist/symbols-DXKzIgbY.js +2 -0
- package/dist/symbols-DXKzIgbY.js.map +1 -0
- package/dist/terrain-D3LKaDfn.js +2 -0
- package/dist/terrain-D3LKaDfn.js.map +1 -0
- package/dist/text-C6lF4GFS.js +2 -0
- package/dist/text-C6lF4GFS.js.map +1 -0
- package/dist/tile-3d-DHzr5_s2.js +2 -0
- package/dist/tile-3d-DHzr5_s2.js.map +1 -0
- package/dist/tile-DqpbfgRL.js +2 -0
- package/dist/tile-DqpbfgRL.js.map +1 -0
- package/dist/trips-CchyX_8N.js +2 -0
- package/dist/trips-CchyX_8N.js.map +1 -0
- package/dist/useDeckOverlay-GlkH_rvP.js +2 -0
- package/dist/useDeckOverlay-GlkH_rvP.js.map +1 -0
- package/dist/useDeckOverlay-JoRzVQ7g.d.ts +43 -0
- package/dist/wind-particle-Rs67QBQ9.js +2 -0
- package/dist/wind-particle-Rs67QBQ9.js.map +1 -0
- package/dist/wind.d.ts +9 -0
- package/dist/wind.js +2 -0
- package/dist/wind.js.map +1 -0
- package/dist/wms-KlHzzqd3.js +2 -0
- package/dist/wms-KlHzzqd3.js.map +1 -0
- package/dist/zarr-Czf44Tqd.js +2 -0
- package/dist/zarr-Czf44Tqd.js.map +1 -0
- package/package.json +36 -16
- package/dist/arc-oPHfD4K7.js +0 -2
- package/dist/arc-oPHfD4K7.js.map +0 -1
- package/dist/bitmap-C04WgKea.js +0 -2
- package/dist/bitmap-C04WgKea.js.map +0 -1
- package/dist/cog-Cq7xvN9B.js +0 -2
- package/dist/cog-Cq7xvN9B.js.map +0 -1
- package/dist/column-Dx4A711w.js +0 -2
- package/dist/column-Dx4A711w.js.map +0 -1
- package/dist/contour-Dgvb_bGm.js +0 -2
- package/dist/contour-Dgvb_bGm.js.map +0 -1
- package/dist/generic-BKvcZn9n.js +0 -2
- package/dist/generic-BKvcZn9n.js.map +0 -1
- package/dist/geoarrow-path-B2LJ956d.js +0 -2
- package/dist/geoarrow-polygon-C9mZ7552.js +0 -2
- package/dist/geoarrow-scatterplot-CM5842q_.js +0 -2
- package/dist/geoarrow-solid-polygon-DIm9mciL.js +0 -2
- package/dist/geoarrow-text-ClY3q_nR.js +0 -2
- package/dist/geoarrow-trips-BqbIoMt8.js +0 -2
- package/dist/geohash-Pq83atW2.js +0 -2
- package/dist/geohash-Pq83atW2.js.map +0 -1
- package/dist/geojson-cOxJcO-8.js +0 -2
- package/dist/geojson-cOxJcO-8.js.map +0 -1
- package/dist/great-circle-C6GDbX1c.js +0 -2
- package/dist/great-circle-C6GDbX1c.js.map +0 -1
- package/dist/grid-BPfXfID8.js +0 -2
- package/dist/grid-BPfXfID8.js.map +0 -1
- package/dist/grid-cell-T0-xdlk_.js +0 -2
- package/dist/grid-cell-T0-xdlk_.js.map +0 -1
- package/dist/h3-cluster-BsvMbaYv.js +0 -2
- package/dist/h3-cluster-BsvMbaYv.js.map +0 -1
- package/dist/h3-hexagon-Cx1qlgKb.js +0 -2
- package/dist/h3-hexagon-Cx1qlgKb.js.map +0 -1
- package/dist/heatmap-ByafStP6.js +0 -2
- package/dist/heatmap-ByafStP6.js.map +0 -1
- package/dist/hexagon-CWRkTkkj.js +0 -2
- package/dist/hexagon-CWRkTkkj.js.map +0 -1
- package/dist/icon-WggKPJv7.js +0 -2
- package/dist/icon-WggKPJv7.js.map +0 -1
- package/dist/line-B5e9w1td.js +0 -2
- package/dist/line-B5e9w1td.js.map +0 -1
- package/dist/mosaic-Cl7rtAXN.js +0 -43
- package/dist/mosaic-Cl7rtAXN.js.map +0 -1
- package/dist/multi-cog-DAJbnElE.js +0 -2
- package/dist/multi-cog-DAJbnElE.js.map +0 -1
- package/dist/mvt-D0GYYs-Z.js +0 -2
- package/dist/mvt-D0GYYs-Z.js.map +0 -1
- package/dist/path-mcVHjyaA.js +0 -2
- package/dist/path-mcVHjyaA.js.map +0 -1
- package/dist/point-cloud-CNpLW-hf.js +0 -2
- package/dist/point-cloud-CNpLW-hf.js.map +0 -1
- package/dist/polygon-B5mGSTte.js +0 -2
- package/dist/polygon-B5mGSTte.js.map +0 -1
- package/dist/quadkey-DGHCEKmx.js +0 -2
- package/dist/quadkey-DGHCEKmx.js.map +0 -1
- package/dist/s2-MuPaEFbo.js +0 -2
- package/dist/s2-MuPaEFbo.js.map +0 -1
- package/dist/scatterplot-BBeJkOdi.js +0 -2
- package/dist/scatterplot-BBeJkOdi.js.map +0 -1
- package/dist/scenegraph-DTM4oQ_J.js +0 -2
- package/dist/scenegraph-DTM4oQ_J.js.map +0 -1
- package/dist/screen-grid-CxlQC4Kb.js +0 -2
- package/dist/screen-grid-CxlQC4Kb.js.map +0 -1
- package/dist/simple-mesh-BxLUvOJK.js +0 -2
- package/dist/simple-mesh-BxLUvOJK.js.map +0 -1
- package/dist/solid-polygon-DwQBLTy0.js +0 -2
- package/dist/solid-polygon-DwQBLTy0.js.map +0 -1
- package/dist/starfield-D0gIX-34.js +0 -2
- package/dist/starfield-D0gIX-34.js.map +0 -1
- package/dist/symbols-CFCXX1_B.js +0 -2
- package/dist/symbols-CFCXX1_B.js.map +0 -1
- package/dist/terrain-f-XAakfL.js +0 -2
- package/dist/terrain-f-XAakfL.js.map +0 -1
- package/dist/text-BOvG9JHc.js +0 -2
- package/dist/text-BOvG9JHc.js.map +0 -1
- package/dist/tile-3d-DG91zS0N.js +0 -2
- package/dist/tile-3d-DG91zS0N.js.map +0 -1
- package/dist/tile-AhmnAg8V.js +0 -2
- package/dist/tile-AhmnAg8V.js.map +0 -1
- package/dist/trips-DwzBmfe0.js +0 -2
- package/dist/trips-DwzBmfe0.js.map +0 -1
- package/dist/wind-particle-DW0nCMls.js +0 -2
- package/dist/wind-particle-DW0nCMls.js.map +0 -1
- package/dist/wms-vy1yMBNb.js +0 -2
- package/dist/wms-vy1yMBNb.js.map +0 -1
- package/dist/zarr-6SNoX07d.js +0 -2
- 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 —
|
|
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 —
|
|
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 —
|
|
69
|
+
# Zarr — import from '@geoql/v-maplibre/geotiff'
|
|
70
|
+
# VLayerZarr
|
|
68
71
|
pnpm add @developmentseed/deck.gl-zarr zarrita
|
|
69
72
|
|
|
70
|
-
# GeoArrow —
|
|
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 —
|
|
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 —
|
|
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 —
|
|
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
|
-
- **`
|
|
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
|
-
- `
|
|
191
|
-
- `
|
|
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
|
-
- `
|
|
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,
|
|
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
|
-
<
|
|
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
|
-
></
|
|
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-
|
|
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"}
|
package/dist/deckgl.d.ts
ADDED
|
@@ -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":"iHAEA,MAAa,EAA0B,MACrC,OAAO,yBAAa,KAAM,GAAM,EAAE,YAAY,CAChD,EAEa,EAAqC,MAChD,OAAO,6BAAiB,KAAM,GAAM,EAAE,uBAAuB,CAC/D,EACa,EAA6B,MACxC,OAAO,qBAAS,KAAM,GAAM,EAAE,eAAe,CAC/C,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAAsC,MACjD,OAAO,+BAAmB,KAAM,GAAM,EAAE,wBAAwB,CAClE,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAAgC,MAC3C,OAAO,wBAAY,KAAM,GAAM,EAAE,kBAAkB,CACrD,EACa,EAAgC,MAC3C,OAAO,wBAAY,KAAM,GAAM,EAAE,kBAAkB,CACrD,EACa,EAAkC,MAC7C,OAAO,2BAAe,KAAM,GAAM,EAAE,oBAAoB,CAC1D,EACa,EAAoC,MAC/C,OAAO,6BAAiB,KAAM,GAAM,EAAE,sBAAsB,CAC9D,EAEa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAAoC,MAC/C,OAAO,6BAAiB,KAAM,GAAM,EAAE,sBAAsB,CAC9D,EAEa,EAA+B,MAC1C,OAAO,uBAAW,KAAM,GAAM,EAAE,iBAAiB,CACnD,EACa,EAAmC,MAC9C,OAAO,4BAAgB,KAAM,GAAM,EAAE,qBAAqB,CAC5D,EACa,EAAmC,MAC9C,OAAO,4BAAgB,KAAM,GAAM,EAAE,qBAAqB,CAC5D,EACa,EAA6B,MACxC,OAAO,qBAAS,KAAM,GAAM,EAAE,eAAe,CAC/C,EACa,EAA8B,MACzC,OAAO,sBAAU,KAAM,GAAM,EAAE,gBAAgB,CACjD,EACa,EAAgC,MAC3C,OAAO,yBAAa,KAAM,GAAM,EAAE,kBAAkB,CACtD,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAAqC,MAChD,OAAO,8BAAkB,KAAM,GAAM,EAAE,uBAAuB,CAChE,EACa,EAA4B,MACvC,OAAO,oBAAQ,KAAM,GAAM,EAAE,cAAc,CAC7C,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAAiC,MAC5C,OAAO,yBAAa,KAAM,GAAM,EAAE,mBAAmB,CACvD,EACa,EAA6B,MACxC,OAAO,qBAAS,KAAM,GAAM,EAAE,eAAe,CAC/C,EAEa,EAAoC,MAC/C,OAAO,6BAAiB,KAAM,GAAM,EAAE,sBAAsB,CAC9D,EACa,EAAoC,MAC/C,OAAO,4BAAgB,KAAM,GAAM,EAAE,sBAAsB,CAC7D,EAEa,EAA6C,MAEtD,OAAO,sCAA0B,KAC9B,GAAM,EAAE,+BACX,CACJ,EACa,EAAsC,MACjD,OAAO,+BAAmB,KAAM,GAAM,EAAE,wBAAwB,CAClE,EACa,EAAyC,MACpD,OAAO,kCAAsB,KAAM,GAAM,EAAE,2BAA2B,CACxE,EACa,EAA8C,MAEvD,OAAO,wCAA4B,KAChC,GAAM,EAAE,gCACX,CACJ,EACa,EAAsC,MACjD,OAAO,+BAAmB,KAAM,GAAM,EAAE,wBAAwB,CAClE,EACa,EAAuC,MAClD,OAAO,gCAAoB,KAAM,GAAM,EAAE,yBAAyB,CACpE"}
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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
|