@deck.gl/mapbox 8.9.0-beta.2 → 8.9.0-beta.4

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/dist.dev.js CHANGED
@@ -718,6 +718,7 @@ var deck = (() => {
718
718
  return map.__deck;
719
719
  }
720
720
  const customRender = deck?.props._customRender;
721
+ const onLoad = deck?.props.onLoad;
721
722
  const deckProps = getInterleavedProps({
722
723
  ...deck?.props,
723
724
  _customRender: () => {
@@ -734,7 +735,14 @@ var deck = (() => {
734
735
  touchAction: "unset",
735
736
  viewState: getViewState(map)
736
737
  });
737
- map.on("move", () => onMapMove(deckInstance, map));
738
+ if (deck?.isInitialized) {
739
+ watchMapMove(deck, map);
740
+ } else {
741
+ deckProps.onLoad = () => {
742
+ onLoad?.();
743
+ watchMapMove(deckInstance, map);
744
+ };
745
+ }
738
746
  }
739
747
  if (deck) {
740
748
  deckInstance = deck;
@@ -755,6 +763,16 @@ var deck = (() => {
755
763
  });
756
764
  return deckInstance;
757
765
  }
766
+ function watchMapMove(deck, map) {
767
+ const _handleMapMove = () => {
768
+ if (deck.isInitialized) {
769
+ onMapMove(deck, map);
770
+ } else {
771
+ map.off("move", _handleMapMove);
772
+ }
773
+ };
774
+ map.on("move", _handleMapMove);
775
+ }
758
776
  function getInterleavedProps(currProps) {
759
777
  const useDevicePixels = "useDevicePixels" in currProps ? currProps.useDevicePixels : true;
760
778
  const nextProps = {
@@ -36,6 +36,7 @@ function getDeckInstance(_ref) {
36
36
  }
37
37
 
38
38
  var customRender = deck === null || deck === void 0 ? void 0 : deck.props._customRender;
39
+ var onLoad = deck === null || deck === void 0 ? void 0 : deck.props.onLoad;
39
40
  var deckProps = getInterleavedProps(_objectSpread(_objectSpread({}, deck === null || deck === void 0 ? void 0 : deck.props), {}, {
40
41
  _customRender: function _customRender() {
41
42
  map.triggerRepaint();
@@ -52,9 +53,15 @@ function getDeckInstance(_ref) {
52
53
  touchAction: 'unset',
53
54
  viewState: getViewState(map)
54
55
  });
55
- map.on('move', function () {
56
- return onMapMove(deckInstance, map);
57
- });
56
+
57
+ if (deck !== null && deck !== void 0 && deck.isInitialized) {
58
+ watchMapMove(deck, map);
59
+ } else {
60
+ deckProps.onLoad = function () {
61
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
62
+ watchMapMove(deckInstance, map);
63
+ };
64
+ }
58
65
  }
59
66
 
60
67
  if (deck) {
@@ -77,6 +84,18 @@ function getDeckInstance(_ref) {
77
84
  return deckInstance;
78
85
  }
79
86
 
87
+ function watchMapMove(deck, map) {
88
+ var _handleMapMove = function _handleMapMove() {
89
+ if (deck.isInitialized) {
90
+ onMapMove(deck, map);
91
+ } else {
92
+ map.off('move', _handleMapMove);
93
+ }
94
+ };
95
+
96
+ map.on('move', _handleMapMove);
97
+ }
98
+
80
99
  function getInterleavedProps(currProps) {
81
100
  var useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
82
101
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deck-utils.ts"],"names":["TILE_SIZE","DEGREES_TO_RADIANS","Math","PI","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","userData","isExternal","Deck","finalize","mapboxLayers","Set","isInitialized","afterRender","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","sin","log2","cameraZFromSurface","cos","surfaceElevation","elevation","useMapboxProjection","WebMercatorViewport","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deckInstance, map));\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale = (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
1
+ {"version":3,"sources":["../../src/deck-utils.ts"],"names":["TILE_SIZE","DEGREES_TO_RADIANS","Math","PI","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","onLoad","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","isInitialized","watchMapMove","setProps","userData","isExternal","Deck","on","finalize","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","sin","log2","cameraZFromSurface","cos","surfaceElevation","elevation","useMapboxProjection","WebMercatorViewport","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale = (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
@@ -12,6 +12,7 @@ export function getDeckInstance({
12
12
  }
13
13
 
14
14
  const customRender = deck === null || deck === void 0 ? void 0 : deck.props._customRender;
15
+ const onLoad = deck === null || deck === void 0 ? void 0 : deck.props.onLoad;
15
16
  const deckProps = getInterleavedProps({ ...(deck === null || deck === void 0 ? void 0 : deck.props),
16
17
  _customRender: () => {
17
18
  map.triggerRepaint();
@@ -28,7 +29,15 @@ export function getDeckInstance({
28
29
  touchAction: 'unset',
29
30
  viewState: getViewState(map)
30
31
  });
31
- map.on('move', () => onMapMove(deckInstance, map));
32
+
33
+ if (deck !== null && deck !== void 0 && deck.isInitialized) {
34
+ watchMapMove(deck, map);
35
+ } else {
36
+ deckProps.onLoad = () => {
37
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad();
38
+ watchMapMove(deckInstance, map);
39
+ };
40
+ }
32
41
  }
33
42
 
34
43
  if (deck) {
@@ -50,6 +59,19 @@ export function getDeckInstance({
50
59
  });
51
60
  return deckInstance;
52
61
  }
62
+
63
+ function watchMapMove(deck, map) {
64
+ const _handleMapMove = () => {
65
+ if (deck.isInitialized) {
66
+ onMapMove(deck, map);
67
+ } else {
68
+ map.off('move', _handleMapMove);
69
+ }
70
+ };
71
+
72
+ map.on('move', _handleMapMove);
73
+ }
74
+
53
75
  export function getInterleavedProps(currProps) {
54
76
  const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
55
77
  const nextProps = { ...currProps,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deck-utils.ts"],"names":["Deck","WebMercatorViewport","MapView","_flatten","flatten","lngLatToWorld","unitsPerMeter","TILE_SIZE","DEGREES_TO_RADIANS","Math","PI","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","userData","isExternal","finalize","mapboxLayers","Set","isInitialized","afterRender","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","sin","log2","cameraZFromSurface","cos","surfaceElevation","elevation","useMapboxProjection","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deckInstance, map));\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale = (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
1
+ {"version":3,"sources":["../../src/deck-utils.ts"],"names":["Deck","WebMercatorViewport","MapView","_flatten","flatten","lngLatToWorld","unitsPerMeter","TILE_SIZE","DEGREES_TO_RADIANS","Math","PI","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","onLoad","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","isInitialized","watchMapMove","setProps","userData","isExternal","on","finalize","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","sin","log2","cameraZFromSurface","cos","surfaceElevation","elevation","useMapboxProjection","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale = (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
package/dist.min.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var deck=(()=>{var nt=Object.create;var mr=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),vt=(r,e)=>{for(var t in e)mr(r,t,{get:e[t],enumerable:!0})},Mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of it(e))!ot.call(r,a)&&a!==t&&mr(r,a,{get:()=>e[a],enumerable:!(n=at(e,a))||n.enumerable});return r},B=(r,e,t)=>(Mr(r,e,"default"),t&&Mr(t,e,"default")),I=(r,e,t)=>(t=r!=null?nt(st(r)):{},Mr(e||!r||!r.__esModule?mr(t,"default",{value:r,enumerable:!0}):t,r)),lt=r=>Mr(mr({},"__esModule",{value:!0}),r);var rr=J((St,ve)=>{ve.exports=globalThis.deck});var kr=J((Rt,fe)=>{function ft(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}fe.exports=ft});var Nr=J((Dt,he)=>{function ce(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function ct(r,e,t){return e&&ce(r.prototype,e),t&&ce(r,t),r}he.exports=ct});var gr=J((It,pe)=>{function ht(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}pe.exports=ht});var $e=J((va,qe)=>{function bt(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}qe.exports=bt});var We=J((la,Ve)=>{var At=$e();function zt(r,e){if(r==null)return{};var t=At(r,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}Ve.exports=zt});var dr={};vt(dr,{MapboxLayer:()=>Lr,MapboxOverlay:()=>Qe});var V={},le=I(rr());B(V,I(rr()));if(!le.Layer)throw new Error("@deck.gl/core is not found");B(dr,V);var Ye=I(kr()),Ze=I(Nr()),G=I(gr());var De=I(gr()),X=I(rr());function er(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function Fr(r){if(Array.isArray(r))return er(r)}function Cr(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function fr(r,e){if(r){if(typeof r=="string")return er(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return er(r,e)}}function Yr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||fr(r)||Yr()}function Zr(r){if(Array.isArray(r))return r}function qr(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,i=!1,s,o;try{for(t=t.call(r);!(a=(s=t.next()).done)&&(n.push(s.value),!(e&&n.length===e));a=!0);}catch(v){i=!0,o=v}finally{try{!a&&t.return!=null&&t.return()}finally{if(i)throw o}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
3
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||fr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function de(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&de(r.prototype,e),t&&de(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var T=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var sn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function pt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function Me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function me(r,e,t){var n=e[0],a=e[1],i=e[2],s=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*i+t[12]*s,r[1]=t[1]*n+t[5]*a+t[9]*i+t[13]*s,r[2]=t[2]*n+t[6]*a+t[10]*i+t[14]*s,r[3]=t[3]*n+t[7]*a+t[11]*i+t[15]*s,r}var on=function(){var r=pt();return function(e,t,n,a,i,s){var o,v;for(t||(t=4),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],r[2]=e[o+2],r[3]=e[o+3],i(r,r,s),e[o]=r[0],e[o+1]=r[1],e[o+2]=r[2],e[o+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function U(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function cr(r,e,t){return r<e?e:r>t?t:r}function dt(r){return Math.log(r)*Math.LOG2E}var ur=Math.log2||dt;function ge(r,e){var t=e[0],n=e[1],a=e[2],i=e[3],s=e[4],o=e[5],v=e[6],l=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*o-n*s,p=t*v-a*s,g=t*l-i*s,m=n*v-a*o,x=n*l-i*o,A=a*l-i*v,R=c*_-f*u,L=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,E=h*M-y*w,d=P*E-p*O+g*z+m*S-x*L+A*R;return d?(d=1/d,r[0]=(o*E-v*O+l*z)*d,r[1]=(a*O-n*E-i*z)*d,r[2]=(_*A-w*x+M*m)*d,r[3]=(h*x-f*A-y*m)*d,r[4]=(v*S-s*E-l*L)*d,r[5]=(t*E-a*S+i*L)*d,r[6]=(w*g-u*A-M*p)*d,r[7]=(c*A-h*g+y*p)*d,r[8]=(s*O-o*S+l*R)*d,r[9]=(n*S-t*O-i*R)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(o*L-s*z-v*R)*d,r[13]=(t*z-n*L+a*R)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function _r(r,e,t){var n=e[0],a=e[1],i=e[2],s=e[3],o=e[4],v=e[5],l=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*o+m*f+x*_,r[1]=p*a+g*v+m*h+x*w,r[2]=p*i+g*l+m*y+x*M,r[3]=p*s+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*o+m*f+x*_,r[5]=p*a+g*v+m*h+x*w,r[6]=p*i+g*l+m*y+x*M,r[7]=p*s+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*o+m*f+x*_,r[9]=p*a+g*v+m*h+x*w,r[10]=p*i+g*l+m*y+x*M,r[11]=p*s+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*o+m*f+x*_,r[13]=p*a+g*v+m*h+x*w,r[14]=p*i+g*l+m*y+x*M,r[15]=p*s+g*c+m*u+x*P,r}function hr(r,e,t){var n=t[0],a=t[1],i=t[2],s,o,v,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*i+e[12],r[13]=e[1]*n+e[5]*a+e[9]*i+e[13],r[14]=e[2]*n+e[6]*a+e[10]*i+e[14],r[15]=e[3]*n+e[7]*a+e[11]*i+e[15]):(s=e[0],o=e[1],v=e[2],l=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=s,r[1]=o,r[2]=v,r[3]=l,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=s*n+c*a+u*i+e[12],r[13]=o*n+f*a+_*i+e[13],r[14]=v*n+h*a+w*i+e[14],r[15]=l*n+y*a+M*i+e[15]),r}function wr(r,e,t){var n=t[0],a=t[1],i=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*i,r[9]=e[9]*i,r[10]=e[10]*i,r[11]=e[11]*i,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ye(r,e,t){var n=Math.sin(t),a=Math.cos(t),i=e[4],s=e[5],o=e[6],v=e[7],l=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=i*a+l*n,r[5]=s*a+c*n,r[6]=o*a+f*n,r[7]=v*a+h*n,r[8]=l*a-i*n,r[9]=c*a-s*n,r[10]=f*a-o*n,r[11]=h*a-v*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),i=e[0],s=e[1],o=e[2],v=e[3],l=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=i*a+l*n,r[1]=s*a+c*n,r[2]=o*a+f*n,r[3]=v*a+h*n,r[4]=l*a-i*n,r[5]=c*a-s*n,r[6]=f*a-o*n,r[7]=h*a-v*n,r}function xt(r,e,t,n,a){var i=1/Math.tan(e/2),s;return r[0]=i/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=i,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(s=1/(n-a),r[10]=(a+n)*s,r[14]=2*a*n*s):(r[10]=-1,r[14]=-2*n),r}var _e=xt;function Br(r,e){var t=r[0],n=r[1],a=r[2],i=r[3],s=r[4],o=r[5],v=r[6],l=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],A=e[5],R=e[6],L=e[7],S=e[8],z=e[9],O=e[10],E=e[11],d=e[12],$=e[13],N=e[14],D=e[15];return Math.abs(t-P)<=T*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=T*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=T*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(i-m)<=T*Math.max(1,Math.abs(i),Math.abs(m))&&Math.abs(s-x)<=T*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-A)<=T*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(v-R)<=T*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(l-L)<=T*Math.max(1,Math.abs(l),Math.abs(L))&&Math.abs(c-S)<=T*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=T*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=T*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-E)<=T*Math.max(1,Math.abs(y),Math.abs(E))&&Math.abs(u-d)<=T*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=T*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-N)<=T*Math.max(1,Math.abs(w),Math.abs(N))&&Math.abs(M-D)<=T*Math.max(1,Math.abs(M),Math.abs(D))}function Mt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Ur(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Pe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Pr(r,e,t,n){var a=e[0],i=e[1];return r[0]=a+n*(t[0]-a),r[1]=i+n*(t[1]-i),r}var cn=function(){var r=Mt();return function(e,t,n,a,i,s){var o,v;for(t||(t=2),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],i(r,r,s),e[o]=r[0],e[o+1]=r[1];return e}}();function mt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Oe(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function gt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function be(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var Ae=gt;var hn=function(){var r=mt();return function(e,t,n,a,i,s){var o,v;for(t||(t=3),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,o=n;o<v;o+=t)r[0]=e[o],r[1]=e[o+1],r[2]=e[o+2],i(r,r,s),e[o]=r[0],e[o+1]=r[1],e[o+2]=r[2];return e}}();function F(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var C=Math.PI,Ee=C/4,Y=C/180,Hr=180/C,ar=512,Gr=4003e4,sr=85.051129,Qr=1.5;function Or(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];F(Number.isFinite(t)),F(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Y,i=n*Y,s=ar*(a+C)/(2*C),o=ar*(C+Math.log(Math.tan(Ee+i*.5)))/(2*C);return[s,o]}function Z(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*C)-C,i=2*(Math.atan(Math.exp(n/ar*(2*C)-C))-Ee);return[a*Hr,i*Hr]}function Kr(r){var e=Math.cos(r*Y);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;F(Number.isFinite(e)&&Number.isFinite(t));var i=ar,s=Math.cos(e*Y),o=i/360,v=o/s,l=i/Gr/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[o,v,l],degreesPerUnit:[1/o,1/v,1/l]};if(a){var f=Y*Math.tan(e*Y)/s,h=o*f/2,y=i/Gr*f,u=y/v*l;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,i=r.scale,s=r.center,o=nr();hr(o,o,[0,0,-a]),ye(o,o,-t*Y),ue(o,o,n*Y);var v=i/e;return wr(o,o,[v,v,v]),s&&hr(o,o,be([],s)),o}function Te(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,i=a===void 0?0:a,s=r.offset,o=r.center,v=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Y,w=i*Y,M=br(u),P=M;o&&(P+=o[2]*v/Math.cos(w)/t);var p=_*(.5+(s?s[1]:0)/t),g=Math.sin(p)*P/Math.sin(cr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,A=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:A}}function ee(r){var e=Te(r),t=e.fov,n=e.aspect,a=e.near,i=e.far,s=_e([],t,n,a,i);return s}function ir(r){return 2*Math.atan(.5/r)*Hr}function br(r){return .5/Math.tan(.5*r*Y)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],i=t[2],s=i===void 0?0:i;return F(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(s)),U(e,[n,a,s,1])}function Ar(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],i=n[1],s=n[2];if(F(Number.isFinite(a)&&Number.isFinite(i),"invalid pixel coordinate"),Number.isFinite(s)){var o=U(e,[a,i,s,1]);return o}var v=U(e,[a,i,0,1]),l=U(e,[a,i,1,1]),c=v[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Pr([],v,l,h)}function zr(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,i=a===void 0?0:a,s=r.maxZoom,o=s===void 0?24:s,v=r.offset,l=v===void 0?[0,0]:v,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=yt(r.padding),P=k([h,cr(w,-sr,sr)]),p=k([_,cr(y,-sr,sr)]),g=[Math.max(Math.abs(p[0]-P[0]),i),Math.max(Math.abs(p[1]-P[1]),i)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];F(m[0]>0&&m[1]>0);var x=m[0]/g[0],A=m[1]/g[1],R=(M.right-M.left)/2/x,L=(M.bottom-M.top)/2/A,S=[(p[0]+P[0])/2+R,(p[1]+P[1])/2+L],z=Z(S),O=Math.min(o,ur(Math.abs(Math.min(x,A))));return F(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function yt(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(F(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Le=Math.PI/180;function Er(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,i={targetZ:e},s=a([0,n],i),o=a([t,n],i),v,l,c=r.fovy?.5*r.fovy*Le:Math.atan(.5/r.altitude),f=(90-r.pitch)*Le;return c>f-.01?(v=Se(r,0,e),l=Se(r,t,e)):(v=a([0,0],i),l=a([t,0],i)),[s,o,l,v]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=U(n,[e,0,1,1]),i=U(n,[e,r.height,1,1]),s=t*r.distanceScales.unitsPerMeter[2],o=(s-a[2])/(i[2]-a[2]),v=Pr([],a,i,o),l=Z(v);return l.push(t),l}var je=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Br(O.projectionMatrix,e.projectionMatrix)&&Br(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=e.projectPosition(O),D=te(N,e.pixelProjectionMatrix),K=j(D,2),xr=K[0],vr=K[1],lr=$?vr:e.height-vr;return O.length===2?[xr,lr]:[xr,lr,D[2]]}),b(this,"unproject",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=E.targetZ,D=N===void 0?void 0:N,K=j(O,3),xr=K[0],vr=K[1],lr=K[2],Ke=$?vr:e.height-vr,Je=D&&D*e.distanceScales.unitsPerMeter[2],rt=Ar([xr,Ke,lr],e.pixelUnprojectionMatrix,Je),et=e.unprojectPosition(rt),Rr=j(et,3),Dr=Rr[0],Ir=Rr[1],tt=Rr[2];return Number.isFinite(lr)?[Dr,Ir,tt]:Number.isFinite(D)?[Dr,Ir,D]:[Dr,Ir]}),b(this,"projectPosition",function(O){var E=k(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,N,D]}),b(this,"unprojectPosition",function(O){var E=Z(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,N,D]});var n=t.width,a=t.height,i=t.altitude,s=i===void 0?null:i,o=t.fovy,v=o===void 0?null:o,l=t.latitude,c=l===void 0?0:l,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,A=t.farZMultiplier,R=A===void 0?1.01:A;n=n||1,a=a||1,v===null&&s===null?(s=Qr,v=ir(s)):v===null?v=ir(s):s===null&&(s=br(v));var L=Or(u);s=Math.max(.75,s);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ae([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:L,center:z,pitch:w,fovy:v,nearZMultiplier:x,farZMultiplier:R}),this.viewMatrix=re({height:a,scale:L,center:z,pitch:w,bearing:P,altitude:s}),this.width=n,this.height=a,this.scale=L,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=s,this.fovy=v,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,i=this.viewMatrix,s=nr();_r(s,s,a),_r(s,s,i),this.viewProjectionMatrix=s;var o=nr();wr(o,o,[t/2,-n/2,1]),hr(o,o,[1,-1,0]),_r(o,o,s);var v=ge(nr(),o);if(!v)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=o,this.pixelUnprojectionMatrix=v}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return Z(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,i=Ar(a,this.pixelUnprojectionMatrix),s=k(n),o=Ur([],s,Pe([],i)),v=Ur([],this.center,o);return Z(v)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,i=this.height,s=zr(Object.assign({width:a,height:i,bounds:t},n)),o=s.longitude,v=s.latitude,l=s.zoom;return new r({width:a,height:i,longitude:o,latitude:v,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(v){return v[0]}))),i=Math.max.apply(Math,tr(n.map(function(v){return v[0]}))),s=Math.min.apply(Math,tr(n.map(function(v){return v[1]}))),o=Math.max.apply(Math,tr(n.map(function(v){return v[1]})));return[[a,s],[i,o]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Er(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function Re(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function H(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Re(Object(t),!0).forEach(function(n){(0,De.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Re(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,_t=Math.PI/180;function Tr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,i=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),s;return(!n||n.props.gl===t)&&(Object.assign(i,{gl:t,width:null,height:null,touchAction:"unset",viewState:or(e)}),e.on("move",function(){return Ot(s,e)})),n?(s=n,n.setProps(i),n.userData.isExternal=!0):(s=new X.Deck(i),e.on("remove",function(){s.finalize(),e.__deck=null})),s.userData.mapboxLayers=new Set,e.__deck=s,e.on("render",function(){s.isInitialized&&Pt(s,e)}),s}function ae(r){var e="useDevicePixels"in r?r.useDevicePixels:!0,t=H(H({},r),{},{useDevicePixels:e,parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return t}function Ie(r,e){r.userData.mapboxLayers.add(e),ie(r)}function ke(r,e){r.userData.mapboxLayers.delete(e),ie(r)}function Ne(r,e){ie(r)}function Fe(r,e,t){var n=r.userData,a=n.currentViewport,i=!1;a||(a=Ce(r,e,!0),r.userData.currentViewport=a,i=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(o){var v=o.layer;return t.id===v.id},clearStack:i,clearCanvas:!1})}function or(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,i={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&wt(r,i),i}function wt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,i=e.longitude,s=e.latitude,o=e.pitch,v=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=k([i,s]),h=v-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=o*_t,w=1.5*a,M=w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(s)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ce(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},or(e)),{},{nearZMultiplier:t?.02:.1}))}function Pt(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var i=Array.from(n,function(f){return f.id}),s=(0,X._flatten)(r.props.layers,Boolean),o=s.some(function(f){return f&&!i.includes(f.id)}),v=r.getViewports(),l=v.findIndex(function(f){return f.id==="mapbox"}),c=v.length>1||l<0;(o||c)&&(l>=0&&(v=v.slice(),v[l]=Ce(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:v,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!i.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function Ot(r,e){r.setProps({viewState:or(e)}),r.needsRedraw({clearRedrawFlags:!0})}function ie(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Lr=function(){function r(e){if((0,Ye.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,Ze.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Tr({map:t,gl:n,deck:this.props.deck}),Ie(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&ke(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Ne(this.deck,this)}},{key:"render",value:function(){Fe(this.deck,this.map,this)}}]),r}();var Xe=I(We()),He=I(kr()),Ge=I(Nr()),q=I(gr()),Q=I(rr());var oe=I(rr());function Sr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Et(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
4
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,s=!1,o;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return i=l.done,l},e:function(l){s=!0,o=l},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(s)throw o}}}}function Et(r,e){if(r){if(typeof r=="string")return Be(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Be(r,e)}}function Be(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var se="__UNDEFINED__";function pr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,oe._flatten)(n,Boolean);if(t!==n){var i=(0,oe._flatten)(t,Boolean),s=new Set(i.map(function(d){return d.id})),o=Sr(a),v;try{for(o.s();!(v=o.n()).done;){var l=v.value;s.delete(l.id)}}catch(d){o.e(d)}finally{o.f()}var c=Sr(s),f;try{for(c.s();!(f=c.n()).done;){var h=f.value;r.getLayer(h)&&r.removeLayer(h)}}catch(d){c.e(d)}finally{c.f()}}var y=Sr(a),u;try{for(y.s();!(u=y.n()).done;){var _=u.value,w=r.getLayer(_.id);w?w.implementation.setProps(_.props):r.addLayer(new Lr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=Sr(a),g;try{for(p.s();!(g=p.n()).done;){var m=g.value,x=m.props.beforeId;(!x||!M.includes(x))&&(x=se),P[x]=P[x]||[],P[x].push(m.id)}}catch(d){p.e(d)}finally{p.f()}for(var A in P)for(var R=P[A],L=A===se?M.length:M.indexOf(A),S=A===se?void 0:A,z=R.length-1;z>=0;z--){var O=R[z],E=M.indexOf(O);E!==L-1&&(r.moveLayer(O,S),E>L&&L++),L--,S=O}}}var Tt=["interleaved"];function Ue(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function jr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ue(Object(t),!0).forEach(function(n){(0,q.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Ue(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Qe=function(){function r(e){var t=this;(0,He.default)(this,r),(0,q.default)(this,"_props",void 0),(0,q.default)(this,"_deck",void 0),(0,q.default)(this,"_map",void 0),(0,q.default)(this,"_container",void 0),(0,q.default)(this,"_interleaved",void 0),(0,q.default)(this,"_handleStyleChange",function(){pr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,q.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var s=t._map.getContainer(),o=s.clientWidth,v=s.clientHeight;Object.assign(t._container.style,{width:"".concat(o,"px"),height:"".concat(v,"px")})}}),(0,q.default)(this,"_updateViewState",function(){var s=t._deck;s&&(s.setProps({viewState:or(t._map)}),s.redraw())}),(0,q.default)(this,"_handleMouseEvent",function(s){var o=t._deck;if(o){var v={type:s.type,offsetCenter:s.point,srcEvent:s};switch(s.type){case"click":v.tapCount=1,o._onPointerDown(v),o._onEvent(v);break;case"dblclick":v.type="click",v.tapCount=2,o._onEvent(v);break;case"mousemove":v.type="pointermove",o._onPointerMove(v);break;case"mouseout":v.type="pointerleave",o._onPointerMove(v);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,i=(0,Xe.default)(e,Tt);this._interleaved=a,this._props=i}return(0,Ge.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&pr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?ae(this._props):this._props)}},{key:"onAdd",value:function(t){return this._map=t,this._interleaved?this._onAddInterleaved(t):this._onAddOverlaid(t)}},{key:"_onAddOverlaid",value:function(t){var n=document.createElement("div");return Object.assign(n.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=n,this._deck=new Q.Deck(jr(jr({},this._props),{},{parent:n,viewState:or(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousemove",this._handleMouseEvent),t.on("mouseout",this._handleMouseEvent),t.on("click",this._handleMouseEvent),t.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),n}},{key:"_onAddInterleaved",value:function(t){return this._deck=Tr({map:t,gl:t.painter.context.gl,deck:new Q.Deck(jr(jr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),pr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t,n=this._map;n&&(this._interleaved?this._onRemoveInterleaved(n):this._onRemoveOverlaid(n)),(t=this._deck)===null||t===void 0||t.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),pr(t,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObject(t)}},{key:"pickMultipleObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickMultipleObjects(t)}},{key:"pickObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObjects(t)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),r}();return lt(dr);})();
1
+ "use strict";var deck=(()=>{var at=Object.create;var mr=Object.defineProperty;var it=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,vt=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),lt=(r,e)=>{for(var t in e)mr(r,t,{get:e[t],enumerable:!0})},Mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ot(e))!vt.call(r,a)&&a!==t&&mr(r,a,{get:()=>e[a],enumerable:!(n=it(e,a))||n.enumerable});return r},B=(r,e,t)=>(Mr(r,e,"default"),t&&Mr(t,e,"default")),I=(r,e,t)=>(t=r!=null?at(st(r)):{},Mr(e||!r||!r.__esModule?mr(t,"default",{value:r,enumerable:!0}):t,r)),ft=r=>Mr(mr({},"__esModule",{value:!0}),r);var rr=J((jt,ve)=>{ve.exports=globalThis.deck});var kr=J((Dt,fe)=>{function ct(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}fe.exports=ct});var Nr=J((It,he)=>{function ce(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function ht(r,e,t){return e&&ce(r.prototype,e),t&&ce(r,t),r}he.exports=ht});var gr=J((kt,pe)=>{function pt(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}pe.exports=pt});var Ve=J((la,$e)=>{function At(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,o;for(o=0;o<n.length;o++)a=n[o],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}$e.exports=At});var Be=J((fa,We)=>{var zt=Ve();function Et(r,e){if(r==null)return{};var t=zt(r,e),n,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);for(a=0;a<o.length;a++)n=o[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}We.exports=Et});var dr={};lt(dr,{MapboxLayer:()=>Tr,MapboxOverlay:()=>Ke});var V={},le=I(rr());B(V,I(rr()));if(!le.Layer)throw new Error("@deck.gl/core is not found");B(dr,V);var Ze=I(kr()),qe=I(Nr()),G=I(gr());var Ie=I(gr()),X=I(rr());function er(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function Fr(r){if(Array.isArray(r))return er(r)}function Cr(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function fr(r,e){if(r){if(typeof r=="string")return er(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return er(r,e)}}function Yr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||fr(r)||Yr()}function Zr(r){if(Array.isArray(r))return r}function qr(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,o=!1,s,i;try{for(t=t.call(r);!(a=(s=t.next()).done)&&(n.push(s.value),!(e&&n.length===e));a=!0);}catch(v){o=!0,i=v}finally{try{!a&&t.return!=null&&t.return()}finally{if(o)throw i}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
3
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||fr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function de(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&de(r.prototype,e),t&&de(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var L=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var sn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function dt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function Me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function me(r,e,t){var n=e[0],a=e[1],o=e[2],s=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*o+t[12]*s,r[1]=t[1]*n+t[5]*a+t[9]*o+t[13]*s,r[2]=t[2]*n+t[6]*a+t[10]*o+t[14]*s,r[3]=t[3]*n+t[7]*a+t[11]*o+t[15]*s,r}var vn=function(){var r=dt();return function(e,t,n,a,o,s){var i,v;for(t||(t=4),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],o(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2],e[i+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function U(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function cr(r,e,t){return r<e?e:r>t?t:r}function xt(r){return Math.log(r)*Math.LOG2E}var ur=Math.log2||xt;function ge(r,e){var t=e[0],n=e[1],a=e[2],o=e[3],s=e[4],i=e[5],v=e[6],l=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*i-n*s,p=t*v-a*s,g=t*l-o*s,m=n*v-a*i,x=n*l-o*i,A=a*l-o*v,R=c*_-f*u,T=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,E=h*M-y*w,d=P*E-p*O+g*z+m*S-x*T+A*R;return d?(d=1/d,r[0]=(i*E-v*O+l*z)*d,r[1]=(a*O-n*E-o*z)*d,r[2]=(_*A-w*x+M*m)*d,r[3]=(h*x-f*A-y*m)*d,r[4]=(v*S-s*E-l*T)*d,r[5]=(t*E-a*S+o*T)*d,r[6]=(w*g-u*A-M*p)*d,r[7]=(c*A-h*g+y*p)*d,r[8]=(s*O-i*S+l*R)*d,r[9]=(n*S-t*O-o*R)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(i*T-s*z-v*R)*d,r[13]=(t*z-n*T+a*R)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function _r(r,e,t){var n=e[0],a=e[1],o=e[2],s=e[3],i=e[4],v=e[5],l=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*i+m*f+x*_,r[1]=p*a+g*v+m*h+x*w,r[2]=p*o+g*l+m*y+x*M,r[3]=p*s+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*i+m*f+x*_,r[5]=p*a+g*v+m*h+x*w,r[6]=p*o+g*l+m*y+x*M,r[7]=p*s+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*i+m*f+x*_,r[9]=p*a+g*v+m*h+x*w,r[10]=p*o+g*l+m*y+x*M,r[11]=p*s+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*i+m*f+x*_,r[13]=p*a+g*v+m*h+x*w,r[14]=p*o+g*l+m*y+x*M,r[15]=p*s+g*c+m*u+x*P,r}function hr(r,e,t){var n=t[0],a=t[1],o=t[2],s,i,v,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*o+e[12],r[13]=e[1]*n+e[5]*a+e[9]*o+e[13],r[14]=e[2]*n+e[6]*a+e[10]*o+e[14],r[15]=e[3]*n+e[7]*a+e[11]*o+e[15]):(s=e[0],i=e[1],v=e[2],l=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=s,r[1]=i,r[2]=v,r[3]=l,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=s*n+c*a+u*o+e[12],r[13]=i*n+f*a+_*o+e[13],r[14]=v*n+h*a+w*o+e[14],r[15]=l*n+y*a+M*o+e[15]),r}function wr(r,e,t){var n=t[0],a=t[1],o=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*o,r[9]=e[9]*o,r[10]=e[10]*o,r[11]=e[11]*o,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ye(r,e,t){var n=Math.sin(t),a=Math.cos(t),o=e[4],s=e[5],i=e[6],v=e[7],l=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=o*a+l*n,r[5]=s*a+c*n,r[6]=i*a+f*n,r[7]=v*a+h*n,r[8]=l*a-o*n,r[9]=c*a-s*n,r[10]=f*a-i*n,r[11]=h*a-v*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),o=e[0],s=e[1],i=e[2],v=e[3],l=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=o*a+l*n,r[1]=s*a+c*n,r[2]=i*a+f*n,r[3]=v*a+h*n,r[4]=l*a-o*n,r[5]=c*a-s*n,r[6]=f*a-i*n,r[7]=h*a-v*n,r}function Mt(r,e,t,n,a){var o=1/Math.tan(e/2),s;return r[0]=o/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=o,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(s=1/(n-a),r[10]=(a+n)*s,r[14]=2*a*n*s):(r[10]=-1,r[14]=-2*n),r}var _e=Mt;function Br(r,e){var t=r[0],n=r[1],a=r[2],o=r[3],s=r[4],i=r[5],v=r[6],l=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],A=e[5],R=e[6],T=e[7],S=e[8],z=e[9],O=e[10],E=e[11],d=e[12],$=e[13],N=e[14],D=e[15];return Math.abs(t-P)<=L*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=L*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=L*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(o-m)<=L*Math.max(1,Math.abs(o),Math.abs(m))&&Math.abs(s-x)<=L*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(i-A)<=L*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(v-R)<=L*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(l-T)<=L*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(c-S)<=L*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=L*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=L*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-E)<=L*Math.max(1,Math.abs(y),Math.abs(E))&&Math.abs(u-d)<=L*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=L*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-N)<=L*Math.max(1,Math.abs(w),Math.abs(N))&&Math.abs(M-D)<=L*Math.max(1,Math.abs(M),Math.abs(D))}function mt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Ur(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Pe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Pr(r,e,t,n){var a=e[0],o=e[1];return r[0]=a+n*(t[0]-a),r[1]=o+n*(t[1]-o),r}var hn=function(){var r=mt();return function(e,t,n,a,o,s){var i,v;for(t||(t=2),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],o(r,r,s),e[i]=r[0],e[i+1]=r[1];return e}}();function gt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Oe(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function yt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function be(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var Ae=yt;var pn=function(){var r=gt();return function(e,t,n,a,o,s){var i,v;for(t||(t=3),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],o(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function F(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var C=Math.PI,Ee=C/4,Y=C/180,Hr=180/C,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function Or(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];F(Number.isFinite(t)),F(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Y,o=n*Y,s=ar*(a+C)/(2*C),i=ar*(C+Math.log(Math.tan(Ee+o*.5)))/(2*C);return[s,i]}function Z(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*C)-C,o=2*(Math.atan(Math.exp(n/ar*(2*C)-C))-Ee);return[a*Hr,o*Hr]}function Kr(r){var e=Math.cos(r*Y);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;F(Number.isFinite(e)&&Number.isFinite(t));var o=ar,s=Math.cos(e*Y),i=o/360,v=i/s,l=o/Gr/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[i,v,l],degreesPerUnit:[1/i,1/v,1/l]};if(a){var f=Y*Math.tan(e*Y)/s,h=i*f/2,y=o/Gr*f,u=y/v*l;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,o=r.scale,s=r.center,i=nr();hr(i,i,[0,0,-a]),ye(i,i,-t*Y),ue(i,i,n*Y);var v=o/e;return wr(i,i,[v,v,v]),s&&hr(i,i,be([],s)),i}function Le(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,o=a===void 0?0:a,s=r.offset,i=r.center,v=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Y,w=o*Y,M=br(u),P=M;i&&(P+=i[2]*v/Math.cos(w)/t);var p=_*(.5+(s?s[1]:0)/t),g=Math.sin(p)*P/Math.sin(cr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,A=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:A}}function ee(r){var e=Le(r),t=e.fov,n=e.aspect,a=e.near,o=e.far,s=_e([],t,n,a,o);return s}function ir(r){return 2*Math.atan(.5/r)*Hr}function br(r){return .5/Math.tan(.5*r*Y)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],o=t[2],s=o===void 0?0:o;return F(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(s)),U(e,[n,a,s,1])}function Ar(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],o=n[1],s=n[2];if(F(Number.isFinite(a)&&Number.isFinite(o),"invalid pixel coordinate"),Number.isFinite(s)){var i=U(e,[a,o,s,1]);return i}var v=U(e,[a,o,0,1]),l=U(e,[a,o,1,1]),c=v[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Pr([],v,l,h)}function zr(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,o=a===void 0?0:a,s=r.maxZoom,i=s===void 0?24:s,v=r.offset,l=v===void 0?[0,0]:v,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=ut(r.padding),P=k([h,cr(w,-or,or)]),p=k([_,cr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),o),Math.max(Math.abs(p[1]-P[1]),o)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];F(m[0]>0&&m[1]>0);var x=m[0]/g[0],A=m[1]/g[1],R=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/A,S=[(p[0]+P[0])/2+R,(p[1]+P[1])/2+T],z=Z(S),O=Math.min(i,ur(Math.abs(Math.min(x,A))));return F(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function ut(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(F(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Te=Math.PI/180;function Er(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,o={targetZ:e},s=a([0,n],o),i=a([t,n],o),v,l,c=r.fovy?.5*r.fovy*Te:Math.atan(.5/r.altitude),f=(90-r.pitch)*Te;return c>f-.01?(v=Se(r,0,e),l=Se(r,t,e)):(v=a([0,0],o),l=a([t,0],o)),[s,i,l,v]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=U(n,[e,0,1,1]),o=U(n,[e,r.height,1,1]),s=t*r.distanceScales.unitsPerMeter[2],i=(s-a[2])/(o[2]-a[2]),v=Pr([],a,o,i),l=Z(v);return l.push(t),l}var je=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Br(O.projectionMatrix,e.projectionMatrix)&&Br(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=e.projectPosition(O),D=te(N,e.pixelProjectionMatrix),K=j(D,2),xr=K[0],vr=K[1],lr=$?vr:e.height-vr;return O.length===2?[xr,lr]:[xr,lr,D[2]]}),b(this,"unproject",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=E.targetZ,D=N===void 0?void 0:N,K=j(O,3),xr=K[0],vr=K[1],lr=K[2],Je=$?vr:e.height-vr,rt=D&&D*e.distanceScales.unitsPerMeter[2],et=Ar([xr,Je,lr],e.pixelUnprojectionMatrix,rt),tt=e.unprojectPosition(et),Rr=j(tt,3),Dr=Rr[0],Ir=Rr[1],nt=Rr[2];return Number.isFinite(lr)?[Dr,Ir,nt]:Number.isFinite(D)?[Dr,Ir,D]:[Dr,Ir]}),b(this,"projectPosition",function(O){var E=k(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,N,D]}),b(this,"unprojectPosition",function(O){var E=Z(O),d=j(E,2),$=d[0],N=d[1],D=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,N,D]});var n=t.width,a=t.height,o=t.altitude,s=o===void 0?null:o,i=t.fovy,v=i===void 0?null:i,l=t.latitude,c=l===void 0?0:l,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,A=t.farZMultiplier,R=A===void 0?1.01:A;n=n||1,a=a||1,v===null&&s===null?(s=Qr,v=ir(s)):v===null?v=ir(s):s===null&&(s=br(v));var T=Or(u);s=Math.max(.75,s);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ae([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:v,nearZMultiplier:x,farZMultiplier:R}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:s}),this.width=n,this.height=a,this.scale=T,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=s,this.fovy=v,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,o=this.viewMatrix,s=nr();_r(s,s,a),_r(s,s,o),this.viewProjectionMatrix=s;var i=nr();wr(i,i,[t/2,-n/2,1]),hr(i,i,[1,-1,0]),_r(i,i,s);var v=ge(nr(),i);if(!v)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=v}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return Z(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,o=Ar(a,this.pixelUnprojectionMatrix),s=k(n),i=Ur([],s,Pe([],o)),v=Ur([],this.center,i);return Z(v)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,o=this.height,s=zr(Object.assign({width:a,height:o,bounds:t},n)),i=s.longitude,v=s.latitude,l=s.zoom;return new r({width:a,height:o,longitude:i,latitude:v,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(v){return v[0]}))),o=Math.max.apply(Math,tr(n.map(function(v){return v[0]}))),s=Math.min.apply(Math,tr(n.map(function(v){return v[1]}))),i=Math.max.apply(Math,tr(n.map(function(v){return v[1]})));return[[a,s],[o,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Er(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function Re(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function H(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Re(Object(t),!0).forEach(function(n){(0,Ie.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Re(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,wt=Math.PI/180;function Lr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,o=n?.props.onLoad,s=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(s,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?De(n,e):s.onLoad=function(){o?.(),De(i,e)}),n?(i=n,n.setProps(s),n.userData.isExternal=!0):(i=new X.Deck(s),e.on("remove",function(){i.finalize(),e.__deck=null})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&Ot(i,e)}),i}function De(r,e){var t=function n(){r.isInitialized?bt(r,e):e.off("move",n)};e.on("move",t)}function ae(r){var e="useDevicePixels"in r?r.useDevicePixels:!0,t=H(H({},r),{},{useDevicePixels:e,parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return t}function ke(r,e){r.userData.mapboxLayers.add(e),ie(r)}function Ne(r,e){r.userData.mapboxLayers.delete(e),ie(r)}function Fe(r,e){ie(r)}function Ce(r,e,t){var n=r.userData,a=n.currentViewport,o=!1;a||(a=Ye(r,e,!0),r.userData.currentViewport=a,o=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var v=i.layer;return t.id===v.id},clearStack:o,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,o={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&Pt(r,o),o}function Pt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,o=e.longitude,s=e.latitude,i=e.pitch,v=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=k([o,s]),h=v-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=i*wt,w=1.5*a,M=w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(s)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ye(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},sr(e)),{},{nearZMultiplier:t?.02:.1}))}function Ot(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var o=Array.from(n,function(f){return f.id}),s=(0,X._flatten)(r.props.layers,Boolean),i=s.some(function(f){return f&&!o.includes(f.id)}),v=r.getViewports(),l=v.findIndex(function(f){return f.id==="mapbox"}),c=v.length>1||l<0;(i||c)&&(l>=0&&(v=v.slice(),v[l]=Ye(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:v,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!o.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function bt(r,e){r.setProps({viewState:sr(e)}),r.needsRedraw({clearRedrawFlags:!0})}function ie(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Tr=function(){function r(e){if((0,Ze.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,qe.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Lr({map:t,gl:n,deck:this.props.deck}),ke(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Ne(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Fe(this.deck,this)}},{key:"render",value:function(){Ce(this.deck,this.map,this)}}]),r}();var He=I(Be()),Ge=I(kr()),Qe=I(Nr()),q=I(gr()),Q=I(rr());var se=I(rr());function Sr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Lt(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
4
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,i;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return o=l.done,l},e:function(l){s=!0,i=l},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(s)throw i}}}}function Lt(r,e){if(r){if(typeof r=="string")return Ue(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ue(r,e)}}function Ue(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var oe="__UNDEFINED__";function pr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,se._flatten)(n,Boolean);if(t!==n){var o=(0,se._flatten)(t,Boolean),s=new Set(o.map(function(d){return d.id})),i=Sr(a),v;try{for(i.s();!(v=i.n()).done;){var l=v.value;s.delete(l.id)}}catch(d){i.e(d)}finally{i.f()}var c=Sr(s),f;try{for(c.s();!(f=c.n()).done;){var h=f.value;r.getLayer(h)&&r.removeLayer(h)}}catch(d){c.e(d)}finally{c.f()}}var y=Sr(a),u;try{for(y.s();!(u=y.n()).done;){var _=u.value,w=r.getLayer(_.id);w?w.implementation.setProps(_.props):r.addLayer(new Tr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=Sr(a),g;try{for(p.s();!(g=p.n()).done;){var m=g.value,x=m.props.beforeId;(!x||!M.includes(x))&&(x=oe),P[x]=P[x]||[],P[x].push(m.id)}}catch(d){p.e(d)}finally{p.f()}for(var A in P)for(var R=P[A],T=A===oe?M.length:M.indexOf(A),S=A===oe?void 0:A,z=R.length-1;z>=0;z--){var O=R[z],E=M.indexOf(O);E!==T-1&&(r.moveLayer(O,S),E>T&&T++),T--,S=O}}}var Tt=["interleaved"];function Xe(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function jr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Xe(Object(t),!0).forEach(function(n){(0,q.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Xe(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Ke=function(){function r(e){var t=this;(0,Ge.default)(this,r),(0,q.default)(this,"_props",void 0),(0,q.default)(this,"_deck",void 0),(0,q.default)(this,"_map",void 0),(0,q.default)(this,"_container",void 0),(0,q.default)(this,"_interleaved",void 0),(0,q.default)(this,"_handleStyleChange",function(){pr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,q.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var s=t._map.getContainer(),i=s.clientWidth,v=s.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(v,"px")})}}),(0,q.default)(this,"_updateViewState",function(){var s=t._deck;s&&(s.setProps({viewState:sr(t._map)}),s.redraw())}),(0,q.default)(this,"_handleMouseEvent",function(s){var i=t._deck;if(i){var v={type:s.type,offsetCenter:s.point,srcEvent:s};switch(s.type){case"click":v.tapCount=1,i._onPointerDown(v),i._onEvent(v);break;case"dblclick":v.type="click",v.tapCount=2,i._onEvent(v);break;case"mousemove":v.type="pointermove",i._onPointerMove(v);break;case"mouseout":v.type="pointerleave",i._onPointerMove(v);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,o=(0,He.default)(e,Tt);this._interleaved=a,this._props=o}return(0,Qe.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&pr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?ae(this._props):this._props)}},{key:"onAdd",value:function(t){return this._map=t,this._interleaved?this._onAddInterleaved(t):this._onAddOverlaid(t)}},{key:"_onAddOverlaid",value:function(t){var n=document.createElement("div");return Object.assign(n.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=n,this._deck=new Q.Deck(jr(jr({},this._props),{},{parent:n,viewState:sr(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousemove",this._handleMouseEvent),t.on("mouseout",this._handleMouseEvent),t.on("click",this._handleMouseEvent),t.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),n}},{key:"_onAddInterleaved",value:function(t){return this._deck=Lr({map:t,gl:t.painter.context.gl,deck:new Q.Deck(jr(jr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),pr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t,n=this._map;n&&(this._interleaved?this._onRemoveInterleaved(n):this._onRemoveOverlaid(n)),(t=this._deck)===null||t===void 0||t.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),pr(t,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObject(t)}},{key:"pickMultipleObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickMultipleObjects(t)}},{key:"pickObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObjects(t)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),r}();return ft(dr);})();
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/mapbox",
3
3
  "description": "Use deck.gl layers as custom mapbox-gl-js layers",
4
4
  "license": "MIT",
5
- "version": "8.9.0-beta.2",
5
+ "version": "8.9.0-beta.4",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -35,5 +35,5 @@
35
35
  "peerDependencies": {
36
36
  "@deck.gl/core": "^8.0.0"
37
37
  },
38
- "gitHead": "5dae086e4f3eb46c30d8e761f9d600be4f68e949"
38
+ "gitHead": "f7c0eeaed1e62b0ae44ee45136b444f647e6cbd9"
39
39
  }
package/src/deck-utils.ts CHANGED
@@ -17,6 +17,7 @@ type UserData = {
17
17
  const TILE_SIZE = 512;
18
18
  const DEGREES_TO_RADIANS = Math.PI / 180;
19
19
 
20
+ // Create an interleaved deck instance.
20
21
  export function getDeckInstance({
21
22
  map,
22
23
  gl,
@@ -33,6 +34,7 @@ export function getDeckInstance({
33
34
 
34
35
  // Only initialize certain props once per context
35
36
  const customRender = deck?.props._customRender;
37
+ const onLoad = deck?.props.onLoad;
36
38
 
37
39
  const deckProps = getInterleavedProps({
38
40
  ...deck?.props,
@@ -49,8 +51,10 @@ export function getDeckInstance({
49
51
  let deckInstance: Deck;
50
52
 
51
53
  if (!deck || deck.props.gl === gl) {
52
- // deck is using the WebGLContext created by mapbox
53
- // block deck from setting the canvas size
54
+ // If deck isn't defined (Internal MapboxLayer use case),
55
+ // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),
56
+ // block deck from setting the canvas size, and use the map's viewState to drive deck.
57
+ // Otherwise, we use deck's viewState to drive the map.
54
58
  Object.assign(deckProps, {
55
59
  gl,
56
60
  width: null,
@@ -58,9 +62,14 @@ export function getDeckInstance({
58
62
  touchAction: 'unset',
59
63
  viewState: getViewState(map)
60
64
  });
61
- // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
62
- // Otherwise (pure JS use case), we use the map's viewState to drive deck.
63
- map.on('move', () => onMapMove(deckInstance, map));
65
+ if (deck?.isInitialized) {
66
+ watchMapMove(deck, map);
67
+ } else {
68
+ deckProps.onLoad = () => {
69
+ onLoad?.();
70
+ watchMapMove(deckInstance, map);
71
+ };
72
+ }
64
73
  }
65
74
 
66
75
  if (deck) {
@@ -85,6 +94,19 @@ export function getDeckInstance({
85
94
  return deckInstance;
86
95
  }
87
96
 
97
+ function watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {
98
+ const _handleMapMove = () => {
99
+ if (deck.isInitialized) {
100
+ // call view state methods
101
+ onMapMove(deck, map);
102
+ } else {
103
+ // deregister itself when deck is finalized
104
+ map.off('move', _handleMapMove);
105
+ }
106
+ };
107
+ map.on('move', _handleMapMove);
108
+ }
109
+
88
110
  export function getInterleavedProps(currProps: DeckProps) {
89
111
  const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
90
112
 
@@ -1 +1 @@
1
- {"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAgBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CA0DP;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAqBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAqB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CA6BA"}
1
+ {"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAiBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CAkEP;AAeD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAqBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAqB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CA6BA"}