@geoql/v-maplibre 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{arc-sQuzag_9.js → arc-oPHfD4K7.js} +2 -2
- package/dist/{arc-sQuzag_9.js.map → arc-oPHfD4K7.js.map} +1 -1
- package/dist/{bitmap-C9wTsmdA.js → bitmap-C04WgKea.js} +2 -2
- package/dist/{bitmap-C9wTsmdA.js.map → bitmap-C04WgKea.js.map} +1 -1
- package/dist/{cog-BC2mhbA-.js → cog-Cq7xvN9B.js} +2 -2
- package/dist/{cog-BC2mhbA-.js.map → cog-Cq7xvN9B.js.map} +1 -1
- package/dist/{column-Dai69vdE.js → column-Dx4A711w.js} +2 -2
- package/dist/{column-Dai69vdE.js.map → column-Dx4A711w.js.map} +1 -1
- package/dist/{contour-BVSFeMXQ.js → contour-Dgvb_bGm.js} +2 -2
- package/dist/{contour-BVSFeMXQ.js.map → contour-Dgvb_bGm.js.map} +1 -1
- package/dist/{generic-DLtJwFOg.js → generic-BKvcZn9n.js} +2 -2
- package/dist/{generic-DLtJwFOg.js.map → generic-BKvcZn9n.js.map} +1 -1
- package/dist/{geoarrow-path-CV0aOugP.js → geoarrow-path-B2LJ956d.js} +2 -2
- package/dist/{geoarrow-path-CV0aOugP.js.map → geoarrow-path-B2LJ956d.js.map} +1 -1
- package/dist/{geoarrow-polygon-BjfqZpaf.js → geoarrow-polygon-C9mZ7552.js} +2 -2
- package/dist/{geoarrow-polygon-BjfqZpaf.js.map → geoarrow-polygon-C9mZ7552.js.map} +1 -1
- package/dist/{geoarrow-scatterplot-DxkqOIWR.js → geoarrow-scatterplot-CM5842q_.js} +2 -2
- package/dist/{geoarrow-scatterplot-DxkqOIWR.js.map → geoarrow-scatterplot-CM5842q_.js.map} +1 -1
- package/dist/{geoarrow-solid-polygon-LGavbdMg.js → geoarrow-solid-polygon-DIm9mciL.js} +2 -2
- package/dist/{geoarrow-solid-polygon-LGavbdMg.js.map → geoarrow-solid-polygon-DIm9mciL.js.map} +1 -1
- package/dist/{geoarrow-text-8HY70yYe.js → geoarrow-text-ClY3q_nR.js} +2 -2
- package/dist/{geoarrow-text-8HY70yYe.js.map → geoarrow-text-ClY3q_nR.js.map} +1 -1
- package/dist/{geoarrow-trips-Bqc-_N6F.js → geoarrow-trips-BqbIoMt8.js} +2 -2
- package/dist/{geoarrow-trips-Bqc-_N6F.js.map → geoarrow-trips-BqbIoMt8.js.map} +1 -1
- package/dist/{geohash-Bq6Va31-.js → geohash-Pq83atW2.js} +2 -2
- package/dist/{geohash-Bq6Va31-.js.map → geohash-Pq83atW2.js.map} +1 -1
- package/dist/{geojson-DmmblQfq.js → geojson-cOxJcO-8.js} +2 -2
- package/dist/{geojson-DmmblQfq.js.map → geojson-cOxJcO-8.js.map} +1 -1
- package/dist/{great-circle-B3wrKr2V.js → great-circle-C6GDbX1c.js} +2 -2
- package/dist/{great-circle-B3wrKr2V.js.map → great-circle-C6GDbX1c.js.map} +1 -1
- package/dist/{grid-d5GMfgA7.js → grid-BPfXfID8.js} +2 -2
- package/dist/{grid-d5GMfgA7.js.map → grid-BPfXfID8.js.map} +1 -1
- package/dist/{grid-cell-CTiUtStS.js → grid-cell-T0-xdlk_.js} +2 -2
- package/dist/{grid-cell-CTiUtStS.js.map → grid-cell-T0-xdlk_.js.map} +1 -1
- package/dist/{h3-cluster-BqU_KkMN.js → h3-cluster-BsvMbaYv.js} +2 -2
- package/dist/{h3-cluster-BqU_KkMN.js.map → h3-cluster-BsvMbaYv.js.map} +1 -1
- package/dist/{h3-hexagon-E-7rMATA.js → h3-hexagon-Cx1qlgKb.js} +2 -2
- package/dist/{h3-hexagon-E-7rMATA.js.map → h3-hexagon-Cx1qlgKb.js.map} +1 -1
- package/dist/{heatmap-CToABGhe.js → heatmap-ByafStP6.js} +2 -2
- package/dist/{heatmap-CToABGhe.js.map → heatmap-ByafStP6.js.map} +1 -1
- package/dist/hexagon-CWRkTkkj.js +2 -0
- package/dist/hexagon-CWRkTkkj.js.map +1 -0
- package/dist/{icon-dGkYJha7.js → icon-WggKPJv7.js} +2 -2
- package/dist/{icon-dGkYJha7.js.map → icon-WggKPJv7.js.map} +1 -1
- package/dist/index.d.ts +19 -10
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{line-BqRkZ9qg.js → line-B5e9w1td.js} +2 -2
- package/dist/{line-BqRkZ9qg.js.map → line-B5e9w1td.js.map} +1 -1
- package/dist/{mosaic-BdOpB_UM.js → mosaic-Cl7rtAXN.js} +2 -2
- package/dist/{mosaic-BdOpB_UM.js.map → mosaic-Cl7rtAXN.js.map} +1 -1
- package/dist/{multi-cog-RzUpiduc.js → multi-cog-DAJbnElE.js} +2 -2
- package/dist/{multi-cog-RzUpiduc.js.map → multi-cog-DAJbnElE.js.map} +1 -1
- package/dist/{mvt-DKjRIMv0.js → mvt-D0GYYs-Z.js} +2 -2
- package/dist/{mvt-DKjRIMv0.js.map → mvt-D0GYYs-Z.js.map} +1 -1
- package/dist/{path-QpGANcDO.js → path-mcVHjyaA.js} +2 -2
- package/dist/{path-QpGANcDO.js.map → path-mcVHjyaA.js.map} +1 -1
- package/dist/{point-cloud-CwNI1kj4.js → point-cloud-CNpLW-hf.js} +2 -2
- package/dist/{point-cloud-CwNI1kj4.js.map → point-cloud-CNpLW-hf.js.map} +1 -1
- package/dist/{polygon-CnEkEdCz.js → polygon-B5mGSTte.js} +2 -2
- package/dist/{polygon-CnEkEdCz.js.map → polygon-B5mGSTte.js.map} +1 -1
- package/dist/{quadkey-DqvKjWw3.js → quadkey-DGHCEKmx.js} +2 -2
- package/dist/{quadkey-DqvKjWw3.js.map → quadkey-DGHCEKmx.js.map} +1 -1
- package/dist/{s2-BHisRsYi.js → s2-MuPaEFbo.js} +2 -2
- package/dist/{s2-BHisRsYi.js.map → s2-MuPaEFbo.js.map} +1 -1
- package/dist/{scatterplot-DtFjVt95.js → scatterplot-BBeJkOdi.js} +2 -2
- package/dist/{scatterplot-DtFjVt95.js.map → scatterplot-BBeJkOdi.js.map} +1 -1
- package/dist/{scenegraph-DfsmFuLy.js → scenegraph-DTM4oQ_J.js} +2 -2
- package/dist/{scenegraph-DfsmFuLy.js.map → scenegraph-DTM4oQ_J.js.map} +1 -1
- package/dist/{screen-grid-C-Ge9TH9.js → screen-grid-CxlQC4Kb.js} +2 -2
- package/dist/{screen-grid-C-Ge9TH9.js.map → screen-grid-CxlQC4Kb.js.map} +1 -1
- package/dist/{simple-mesh-CwDv4_8p.js → simple-mesh-BxLUvOJK.js} +2 -2
- package/dist/{simple-mesh-CwDv4_8p.js.map → simple-mesh-BxLUvOJK.js.map} +1 -1
- package/dist/{solid-polygon-DS3vtguq.js → solid-polygon-DwQBLTy0.js} +2 -2
- package/dist/{solid-polygon-DS3vtguq.js.map → solid-polygon-DwQBLTy0.js.map} +1 -1
- package/dist/{starfield-DnXurhKv.js → starfield-D0gIX-34.js} +2 -2
- package/dist/{starfield-DnXurhKv.js.map → starfield-D0gIX-34.js.map} +1 -1
- package/dist/symbols-CFCXX1_B.js +2 -0
- package/dist/symbols-CFCXX1_B.js.map +1 -0
- package/dist/{terrain-Vnqb4j1R.js → terrain-f-XAakfL.js} +2 -2
- package/dist/{terrain-Vnqb4j1R.js.map → terrain-f-XAakfL.js.map} +1 -1
- package/dist/{text-BuHw5Jdf.js → text-BOvG9JHc.js} +2 -2
- package/dist/{text-BuHw5Jdf.js.map → text-BOvG9JHc.js.map} +1 -1
- package/dist/{tile-3d-CAbU8BnN.js → tile-3d-DG91zS0N.js} +2 -2
- package/dist/{tile-3d-CAbU8BnN.js.map → tile-3d-DG91zS0N.js.map} +1 -1
- package/dist/{tile-B03s67tw.js → tile-AhmnAg8V.js} +2 -2
- package/dist/{tile-B03s67tw.js.map → tile-AhmnAg8V.js.map} +1 -1
- package/dist/{trips-Cy2yQXp7.js → trips-DwzBmfe0.js} +2 -2
- package/dist/{trips-Cy2yQXp7.js.map → trips-DwzBmfe0.js.map} +1 -1
- package/dist/v-maplibre.css +2 -2
- package/dist/{wind-particle-C1OQmbu7.js → wind-particle-DW0nCMls.js} +2 -2
- package/dist/{wind-particle-C1OQmbu7.js.map → wind-particle-DW0nCMls.js.map} +1 -1
- package/dist/{wms-toc-Os2F.js → wms-vy1yMBNb.js} +2 -2
- package/dist/{wms-toc-Os2F.js.map → wms-vy1yMBNb.js.map} +1 -1
- package/dist/{zarr-CGUO8nTA.js → zarr-6SNoX07d.js} +2 -2
- package/dist/{zarr-CGUO8nTA.js.map → zarr-6SNoX07d.js.map} +1 -1
- package/package.json +1 -1
- package/dist/hexagon-B7QFHPOG.js +0 -2
- package/dist/hexagon-B7QFHPOG.js.map +0 -1
- package/dist/symbols-CVfar3bo.js +0 -2
- package/dist/symbols-CVfar3bo.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=arc-
|
|
1
|
+
import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ArcLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglArc`,props:{id:{},data:{},getSourcePosition:{},getTargetPosition:{},getSourceColor:{},getTargetColor:{},getWidth:{},getHeight:{},getTilt:{},greatCircle:{type:Boolean,default:!1},numSegments:{default:50},widthUnits:{default:`pixels`},widthScale:{default:1},widthMinPixels:{default:0},widthMaxPixels:{default:2**53-1},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getSourcePosition:u.getSourcePosition,getTargetPosition:u.getTargetPosition,getSourceColor:u.getSourceColor??[255,140,0],getTargetColor:u.getTargetColor??[0,200,255],getWidth:u.getWidth??1,getHeight:u.getHeight??1,getTilt:u.getTilt??0,greatCircle:u.greatCircle,numSegments:u.numSegments,widthUnits:u.widthUnits,widthScale:u.widthScale,widthMinPixels:u.widthMinPixels,widthMaxPixels:u.widthMaxPixels,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getSourcePosition,u.getTargetPosition,u.getSourceColor,u.getTargetColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglArc};
|
|
2
|
+
//# sourceMappingURL=arc-oPHfD4K7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arc-
|
|
1
|
+
{"version":3,"file":"arc-oPHfD4K7.js","names":[],"sources":["../src/layers/deckgl/arc/VLayerDeckglArc.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render curved 3D arcs between coordinate pairs.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ArcLayer } from '@deck.gl/layers';\n import type { ArcLayerProps } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getSourcePosition: Accessor<D, Position>;\n getTargetPosition: Accessor<D, Position>;\n getSourceColor?: Accessor<D, Color>;\n getTargetColor?: Accessor<D, Color>;\n getWidth?: Accessor<D, number>;\n getHeight?: Accessor<D, number>;\n getTilt?: Accessor<D, number>;\n greatCircle?: boolean;\n numSegments?: number;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n greatCircle: false,\n numSegments: 50,\n widthUnits: 'pixels',\n widthScale: 1,\n widthMinPixels: 0,\n widthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ArcLayer({\n id: props.id,\n data: props.data,\n getSourcePosition: props.getSourcePosition,\n getTargetPosition: props.getTargetPosition,\n getSourceColor: props.getSourceColor ?? [255, 140, 0],\n getTargetColor: props.getTargetColor ?? [0, 200, 255],\n getWidth: props.getWidth ?? 1,\n getHeight: props.getHeight ?? 1,\n getTilt: props.getTilt ?? 0,\n greatCircle: props.greatCircle,\n numSegments: props.numSegments,\n widthUnits: props.widthUnits,\n widthScale: props.widthScale,\n widthMinPixels: props.widthMinPixels,\n widthMaxPixels: props.widthMaxPixels,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as ArcLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getSourcePosition,\n props.getTargetPosition,\n props.getSourceColor,\n props.getTargetColor,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"6uBA4CE,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAS,CAClB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,eAAgB,EAAM,gBAAkB,CAAC,IAAK,IAAK,EAAC,CACpD,eAAgB,EAAM,gBAAkB,CAAC,EAAG,IAAK,IAAG,CACpD,SAAU,EAAM,UAAY,EAC5B,UAAW,EAAM,WAAa,EAC9B,QAAS,EAAM,SAAW,EAC1B,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,WAAY,EAAM,WAClB,WAAY,EAAM,WAClB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClC,CAAA,CAGd,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,kBACN,EAAM,kBACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=bitmap-
|
|
1
|
+
import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{BitmapLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglBitmap`,props:{id:{},image:{},bounds:{},loadOptions:{},textureParameters:{},desaturate:{default:0},transparentColor:{},tintColor:{},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,image:u.image,bounds:u.bounds,loadOptions:u.loadOptions,textureParameters:u.textureParameters,desaturate:u.desaturate,transparentColor:u.transparentColor??[0,0,0,0],tintColor:u.tintColor??[255,255,255],opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.image,u.bounds,u.desaturate,u.tintColor,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglBitmap};
|
|
2
|
+
//# sourceMappingURL=bitmap-C04WgKea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitmap-
|
|
1
|
+
{"version":3,"file":"bitmap-C04WgKea.js","names":[],"sources":["../src/layers/deckgl/bitmap/VLayerDeckglBitmap.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render a single bitmap image at geographic bounds.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { BitmapLayer } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n interface Props {\n id: string;\n image:\n | string\n | HTMLImageElement\n | ImageBitmap\n | HTMLCanvasElement\n | ImageData\n | HTMLVideoElement;\n bounds:\n | [number, number, number, number]\n | [Position, Position, Position, Position];\n loadOptions?: object;\n textureParameters?: object;\n desaturate?: number;\n transparentColor?: Color;\n tintColor?: Color;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n desaturate: 0,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new BitmapLayer({\n id: props.id,\n image: props.image,\n bounds: props.bounds,\n loadOptions: props.loadOptions,\n textureParameters: props.textureParameters,\n desaturate: props.desaturate,\n transparentColor: props.transparentColor ?? [0, 0, 0, 0],\n tintColor: props.tintColor ?? [255, 255, 255],\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as unknown as ConstructorParameters<typeof BitmapLayer>[0]);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.image,\n props.bounds,\n props.desaturate,\n props.tintColor,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"wjBA0CE,IAAM,EAAQ,EAQR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAY,CACrB,GAAI,EAAM,GACV,MAAO,EAAM,MACb,OAAQ,EAAM,OACd,YAAa,EAAM,YACnB,kBAAmB,EAAM,kBACzB,WAAY,EAAM,WAClB,iBAAkB,EAAM,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAC,CACvD,UAAW,EAAM,WAAa,CAAC,IAAK,IAAK,IAAG,CAC5C,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACQ,CAAA,CAGxD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,MACN,EAAM,OACN,EAAM,WACN,EAAM,UACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=cog-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{defineComponent as i,markRaw as a,onBeforeUnmount as o,onMounted as s,renderSlot as c,shallowRef as l,toRaw as u,watch as d}from"vue";const f=`pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`,p=i({__name:`VLayerDeckglCOG`,props:{id:{},geotiff:{},tileSize:{default:256},maxZoom:{},minZoom:{default:0},maxCacheSize:{},refinementStrategy:{default:`best-available`},maxRequests:{default:6},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{},debug:{type:Boolean,default:!1},debugOpacity:{default:.25}},emits:[`click`,`hover`,`geotiffLoad`],setup(i,{emit:p}){let m=i,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=l(null),x=l(null),S=()=>{if(!b.value)return null;let e={id:u(m.id),geotiff:u(m.geotiff),opacity:u(m.opacity),visible:u(m.visible),pickable:u(m.pickable),autoHighlight:u(m.autoHighlight),debug:u(m.debug),debugOpacity:u(m.debugOpacity)};return x.value&&(e.epsgResolver=x.value),e.onGeoTIFFLoad=(e,t)=>{h(`geotiffLoad`,e,t)},m.tileSize!==256&&(e.tileSize=u(m.tileSize)),m.maxZoom!==void 0&&(e.maxZoom=u(m.maxZoom)),m.minZoom!==0&&(e.minZoom=u(m.minZoom)),m.maxCacheSize!==void 0&&(e.maxCacheSize=u(m.maxCacheSize)),m.refinementStrategy!==`best-available`&&(e.refinementStrategy=u(m.refinementStrategy)),m.maxRequests!==6&&(e.maxRequests=u(m.maxRequests)),m.highlightColor!==void 0&&(e.highlightColor=u(m.highlightColor)),m.beforeId!==void 0&&(e.beforeId=u(m.beforeId)),a(new b.value(e))},C=async()=>{try{let[e,t]=await Promise.all([n(`@developmentseed/deck.gl-geotiff`,()=>import(`@developmentseed/deck.gl-geotiff`),f),n(`@developmentseed/proj`,()=>import(`@developmentseed/proj`),f)]);b.value=a(e.COGLayer),x.value=t.epsgResolver;let r=S();r&&_(r)}catch(e){console.error(`[deck.gl-raster] Error loading COGLayer:`,e),console.error(`Make sure @developmentseed/deck.gl-geotiff is installed`)}};return s(()=>{g.value?.isStyleLoaded()?C():g.value?.once(`style.load`,C)}),d(()=>[m.geotiff,m.tileSize,m.maxZoom,m.minZoom,m.opacity,m.visible,m.debug,m.debugOpacity],()=>{let e=S();e&&y(m.id,e)},{deep:!0}),o(()=>{v(m.id)}),(e,t)=>c(e.$slots,`default`)}});export{p as VLayerDeckglCOG};
|
|
2
|
+
//# sourceMappingURL=cog-Cq7xvN9B.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog-
|
|
1
|
+
{"version":3,"file":"cog-Cq7xvN9B.js","names":[],"sources":["../src/layers/deckgl/cog/VLayerDeckglCOG.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Single Cloud-Optimized GeoTIFF (COG) viewer with automatic CRS reprojection.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n * @requires `@developmentseed/deck.gl-geotiff`\n * @requires `@developmentseed/deck.gl-raster`\n * @requires `@developmentseed/geotiff`\n * @requires `@developmentseed/proj`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj`\n */\n import {\n onMounted,\n onBeforeUnmount,\n watch,\n shallowRef,\n toRaw,\n markRaw,\n } from 'vue';\n import type { Color, PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n const COG_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/layers @deck.gl/mapbox @developmentseed/deck.gl-geotiff @developmentseed/deck.gl-raster @developmentseed/geotiff @developmentseed/proj';\n\n interface Props {\n id: string;\n /**\n * GeoTIFF source - URL string, ArrayBuffer, Blob, or geotiff.js instance\n */\n geotiff: string | ArrayBuffer | Blob | object;\n /**\n * Tile size in pixels\n */\n tileSize?: number;\n /**\n * Maximum zoom level\n */\n maxZoom?: number;\n /**\n * Minimum zoom level\n */\n minZoom?: number;\n /**\n * Maximum number of tiles to cache\n */\n maxCacheSize?: number;\n /**\n * Refinement strategy for tile loading\n */\n refinementStrategy?: 'best-available' | 'no-overlap' | 'never';\n /**\n * Maximum concurrent requests\n */\n maxRequests?: number;\n /**\n * Layer opacity (0-1)\n */\n opacity?: number;\n /**\n * Layer visibility\n */\n visible?: boolean;\n /**\n * Enable picking on this layer\n */\n pickable?: boolean;\n /**\n * Auto highlight on hover\n */\n autoHighlight?: boolean;\n /**\n * Highlight color when autoHighlight is enabled\n */\n highlightColor?: Color;\n /**\n * Insert layer before this layer id\n */\n beforeId?: string;\n /**\n * Show debug overlay on tiles\n */\n debug?: boolean;\n /**\n * Opacity of debug overlay (0-1)\n */\n debugOpacity?: number;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n tileSize: 256,\n minZoom: 0,\n refinementStrategy: 'best-available',\n maxRequests: 6,\n opacity: 1,\n visible: true,\n pickable: false,\n autoHighlight: false,\n debug: false,\n debugOpacity: 0.25,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n geotiffLoad: [\n tiff: unknown,\n options: {\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n // Store module references\n const COGLayerClass = shallowRef<\n typeof import('@developmentseed/deck.gl-geotiff').COGLayer | null\n >(null);\n const epsgResolverFn = shallowRef<\n typeof import('@developmentseed/proj').epsgResolver | null\n >(null);\n\n const createLayer = () => {\n if (!COGLayerClass.value) return null;\n\n const layerProps: Record<string, unknown> = {\n id: toRaw(props.id),\n geotiff: toRaw(props.geotiff),\n opacity: toRaw(props.opacity),\n visible: toRaw(props.visible),\n pickable: toRaw(props.pickable),\n autoHighlight: toRaw(props.autoHighlight),\n debug: toRaw(props.debug),\n debugOpacity: toRaw(props.debugOpacity),\n };\n\n if (epsgResolverFn.value) {\n layerProps.epsgResolver = epsgResolverFn.value;\n }\n\n layerProps.onGeoTIFFLoad = (\n tiff: unknown,\n options: {\n geographicBounds: {\n west: number;\n south: number;\n east: number;\n north: number;\n };\n },\n ) => {\n emit('geotiffLoad', tiff, options);\n };\n\n if (props.tileSize !== 256) layerProps.tileSize = toRaw(props.tileSize);\n if (props.maxZoom !== undefined) layerProps.maxZoom = toRaw(props.maxZoom);\n if (props.minZoom !== 0) layerProps.minZoom = toRaw(props.minZoom);\n if (props.maxCacheSize !== undefined)\n layerProps.maxCacheSize = toRaw(props.maxCacheSize);\n if (props.refinementStrategy !== 'best-available')\n layerProps.refinementStrategy = toRaw(props.refinementStrategy);\n if (props.maxRequests !== 6)\n layerProps.maxRequests = toRaw(props.maxRequests);\n if (props.highlightColor !== undefined)\n layerProps.highlightColor = toRaw(props.highlightColor);\n if (props.beforeId !== undefined)\n layerProps.beforeId = toRaw(props.beforeId);\n\n const layer = new COGLayerClass.value(layerProps);\n return markRaw(layer);\n };\n\n const initializeLayer = async () => {\n try {\n const [geotiffModule, projModule] = await Promise.all([\n requirePeer(\n '@developmentseed/deck.gl-geotiff',\n () => import('@developmentseed/deck.gl-geotiff'),\n COG_PEER_INSTALL,\n ),\n requirePeer(\n '@developmentseed/proj',\n () => import('@developmentseed/proj'),\n COG_PEER_INSTALL,\n ),\n ]);\n\n COGLayerClass.value = markRaw(geotiffModule.COGLayer);\n epsgResolverFn.value = projModule.epsgResolver;\n\n const layer = createLayer();\n if (layer) {\n addLayer(layer);\n }\n } catch (error) {\n console.error('[deck.gl-raster] Error loading COGLayer:', error);\n console.error('Make sure @developmentseed/deck.gl-geotiff is installed');\n }\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.geotiff,\n props.tileSize,\n props.maxZoom,\n props.minZoom,\n props.opacity,\n props.visible,\n props.debug,\n props.debugOpacity,\n ],\n () => {\n const layer = createLayer();\n if (layer) {\n updateLayer(props.id, layer);\n }\n },\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"4MA2BE,MAAM,EACJ,8nBAkEF,IAAM,EAAQ,EAaR,EAAO,EAgBP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAG3D,EAAgB,EAEpB,KAAI,CACA,EAAiB,EAErB,KAAI,CAEA,MAAoB,CACxB,GAAI,CAAC,EAAc,MAAO,OAAO,KAEjC,IAAM,EAAsC,CAC1C,GAAI,EAAM,EAAM,GAAE,CAClB,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,QAAS,EAAM,EAAM,QAAO,CAC5B,SAAU,EAAM,EAAM,SAAQ,CAC9B,cAAe,EAAM,EAAM,cAAa,CACxC,MAAO,EAAM,EAAM,MAAK,CACxB,aAAc,EAAM,EAAM,aAAY,CACxC,CAmCA,OAjCI,EAAe,QACjB,EAAW,aAAe,EAAe,OAG3C,EAAW,eACT,EACA,IAQG,CACH,EAAK,cAAe,EAAM,EAAO,EAG/B,EAAM,WAAa,MAAK,EAAW,SAAW,EAAM,EAAM,SAAQ,EAClE,EAAM,UAAY,IAAA,KAAW,EAAW,QAAU,EAAM,EAAM,QAAO,EACrE,EAAM,UAAY,IAAG,EAAW,QAAU,EAAM,EAAM,QAAO,EAC7D,EAAM,eAAiB,IAAA,KACzB,EAAW,aAAe,EAAM,EAAM,aAAY,EAChD,EAAM,qBAAuB,mBAC/B,EAAW,mBAAqB,EAAM,EAAM,mBAAkB,EAC5D,EAAM,cAAgB,IACxB,EAAW,YAAc,EAAM,EAAM,YAAW,EAC9C,EAAM,iBAAmB,IAAA,KAC3B,EAAW,eAAiB,EAAM,EAAM,eAAc,EACpD,EAAM,WAAa,IAAA,KACrB,EAAW,SAAW,EAAM,EAAM,SAAQ,EAGrC,EAAQ,IADG,EAAc,MAAM,EAClB,CAAA,EAGhB,EAAkB,SAAY,CAClC,GAAI,CACF,GAAM,CAAC,EAAe,GAAc,MAAM,QAAQ,IAAI,CACpD,EACE,uCACM,OAAO,oCACb,EACF,CACA,EACE,4BACM,OAAO,yBACb,EAEJ,CAAC,CAAA,CAED,EAAc,MAAQ,EAAQ,EAAc,SAAQ,CACpD,EAAe,MAAQ,EAAW,aAElC,IAAM,EAAQ,GAAY,CACtB,GACF,EAAS,EAAK,OAET,EAAO,CACd,QAAQ,MAAM,2CAA4C,EAAK,CAC/D,QAAQ,MAAM,0DAAyD,UAI3E,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,QACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,QACN,EAAM,MACN,EAAM,aACR,KACM,CACJ,IAAM,EAAQ,GAAY,CACtB,GACF,EAAY,EAAM,GAAI,EAAK,EAG/B,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=column-
|
|
1
|
+
import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ColumnLayer as c}from"@deck.gl/layers";const l=r({__name:`VLayerDeckglColumn`,props:{id:{},data:{},getPosition:{},getFillColor:{},getLineColor:{},getElevation:{},diskResolution:{default:20},radius:{default:1e3},angle:{default:0},vertices:{},offset:{},coverage:{default:1},elevationScale:{default:1},filled:{type:Boolean,default:!0},stroked:{type:Boolean,default:!1},extruded:{type:Boolean,default:!0},wireframe:{type:Boolean,default:!1},flatShading:{type:Boolean,default:!1},radiusUnits:{default:`meters`},lineWidthUnits:{default:`meters`},lineWidthScale:{default:1},lineWidthMinPixels:{default:0},lineWidthMaxPixels:{default:2**53-1},material:{type:[Boolean,Object]},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getFillColor:u.getFillColor??[255,0,0,255],getLineColor:u.getLineColor??[0,0,0,255],getElevation:u.getElevation??1e3,diskResolution:u.diskResolution,radius:u.radius,angle:u.angle,vertices:u.vertices,offset:u.offset,coverage:u.coverage,elevationScale:u.elevationScale,filled:u.filled,stroked:u.stroked,extruded:u.extruded,wireframe:u.wireframe,flatShading:u.flatShading,radiusUnits:u.radiusUnits,lineWidthUnits:u.lineWidthUnits,lineWidthScale:u.lineWidthScale,lineWidthMinPixels:u.lineWidthMinPixels,lineWidthMaxPixels:u.lineWidthMaxPixels,material:u.material,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.getFillColor,u.getElevation,u.radius,u.elevationScale,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglColumn};
|
|
2
|
+
//# sourceMappingURL=column-Dx4A711w.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-
|
|
1
|
+
{"version":3,"file":"column-Dx4A711w.js","names":[],"sources":["../src/layers/deckgl/column/VLayerDeckglColumn.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Extruded hexagonal / cylindrical columns at point positions.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ColumnLayer } from '@deck.gl/layers';\n import type { ColumnLayerProps } from '@deck.gl/layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getFillColor?: Accessor<D, Color>;\n getLineColor?: Accessor<D, Color>;\n getElevation?: Accessor<D, number>;\n diskResolution?: number;\n radius?: number;\n angle?: number;\n vertices?: Position[];\n offset?: [number, number];\n coverage?: number;\n elevationScale?: number;\n filled?: boolean;\n stroked?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n flatShading?: boolean;\n radiusUnits?: 'meters' | 'common' | 'pixels';\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n material?: boolean | object;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n diskResolution: 20,\n radius: 1000,\n angle: 0,\n coverage: 1,\n elevationScale: 1,\n filled: true,\n stroked: false,\n extruded: true,\n wireframe: false,\n flatShading: false,\n radiusUnits: 'meters',\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ColumnLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getFillColor: props.getFillColor ?? [255, 0, 0, 255],\n getLineColor: props.getLineColor ?? [0, 0, 0, 255],\n getElevation: props.getElevation ?? 1000,\n diskResolution: props.diskResolution,\n radius: props.radius,\n angle: props.angle,\n vertices: props.vertices,\n offset: props.offset,\n coverage: props.coverage,\n elevationScale: props.elevationScale,\n filled: props.filled,\n stroked: props.stroked,\n extruded: props.extruded,\n wireframe: props.wireframe,\n flatShading: props.flatShading,\n radiusUnits: props.radiusUnits,\n lineWidthUnits: props.lineWidthUnits,\n lineWidthScale: props.lineWidthScale,\n lineWidthMinPixels: props.lineWidthMinPixels,\n lineWidthMaxPixels: props.lineWidthMaxPixels,\n material: props.material,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as ColumnLayerProps);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.getFillColor,\n props.getElevation,\n props.radius,\n props.elevationScale,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"0gCAqDE,IAAM,EAAQ,EAsBR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAY,CACrB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,aAAc,EAAM,cAAgB,CAAC,IAAK,EAAG,EAAG,IAAG,CACnD,aAAc,EAAM,cAAgB,CAAC,EAAG,EAAG,EAAG,IAAG,CACjD,aAAc,EAAM,cAAgB,IACpC,eAAgB,EAAM,eACtB,OAAQ,EAAM,OACd,MAAO,EAAM,MACb,SAAU,EAAM,SAChB,OAAQ,EAAM,OACd,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,OAAQ,EAAM,OACd,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,UAAW,EAAM,UACjB,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,eAAgB,EAAM,eACtB,eAAgB,EAAM,eACtB,mBAAoB,EAAM,mBAC1B,mBAAoB,EAAM,mBAC1B,SAAU,EAAM,SAChB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CAC/B,CAAA,CAGjB,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,aACN,EAAM,aACN,EAAM,OACN,EAAM,eACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=contour-
|
|
1
|
+
import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";import{ContourLayer as c}from"@deck.gl/aggregation-layers";const l=r({__name:`VLayerDeckglContour`,props:{id:{},data:{},getPosition:{},getWeight:{},cellSize:{default:1e3},contours:{},gpuAggregation:{type:Boolean,default:!1},aggregation:{default:`SUM`},zOffset:{default:.005},opacity:{default:1},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!0},autoHighlight:{type:Boolean,default:!1},highlightColor:{},beforeId:{}},emits:[`click`,`hover`],setup(r,{emit:l}){let u=r,d=l,f=e(n),{addLayer:p,removeLayer:m,updateLayer:h}=t(f),g=()=>new c({id:u.id,data:u.data,getPosition:u.getPosition,getWeight:u.getWeight??1,cellSize:u.cellSize,contours:u.contours,gpuAggregation:u.gpuAggregation,aggregation:u.aggregation,zOffset:u.zOffset,opacity:u.opacity,visible:u.visible,pickable:u.pickable,autoHighlight:u.autoHighlight,highlightColor:u.highlightColor,beforeId:u.beforeId,onClick:e=>d(`click`,e),onHover:e=>d(`hover`,e)}),_=()=>{p(g())};return a(()=>{f.value?.isStyleLoaded()?_():f.value?.once(`style.load`,_)}),s(()=>[u.data,u.getPosition,u.cellSize,u.contours,u.opacity,u.visible],()=>h(u.id,g()),{deep:!0}),i(()=>{m(u.id)}),(e,t)=>o(e.$slots,`default`)}});export{l as VLayerDeckglContour};
|
|
2
|
+
//# sourceMappingURL=contour-Dgvb_bGm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contour-
|
|
1
|
+
{"version":3,"file":"contour-Dgvb_bGm.js","names":[],"sources":["../src/layers/deckgl/contour/VLayerDeckglContour.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Generate contour lines or isobands from point aggregations.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n * @requires `@deck.gl/aggregation-layers`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/aggregation-layers`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import { ContourLayer } from '@deck.gl/aggregation-layers';\n import type { Color, PickingInfo, Position } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n type Accessor<In, Out> = Out | ((object: In) => Out);\n\n interface ContourDefinition {\n threshold: number | [number, number];\n color?: Color;\n strokeWidth?: number;\n zIndex?: number;\n }\n\n interface Props<D = unknown> {\n id: string;\n data: D[] | string | Promise<D[]>;\n getPosition: Accessor<D, Position>;\n getWeight?: Accessor<D, number>;\n cellSize?: number;\n contours: ContourDefinition[];\n gpuAggregation?: boolean;\n aggregation?: 'SUM' | 'MEAN' | 'MIN' | 'MAX';\n zOffset?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n highlightColor?: Color;\n beforeId?: string;\n }\n\n const props = withDefaults(defineProps<Props>(), {\n cellSize: 1000,\n gpuAggregation: false,\n aggregation: 'SUM',\n zOffset: 0.005,\n opacity: 1,\n visible: true,\n pickable: true,\n autoHighlight: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const createLayer = () => {\n return new ContourLayer({\n id: props.id,\n data: props.data,\n getPosition: props.getPosition,\n getWeight: props.getWeight ?? 1,\n cellSize: props.cellSize,\n contours: props.contours,\n gpuAggregation: props.gpuAggregation,\n aggregation: props.aggregation,\n zOffset: props.zOffset,\n opacity: props.opacity,\n visible: props.visible,\n pickable: props.pickable,\n autoHighlight: props.autoHighlight,\n highlightColor: props.highlightColor,\n beforeId: props.beforeId,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n } as unknown as ConstructorParameters<typeof ContourLayer>[0]);\n };\n\n const initializeLayer = () => {\n addLayer(createLayer());\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => [\n props.data,\n props.getPosition,\n props.cellSize,\n props.contours,\n props.opacity,\n props.visible,\n ],\n () => updateLayer(props.id, createLayer()),\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"0nBA4CE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,MACG,IAAI,EAAa,CACtB,GAAI,EAAM,GACV,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,UAAW,EAAM,WAAa,EAC9B,SAAU,EAAM,SAChB,SAAU,EAAM,SAChB,eAAgB,EAAM,eACtB,YAAa,EAAM,YACnB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,EAAM,SAChB,cAAe,EAAM,cACrB,eAAgB,EAAM,eACtB,SAAU,EAAM,SAChB,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACS,CAAA,CAGzD,MAAwB,CAC5B,EAAS,GAAa,CAAA,SAGxB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACR,KACM,EAAY,EAAM,GAAI,GAAa,CAAA,CACzC,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=generic-
|
|
1
|
+
import{c as e,o as t,t as n}from"./symbols-CFCXX1_B.js";import{defineComponent as r,onBeforeUnmount as i,onMounted as a,renderSlot as o,watch as s}from"vue";const c=r({__name:`VLayerDeckgl`,props:{layer:{}},emits:[`click`,`hover`],setup(r,{emit:c}){let l=r,u=e(n),{addLayer:d,removeLayer:f,updateLayer:p}=t(u),m=e=>e.id,h=()=>{d(l.layer)};return a(()=>{u.value?.isStyleLoaded()?h():u.value?.once(`style.load`,h)}),s(()=>l.layer,(e,t)=>{let n=t?m(t):null,r=m(e);n&&n!==r?(f(n),d(e)):p(r,e)},{deep:!0}),i(()=>{f(m(l.layer))}),(e,t)=>o(e.$slots,`default`)}});export{c as VLayerDeckgl};
|
|
2
|
+
//# sourceMappingURL=generic-BKvcZn9n.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-
|
|
1
|
+
{"version":3,"file":"generic-BKvcZn9n.js","names":[],"sources":["../src/layers/deckgl/generic/VLayerDeckgl.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Generic deck.gl layer wrapper — supply your own deck.gl Layer instance via the `layer` prop.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/mapbox`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox`\n */\n import { onMounted, onBeforeUnmount, watch } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n\n interface Props {\n layer: unknown;\n }\n\n const props = defineProps<Props>();\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const getLayerId = (layer: unknown): string => {\n return (layer as { id: string }).id;\n };\n\n const initializeLayer = () => {\n addLayer(props.layer);\n };\n\n onMounted(() => {\n if (map.value?.isStyleLoaded()) {\n initializeLayer();\n } else {\n map.value?.once('style.load', initializeLayer);\n }\n });\n\n watch(\n () => props.layer,\n (newLayer, oldLayer) => {\n const oldId = oldLayer ? getLayerId(oldLayer) : null;\n const newId = getLayerId(newLayer);\n\n if (oldId && oldId !== newId) {\n removeLayer(oldId);\n addLayer(newLayer);\n } else {\n updateLayer(newId, newLayer);\n }\n },\n { deep: true },\n );\n\n onBeforeUnmount(() => {\n removeLayer(getLayerId(props.layer));\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"yPAmBE,IAAM,EAAQ,EAOR,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAc,GACV,EAAyB,GAG7B,MAAwB,CAC5B,EAAS,EAAM,MAAK,SAGtB,MAAgB,CACV,EAAI,OAAO,eAAc,CAC3B,GAAgB,CAEhB,EAAI,OAAO,KAAK,aAAc,EAAe,EAEhD,CAED,MACQ,EAAM,OACX,EAAU,IAAa,CACtB,IAAM,EAAQ,EAAW,EAAW,EAAQ,CAAI,KAC1C,EAAQ,EAAW,EAAQ,CAE7B,GAAS,IAAU,GACrB,EAAY,EAAK,CACjB,EAAS,EAAQ,EAEjB,EAAY,EAAO,EAAQ,EAG/B,CAAE,KAAM,GACV,CAAA,CAEA,MAAsB,CACpB,EAAY,EAAW,EAAM,MAAM,CAAA,EACpC,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-path-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,n as a,o,t as s}from"./arrow-4ecDVUFv.js";import{defineComponent as c,markRaw as l,onBeforeUnmount as u,renderSlot as d,shallowRef as f,watch as p}from"vue";const m=c({__name:`VLayerDeckglGeoArrowPath`,props:{id:{},data:{},getPath:{},getColor:{},getWidth:{},widthUnits:{},widthScale:{},widthMinPixels:{},widthMaxPixels:{},jointRounded:{type:Boolean,default:!1},capRounded:{type:Boolean,default:!1},miterLimit:{},billboard:{type:Boolean,default:!1},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(c,{emit:m}){let h=c,g=m,_=e(r),{addLayer:v,removeLayer:y,updateLayer:b}=t(_),x=f(null),S=new Set([`id`,`data`,`getPath`]),C=()=>{if(!x.value||!h.data)return null;let e=s(h.data)??a(h.data);if(!e)return console.error(`[VLayerDeckglGeoArrowPath] no GeoArrow linestring / multilinestring column found in data`),null;try{return l(new x.value({...o(h,S),id:h.id,data:{length:e.length,startIndices:e.startIndices,attributes:{getPath:{value:e.positions,size:3}}},_pathType:`open`,onClick:e=>g(`click`,e),onHover:e=>g(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowPath] failed to construct layer:`,e),null}};return i(_,async()=>{x.value=l((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).PathLayer)}),p(x,e=>{if(!e||!h.data)return;let t=C();t&&v(t)}),p(()=>h.data,()=>{if(!x.value||!h.data)return;let e=C();e&&b(h.id,e)}),p(()=>[h.getColor,h.getWidth,h.widthUnits,h.widthScale,h.widthMinPixels,h.widthMaxPixels,h.jointRounded,h.capRounded,h.miterLimit,h.opacity,h.visible,h.pickable],()=>{if(!x.value||!h.data)return;let e=C();e&&b(h.id,e)}),u(()=>{y(h.id)}),(e,t)=>d(e.$slots,`default`)}});export{m as VLayerDeckglGeoArrowPath};
|
|
2
|
+
//# sourceMappingURL=geoarrow-path-B2LJ956d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-path-
|
|
1
|
+
{"version":3,"file":"geoarrow-path-B2LJ956d.js","names":[],"sources":["../src/layers/deckgl/geoarrow-path/VLayerDeckglGeoArrowPath.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render polylines from an Apache Arrow `Table` or `RecordBatch` containing\n * GeoArrow line geometries (extension type `geoarrow.linestring` or\n * `geoarrow.multilinestring`).\n *\n * Wraps deck.gl's stock `PathLayer`. The wrapper extracts vertex offsets\n * directly from the Arrow column — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractLineStrings,\n extractMultiLineStrings,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const PATH_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPath?: unknown;\n getColor?: unknown;\n getWidth?: unknown;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n jointRounded?: boolean;\n capRounded?: boolean;\n miterLimit?: number;\n billboard?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n jointRounded: false,\n capRounded: false,\n billboard: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/layers').PathLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data', 'getPath']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const extracted =\n extractLineStrings(props.data) ?? extractMultiLineStrings(props.data);\n if (!extracted) {\n console.error(\n '[VLayerDeckglGeoArrowPath] no GeoArrow linestring / multilinestring column found in data',\n );\n return null;\n }\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: {\n length: extracted.length,\n startIndices: extracted.startIndices,\n attributes: {\n getPath: { value: extracted.positions, size: 3 },\n },\n },\n _pathType: 'open',\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowPath] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n PATH_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.PathLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getColor,\n props.getWidth,\n props.widthUnits,\n props.widthScale,\n props.widthMinPixels,\n props.widthMaxPixels,\n props.jointRounded,\n props.capRounded,\n props.miterLimit,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"0OA8BE,kdAwBA,IAAM,EAAQ,EASR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAQ,UAAU,CAAA,CAE3C,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EACJ,EAAmB,EAAM,KAAI,EAAK,EAAwB,EAAM,KAAI,CACtE,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,2FACF,CACO,KAET,GAAI,CAeF,OAAO,EAAQ,IAdG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,aAAc,EAAU,aACxB,WAAY,CACV,QAAS,CAAE,MAAO,EAAU,UAAW,KAAM,EAAE,CACjD,CACF,CACA,UAAW,OACX,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,wDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,UAAS,EAGV,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,SACN,EAAM,SACN,EAAM,WACN,EAAM,WACN,EAAM,eACN,EAAM,eACN,EAAM,aACN,EAAM,WACN,EAAM,WACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-polygon-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-4ecDVUFv.js";import{defineComponent as l,markRaw as u,onBeforeUnmount as d,renderSlot as f,shallowRef as p,watch as m}from"vue";const h=l({__name:`VLayerDeckglGeoArrowPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getLineWidth:{},getElevation:{},lineWidthUnits:{},lineWidthScale:{},lineWidthMinPixels:{},lineWidthMaxPixels:{},stroked:{type:Boolean,default:!0},filled:{type:Boolean,default:!0},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},elevationScale:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{},earcutWorkerUrl:{},_normalize:{type:Boolean},wrapLongitude:{type:Boolean}},emits:[`click`,`hover`],setup(l,{emit:h}){let g=l,_=h,v=e(r),{addLayer:y,removeLayer:b,updateLayer:x}=t(v),S=p(null),C=new Set([`id`,`data`,`getPolygon`,`earcutWorkerUrl`,`_normalize`]),w=()=>{if(!S.value||!g.data)return null;let e=s(g.data),t=e?null:i(g.data),n=e??t;if(!n)return console.error(`[VLayerDeckglGeoArrowPolygon] no GeoArrow polygon / multipolygon column found in data`),null;let r=c(n);try{return u(new S.value({...o(g,C),id:g.id,data:r,getPolygon:e=>e,onClick:e=>_(`click`,e),onHover:e=>_(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowPolygon] failed to construct layer:`,e),null}};return a(v,async()=>{S.value=u((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).PolygonLayer)}),m(S,e=>{if(!e||!g.data)return;let t=w();t&&y(t)}),m(()=>g.data,()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),m(()=>[g.extruded,g.getElevation,g.elevationScale,g.opacity,g.stroked,g.filled,g.wireframe,g.getFillColor,g.getLineColor,g.getLineWidth,g.lineWidthMinPixels,g.lineWidthMaxPixels,g.lineWidthScale,g.visible,g.pickable],()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),d(()=>{b(g.id)}),(e,t)=>f(e.$slots,`default`)}});export{h as VLayerDeckglGeoArrowPolygon};
|
|
2
|
+
//# sourceMappingURL=geoarrow-polygon-C9mZ7552.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-polygon-
|
|
1
|
+
{"version":3,"file":"geoarrow-polygon-C9mZ7552.js","names":[],"sources":["../src/layers/deckgl/geoarrow-polygon/VLayerDeckglGeoArrowPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render filled polygons with optional stroke from an Apache Arrow `Table`\n * or `RecordBatch` containing GeoArrow polygon geometries (extension type\n * `geoarrow.polygon` or `geoarrow.multipolygon`).\n *\n * Wraps deck.gl's stock `PolygonLayer` (composite of `SolidPolygonLayer` +\n * `PathLayer`). The wrapper flattens multi-polygons into per-ring arrays\n * extracted from the Arrow column — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractPolygons,\n extractMultiPolygons,\n polygonsToRingArrays,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const POLYGON_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPolygon?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getLineWidth?: unknown;\n getElevation?: unknown;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n stroked?: boolean;\n filled?: boolean;\n extruded?: boolean;\n wireframe?: boolean;\n elevationScale?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n earcutWorkerUrl?: string | URL | null;\n /** Normalize polygons that cross the antimeridian. Default: true. */\n _normalize?: boolean;\n /** Wrap polygons across the antimeridian. Default: true. */\n wrapLongitude?: boolean;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n // _normalize default left undefined — GeoArrow native data is already\n // normalized; setting true causes deck.gl to re-normalize Struct-based\n // coords and produces stretched polygons.\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/layers').PolygonLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPolygon',\n 'earcutWorkerUrl',\n '_normalize',\n ]);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const multi = extractMultiPolygons(props.data);\n const single = multi ? null : extractPolygons(props.data);\n const geom = multi ?? single;\n if (!geom) {\n console.error(\n '[VLayerDeckglGeoArrowPolygon] no GeoArrow polygon / multipolygon column found in data',\n );\n return null;\n }\n const rings = polygonsToRingArrays(geom);\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: rings,\n getPolygon: (ring: number[][]) => ring,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowPolygon] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n POLYGON_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.PolygonLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n // Reactive props that should rebuild the layer when changed (extruded toggle,\n // elevation slider, opacity slider, etc.). deck.gl Layer instances are\n // immutable — we have to recreate the layer on any reactive change.\n watch(\n () => [\n props.extruded,\n props.getElevation,\n props.elevationScale,\n props.opacity,\n props.stroked,\n props.filled,\n props.wireframe,\n props.getFillColor,\n props.getLineColor,\n props.getLineWidth,\n props.lineWidthMinPixels,\n props.lineWidthMaxPixels,\n props.lineWidthScale,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"iPAgCE,wnBAgCA,IAAM,EAAQ,EAaR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,aACA,kBACA,aACD,CAAA,CAEK,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAqB,EAAM,KAAI,CACvC,EAAS,EAAQ,KAAO,EAAgB,EAAM,KAAI,CAClD,EAAO,GAAS,EACtB,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,wFACF,CACO,KAET,IAAM,EAAQ,EAAqB,EAAI,CACvC,GAAI,CASF,OAAO,EAAQ,IARG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,EACN,WAAa,GAAqB,EAClC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,2DACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,aAAY,EAGb,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAKA,MACQ,CACJ,EAAM,SACN,EAAM,aACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,OACN,EAAM,UACN,EAAM,aACN,EAAM,aACN,EAAM,aACN,EAAM,mBACN,EAAM,mBACN,EAAM,eACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-scatterplot-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,i as a,o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowScatterplot`,props:{id:{},data:{},getPosition:{},getRadius:{},getFillColor:{},getLineColor:{},getLineWidth:{},radiusUnits:{},radiusScale:{},radiusMinPixels:{},radiusMaxPixels:{},lineWidthUnits:{},lineWidthScale:{},lineWidthMinPixels:{},lineWidthMaxPixels:{},stroked:{type:Boolean,default:!1},filled:{type:Boolean,default:!0},billboard:{type:Boolean,default:!1},antialiasing:{type:Boolean,default:!0},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`]),S=()=>{if(!b.value||!m.data)return null;let e=a(m.data);if(!e)return console.error(`[VLayerDeckglGeoArrowScatterplot] no GeoArrow point geometry column found in data`),null;try{return c(new b.value({...o(m,x),id:m.id,data:{length:e.length,attributes:{getPosition:{value:e.positions,size:3}}},onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowScatterplot] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).ScatterplotLayer)}),f(b,e=>{if(!e||!m.data)return;let t=S();t&&_(t)}),f(()=>m.data,()=>{if(!b.value||!m.data)return;let e=S();e&&y(m.id,e)}),f(()=>[m.getFillColor,m.getLineColor,m.getRadius,m.getLineWidth,m.radiusUnits,m.radiusScale,m.radiusMinPixels,m.radiusMaxPixels,m.lineWidthUnits,m.lineWidthScale,m.stroked,m.filled,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=S();e&&y(m.id,e)}),l(()=>{v(m.id)}),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowScatterplot};
|
|
2
|
+
//# sourceMappingURL=geoarrow-scatterplot-CM5842q_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-scatterplot-
|
|
1
|
+
{"version":3,"file":"geoarrow-scatterplot-CM5842q_.js","names":[],"sources":["../src/layers/deckgl/geoarrow-scatterplot/VLayerDeckglGeoArrowScatterplot.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render circles at coordinate positions from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow point geometries (extension type\n * `geoarrow.point` or `geoarrow.multipoint`).\n *\n * Wraps deck.gl's stock `ScatterplotLayer`. The wrapper reads the GeoArrow\n * geometry column directly from the Arrow Table and feeds a flat\n * `Float64Array` of XYZ positions to the GPU — no GeoJSON parse pass, no\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractPoints, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const SCATTERPLOT_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPosition?: unknown;\n getRadius?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getLineWidth?: unknown;\n radiusUnits?: 'meters' | 'common' | 'pixels';\n radiusScale?: number;\n radiusMinPixels?: number;\n radiusMaxPixels?: number;\n lineWidthUnits?: 'meters' | 'common' | 'pixels';\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n stroked?: boolean;\n filled?: boolean;\n billboard?: boolean;\n antialiasing?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/layers').ScatterplotLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const extracted = extractPoints(props.data);\n if (!extracted) {\n console.error(\n '[VLayerDeckglGeoArrowScatterplot] no GeoArrow point geometry column found in data',\n );\n return null;\n }\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: {\n length: extracted.length,\n attributes: {\n getPosition: { value: extracted.positions, size: 3 },\n },\n },\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowScatterplot] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n SCATTERPLOT_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.ScatterplotLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getFillColor,\n props.getLineColor,\n props.getRadius,\n props.getLineWidth,\n props.radiusUnits,\n props.radiusScale,\n props.radiusMinPixels,\n props.radiusMaxPixels,\n props.lineWidthUnits,\n props.lineWidthScale,\n props.stroked,\n props.filled,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"mOA2BE,smBA8BA,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAO,CAAA,CAEhC,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAY,EAAc,EAAM,KAAI,CAC1C,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,oFACF,CACO,KAET,GAAI,CAaF,OAAO,EAAQ,IAZG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,CACJ,OAAQ,EAAU,OAClB,WAAY,CACV,YAAa,CAAE,MAAO,EAAU,UAAW,KAAM,EAAE,CACrD,CACF,CACA,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,+DACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,iBAAgB,EAGjB,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,aACN,EAAM,aACN,EAAM,UACN,EAAM,aACN,EAAM,YACN,EAAM,YACN,EAAM,gBACN,EAAM,gBACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,OACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-solid-polygon-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{a as i,c as a,o,r as s,s as c}from"./arrow-4ecDVUFv.js";import{defineComponent as l,markRaw as u,onBeforeUnmount as d,renderSlot as f,shallowRef as p,watch as m}from"vue";const h=l({__name:`VLayerDeckglGeoArrowSolidPolygon`,props:{id:{},data:{},getPolygon:{},getFillColor:{},getLineColor:{},getElevation:{},extruded:{type:Boolean,default:!1},wireframe:{type:Boolean,default:!1},filled:{type:Boolean,default:!0},elevationScale:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},metrics:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(l,{emit:h}){let g=l,_=h,v=e(r),{addLayer:y,removeLayer:b,updateLayer:x}=t(v),S=p(null),C=new Set([`id`,`data`,`getPolygon`]),w=()=>{if(!S.value||!g.data)return null;let e=s(g.data),t=e?null:i(g.data),n=e??t;if(!n)return console.error(`[VLayerDeckglGeoArrowSolidPolygon] no GeoArrow polygon / multipolygon column found in data`),null;let r=c(n);try{return u(new S.value({...o(g,C),id:g.id,data:r,getPolygon:e=>e,onClick:e=>_(`click`,e),onHover:e=>_(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowSolidPolygon] failed to construct layer:`,e),null}};return a(v,async()=>{S.value=u((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).SolidPolygonLayer)}),m(S,e=>{if(!e||!g.data)return;let t=w();t&&y(t)}),m(()=>g.data,()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),m(()=>[g.getFillColor,g.getLineColor,g.getElevation,g.extruded,g.wireframe,g.filled,g.elevationScale,g.opacity,g.visible,g.pickable],()=>{if(!S.value||!g.data)return;let e=w();e&&x(g.id,e)}),d(()=>{b(g.id)}),(e,t)=>f(e.$slots,`default`)}});export{h as VLayerDeckglGeoArrowSolidPolygon};
|
|
2
|
+
//# sourceMappingURL=geoarrow-solid-polygon-DIm9mciL.js.map
|
package/dist/{geoarrow-solid-polygon-LGavbdMg.js.map → geoarrow-solid-polygon-DIm9mciL.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-solid-polygon-
|
|
1
|
+
{"version":3,"file":"geoarrow-solid-polygon-DIm9mciL.js","names":[],"sources":["../src/layers/deckgl/geoarrow-solid-polygon/VLayerDeckglGeoArrowSolidPolygon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render extruded (3D) polygons from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow polygon geometries (extension type\n * `geoarrow.polygon` or `geoarrow.multipolygon`).\n *\n * Wraps deck.gl's stock `SolidPolygonLayer`. The wrapper flattens\n * multi-polygons into per-ring arrays extracted from the Arrow column — no\n * GeoJSON parse pass, no `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import {\n extractPolygons,\n extractMultiPolygons,\n polygonsToRingArrays,\n filterDefined,\n } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const SOLID_POLYGON_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n getPolygon?: unknown;\n getFillColor?: unknown;\n getLineColor?: unknown;\n getElevation?: unknown;\n extruded?: boolean;\n wireframe?: boolean;\n filled?: boolean;\n elevationScale?: number;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n metrics?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n extruded: false,\n wireframe: false,\n filled: true,\n metrics: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/layers').SolidPolygonLayer | null\n >(null);\n\n const EXCLUDE = new Set(['id', 'data', 'getPolygon']);\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const multi = extractMultiPolygons(props.data);\n const single = multi ? null : extractPolygons(props.data);\n const geom = multi ?? single;\n if (!geom) {\n console.error(\n '[VLayerDeckglGeoArrowSolidPolygon] no GeoArrow polygon / multipolygon column found in data',\n );\n return null;\n }\n const rings = polygonsToRingArrays(geom);\n try {\n const layer = new LayerClass.value({\n ...filterDefined(props as unknown as Record<string, unknown>, EXCLUDE),\n id: props.id,\n data: rings,\n getPolygon: (ring: number[][]) => ring,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n });\n return markRaw(layer);\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowSolidPolygon] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n SOLID_POLYGON_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.SolidPolygonLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getFillColor,\n props.getLineColor,\n props.getElevation,\n props.extruded,\n props.wireframe,\n props.filled,\n props.elevationScale,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => {\n removeLayer(props.id);\n });\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"iPA+BE,mdAsBA,IAAM,EAAQ,EAUR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CAAC,KAAM,OAAQ,aAAa,CAAA,CAE9C,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAqB,EAAM,KAAI,CACvC,EAAS,EAAQ,KAAO,EAAgB,EAAM,KAAI,CAClD,EAAO,GAAS,EACtB,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,6FACF,CACO,KAET,IAAM,EAAQ,EAAqB,EAAI,CACvC,GAAI,CASF,OAAO,EAAQ,IARG,EAAW,MAAM,CACjC,GAAG,EAAc,EAA6C,EAAO,CACrE,GAAI,EAAM,GACV,KAAM,EACN,WAAa,GAAqB,EAClC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACmB,CAAA,OACb,EAAK,CAKZ,OAJA,QAAQ,MACN,gEACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,kBAAiB,EAGlB,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,aACN,EAAM,aACN,EAAM,aACN,EAAM,SACN,EAAM,UACN,EAAM,OACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,CACpB,EAAY,EAAM,GAAE,EACrB,QAID,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-text-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,i as a,o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowText`,props:{id:{},data:{},textColumn:{},getPosition:{},getText:{},getColor:{},getSize:{},getAngle:{},getTextAnchor:{},getAlignmentBaseline:{},sizeUnits:{},sizeScale:{},sizeMinPixels:{},sizeMaxPixels:{},billboard:{type:Boolean,default:!0},fontFamily:{},fontWeight:{},characterSet:{},background:{type:Boolean,default:!1},backgroundPadding:{},getBackgroundColor:{},getBorderColor:{},getBorderWidth:{},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`,`getPosition`,`getText`,`textColumn`]),S=(e,t)=>{let n=a(e);if(!n)return null;let r=e.getChild(t),i=[];if(r){let e=r.toArray?.();if(e)for(let t=0;t<n.length;t++)i.push(String(e[t]??``));else if(r.get)for(let e=0;e<n.length;e++)i.push(String(r.get(e)??``))}let o=[];for(let e=0;e<n.length;e++)o.push({position:[n.positions[e*3]??0,n.positions[e*3+1]??0],label:i[e]??``});return o},C=()=>{if(!b.value||!m.data)return null;let e=S(m.data,m.textColumn??`name`);if(!e)return console.error(`[VLayerDeckglGeoArrowText] no GeoArrow point geometry column found in data`),null;try{return c(new b.value({...o(m,x),id:m.id,data:e,getPosition:e=>e.position,getText:e=>e.label,onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowText] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/layers`,()=>import(`@deck.gl/layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`)).TextLayer)}),f(b,e=>{if(!e||!m.data)return;let t=C();t&&_(t)}),f(()=>m.data,()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),f(()=>[m.getText,m.getPosition,m.getColor,m.getSize,m.getAngle,m.getTextAnchor,m.getAlignmentBaseline,m.sizeUnits,m.sizeScale,m.sizeMinPixels,m.sizeMaxPixels,m.billboard,m.fontFamily,m.fontWeight,m.background,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),l(()=>v(m.id)),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowText};
|
|
2
|
+
//# sourceMappingURL=geoarrow-text-ClY3q_nR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-text-
|
|
1
|
+
{"version":3,"file":"geoarrow-text-ClY3q_nR.js","names":[],"sources":["../src/layers/deckgl/geoarrow-text/VLayerDeckglGeoArrowText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render text labels at point positions from an Apache Arrow `Table` or\n * `RecordBatch` containing GeoArrow point geometries (extension type\n * `geoarrow.point` or `geoarrow.multipoint`).\n *\n * Wraps deck.gl's stock `TextLayer`. The wrapper extracts XY positions plus\n * a per-row label string from the configured `textColumn` (default `name`).\n * No `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractPoints, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const TEXT_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n textColumn?: string;\n getPosition?: unknown;\n getText?: unknown;\n getColor?: unknown;\n getSize?: unknown;\n getAngle?: unknown;\n getTextAnchor?: unknown;\n getAlignmentBaseline?: unknown;\n sizeUnits?: 'meters' | 'common' | 'pixels';\n sizeScale?: number;\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n billboard?: boolean;\n fontFamily?: string;\n fontWeight?: number | string;\n characterSet?: 'auto' | string[] | Set<string>;\n background?: boolean;\n backgroundPadding?: [number, number] | [number, number, number, number];\n getBackgroundColor?: unknown;\n getBorderColor?: unknown;\n getBorderWidth?: unknown;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n billboard: true,\n background: false,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/layers').TextLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPosition',\n 'getText',\n 'textColumn',\n ]);\n\n type ItemWithLabel = { position: [number, number]; label: string };\n\n const buildItems = (\n table: ArrowTableLike,\n textColumn: string,\n ): ItemWithLabel[] | null => {\n const extracted = extractPoints(table);\n if (!extracted) return null;\n const labelColumn = (\n table as unknown as {\n getChild: (\n k: string,\n ) => { toArray?: () => unknown[]; get?: (i: number) => unknown } | null;\n }\n ).getChild(textColumn);\n const labels: string[] = [];\n if (labelColumn) {\n const arr = labelColumn.toArray?.();\n if (arr) {\n for (let i = 0; i < extracted.length; i++) {\n labels.push(String(arr[i] ?? ''));\n }\n } else if (labelColumn.get) {\n for (let i = 0; i < extracted.length; i++) {\n labels.push(String(labelColumn.get(i) ?? ''));\n }\n }\n }\n const items: ItemWithLabel[] = [];\n for (let i = 0; i < extracted.length; i++) {\n items.push({\n position: [\n extracted.positions[i * 3] ?? 0,\n extracted.positions[i * 3 + 1] ?? 0,\n ],\n label: labels[i] ?? '',\n });\n }\n return items;\n };\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const items = buildItems(props.data, props.textColumn ?? 'name');\n if (!items) {\n console.error(\n '[VLayerDeckglGeoArrowText] no GeoArrow point geometry column found in data',\n );\n return null;\n }\n try {\n return markRaw(\n new LayerClass.value({\n ...filterDefined(\n props as unknown as Record<string, unknown>,\n EXCLUDE,\n ),\n id: props.id,\n data: items,\n getPosition: (d: ItemWithLabel) => d.position,\n getText: (d: ItemWithLabel) => d.label,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n }),\n );\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowText] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/layers',\n () => import('@deck.gl/layers'),\n TEXT_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.TextLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => props.data,\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n watch(\n () => [\n props.getText,\n props.getPosition,\n props.getColor,\n props.getSize,\n props.getAngle,\n props.getTextAnchor,\n props.getAlignmentBaseline,\n props.sizeUnits,\n props.sizeScale,\n props.sizeMinPixels,\n props.sizeMaxPixels,\n props.billboard,\n props.fontFamily,\n props.fontWeight,\n props.background,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => removeLayer(props.id));\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"mOA0BE,qmBAkCA,IAAM,EAAQ,EAQR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,cACA,UACA,aACD,CAAA,CAIK,GACJ,EACA,IAC2B,CAC3B,IAAM,EAAY,EAAc,EAAK,CACrC,GAAI,CAAC,EAAW,OAAO,KACvB,IAAM,EACJ,EAKA,SAAS,EAAU,CACf,EAAmB,EAAC,CAC1B,GAAI,EAAa,CACf,IAAM,EAAM,EAAY,WAAU,CAClC,GAAI,EACF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAO,KAAK,OAAO,EAAI,IAAM,GAAG,CAAA,MAE7B,GAAI,EAAY,IACrB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAO,KAAK,OAAO,EAAY,IAAI,EAAC,EAAK,GAAG,CAAA,CAIlD,IAAM,EAAyB,EAAC,CAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IACpC,EAAM,KAAK,CACT,SAAU,CACR,EAAU,UAAU,EAAI,IAAM,EAC9B,EAAU,UAAU,EAAI,EAAI,IAAM,EACpC,CACA,MAAO,EAAO,IAAM,GACrB,CAAA,CAEH,OAAO,GAGH,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EAAW,EAAM,KAAM,EAAM,YAAc,OAAM,CAC/D,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,6EACF,CACO,KAET,GAAI,CACF,OAAO,EACL,IAAI,EAAW,MAAM,CACnB,GAAG,EACD,EACA,EACF,CACA,GAAI,EAAM,GACV,KAAM,EACN,YAAc,GAAqB,EAAE,SACrC,QAAU,GAAqB,EAAE,MACjC,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACH,CAAA,OACO,EAAK,CAKZ,OAJA,QAAQ,MACN,wDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,sBACM,OAAO,mBACb,sEACF,EAC+B,UAAS,EAGV,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,EAAM,SACN,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MACQ,CACJ,EAAM,QACN,EAAM,YACN,EAAM,SACN,EAAM,QACN,EAAM,SACN,EAAM,cACN,EAAM,qBACN,EAAM,UACN,EAAM,UACN,EAAM,cACN,EAAM,cACN,EAAM,UACN,EAAM,WACN,EAAM,WACN,EAAM,WACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,EAAY,EAAM,GAAG,CAAA,QAI3C,EAAa,EAAA,OAAA,UAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,o as t,s as n,t as r}from"./symbols-
|
|
2
|
-
//# sourceMappingURL=geoarrow-trips-
|
|
1
|
+
import{c as e,o as t,s as n,t as r}from"./symbols-CFCXX1_B.js";import{c as i,o as a,t as o}from"./arrow-4ecDVUFv.js";import{defineComponent as s,markRaw as c,onBeforeUnmount as l,renderSlot as u,shallowRef as d,watch as f}from"vue";const p=s({__name:`VLayerDeckglGeoArrowTrips`,props:{id:{},data:{},timestampsColumn:{},getPath:{},getTimestamps:{},getColor:{},getWidth:{},widthUnits:{},widthScale:{},widthMinPixels:{},widthMaxPixels:{},jointRounded:{type:Boolean,default:!1},capRounded:{type:Boolean,default:!1},miterLimit:{},billboard:{type:Boolean,default:!1},currentTime:{default:0},trailLength:{default:180},fadeTrail:{type:Boolean,default:!0},opacity:{},visible:{type:Boolean,default:!0},pickable:{type:Boolean,default:!1},autoHighlight:{type:Boolean,default:!1},beforeId:{}},emits:[`click`,`hover`],setup(s,{emit:p}){let m=s,h=p,g=e(r),{addLayer:_,removeLayer:v,updateLayer:y}=t(g),b=d(null),x=new Set([`id`,`data`,`getPath`,`getTimestamps`,`timestampsColumn`]),S=(e,t)=>{let n=o(e);if(!n)return null;let r=e.getChild(t)?.data[0],i=r?.valueOffsets,a=r?.values,s=[];for(let e=0;e<n.length;e++){let t=n.startIndices[e]??0,r=n.startIndices[e+1]??0,o=[];for(let e=t;e<r;e++)o.push([n.positions[e*3]??0,n.positions[e*3+1]??0]);let c=[];if(i&&a){let t=i[e]??0,n=i[e+1]??0;for(let e=t;e<n;e++)c.push(Number(a[e]??0))}s.push({path:o,timestamps:c})}return s},C=()=>{if(!b.value||!m.data)return null;let e=S(m.data,m.timestampsColumn??`timestamps`);if(!e)return console.error(`[VLayerDeckglGeoArrowTrips] no GeoArrow linestring column found in data`),null;try{return c(new b.value({...a(m,x),id:m.id,data:e,getPath:e=>e.path,getTimestamps:e=>e.timestamps,onClick:e=>h(`click`,e),onHover:e=>h(`hover`,e)}))}catch(e){return console.error(`[VLayerDeckglGeoArrowTrips] failed to construct layer:`,e),null}};return i(g,async()=>{b.value=c((await n(`@deck.gl/geo-layers`,()=>import(`@deck.gl/geo-layers`),`pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow`)).TripsLayer)}),f(b,e=>{if(!e||!m.data)return;let t=C();t&&_(t)}),f(()=>[m.data,m.currentTime,m.trailLength,m.fadeTrail,m.getPath,m.getTimestamps,m.getColor,m.getWidth,m.widthUnits,m.widthScale,m.widthMinPixels,m.widthMaxPixels,m.opacity,m.visible,m.pickable],()=>{if(!b.value||!m.data)return;let e=C();e&&y(m.id,e)}),l(()=>v(m.id)),(e,t)=>u(e.$slots,`default`)}});export{p as VLayerDeckglGeoArrowTrips};
|
|
2
|
+
//# sourceMappingURL=geoarrow-trips-BqbIoMt8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geoarrow-trips-
|
|
1
|
+
{"version":3,"file":"geoarrow-trips-BqbIoMt8.js","names":[],"sources":["../src/layers/deckgl/geoarrow-trips/VLayerDeckglGeoArrowTrips.vue"],"sourcesContent":["<script setup lang=\"ts\">\n /**\n * Render animated trips from an Apache Arrow `Table` or `RecordBatch`\n * containing GeoArrow linestring geometries (extension type\n * `geoarrow.linestring` or `geoarrow.multilinestring`) with per-vertex\n * timestamps in a parallel `List<float64>` column (default name\n * `timestamps`, overridable via the `timestampsColumn` prop).\n *\n * Wraps deck.gl's stock `TripsLayer` from `@deck.gl/geo-layers`. No\n * `@geoarrow/deck.gl-geoarrow` runtime dependency.\n *\n * @requires `@deck.gl/core`\n * @requires `@deck.gl/layers`\n * @requires `@deck.gl/geo-layers`\n * @requires `@deck.gl/mapbox`\n * @requires `apache-arrow`\n *\n * Install with:\n * `pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow`\n */\n import { onBeforeUnmount, watch, shallowRef, markRaw } from 'vue';\n import type { PickingInfo } from '@deck.gl/core';\n import { injectStrict, MapKey, requirePeer } from '../../../utils';\n import { useDeckOverlay } from '../_shared/useDeckOverlay';\n import { useMapReady } from '../_shared/useMapReady';\n import { extractLineStrings, filterDefined } from '../_shared/arrow';\n import type { ArrowTableLike } from '../_shared/types';\n\n const TRIPS_PEER_INSTALL =\n 'pnpm add @deck.gl/core @deck.gl/mapbox @deck.gl/layers @deck.gl/geo-layers apache-arrow';\n\n type Props = {\n id: string;\n data: ArrowTableLike | null | undefined;\n timestampsColumn?: string;\n getPath?: unknown;\n getTimestamps?: unknown;\n getColor?: unknown;\n getWidth?: unknown;\n widthUnits?: 'meters' | 'common' | 'pixels';\n widthScale?: number;\n widthMinPixels?: number;\n widthMaxPixels?: number;\n jointRounded?: boolean;\n capRounded?: boolean;\n miterLimit?: number;\n billboard?: boolean;\n currentTime?: number;\n trailLength?: number;\n fadeTrail?: boolean;\n opacity?: number;\n visible?: boolean;\n pickable?: boolean;\n autoHighlight?: boolean;\n beforeId?: string;\n };\n\n const props = withDefaults(defineProps<Props>(), {\n visible: true,\n pickable: false,\n autoHighlight: false,\n jointRounded: false,\n capRounded: false,\n billboard: false,\n fadeTrail: true,\n trailLength: 180,\n currentTime: 0,\n });\n\n const emit = defineEmits<{\n click: [info: PickingInfo];\n hover: [info: PickingInfo];\n }>();\n\n const map = injectStrict(MapKey);\n const { addLayer, removeLayer, updateLayer } = useDeckOverlay(map);\n\n const LayerClass = shallowRef<\n typeof import('@deck.gl/geo-layers').TripsLayer | null\n >(null);\n\n const EXCLUDE = new Set([\n 'id',\n 'data',\n 'getPath',\n 'getTimestamps',\n 'timestampsColumn',\n ]);\n\n type Trip = { path: number[][]; timestamps: number[] };\n\n const buildTrips = (\n table: ArrowTableLike,\n timestampsColumn: string,\n ): Trip[] | null => {\n const extracted = extractLineStrings(table);\n if (!extracted) return null;\n const tsListColumn = (\n table as unknown as {\n getChild: (k: string) => {\n data: { valueOffsets?: Int32Array; values?: ArrayLike<number> }[];\n } | null;\n }\n ).getChild(timestampsColumn);\n const tsList = tsListColumn?.data[0];\n const tsOffsets = tsList?.valueOffsets;\n const tsValues = tsList?.values;\n const trips: Trip[] = [];\n for (let i = 0; i < extracted.length; i++) {\n const start = extracted.startIndices[i] ?? 0;\n const end = extracted.startIndices[i + 1] ?? 0;\n const path: number[][] = [];\n for (let v = start; v < end; v++) {\n path.push([\n extracted.positions[v * 3] ?? 0,\n extracted.positions[v * 3 + 1] ?? 0,\n ]);\n }\n const timestamps: number[] = [];\n if (tsOffsets && tsValues) {\n const tStart = tsOffsets[i] ?? 0;\n const tEnd = tsOffsets[i + 1] ?? 0;\n for (let t = tStart; t < tEnd; t++) {\n timestamps.push(Number(tsValues[t] ?? 0));\n }\n }\n trips.push({ path, timestamps });\n }\n return trips;\n };\n\n const createLayer = () => {\n if (!LayerClass.value || !props.data) return null;\n const trips = buildTrips(\n props.data,\n props.timestampsColumn ?? 'timestamps',\n );\n if (!trips) {\n console.error(\n '[VLayerDeckglGeoArrowTrips] no GeoArrow linestring column found in data',\n );\n return null;\n }\n try {\n return markRaw(\n new LayerClass.value({\n ...filterDefined(\n props as unknown as Record<string, unknown>,\n EXCLUDE,\n ),\n id: props.id,\n data: trips,\n getPath: (d: Trip) => d.path,\n getTimestamps: (d: Trip) => d.timestamps,\n onClick: (info: PickingInfo) => emit('click', info),\n onHover: (info: PickingInfo) => emit('hover', info),\n }),\n );\n } catch (err) {\n console.error(\n '[VLayerDeckglGeoArrowTrips] failed to construct layer:',\n err,\n );\n return null;\n }\n };\n\n const initializeLayer = async () => {\n const mod = await requirePeer(\n '@deck.gl/geo-layers',\n () => import('@deck.gl/geo-layers'),\n TRIPS_PEER_INSTALL,\n );\n LayerClass.value = markRaw(mod.TripsLayer);\n };\n\n useMapReady(map, initializeLayer);\n\n watch(LayerClass, (cls) => {\n if (!cls || !props.data) return;\n const layer = createLayer();\n if (layer) addLayer(layer);\n });\n\n watch(\n () => [\n props.data,\n props.currentTime,\n props.trailLength,\n props.fadeTrail,\n props.getPath,\n props.getTimestamps,\n props.getColor,\n props.getWidth,\n props.widthUnits,\n props.widthScale,\n props.widthMinPixels,\n props.widthMaxPixels,\n props.opacity,\n props.visible,\n props.pickable,\n ],\n () => {\n if (!LayerClass.value || !props.data) return;\n const layer = createLayer();\n if (layer) updateLayer(props.id, layer);\n },\n );\n\n onBeforeUnmount(() => removeLayer(props.id));\n</script>\n\n<template>\n <slot></slot>\n</template>\n"],"mappings":"wOA4BE,8kBA6BA,IAAM,EAAQ,EAYR,EAAO,EAKP,EAAM,EAAa,EAAM,CACzB,CAAE,WAAU,cAAa,eAAgB,EAAe,EAAG,CAE3D,EAAa,EAEjB,KAAI,CAEA,EAAU,IAAI,IAAI,CACtB,KACA,OACA,UACA,gBACA,mBACD,CAAA,CAIK,GACJ,EACA,IACkB,CAClB,IAAM,EAAY,EAAmB,EAAK,CAC1C,GAAI,CAAC,EAAW,OAAO,KAQvB,IAAM,EANJ,EAKA,SAAS,EACI,EAAc,KAAK,GAC5B,EAAY,GAAQ,aACpB,EAAW,GAAQ,OACnB,EAAgB,EAAC,CACvB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CACzC,IAAM,EAAQ,EAAU,aAAa,IAAM,EACrC,EAAM,EAAU,aAAa,EAAI,IAAM,EACvC,EAAmB,EAAC,CAC1B,IAAK,IAAI,EAAI,EAAO,EAAI,EAAK,IAC3B,EAAK,KAAK,CACR,EAAU,UAAU,EAAI,IAAM,EAC9B,EAAU,UAAU,EAAI,EAAI,IAAM,EACnC,CAAA,CAEH,IAAM,EAAuB,EAAC,CAC9B,GAAI,GAAa,EAAU,CACzB,IAAM,EAAS,EAAU,IAAM,EACzB,EAAO,EAAU,EAAI,IAAM,EACjC,IAAK,IAAI,EAAI,EAAQ,EAAI,EAAM,IAC7B,EAAW,KAAK,OAAO,EAAS,IAAM,EAAE,CAAA,CAG5C,EAAM,KAAK,CAAE,OAAM,aAAY,CAAA,CAEjC,OAAO,GAGH,MAAoB,CACxB,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OAAO,KAC7C,IAAM,EAAQ,EACZ,EAAM,KACN,EAAM,kBAAoB,aAC5B,CACA,GAAI,CAAC,EAIH,OAHA,QAAQ,MACN,0EACF,CACO,KAET,GAAI,CACF,OAAO,EACL,IAAI,EAAW,MAAM,CACnB,GAAG,EACD,EACA,EACF,CACA,GAAI,EAAM,GACV,KAAM,EACN,QAAU,GAAY,EAAE,KACxB,cAAgB,GAAY,EAAE,WAC9B,QAAU,GAAsB,EAAK,QAAS,EAAI,CAClD,QAAU,GAAsB,EAAK,QAAS,EAAI,CACnD,CACH,CAAA,OACO,EAAK,CAKZ,OAJA,QAAQ,MACN,yDACA,EACF,CACO,cAaX,EAAY,EAAK,SATmB,CAMlC,EAAW,MAAQ,GAAQ,MALT,EAChB,0BACM,OAAO,uBACb,0FACF,EAC+B,WAAU,EAGX,CAEhC,EAAM,EAAa,GAAQ,CACzB,GAAI,CAAC,GAAO,CAAC,EAAM,KAAM,OACzB,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAS,EAAK,EAC1B,CAED,MACQ,CACJ,EAAM,KACN,EAAM,YACN,EAAM,YACN,EAAM,UACN,EAAM,QACN,EAAM,cACN,EAAM,SACN,EAAM,SACN,EAAM,WACN,EAAM,WACN,EAAM,eACN,EAAM,eACN,EAAM,QACN,EAAM,QACN,EAAM,SACR,KACM,CACJ,GAAI,CAAC,EAAW,OAAS,CAAC,EAAM,KAAM,OACtC,IAAM,EAAQ,GAAY,CACtB,GAAO,EAAY,EAAM,GAAI,EAAK,EAE1C,CAEA,MAAsB,EAAY,EAAM,GAAG,CAAA,QAI3C,EAAa,EAAA,OAAA,UAAA"}
|