@deck.gl/mapbox 8.9.14 → 8.9.16

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
@@ -757,8 +757,7 @@ var __exports__ = (() => {
757
757
  } else {
758
758
  deckInstance = new import_core2.Deck(deckProps);
759
759
  map.on("remove", () => {
760
- deckInstance.finalize();
761
- map.__deck = null;
760
+ removeDeckInstance(map);
762
761
  });
763
762
  }
764
763
  deckInstance.userData.mapboxLayers = /* @__PURE__ */ new Set();
@@ -779,6 +778,10 @@ var __exports__ = (() => {
779
778
  };
780
779
  map.on("move", _handleMapMove);
781
780
  }
781
+ function removeDeckInstance(map) {
782
+ map.__deck?.finalize();
783
+ map.__deck = null;
784
+ }
782
785
  function getInterleavedProps(currProps) {
783
786
  const nextProps = {
784
787
  ...currProps,
@@ -1122,7 +1125,6 @@ var __exports__ = (() => {
1122
1125
  this._onRemoveOverlaid(map);
1123
1126
  }
1124
1127
  }
1125
- this._deck?.finalize();
1126
1128
  this._deck = void 0;
1127
1129
  this._map = void 0;
1128
1130
  this._container = void 0;
@@ -1138,10 +1140,12 @@ var __exports__ = (() => {
1138
1140
  map.off("mouseout", this._handleMouseEvent);
1139
1141
  map.off("click", this._handleMouseEvent);
1140
1142
  map.off("dblclick", this._handleMouseEvent);
1143
+ this._deck?.finalize();
1141
1144
  }
1142
1145
  _onRemoveInterleaved(map) {
1143
1146
  map.off("styledata", this._handleStyleChange);
1144
1147
  resolveLayers(map, this._deck, this._props.layers, []);
1148
+ removeDeckInstance(map);
1145
1149
  }
1146
1150
  getDefaultPosition() {
1147
1151
  return "top-left";
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.getDeckInstance = getDeckInstance;
9
+ exports.removeDeckInstance = removeDeckInstance;
9
10
  exports.getInterleavedProps = getInterleavedProps;
10
11
  exports.addLayer = addLayer;
11
12
  exports.removeLayer = removeLayer;
@@ -71,8 +72,7 @@ function getDeckInstance(_ref) {
71
72
  } else {
72
73
  deckInstance = new _core.Deck(deckProps);
73
74
  map.on('remove', function () {
74
- deckInstance.finalize();
75
- map.__deck = null;
75
+ removeDeckInstance(map);
76
76
  });
77
77
  }
78
78
 
@@ -96,6 +96,13 @@ function watchMapMove(deck, map) {
96
96
  map.on('move', _handleMapMove);
97
97
  }
98
98
 
99
+ function removeDeckInstance(map) {
100
+ var _map$__deck;
101
+
102
+ (_map$__deck = map.__deck) === null || _map$__deck === void 0 ? void 0 : _map$__deck.finalize();
103
+ map.__deck = null;
104
+ }
105
+
99
106
  function getInterleavedProps(currProps) {
100
107
  var nextProps = _objectSpread(_objectSpread({}, currProps), {}, {
101
108
  parameters: _objectSpread({
@@ -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","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","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","cos","sin","log2","cameraZFromSurface","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 nextProps: DeckProps = {\n ...currProps,\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 =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (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","removeDeckInstance","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","finalize","currProps","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","cos","sin","log2","cameraZFromSurface","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 removeDeckInstance(map);\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 removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\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 =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (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"}
@@ -226,8 +226,6 @@ var MapboxOverlay = function () {
226
226
  }, {
227
227
  key: "onRemove",
228
228
  value: function onRemove() {
229
- var _this$_deck;
230
-
231
229
  var map = this._map;
232
230
 
233
231
  if (map) {
@@ -238,7 +236,6 @@ var MapboxOverlay = function () {
238
236
  }
239
237
  }
240
238
 
241
- (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
242
239
  this._deck = undefined;
243
240
  this._map = undefined;
244
241
  this._container = undefined;
@@ -246,6 +243,8 @@ var MapboxOverlay = function () {
246
243
  }, {
247
244
  key: "_onRemoveOverlaid",
248
245
  value: function _onRemoveOverlaid(map) {
246
+ var _this$_deck;
247
+
249
248
  map.off('resize', this._updateContainerSize);
250
249
  map.off('render', this._updateViewState);
251
250
  map.off('mousedown', this._handleMouseEvent);
@@ -256,12 +255,14 @@ var MapboxOverlay = function () {
256
255
  map.off('mouseout', this._handleMouseEvent);
257
256
  map.off('click', this._handleMouseEvent);
258
257
  map.off('dblclick', this._handleMouseEvent);
258
+ (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
259
259
  }
260
260
  }, {
261
261
  key: "_onRemoveInterleaved",
262
262
  value: function _onRemoveInterleaved(map) {
263
263
  map.off('styledata', this._handleStyleChange);
264
264
  (0, _resolveLayers.resolveLayers)(map, this._deck, this._props.layers, []);
265
+ (0, _deckUtils.removeDeckInstance)(map);
265
266
  }
266
267
  }, {
267
268
  key: "getDefaultPosition",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_deck","_props","layers","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","finalize","undefined","off","params","pickObject","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
1
+ {"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_deck","_props","layers","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","params","pickObject","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
@@ -47,8 +47,7 @@ export function getDeckInstance({
47
47
  } else {
48
48
  deckInstance = new Deck(deckProps);
49
49
  map.on('remove', () => {
50
- deckInstance.finalize();
51
- map.__deck = null;
50
+ removeDeckInstance(map);
52
51
  });
53
52
  }
54
53
 
@@ -72,6 +71,12 @@ function watchMapMove(deck, map) {
72
71
  map.on('move', _handleMapMove);
73
72
  }
74
73
 
74
+ export function removeDeckInstance(map) {
75
+ var _map$__deck;
76
+
77
+ (_map$__deck = map.__deck) === null || _map$__deck === void 0 ? void 0 : _map$__deck.finalize();
78
+ map.__deck = null;
79
+ }
75
80
  export function getInterleavedProps(currProps) {
76
81
  const nextProps = { ...currProps,
77
82
  parameters: {
@@ -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","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","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","cos","sin","log2","cameraZFromSurface","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 nextProps: DeckProps = {\n ...currProps,\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 =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (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","removeDeckInstance","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","finalize","currProps","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","cos","sin","log2","cameraZFromSurface","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":"AAAA,SAAQA,IAAR,EAAcC,mBAAd,EAAmCC,OAAnC,EAA4CC,QAAQ,IAAIC,OAAxD,QAAsE,eAAtE;AAKA,SAAQC,aAAR,EAAuBC,aAAvB,QAA2C,uBAA3C;AAWA,MAAMC,SAAS,GAAG,GAAlB;AACA,MAAMC,kBAAkB,GAAGC,IAAI,CAACC,EAAL,GAAU,GAArC;AAGA,OAAO,SAASC,eAAT,CAAyB;AAC9BC,EAAAA,GAD8B;AAE9BC,EAAAA,EAF8B;AAG9BC,EAAAA;AAH8B,CAAzB,EAQE;AAEP,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAGD,QAAMC,YAAY,GAAGF,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYC,aAAjC;AACA,QAAMC,MAAM,GAAGL,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYE,MAA3B;AAEA,QAAMC,SAAS,GAAGC,mBAAmB,CAAC,EACpC,IAAGP,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAT,CADoC;AAEpCC,IAAAA,aAAa,EAAE,MAAM;AACnBN,MAAAA,GAAG,CAACU,cAAJ;AAKAN,MAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAG,EAAH,CAAZ;AACD;AATmC,GAAD,CAArC;AAYA,MAAIO,YAAJ;;AAEA,MAAI,CAACT,IAAD,IAASA,IAAI,CAACG,KAAL,CAAWJ,EAAX,KAAkBA,EAA/B,EAAmC;AAKjCW,IAAAA,MAAM,CAACC,MAAP,CAAcL,SAAd,EAAyB;AACvBP,MAAAA,EADuB;AAEvBa,MAAAA,KAAK,EAAE,IAFgB;AAGvBC,MAAAA,MAAM,EAAE,IAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AALA,KAAzB;;AAOA,QAAIE,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEiB,aAAV,EAAyB;AACvBC,MAAAA,YAAY,CAAClB,IAAD,EAAOF,GAAP,CAAZ;AACD,KAFD,MAEO;AACLQ,MAAAA,SAAS,CAACD,MAAV,GAAmB,MAAM;AACvBA,QAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM;AACNa,QAAAA,YAAY,CAACT,YAAD,EAAeX,GAAf,CAAZ;AACD,OAHD;AAID;AACF;;AAED,MAAIE,IAAJ,EAAU;AACRS,IAAAA,YAAY,GAAGT,IAAf;AACAA,IAAAA,IAAI,CAACmB,QAAL,CAAcb,SAAd;AACCN,IAAAA,IAAI,CAACoB,QAAN,CAA4BC,UAA5B,GAAyC,IAAzC;AACD,GAJD,MAIO;AACLZ,IAAAA,YAAY,GAAG,IAAIvB,IAAJ,CAASoB,SAAT,CAAf;AACAR,IAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrBC,MAAAA,kBAAkB,CAACzB,GAAD,CAAlB;AACD,KAFD;AAGD;;AAEAW,EAAAA,YAAY,CAACW,QAAd,CAAoCI,YAApC,GAAmD,IAAIC,GAAJ,EAAnD;AAEA3B,EAAAA,GAAG,CAACG,MAAJ,GAAaQ,YAAb;AACAX,EAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrB,QAAIb,YAAY,CAACQ,aAAjB,EAAgCS,WAAW,CAACjB,YAAD,EAAeX,GAAf,CAAX;AACjC,GAFD;AAIA,SAAOW,YAAP;AACD;;AAED,SAASS,YAAT,CAAsBlB,IAAtB,EAAkCF,GAAlC,EAAqE;AACnE,QAAM6B,cAAc,GAAG,MAAM;AAC3B,QAAI3B,IAAI,CAACiB,aAAT,EAAwB;AAEtBW,MAAAA,SAAS,CAAC5B,IAAD,EAAOF,GAAP,CAAT;AACD,KAHD,MAGO;AAELA,MAAAA,GAAG,CAAC+B,GAAJ,CAAQ,MAAR,EAAgBF,cAAhB;AACD;AACF,GARD;;AASA7B,EAAAA,GAAG,CAACwB,EAAJ,CAAO,MAAP,EAAeK,cAAf;AACD;;AAED,OAAO,SAASJ,kBAAT,CAA4BzB,GAA5B,EAA+D;AAAA;;AACpE,iBAAAA,GAAG,CAACG,MAAJ,4DAAY6B,QAAZ;AACAhC,EAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD;AAED,OAAO,SAASM,mBAAT,CAA6BwB,SAA7B,EAAmD;AACxD,QAAMC,SAAoB,GAAG,EAC3B,GAAGD,SADwB;AAG3BE,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,IADD;AAEVC,MAAAA,SAAS,EAAE,IAFD;AAGVC,MAAAA,KAAK,EAAE,IAHG;AAIVC,MAAAA,SAAS,EAAE,kBAJD;AAKVC,MAAAA,iBAAiB,EAAE,IALT;AAMVC,MAAAA,SAAS,KANC;AAOVC,MAAAA,aAAa,OAPH;AAQV,SAAGT,SAAS,CAACE;AARH,KAHe;AAa3BQ,IAAAA,KAAK,EAAEV,SAAS,CAACU,KAAV,IAAmB,CAAC,IAAIrD,OAAJ,CAAY;AAACsD,MAAAA,EAAE,EAAE;AAAL,KAAZ,CAAD;AAbC,GAA7B;AAgBA,SAAOV,SAAP;AACD;AAED,OAAO,SAASW,QAAT,CAAkB3C,IAAlB,EAA8B4C,KAA9B,EAA6D;AACjE5C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCqB,GAAzC,CAA6CD,KAA7C;AACAE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAAS+C,WAAT,CAAqB/C,IAArB,EAAiC4C,KAAjC,EAAgE;AACpE5C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCwB,MAAzC,CAAgDJ,KAAhD;AACAE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAASiD,WAAT,CAAqBjD,IAArB,EAAiC4C,KAAjC,EAAgE;AACrEE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAASkD,SAAT,CAAmBlD,IAAnB,EAA+BF,GAA/B,EAAyC8C,KAAzC,EAAwE;AAC7E,MAAI;AAACO,IAAAA;AAAD,MAAoBnD,IAAI,CAACoB,QAA7B;AACA,MAAIgC,UAAmB,GAAG,KAA1B;;AACA,MAAI,CAACD,eAAL,EAAsB;AAGpBA,IAAAA,eAAe,GAAGE,WAAW,CAACrD,IAAD,EAAOF,GAAP,EAAY,IAAZ,CAA7B;AACCE,IAAAA,IAAI,CAACoB,QAAN,CAA4B+B,eAA5B,GAA8CA,eAA9C;AACAC,IAAAA,UAAU,GAAG,IAAb;AACD;;AAED,MAAI,CAACpD,IAAI,CAACiB,aAAV,EAAyB;AACvB;AACD;;AAEDjB,EAAAA,IAAI,CAACsD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,IAAAA,SAAS,EAAE,CAACJ,eAAD,CADsB;AAEjCK,IAAAA,WAAW,EAAE,CAAC;AAACZ,MAAAA,KAAK,EAAEa;AAAR,KAAD,KAAwBb,KAAK,CAACF,EAAN,KAAae,SAAS,CAACf,EAF3B;AAGjCU,IAAAA,UAHiC;AAIjCM,IAAAA,WAAW,EAAE;AAJoB,GAAnC;AAMD;AAED,OAAO,SAAS1C,YAAT,CAAsBlB,GAAtB,EAQL;AAAA;;AACA,QAAM;AAAC6D,IAAAA,GAAD;AAAMC,IAAAA;AAAN,MAAa9D,GAAG,CAAC+D,SAAJ,EAAnB;AAEA,QAAM9C,SAQL,GAAG;AAGF+C,IAAAA,SAAS,EAAG,CAACH,GAAG,GAAG,GAAP,IAAc,GAAf,GAAsB,GAH/B;AAIFI,IAAAA,QAAQ,EAAEH,GAJR;AAKFI,IAAAA,IAAI,EAAElE,GAAG,CAACmE,OAAJ,EALJ;AAMFC,IAAAA,OAAO,EAAEpE,GAAG,CAACqE,UAAJ,EANP;AAOFC,IAAAA,KAAK,EAAEtE,GAAG,CAACuE,QAAJ,EAPL;AAQFC,IAAAA,OAAO,EAAExE,GAAG,CAACyE,UAAJ,EARP;AASFC,IAAAA,MAAM,EAAE1E,GAAG,CAAC2E,oBAAJ;AATN,GARJ;;AAoBA,yBAAI3E,GAAG,CAAC4E,UAAR,4CAAI,qBAAA5E,GAAG,CAAP,EAAwB;AAEtB6E,IAAAA,qBAAqB,CAAC7E,GAAD,EAAMiB,SAAN,CAArB;AACD;;AAED,SAAOA,SAAP;AACD;;AAED,SAAS4D,qBAAT,CAA+B7E,GAA/B,EAAyCiB,SAAzC,EAAkE;AAChE,MAAIjB,GAAG,CAAC8E,oBAAR,EAA8B;AAE5B,UAAM;AAACC,MAAAA;AAAD,QAAa/E,GAAG,CAAC8E,oBAAJ,EAAnB;;AACA,QAAI,CAACC,QAAD,IAAaA,QAAQ,CAACC,CAAT,KAAeC,SAAhC,EAA2C;AACzC;AACD;;AAGD,UAAMlE,MAAM,GAAGf,GAAG,CAACkF,SAAJ,CAAcnE,MAA7B;AACA,UAAM;AAACiD,MAAAA,SAAD;AAAYC,MAAAA,QAAZ;AAAsBK,MAAAA;AAAtB,QAA+BrD,SAArC;AAGA,UAAMkE,OAAO,GAAGJ,QAAQ,CAACK,CAAT,GAAazF,SAA7B;AACA,UAAM0F,OAAO,GAAG,CAAC,IAAIN,QAAQ,CAACO,CAAd,IAAmB3F,SAAnC;AACA,UAAM4F,OAAO,GAAGR,QAAQ,CAACC,CAAT,GAAarF,SAA7B;AAGA,UAAM6F,MAAM,GAAG/F,aAAa,CAAC,CAACuE,SAAD,EAAYC,QAAZ,CAAD,CAA5B;AACA,UAAMwB,EAAE,GAAGN,OAAO,GAAGK,MAAM,CAAC,CAAD,CAA3B;AACA,UAAME,EAAE,GAAGL,OAAO,GAAGG,MAAM,CAAC,CAAD,CAA3B;AACA,UAAMG,4BAA4B,GAAG9F,IAAI,CAAC+F,IAAL,CAAUH,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAArC;AAEA,UAAMG,YAAY,GAAGvB,KAAK,GAAI1E,kBAA9B;AACA,UAAMkG,cAAc,GAAG,MAAM/E,MAA7B;AACA,UAAMgF,KAAK,GACTF,YAAY,GAAG,KAAf,GAEKC,cAAc,GAAGjG,IAAI,CAACmG,GAAL,CAASH,YAAT,CAAlB,GAA4CN,OAFhD,GAGKO,cAAc,GAAGjG,IAAI,CAACoG,GAAL,CAASJ,YAAT,CAAlB,GAA4CF,4BAJlD;AAKA1E,IAAAA,SAAS,CAACiD,IAAV,GAAiBrE,IAAI,CAACqG,IAAL,CAAUH,KAAV,CAAjB;AAEA,UAAMI,kBAAkB,GAAIL,cAAc,GAAGjG,IAAI,CAACmG,GAAL,CAASH,YAAT,CAAlB,GAA4CE,KAAvE;AACA,UAAMK,gBAAgB,GAAGb,OAAO,GAAGY,kBAAnC;AACAlF,IAAAA,SAAS,CAAC8D,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAOqB,gBAAgB,GAAG1G,aAAa,CAACuE,QAAD,CAAvC,CAArB;AACD,GAlCD,MAoCK,IAAI,OAAOjE,GAAG,CAACkF,SAAJ,CAAcmB,SAArB,KAAmC,QAAvC,EAAiD;AAGpDpF,IAAAA,SAAS,CAAC8D,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO/E,GAAG,CAACkF,SAAJ,CAAcmB,SAArB,CAArB;AACD;AACF;;AAcD,SAAS9C,WAAT,CAAqBrD,IAArB,EAAiCF,GAAjC,EAA2CsG,mBAAmB,GAAG,IAAjE,EAA4F;AAC1F,SAAO,IAAIjH,mBAAJ,CAAwB;AAC7BuD,IAAAA,EAAE,EAAE,QADyB;AAE7BwC,IAAAA,CAAC,EAAE,CAF0B;AAG7BE,IAAAA,CAAC,EAAE,CAH0B;AAI7BxE,IAAAA,KAAK,EAAEZ,IAAI,CAACY,KAJiB;AAK7BC,IAAAA,MAAM,EAAEb,IAAI,CAACa,MALgB;AAM7B,OAAGG,YAAY,CAAClB,GAAD,CANc;AAO7BuG,IAAAA,eAAe,EAAED,mBAAmB,GAEhC,IAFgC,GAIhC;AAXyB,GAAxB,CAAP;AAaD;;AAED,SAAS1E,WAAT,CAAqB1B,IAArB,EAAiCF,GAAjC,EAAiD;AAC/C,QAAM;AAAC0B,IAAAA,YAAD;AAAeH,IAAAA;AAAf,MAA6BrB,IAAI,CAACoB,QAAxC;;AAEA,MAAIC,UAAJ,EAAgB;AAEd,UAAMiF,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWhF,YAAX,EAAyBoB,KAAK,IAAIA,KAAK,CAACF,EAAxC,CAAvB;AACA,UAAM+D,UAAU,GAAGnH,OAAO,CAACU,IAAI,CAACG,KAAL,CAAWuG,MAAZ,EAAoBC,OAApB,CAA1B;AACA,UAAMC,kBAAkB,GAAGH,UAAU,CAACI,IAAX,CACzBjE,KAAK,IAAIA,KAAK,IAAI,CAAC0D,cAAc,CAACQ,QAAf,CAAwBlE,KAAK,CAACF,EAA9B,CADM,CAA3B;AAGA,QAAIa,SAAS,GAAGvD,IAAI,CAAC+G,YAAL,EAAhB;AACA,UAAMC,iBAAiB,GAAGzD,SAAS,CAAC0D,SAAV,CAAoBC,EAAE,IAAIA,EAAE,CAACxE,EAAH,KAAU,QAApC,CAA1B;AACA,UAAMyE,iBAAiB,GAAG5D,SAAS,CAAC6D,MAAV,GAAmB,CAAnB,IAAwBJ,iBAAiB,GAAG,CAAtE;;AAEA,QAAIJ,kBAAkB,IAAIO,iBAA1B,EAA6C;AAC3C,UAAIH,iBAAiB,IAAI,CAAzB,EAA4B;AAC1BzD,QAAAA,SAAS,GAAGA,SAAS,CAAC8D,KAAV,EAAZ;AACA9D,QAAAA,SAAS,CAACyD,iBAAD,CAAT,GAA+B3D,WAAW,CAACrD,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAA1C;AACD;;AAEDE,MAAAA,IAAI,CAACsD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SADiC;AAEjCC,QAAAA,WAAW,EAAE8D,MAAM,IACjB,CAAC,CAACtH,IAAI,CAACG,KAAL,CAAWqD,WAAZ,IAA2BxD,IAAI,CAACG,KAAL,CAAWqD,WAAX,CAAuB8D,MAAvB,CAA5B,MACCA,MAAM,CAACC,QAAP,CAAgB7E,EAAhB,KAAuB,QAAvB,IAAmC,CAAC4D,cAAc,CAACQ,QAAf,CAAwBQ,MAAM,CAAC1E,KAAP,CAAaF,EAArC,CADrC,CAH+B;AAKjCgB,QAAAA,WAAW,EAAE;AALoB,OAAnC;AAOD;AACF;;AAGA1D,EAAAA,IAAI,CAACoB,QAAN,CAA4B+B,eAA5B,GAA8C,IAA9C;AACD;;AAED,SAASvB,SAAT,CAAmB5B,IAAnB,EAA+BF,GAA/B,EAA+C;AAC7CE,EAAAA,IAAI,CAACmB,QAAL,CAAc;AACZJ,IAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AADX,GAAd;AAMAE,EAAAA,IAAI,CAACwH,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAAS3E,YAAT,CAAsB9C,IAAtB,EAAwC;AACtC,MAAKA,IAAI,CAACoB,QAAN,CAA4BC,UAAhC,EAA4C;AAC1C;AACD;;AAED,QAAMqF,MAAe,GAAG,EAAxB;AACC1G,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCkG,OAAzC,CAAiDjE,SAAS,IAAI;AAC5D,UAAMkE,SAAS,GAAGlE,SAAS,CAACtD,KAAV,CAAgByH,IAAlC;AACA,UAAMhF,KAAK,GAAG,IAAI+E,SAAJ,CAAclE,SAAS,CAACtD,KAAxB,CAAd;AACAuG,IAAAA,MAAM,CAACmB,IAAP,CAAYjF,KAAZ;AACD,GAJD;AAKA5C,EAAAA,IAAI,CAACmB,QAAL,CAAc;AAACuF,IAAAA;AAAD,GAAd;AACD","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 removeDeckInstance(map);\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 removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\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 =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (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,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { Deck, assert } from '@deck.gl/core';
3
- import { getViewState, getDeckInstance, getInterleavedProps } from './deck-utils';
3
+ import { getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps } from './deck-utils';
4
4
  import { resolveLayers } from './resolve-layers';
5
5
  export default class MapboxOverlay {
6
6
  constructor(props) {
@@ -204,8 +204,6 @@ export default class MapboxOverlay {
204
204
  }
205
205
 
206
206
  onRemove() {
207
- var _this$_deck;
208
-
209
207
  const map = this._map;
210
208
 
211
209
  if (map) {
@@ -216,13 +214,14 @@ export default class MapboxOverlay {
216
214
  }
217
215
  }
218
216
 
219
- (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
220
217
  this._deck = undefined;
221
218
  this._map = undefined;
222
219
  this._container = undefined;
223
220
  }
224
221
 
225
222
  _onRemoveOverlaid(map) {
223
+ var _this$_deck;
224
+
226
225
  map.off('resize', this._updateContainerSize);
227
226
  map.off('render', this._updateViewState);
228
227
  map.off('mousedown', this._handleMouseEvent);
@@ -233,11 +232,13 @@ export default class MapboxOverlay {
233
232
  map.off('mouseout', this._handleMouseEvent);
234
233
  map.off('click', this._handleMouseEvent);
235
234
  map.off('dblclick', this._handleMouseEvent);
235
+ (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
236
236
  }
237
237
 
238
238
  _onRemoveInterleaved(map) {
239
239
  map.off('styledata', this._handleStyleChange);
240
240
  resolveLayers(map, this._deck, this._props.layers, []);
241
+ removeDeckInstance(map);
241
242
  }
242
243
 
243
244
  getDefaultPosition() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","finalize","undefined","off","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
1
+ {"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","removeDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
package/dist.min.js CHANGED
@@ -4,9 +4,9 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['deck'] = factory();
6
6
  else root['deck'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var at=Object.create;var gr=Object.defineProperty;var it=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),vt=(r,e)=>{for(var t in e)gr(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))!lt.call(r,a)&&a!==t&&gr(r,a,{get:()=>e[a],enumerable:!(n=it(e,a))||n.enumerable});return r},X=(r,e,t)=>(mr(r,e,"default"),t&&mr(t,e,"default")),R=(r,e,t)=>(t=r!=null?at(st(r)):{},mr(e||!r||!r.__esModule?gr(t,"default",{value:r,enumerable:!0}):t,r)),ft=r=>mr(gr({},"__esModule",{value:!0}),r);var rr=J((jt,le)=>{le.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((Rt,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 yr=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((va,$e)=>{function Et(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,l;for(l=0;l<n.length;l++)a=n[l],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}$e.exports=Et});var Xe=J((fa,We)=>{var zt=Ve();function At(r,e){if(r==null)return{};var t=zt(r,e),n,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(r);for(a=0;a<l.length;a++)n=l[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}We.exports=At});var xr={};vt(xr,{MapboxLayer:()=>Sr,MapboxOverlay:()=>Ke});var V={},ve=R(rr());X(V,R(rr()));if(!ve.Layer)throw new Error("@deck.gl/core is not found");X(xr,V);var Ze=R(kr()),qe=R(Nr()),G=R(yr());var Re=R(yr()),U=R(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 cr(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.
8
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||cr(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,l=!1,o,i;try{for(t=t.call(r);!(a=(o=t.next()).done)&&(n.push(o.value),!(e&&n.length===e));a=!0);}catch(s){l=!0,i=s}finally{try{!a&&t.return!=null&&t.return()}finally{if(l)throw i}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
9
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||cr(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],l=e[2],o=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*l+t[12]*o,r[1]=t[1]*n+t[5]*a+t[9]*l+t[13]*o,r[2]=t[2]*n+t[6]*a+t[10]*l+t[14]*o,r[3]=t[3]*n+t[7]*a+t[11]*l+t[15]*o,r}var ln=function(){var r=dt();return function(e,t,n,a,l,o){var i,s;for(t||(t=4),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],l(r,r,o),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 B(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function hr(r,e,t){return r<e?e:r>t?t:r}function xt(r){return Math.log(r)*Math.LOG2E}var _r=Math.log2||xt;function ge(r,e){var t=e[0],n=e[1],a=e[2],l=e[3],o=e[4],i=e[5],s=e[6],v=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*o,p=t*s-a*o,g=t*v-l*o,m=n*s-a*i,x=n*v-l*i,E=a*v-l*s,I=c*_-f*u,T=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,A=h*M-y*w,d=P*A-p*O+g*z+m*S-x*T+E*I;return d?(d=1/d,r[0]=(i*A-s*O+v*z)*d,r[1]=(a*O-n*A-l*z)*d,r[2]=(_*E-w*x+M*m)*d,r[3]=(h*x-f*E-y*m)*d,r[4]=(s*S-o*A-v*T)*d,r[5]=(t*A-a*S+l*T)*d,r[6]=(w*g-u*E-M*p)*d,r[7]=(c*E-h*g+y*p)*d,r[8]=(o*O-i*S+v*I)*d,r[9]=(n*S-t*O-l*I)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(i*T-o*z-s*I)*d,r[13]=(t*z-n*T+a*I)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function wr(r,e,t){var n=e[0],a=e[1],l=e[2],o=e[3],i=e[4],s=e[5],v=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*s+m*h+x*w,r[2]=p*l+g*v+m*y+x*M,r[3]=p*o+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*s+m*h+x*w,r[6]=p*l+g*v+m*y+x*M,r[7]=p*o+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*s+m*h+x*w,r[10]=p*l+g*v+m*y+x*M,r[11]=p*o+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*s+m*h+x*w,r[14]=p*l+g*v+m*y+x*M,r[15]=p*o+g*c+m*u+x*P,r}function pr(r,e,t){var n=t[0],a=t[1],l=t[2],o,i,s,v,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*l+e[12],r[13]=e[1]*n+e[5]*a+e[9]*l+e[13],r[14]=e[2]*n+e[6]*a+e[10]*l+e[14],r[15]=e[3]*n+e[7]*a+e[11]*l+e[15]):(o=e[0],i=e[1],s=e[2],v=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]=o,r[1]=i,r[2]=s,r[3]=v,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]=o*n+c*a+u*l+e[12],r[13]=i*n+f*a+_*l+e[13],r[14]=s*n+h*a+w*l+e[14],r[15]=v*n+y*a+M*l+e[15]),r}function Pr(r,e,t){var n=t[0],a=t[1],l=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]*l,r[9]=e[9]*l,r[10]=e[10]*l,r[11]=e[11]*l,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),l=e[4],o=e[5],i=e[6],s=e[7],v=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]=l*a+v*n,r[5]=o*a+c*n,r[6]=i*a+f*n,r[7]=s*a+h*n,r[8]=v*a-l*n,r[9]=c*a-o*n,r[10]=f*a-i*n,r[11]=h*a-s*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),l=e[0],o=e[1],i=e[2],s=e[3],v=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]=l*a+v*n,r[1]=o*a+c*n,r[2]=i*a+f*n,r[3]=s*a+h*n,r[4]=v*a-l*n,r[5]=c*a-o*n,r[6]=f*a-i*n,r[7]=h*a-s*n,r}function Mt(r,e,t,n,a){var l=1/Math.tan(e/2),o;return r[0]=l/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=l,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?(o=1/(n-a),r[10]=(a+n)*o,r[14]=2*a*n*o):(r[10]=-1,r[14]=-2*n),r}var _e=Mt;function Xr(r,e){var t=r[0],n=r[1],a=r[2],l=r[3],o=r[4],i=r[5],s=r[6],v=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],E=e[5],I=e[6],T=e[7],S=e[8],z=e[9],O=e[10],A=e[11],d=e[12],$=e[13],F=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(l-m)<=L*Math.max(1,Math.abs(l),Math.abs(m))&&Math.abs(o-x)<=L*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(i-E)<=L*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(s-I)<=L*Math.max(1,Math.abs(s),Math.abs(I))&&Math.abs(v-T)<=L*Math.max(1,Math.abs(v),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-A)<=L*Math.max(1,Math.abs(y),Math.abs(A))&&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-F)<=L*Math.max(1,Math.abs(w),Math.abs(F))&&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 Br(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 Or(r,e,t,n){var a=e[0],l=e[1];return r[0]=a+n*(t[0]-a),r[1]=l+n*(t[1]-l),r}var hn=function(){var r=mt();return function(e,t,n,a,l,o){var i,s;for(t||(t=2),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],l(r,r,o),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 Ee=yt;var pn=function(){var r=gt();return function(e,t,n,a,l,o){var i,s;for(t||(t=3),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],l(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function C(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Y=Math.PI,Ae=Y/4,Z=Y/180,Hr=180/Y,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function br(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];C(Number.isFinite(t)),C(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Z,l=n*Z,o=ar*(a+Y)/(2*Y),i=ar*(Y+Math.log(Math.tan(Ae+l*.5)))/(2*Y);return[o,i]}function q(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*Y)-Y,l=2*(Math.atan(Math.exp(n/ar*(2*Y)-Y))-Ae);return[a*Hr,l*Hr]}function Kr(r){var e=Math.cos(r*Z);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;C(Number.isFinite(e)&&Number.isFinite(t));var l=ar,o=Math.cos(e*Z),i=l/360,s=i/o,v=l/Gr/o,c={unitsPerMeter:[v,v,v],metersPerUnit:[1/v,1/v,1/v],unitsPerDegree:[i,s,v],degreesPerUnit:[1/i,1/s,1/v]};if(a){var f=Z*Math.tan(e*Z)/o,h=i*f/2,y=l/Gr*f,u=y/s*v;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,l=r.scale,o=r.center,i=nr();pr(i,i,[0,0,-a]),ye(i,i,-t*Z),ue(i,i,n*Z);var s=l/e;return Pr(i,i,[s,s,s]),o&&pr(i,i,be([],o)),i}function Le(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,l=a===void 0?0:a,o=r.offset,i=r.center,s=r.scale,v=r.nearZMultiplier,c=v===void 0?1:v,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*Z,w=l*Z,M=Er(u),P=M;i&&(P+=i[2]*s/Math.cos(w)/t);var p=_*(.5+(o?o[1]:0)/t),g=Math.sin(p)*P/Math.sin(hr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,E=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:E}}function ee(r){var e=Le(r),t=e.fov,n=e.aspect,a=e.near,l=e.far,o=_e([],t,n,a,l);return o}function ir(r){return 2*Math.atan(.5/r)*Hr}function Er(r){return .5/Math.tan(.5*r*Z)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],l=t[2],o=l===void 0?0:l;return C(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(o)),B(e,[n,a,o,1])}function zr(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],l=n[1],o=n[2];if(C(Number.isFinite(a)&&Number.isFinite(l),"invalid pixel coordinate"),Number.isFinite(o)){var i=B(e,[a,l,o,1]);return i}var s=B(e,[a,l,0,1]),v=B(e,[a,l,1,1]),c=s[2],f=v[2],h=c===f?0:((t||0)-c)/(f-c);return Or([],s,v,h)}function Ar(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,l=a===void 0?0:a,o=r.maxZoom,i=o===void 0?24:o,s=r.offset,v=s===void 0?[0,0]:s,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,hr(w,-or,or)]),p=k([_,hr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),l),Math.max(Math.abs(p[1]-P[1]),l)],m=[e-M.left-M.right-Math.abs(v[0])*2,t-M.top-M.bottom-Math.abs(v[1])*2];C(m[0]>0&&m[1]>0);var x=m[0]/g[0],E=m[1]/g[1],I=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/E,S=[(p[0]+P[0])/2+I,(p[1]+P[1])/2+T],z=q(S),O=Math.min(i,_r(Math.abs(Math.min(x,E))));return C(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}:(C(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Te=Math.PI/180;function Lr(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,l={targetZ:e},o=a([0,n],l),i=a([t,n],l),s,v,c=r.fovy?.5*r.fovy*Te:Math.atan(.5/r.altitude),f=(90-r.pitch)*Te;return c>f-.01?(s=Se(r,0,e),v=Se(r,t,e)):(s=a([0,0],l),v=a([t,0],l)),[o,i,v,s]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=B(n,[e,0,1,1]),l=B(n,[e,r.height,1,1]),o=t*r.distanceScales.unitsPerMeter[2],i=(o-a[2])/(l[2]-a[2]),s=Or([],a,l,i),v=q(s);return v.push(t),v}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&&Xr(O.projectionMatrix,e.projectionMatrix)&&Xr(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=e.projectPosition(O),D=te(F,e.pixelProjectionMatrix),K=j(D,2),Mr=K[0],vr=K[1],fr=$?vr:e.height-vr;return O.length===2?[Mr,fr]:[Mr,fr,D[2]]}),b(this,"unproject",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=A.targetZ,D=F===void 0?void 0:F,K=j(O,3),Mr=K[0],vr=K[1],fr=K[2],Je=$?vr:e.height-vr,rt=D&&D*e.distanceScales.unitsPerMeter[2],et=zr([Mr,Je,fr],e.pixelUnprojectionMatrix,rt),tt=e.unprojectPosition(et),Ir=j(tt,3),Dr=Ir[0],Rr=Ir[1],nt=Ir[2];return Number.isFinite(fr)?[Dr,Rr,nt]:Number.isFinite(D)?[Dr,Rr,D]:[Dr,Rr]}),b(this,"projectPosition",function(O){var A=k(O),d=j(A,2),$=d[0],F=d[1],D=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,F,D]}),b(this,"unprojectPosition",function(O){var A=q(O),d=j(A,2),$=d[0],F=d[1],D=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,F,D]});var n=t.width,a=t.height,l=t.altitude,o=l===void 0?null:l,i=t.fovy,s=i===void 0?null:i,v=t.latitude,c=v===void 0?0:v,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,E=t.farZMultiplier,I=E===void 0?1.01:E;n=n||1,a=a||1,s===null&&o===null?(o=Qr,s=ir(o)):s===null?s=ir(o):o===null&&(o=Er(s));var T=br(u);o=Math.max(.75,o);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ee([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:s,nearZMultiplier:x,farZMultiplier:I}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:o}),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=o,this.fovy=s,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,l=this.viewMatrix,o=nr();wr(o,o,a),wr(o,o,l),this.viewProjectionMatrix=o;var i=nr();Pr(i,i,[t/2,-n/2,1]),pr(i,i,[1,-1,0]),wr(i,i,o);var s=ge(nr(),i);if(!s)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=s}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return q(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,l=zr(a,this.pixelUnprojectionMatrix),o=k(n),i=Br([],o,Pe([],l)),s=Br([],this.center,i);return q(s)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,l=this.height,o=Ar(Object.assign({width:a,height:l,bounds:t},n)),i=o.longitude,s=o.latitude,v=o.zoom;return new r({width:a,height:l,longitude:i,latitude:s,zoom:v})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(s){return s[0]}))),l=Math.max.apply(Math,tr(n.map(function(s){return s[0]}))),o=Math.min.apply(Math,tr(n.map(function(s){return s[1]}))),i=Math.max.apply(Math,tr(n.map(function(s){return s[1]})));return[[a,o],[l,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Lr(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 Ie(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?Ie(Object(t),!0).forEach(function(n){(0,Re.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Ie(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,wt=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,l=n?.props.onLoad,o=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(o,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?De(n,e):o.onLoad=function(){l?.(),De(i,e)}),n?(i=n,n.setProps(o),n.userData.isExternal=!0):(i=new U.Deck(o),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=H(H({},r),{},{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 U.MapView({id:"mapbox"})]});return e}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,l=!1;a||(a=Ye(r,e,!0),r.userData.currentViewport=a,l=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var s=i.layer;return t.id===s.id},clearStack:l,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,l={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,l),l}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,l=e.longitude,o=e.latitude,i=e.pitch,s=n.x*ne,v=(1-n.y)*ne,c=n.z*ne,f=k([l,o]),h=s-f[0],y=v-f[1],u=Math.sqrt(h*h+y*y),_=i*wt,w=1.5*a,M=_<.001?w*Math.cos(_)/c:w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(o)]}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 U.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 l=Array.from(n,function(f){return f.id}),o=(0,U._flatten)(r.props.layers,Boolean),i=o.some(function(f){return f&&!l.includes(f.id)}),s=r.getViewports(),v=s.findIndex(function(f){return f.id==="mapbox"}),c=s.length>1||v<0;(i||c)&&(v>=0&&(s=s.slice(),s[v]=Ye(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:s,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!l.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 Sr=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=Tr({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=R(Xe()),Ge=R(kr()),Qe=R(Nr()),N=R(yr()),Q=R(rr());var se=R(rr());function jr(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(v){throw v},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
10
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l=!0,o=!1,i;return{s:function(){t=t.call(r)},n:function(){var v=t.next();return l=v.done,v},e:function(v){o=!0,i=v},f:function(){try{!l&&t.return!=null&&t.return()}finally{if(o)throw i}}}}function Lt(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 oe="__UNDEFINED__";function dr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,se._flatten)(n,Boolean);if(t!==n){var l=(0,se._flatten)(t,Boolean),o=new Set(l.map(function(d){return d.id})),i=jr(a),s;try{for(i.s();!(s=i.n()).done;){var v=s.value;o.delete(v.id)}}catch(d){i.e(d)}finally{i.f()}var c=jr(o),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=jr(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 Sr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=jr(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 E in P)for(var I=P[E],T=E===oe?M.length:M.indexOf(E),S=E===oe?void 0:E,z=I.length-1;z>=0;z--){var O=I[z],A=M.indexOf(O);A!==T-1&&(r.moveLayer(O,S),A>T&&T++),T--,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 lr(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,N.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 Ke=function(){function r(e){var t=this;(0,Ge.default)(this,r),(0,N.default)(this,"_props",void 0),(0,N.default)(this,"_deck",void 0),(0,N.default)(this,"_map",void 0),(0,N.default)(this,"_container",void 0),(0,N.default)(this,"_interleaved",void 0),(0,N.default)(this,"_lastMouseDownPoint",void 0),(0,N.default)(this,"_handleStyleChange",function(){dr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,N.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var o=t._map.getContainer(),i=o.clientWidth,s=o.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(s,"px")})}}),(0,N.default)(this,"_updateViewState",function(){var o=t._deck;o&&(o.setProps({viewState:sr(t._map)}),o.isInitialized&&o.redraw())}),(0,N.default)(this,"_handleMouseEvent",function(o){var i=t._deck;if(!(!i||!i.isInitialized)){var s={type:o.type,offsetCenter:o.point,srcEvent:o},v=t._lastMouseDownPoint;switch(!o.point&&v&&(s.deltaX=o.originalEvent.clientX-v.clientX,s.deltaY=o.originalEvent.clientY-v.clientY,s.offsetCenter={x:v.x+s.deltaX,y:v.y+s.deltaY}),s.type){case"mousedown":i._onPointerDown(s),t._lastMouseDownPoint=lr(lr({},o.point),{},{clientX:o.originalEvent.clientX,clientY:o.originalEvent.clientY});break;case"dragstart":s.type="panstart",i._onEvent(s);break;case"drag":s.type="panmove",i._onEvent(s);break;case"dragend":s.type="panend",i._onEvent(s);break;case"click":s.tapCount=1,i._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,i._onEvent(s);break;case"mousemove":s.type="pointermove",i._onPointerMove(s);break;case"mouseout":s.type="pointerleave",i._onPointerMove(s);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,l=(0,He.default)(e,Tt);this._interleaved=a,this._props=l}return(0,Qe.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&dr(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(lr(lr({},this._props),{},{parent:n,viewState:sr(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousedown",this._handleMouseEvent),t.on("dragstart",this._handleMouseEvent),t.on("drag",this._handleMouseEvent),t.on("dragend",this._handleMouseEvent),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(lr(lr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),dr(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("mousedown",this._handleMouseEvent),t.off("dragstart",this._handleMouseEvent),t.off("drag",this._handleMouseEvent),t.off("dragend",this._handleMouseEvent),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),dr(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(xr);})();
7
+ "use strict";var __exports__=(()=>{var it=Object.create;var gr=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var st=Object.getOwnPropertyNames;var vt=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ft=(r,e)=>{for(var t in e)gr(r,t,{get:e[t],enumerable:!0})},mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of st(e))!lt.call(r,a)&&a!==t&&gr(r,a,{get:()=>e[a],enumerable:!(n=ot(e,a))||n.enumerable});return r},X=(r,e,t)=>(mr(r,e,"default"),t&&mr(t,e,"default")),D=(r,e,t)=>(t=r!=null?it(vt(r)):{},mr(e||!r||!r.__esModule?gr(t,"default",{value:r,enumerable:!0}):t,r)),ct=r=>mr(gr({},"__esModule",{value:!0}),r);var rr=J((It,le)=>{le.exports=globalThis.deck});var Rr=J((Dt,ce)=>{function ht(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}ce.exports=ht});var Nr=J((Rt,pe)=>{function he(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 pt(r,e,t){return e&&he(r.prototype,e),t&&he(r,t),r}pe.exports=pt});var yr=J((Nt,de)=>{function dt(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}de.exports=dt});var We=J((fa,Ve)=>{function zt(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,v;for(v=0;v<n.length;v++)a=n[v],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}Ve.exports=zt});var Be=J((ca,Xe)=>{var At=We();function Lt(r,e){if(r==null)return{};var t=At(r,e),n,a;if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(r);for(a=0;a<v.length;a++)n=v[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}Xe.exports=Lt});var xr={};ft(xr,{MapboxLayer:()=>Sr,MapboxOverlay:()=>Je});var V={},fe=D(rr());X(V,D(rr()));if(!fe.Layer)throw new Error("@deck.gl/core is not found");X(xr,V);var qe=D(Rr()),$e=D(Nr()),G=D(yr());var Re=D(yr()),U=D(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 cr(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.
8
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||cr(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,v=!1,o,i;try{for(t=t.call(r);!(a=(o=t.next()).done)&&(n.push(o.value),!(e&&n.length===e));a=!0);}catch(s){v=!0,i=s}finally{try{!a&&t.return!=null&&t.return()}finally{if(v)throw i}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
9
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||cr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function xe(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&&xe(r.prototype,e),t&&xe(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 vn=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 xt(){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 ge(r,e,t){var n=e[0],a=e[1],v=e[2],o=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*v+t[12]*o,r[1]=t[1]*n+t[5]*a+t[9]*v+t[13]*o,r[2]=t[2]*n+t[6]*a+t[10]*v+t[14]*o,r[3]=t[3]*n+t[7]*a+t[11]*v+t[15]*o,r}var ln=function(){var r=xt();return function(e,t,n,a,v,o){var i,s;for(t||(t=4),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],v(r,r,o),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 B(r,e){var t=ge([],e,r);return me(t,t,1/t[3]),t}function hr(r,e,t){return r<e?e:r>t?t:r}function Mt(r){return Math.log(r)*Math.LOG2E}var _r=Math.log2||Mt;function ye(r,e){var t=e[0],n=e[1],a=e[2],v=e[3],o=e[4],i=e[5],s=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*o,p=t*s-a*o,g=t*l-v*o,m=n*s-a*i,x=n*l-v*i,E=a*l-v*s,I=c*_-f*u,T=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,A=h*M-y*w,d=P*A-p*O+g*z+m*S-x*T+E*I;return d?(d=1/d,r[0]=(i*A-s*O+l*z)*d,r[1]=(a*O-n*A-v*z)*d,r[2]=(_*E-w*x+M*m)*d,r[3]=(h*x-f*E-y*m)*d,r[4]=(s*S-o*A-l*T)*d,r[5]=(t*A-a*S+v*T)*d,r[6]=(w*g-u*E-M*p)*d,r[7]=(c*E-h*g+y*p)*d,r[8]=(o*O-i*S+l*I)*d,r[9]=(n*S-t*O-v*I)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(i*T-o*z-s*I)*d,r[13]=(t*z-n*T+a*I)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function wr(r,e,t){var n=e[0],a=e[1],v=e[2],o=e[3],i=e[4],s=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*s+m*h+x*w,r[2]=p*v+g*l+m*y+x*M,r[3]=p*o+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*s+m*h+x*w,r[6]=p*v+g*l+m*y+x*M,r[7]=p*o+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*s+m*h+x*w,r[10]=p*v+g*l+m*y+x*M,r[11]=p*o+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*s+m*h+x*w,r[14]=p*v+g*l+m*y+x*M,r[15]=p*o+g*c+m*u+x*P,r}function pr(r,e,t){var n=t[0],a=t[1],v=t[2],o,i,s,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*v+e[12],r[13]=e[1]*n+e[5]*a+e[9]*v+e[13],r[14]=e[2]*n+e[6]*a+e[10]*v+e[14],r[15]=e[3]*n+e[7]*a+e[11]*v+e[15]):(o=e[0],i=e[1],s=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]=o,r[1]=i,r[2]=s,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]=o*n+c*a+u*v+e[12],r[13]=i*n+f*a+_*v+e[13],r[14]=s*n+h*a+w*v+e[14],r[15]=l*n+y*a+M*v+e[15]),r}function Pr(r,e,t){var n=t[0],a=t[1],v=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]*v,r[9]=e[9]*v,r[10]=e[10]*v,r[11]=e[11]*v,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[4],o=e[5],i=e[6],s=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]=v*a+l*n,r[5]=o*a+c*n,r[6]=i*a+f*n,r[7]=s*a+h*n,r[8]=l*a-v*n,r[9]=c*a-o*n,r[10]=f*a-i*n,r[11]=h*a-s*n,r}function _e(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[0],o=e[1],i=e[2],s=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]=v*a+l*n,r[1]=o*a+c*n,r[2]=i*a+f*n,r[3]=s*a+h*n,r[4]=l*a-v*n,r[5]=c*a-o*n,r[6]=f*a-i*n,r[7]=h*a-s*n,r}function mt(r,e,t,n,a){var v=1/Math.tan(e/2),o;return r[0]=v/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=v,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?(o=1/(n-a),r[10]=(a+n)*o,r[14]=2*a*n*o):(r[10]=-1,r[14]=-2*n),r}var we=mt;function Xr(r,e){var t=r[0],n=r[1],a=r[2],v=r[3],o=r[4],i=r[5],s=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],E=e[5],I=e[6],T=e[7],S=e[8],z=e[9],O=e[10],A=e[11],d=e[12],$=e[13],F=e[14],k=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(v-m)<=L*Math.max(1,Math.abs(v),Math.abs(m))&&Math.abs(o-x)<=L*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(i-E)<=L*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(s-I)<=L*Math.max(1,Math.abs(s),Math.abs(I))&&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-A)<=L*Math.max(1,Math.abs(y),Math.abs(A))&&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-F)<=L*Math.max(1,Math.abs(w),Math.abs(F))&&Math.abs(M-k)<=L*Math.max(1,Math.abs(M),Math.abs(k))}function gt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Br(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Oe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Or(r,e,t,n){var a=e[0],v=e[1];return r[0]=a+n*(t[0]-a),r[1]=v+n*(t[1]-v),r}var pn=function(){var r=gt();return function(e,t,n,a,v,o){var i,s;for(t||(t=2),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],v(r,r,o),e[i]=r[0],e[i+1]=r[1];return e}}();function yt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function be(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function ut(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function Ee(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var ze=ut;var dn=function(){var r=yt();return function(e,t,n,a,v,o){var i,s;for(t||(t=3),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],v(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function C(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Y=Math.PI,Le=Y/4,Z=Y/180,Hr=180/Y,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function br(r){return Math.pow(2,r)}function R(r){var e=j(r,2),t=e[0],n=e[1];C(Number.isFinite(t)),C(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Z,v=n*Z,o=ar*(a+Y)/(2*Y),i=ar*(Y+Math.log(Math.tan(Le+v*.5)))/(2*Y);return[o,i]}function q(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*Y)-Y,v=2*(Math.atan(Math.exp(n/ar*(2*Y)-Y))-Le);return[a*Hr,v*Hr]}function Kr(r){var e=Math.cos(r*Z);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;C(Number.isFinite(e)&&Number.isFinite(t));var v=ar,o=Math.cos(e*Z),i=v/360,s=i/o,l=v/Gr/o,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[i,s,l],degreesPerUnit:[1/i,1/s,1/l]};if(a){var f=Z*Math.tan(e*Z)/o,h=i*f/2,y=v/Gr*f,u=y/s*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,v=r.scale,o=r.center,i=nr();pr(i,i,[0,0,-a]),ue(i,i,-t*Z),_e(i,i,n*Z);var s=v/e;return Pr(i,i,[s,s,s]),o&&pr(i,i,Ee([],o)),i}function Te(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,v=a===void 0?0:a,o=r.offset,i=r.center,s=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*Z,w=v*Z,M=Er(u),P=M;i&&(P+=i[2]*s/Math.cos(w)/t);var p=_*(.5+(o?o[1]:0)/t),g=Math.sin(p)*P/Math.sin(hr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,E=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:E}}function ee(r){var e=Te(r),t=e.fov,n=e.aspect,a=e.near,v=e.far,o=we([],t,n,a,v);return o}function ir(r){return 2*Math.atan(.5/r)*Hr}function Er(r){return .5/Math.tan(.5*r*Z)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],v=t[2],o=v===void 0?0:v;return C(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(o)),B(e,[n,a,o,1])}function zr(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],v=n[1],o=n[2];if(C(Number.isFinite(a)&&Number.isFinite(v),"invalid pixel coordinate"),Number.isFinite(o)){var i=B(e,[a,v,o,1]);return i}var s=B(e,[a,v,0,1]),l=B(e,[a,v,1,1]),c=s[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Or([],s,l,h)}function Ar(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,v=a===void 0?0:a,o=r.maxZoom,i=o===void 0?24:o,s=r.offset,l=s===void 0?[0,0]:s,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=_t(r.padding),P=R([h,hr(w,-or,or)]),p=R([_,hr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),v),Math.max(Math.abs(p[1]-P[1]),v)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];C(m[0]>0&&m[1]>0);var x=m[0]/g[0],E=m[1]/g[1],I=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/E,S=[(p[0]+P[0])/2+I,(p[1]+P[1])/2+T],z=q(S),O=Math.min(i,_r(Math.abs(Math.min(x,E))));return C(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function _t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(C(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Se=Math.PI/180;function Lr(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,v={targetZ:e},o=a([0,n],v),i=a([t,n],v),s,l,c=r.fovy?.5*r.fovy*Se:Math.atan(.5/r.altitude),f=(90-r.pitch)*Se;return c>f-.01?(s=je(r,0,e),l=je(r,t,e)):(s=a([0,0],v),l=a([t,0],v)),[o,i,l,s]}function je(r,e,t){var n=r.pixelUnprojectionMatrix,a=B(n,[e,0,1,1]),v=B(n,[e,r.height,1,1]),o=t*r.distanceScales.unitsPerMeter[2],i=(o-a[2])/(v[2]-a[2]),s=Or([],a,v,i),l=q(s);return l.push(t),l}var Ie=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&&Xr(O.projectionMatrix,e.projectionMatrix)&&Xr(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=e.projectPosition(O),k=te(F,e.pixelProjectionMatrix),K=j(k,2),Mr=K[0],lr=K[1],fr=$?lr:e.height-lr;return O.length===2?[Mr,fr]:[Mr,fr,k[2]]}),b(this,"unproject",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=A.targetZ,k=F===void 0?void 0:F,K=j(O,3),Mr=K[0],lr=K[1],fr=K[2],rt=$?lr:e.height-lr,et=k&&k*e.distanceScales.unitsPerMeter[2],tt=zr([Mr,rt,fr],e.pixelUnprojectionMatrix,et),nt=e.unprojectPosition(tt),Ir=j(nt,3),kr=Ir[0],Dr=Ir[1],at=Ir[2];return Number.isFinite(fr)?[kr,Dr,at]:Number.isFinite(k)?[kr,Dr,k]:[kr,Dr]}),b(this,"projectPosition",function(O){var A=R(O),d=j(A,2),$=d[0],F=d[1],k=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,F,k]}),b(this,"unprojectPosition",function(O){var A=q(O),d=j(A,2),$=d[0],F=d[1],k=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,F,k]});var n=t.width,a=t.height,v=t.altitude,o=v===void 0?null:v,i=t.fovy,s=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,E=t.farZMultiplier,I=E===void 0?1.01:E;n=n||1,a=a||1,s===null&&o===null?(o=Qr,s=ir(o)):s===null?s=ir(o):o===null&&(o=Er(s));var T=br(u);o=Math.max(.75,o);var S=Jr({longitude:h,latitude:c}),z=R([h,c]);z.push(0),g&&be(z,z,ze([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:s,nearZMultiplier:x,farZMultiplier:I}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:o}),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=o,this.fovy=s,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,v=this.viewMatrix,o=nr();wr(o,o,a),wr(o,o,v),this.viewProjectionMatrix=o;var i=nr();Pr(i,i,[t/2,-n/2,1]),pr(i,i,[1,-1,0]),wr(i,i,o);var s=ye(nr(),i);if(!s)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=s}},{key:"projectFlat",value:function(t){return R(t)}},{key:"unprojectFlat",value:function(t){return q(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,v=zr(a,this.pixelUnprojectionMatrix),o=R(n),i=Br([],o,Oe([],v)),s=Br([],this.center,i);return q(s)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,v=this.height,o=Ar(Object.assign({width:a,height:v,bounds:t},n)),i=o.longitude,s=o.latitude,l=o.zoom;return new r({width:a,height:v,longitude:i,latitude:s,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(s){return s[0]}))),v=Math.max.apply(Math,tr(n.map(function(s){return s[0]}))),o=Math.min.apply(Math,tr(n.map(function(s){return s[1]}))),i=Math.max.apply(Math,tr(n.map(function(s){return s[1]})));return[[a,o],[v,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Lr(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 ke(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?ke(Object(t),!0).forEach(function(n){(0,Re.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):ke(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,Pt=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,v=n?.props.onLoad,o=ie(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(o,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?De(n,e):o.onLoad=function(){v?.(),De(i,e)}),n?(i=n,n.setProps(o),n.userData.isExternal=!0):(i=new U.Deck(o),e.on("remove",function(){ae(e)})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&bt(i,e)}),i}function De(r,e){var t=function n(){r.isInitialized?Et(r,e):e.off("move",n)};e.on("move",t)}function ae(r){var e;(e=r.__deck)===null||e===void 0||e.finalize(),r.__deck=null}function ie(r){var e=H(H({},r),{},{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 U.MapView({id:"mapbox"})]});return e}function Ne(r,e){r.userData.mapboxLayers.add(e),oe(r)}function Fe(r,e){r.userData.mapboxLayers.delete(e),oe(r)}function Ce(r,e){oe(r)}function Ye(r,e,t){var n=r.userData,a=n.currentViewport,v=!1;a||(a=Ze(r,e,!0),r.userData.currentViewport=a,v=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var s=i.layer;return t.id===s.id},clearStack:v,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,v={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)&&Ot(r,v),v}function Ot(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,v=e.longitude,o=e.latitude,i=e.pitch,s=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=R([v,o]),h=s-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=i*Pt,w=1.5*a,M=_<.001?w*Math.cos(_)/c:w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(o)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ze(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new U.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},sr(e)),{},{nearZMultiplier:t?.02:.1}))}function bt(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var v=Array.from(n,function(f){return f.id}),o=(0,U._flatten)(r.props.layers,Boolean),i=o.some(function(f){return f&&!v.includes(f.id)}),s=r.getViewports(),l=s.findIndex(function(f){return f.id==="mapbox"}),c=s.length>1||l<0;(i||c)&&(l>=0&&(s=s.slice(),s[l]=Ze(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:s,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!v.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function Et(r,e){r.setProps({viewState:sr(e)}),r.needsRedraw({clearRedrawFlags:!0})}function oe(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 Sr=function(){function r(e){if((0,qe.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,$e.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Tr({map:t,gl:n,deck:this.props.deck}),Ne(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Fe(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Ce(this.deck,this)}},{key:"render",value:function(){Ye(this.deck,this.map,this)}}]),r}();var Ge=D(Be()),Qe=D(Rr()),Ke=D(Nr()),N=D(yr()),Q=D(rr());var ve=D(rr());function jr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Tt(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.
10
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var v=!0,o=!1,i;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return v=l.done,l},e:function(l){o=!0,i=l},f:function(){try{!v&&t.return!=null&&t.return()}finally{if(o)throw i}}}}function Tt(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 se="__UNDEFINED__";function dr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,ve._flatten)(n,Boolean);if(t!==n){var v=(0,ve._flatten)(t,Boolean),o=new Set(v.map(function(d){return d.id})),i=jr(a),s;try{for(i.s();!(s=i.n()).done;){var l=s.value;o.delete(l.id)}}catch(d){i.e(d)}finally{i.f()}var c=jr(o),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=jr(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 Sr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=jr(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 E in P)for(var I=P[E],T=E===se?M.length:M.indexOf(E),S=E===se?void 0:E,z=I.length-1;z>=0;z--){var O=I[z],A=M.indexOf(O);A!==T-1&&(r.moveLayer(O,S),A>T&&T++),T--,S=O}}}var St=["interleaved"];function He(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 vr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?He(Object(t),!0).forEach(function(n){(0,N.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):He(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Je=function(){function r(e){var t=this;(0,Qe.default)(this,r),(0,N.default)(this,"_props",void 0),(0,N.default)(this,"_deck",void 0),(0,N.default)(this,"_map",void 0),(0,N.default)(this,"_container",void 0),(0,N.default)(this,"_interleaved",void 0),(0,N.default)(this,"_lastMouseDownPoint",void 0),(0,N.default)(this,"_handleStyleChange",function(){dr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,N.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var o=t._map.getContainer(),i=o.clientWidth,s=o.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(s,"px")})}}),(0,N.default)(this,"_updateViewState",function(){var o=t._deck;o&&(o.setProps({viewState:sr(t._map)}),o.isInitialized&&o.redraw())}),(0,N.default)(this,"_handleMouseEvent",function(o){var i=t._deck;if(!(!i||!i.isInitialized)){var s={type:o.type,offsetCenter:o.point,srcEvent:o},l=t._lastMouseDownPoint;switch(!o.point&&l&&(s.deltaX=o.originalEvent.clientX-l.clientX,s.deltaY=o.originalEvent.clientY-l.clientY,s.offsetCenter={x:l.x+s.deltaX,y:l.y+s.deltaY}),s.type){case"mousedown":i._onPointerDown(s),t._lastMouseDownPoint=vr(vr({},o.point),{},{clientX:o.originalEvent.clientX,clientY:o.originalEvent.clientY});break;case"dragstart":s.type="panstart",i._onEvent(s);break;case"drag":s.type="panmove",i._onEvent(s);break;case"dragend":s.type="panend",i._onEvent(s);break;case"click":s.tapCount=1,i._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,i._onEvent(s);break;case"mousemove":s.type="pointermove",i._onPointerMove(s);break;case"mouseout":s.type="pointerleave",i._onPointerMove(s);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,v=(0,Ge.default)(e,St);this._interleaved=a,this._props=v}return(0,Ke.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&dr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?ie(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(vr(vr({},this._props),{},{parent:n,viewState:sr(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousedown",this._handleMouseEvent),t.on("dragstart",this._handleMouseEvent),t.on("drag",this._handleMouseEvent),t.on("dragend",this._handleMouseEvent),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(vr(vr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),dr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t=this._map;t&&(this._interleaved?this._onRemoveInterleaved(t):this._onRemoveOverlaid(t)),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){var n;t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousedown",this._handleMouseEvent),t.off("dragstart",this._handleMouseEvent),t.off("drag",this._handleMouseEvent),t.off("dragend",this._handleMouseEvent),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent),(n=this._deck)===null||n===void 0||n.finalize()}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),dr(t,this._deck,this._props.layers,[]),ae(t)}},{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 ct(xr);})();
11
11
  return __exports__;
12
12
  });
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.14",
5
+ "version": "8.9.16",
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": "0f0293217271fab462be5503d257fcb51afabbe6"
38
+ "gitHead": "cd1268ea4e5f32beda52f2207df615a68b1c90c3"
39
39
  }
package/src/deck-utils.ts CHANGED
@@ -79,8 +79,7 @@ export function getDeckInstance({
79
79
  } else {
80
80
  deckInstance = new Deck(deckProps);
81
81
  map.on('remove', () => {
82
- deckInstance.finalize();
83
- map.__deck = null;
82
+ removeDeckInstance(map);
84
83
  });
85
84
  }
86
85
 
@@ -107,6 +106,11 @@ function watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {
107
106
  map.on('move', _handleMapMove);
108
107
  }
109
108
 
109
+ export function removeDeckInstance(map: Map & {__deck?: Deck | null}) {
110
+ map.__deck?.finalize();
111
+ map.__deck = null;
112
+ }
113
+
110
114
  export function getInterleavedProps(currProps: DeckProps) {
111
115
  const nextProps: DeckProps = {
112
116
  ...currProps,
@@ -1,5 +1,5 @@
1
1
  import {Deck, assert} from '@deck.gl/core';
2
- import {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';
2
+ import {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';
3
3
 
4
4
  import type {Map, IControl, MapMouseEvent} from 'mapbox-gl';
5
5
  import type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';
@@ -121,7 +121,6 @@ export default class MapboxOverlay implements IControl {
121
121
  }
122
122
  }
123
123
 
124
- this._deck?.finalize();
125
124
  this._deck = undefined;
126
125
  this._map = undefined;
127
126
  this._container = undefined;
@@ -138,11 +137,13 @@ export default class MapboxOverlay implements IControl {
138
137
  map.off('mouseout', this._handleMouseEvent);
139
138
  map.off('click', this._handleMouseEvent);
140
139
  map.off('dblclick', this._handleMouseEvent);
140
+ this._deck?.finalize();
141
141
  }
142
142
 
143
143
  private _onRemoveInterleaved(map: Map): void {
144
144
  map.off('styledata', this._handleStyleChange);
145
145
  resolveLayers(map, this._deck, this._props.layers, []);
146
+ removeDeckInstance(map);
146
147
  }
147
148
 
148
149
  getDefaultPosition() {
@@ -9,6 +9,9 @@ export declare function getDeckInstance({ map, gl, deck }: {
9
9
  gl: WebGLRenderingContext;
10
10
  deck?: Deck;
11
11
  }): Deck;
12
+ export declare function removeDeckInstance(map: Map & {
13
+ __deck?: Deck | null;
14
+ }): void;
12
15
  export declare function getInterleavedProps(currProps: DeckProps): DeckProps;
13
16
  export declare function addLayer(deck: Deck, layer: MapboxLayer<any>): void;
14
17
  export declare function removeLayer(deck: Deck, layer: MapboxLayer<any>): void;
@@ -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;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,aAkBvD;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,CAiEP;AAeD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAC,QAGnE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAkBvD;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"}
@@ -0,0 +1,185 @@
1
+ import { Deck, WebMercatorViewport, MapView, _flatten as flatten } from '@deck.gl/core';
2
+ export function getDeckInstance({ map, gl, deck }) {
3
+ // Only create one deck instance per context
4
+ if (map.__deck) {
5
+ return map.__deck;
6
+ }
7
+ const customRender = deck?.props._customRender;
8
+ const deckProps = {
9
+ useDevicePixels: true,
10
+ _customRender: (reason) => {
11
+ map.triggerRepaint();
12
+ // customRender may be subscribed by DeckGL React component to update child props
13
+ // make sure it is still called
14
+ customRender?.(reason);
15
+ },
16
+ // TODO: import these defaults from a single source of truth
17
+ parameters: {
18
+ depthMask: true,
19
+ depthTest: true,
20
+ blend: true,
21
+ blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],
22
+ polygonOffsetFill: true,
23
+ depthFunc: gl.LEQUAL,
24
+ blendEquation: gl.FUNC_ADD
25
+ },
26
+ views: (deck && deck.props.views) || [new MapView({ id: 'mapbox' })]
27
+ };
28
+ if (!deck || deck.props.gl === gl) {
29
+ // deck is using the WebGLContext created by mapbox
30
+ // block deck from setting the canvas size
31
+ Object.assign(deckProps, {
32
+ gl,
33
+ width: null,
34
+ height: null,
35
+ touchAction: 'unset',
36
+ viewState: getViewState(map)
37
+ });
38
+ // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
39
+ // Otherwise (pure JS use case), we use the map's viewState to drive deck.
40
+ map.on('move', () => onMapMove(deck, map));
41
+ }
42
+ if (deck) {
43
+ deck.setProps(deckProps);
44
+ deck.userData.isExternal = true;
45
+ }
46
+ else {
47
+ deck = new Deck(deckProps);
48
+ map.on('remove', () => {
49
+ deck.finalize();
50
+ map.__deck = null;
51
+ });
52
+ }
53
+ deck.userData.mapboxLayers = new Set();
54
+ deck.userData.mapboxVersion = getMapboxVersion(map);
55
+ map.__deck = deck;
56
+ map.on('render', () => {
57
+ // @ts-expect-error (2445) protected property
58
+ if (deck.layerManager)
59
+ afterRender(deck, map);
60
+ });
61
+ return deck;
62
+ }
63
+ export function addLayer(deck, layer) {
64
+ deck.userData.mapboxLayers.add(layer);
65
+ updateLayers(deck);
66
+ }
67
+ export function removeLayer(deck, layer) {
68
+ deck.userData.mapboxLayers.delete(layer);
69
+ updateLayers(deck);
70
+ }
71
+ export function updateLayer(deck, layer) {
72
+ updateLayers(deck);
73
+ }
74
+ export function drawLayer(deck, map, layer) {
75
+ let { currentViewport } = deck.userData;
76
+ if (!currentViewport) {
77
+ // This is the first layer drawn in this render cycle.
78
+ // Generate viewport from the current map state.
79
+ currentViewport = getViewport(deck, map, true);
80
+ deck.userData.currentViewport = currentViewport;
81
+ }
82
+ // @ts-expect-error (2445) protected property
83
+ if (!deck.layerManager) {
84
+ return;
85
+ }
86
+ deck._drawLayers('mapbox-repaint', {
87
+ viewports: [currentViewport],
88
+ layerFilter: ({ layer: deckLayer }) => layer.id === deckLayer.id,
89
+ clearCanvas: false
90
+ });
91
+ }
92
+ export function getViewState(map) {
93
+ const { lng, lat } = map.getCenter();
94
+ return {
95
+ // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian
96
+ // https://github.com/visgl/deck.gl/issues/6894
97
+ longitude: ((lng + 540) % 360) - 180,
98
+ latitude: lat,
99
+ zoom: map.getZoom(),
100
+ bearing: map.getBearing(),
101
+ pitch: map.getPitch(),
102
+ repeat: map.getRenderWorldCopies()
103
+ };
104
+ }
105
+ function getMapboxVersion(map) {
106
+ // parse mapbox version string
107
+ let major = 0;
108
+ let minor = 0;
109
+ // @ts-ignore (2339) undefined property
110
+ const version = map.version;
111
+ if (version) {
112
+ [major, minor] = version.split('.').slice(0, 2).map(Number);
113
+ }
114
+ return { major, minor };
115
+ }
116
+ function getViewport(deck, map, useMapboxProjection = true) {
117
+ const { mapboxVersion } = deck.userData;
118
+ return new WebMercatorViewport(Object.assign({
119
+ id: 'mapbox',
120
+ x: 0,
121
+ y: 0,
122
+ width: deck.width,
123
+ height: deck.height
124
+ }, getViewState(map), useMapboxProjection
125
+ ? {
126
+ // match mapbox's projection matrix
127
+ // A change of near plane was made in 1.3.0
128
+ // https://github.com/mapbox/mapbox-gl-js/pull/8502
129
+ nearZMultiplier: (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2
130
+ ? 0.02
131
+ : 1 / (deck.height || 1)
132
+ }
133
+ : {
134
+ // use deck.gl's own default
135
+ nearZMultiplier: 0.1
136
+ }));
137
+ }
138
+ function afterRender(deck, map) {
139
+ const { mapboxLayers, isExternal } = deck.userData;
140
+ if (isExternal) {
141
+ // Draw non-Mapbox layers
142
+ const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
143
+ const deckLayers = flatten(deck.props.layers, Boolean);
144
+ const hasNonMapboxLayers = deckLayers.some(layer => layer && !mapboxLayerIds.includes(layer.id));
145
+ let viewports = deck.getViewports();
146
+ const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');
147
+ const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
148
+ if (hasNonMapboxLayers || hasNonMapboxViews) {
149
+ if (mapboxViewportIdx >= 0) {
150
+ viewports = viewports.slice();
151
+ viewports[mapboxViewportIdx] = getViewport(deck, map, false);
152
+ }
153
+ deck._drawLayers('mapbox-repaint', {
154
+ viewports,
155
+ layerFilter: params => (!deck.props.layerFilter || deck.props.layerFilter(params)) &&
156
+ (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),
157
+ clearCanvas: false
158
+ });
159
+ }
160
+ }
161
+ // End of render cycle, clear generated viewport
162
+ deck.userData.currentViewport = null;
163
+ }
164
+ function onMapMove(deck, map) {
165
+ deck.setProps({
166
+ viewState: getViewState(map)
167
+ });
168
+ // Camera changed, will trigger a map repaint right after this
169
+ // Clear any change flag triggered by setting viewState so that deck does not request
170
+ // a second repaint
171
+ deck.needsRedraw({ clearRedrawFlags: true });
172
+ }
173
+ function updateLayers(deck) {
174
+ if (deck.userData.isExternal) {
175
+ return;
176
+ }
177
+ const layers = [];
178
+ let layerIndex = 0;
179
+ deck.userData.mapboxLayers.forEach(deckLayer => {
180
+ const LayerType = deckLayer.props.type;
181
+ const layer = new LayerType(deckLayer.props, { _offset: layerIndex++ });
182
+ layers.push(layer);
183
+ });
184
+ deck.setProps({ layers });
185
+ }
package/typed/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { default as MapboxLayer } from './mapbox-layer';
2
+ export { default as MapboxOverlay } from './mapbox-overlay';
@@ -0,0 +1,37 @@
1
+ import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
2
+ export default class MapboxLayer {
3
+ /* eslint-disable no-this-before-super */
4
+ constructor(props) {
5
+ if (!props.id) {
6
+ throw new Error('Layer must have an unique id');
7
+ }
8
+ this.id = props.id;
9
+ this.type = 'custom';
10
+ this.renderingMode = props.renderingMode || '3d';
11
+ this.map = null;
12
+ this.deck = null;
13
+ this.props = props;
14
+ }
15
+ /* Mapbox custom layer methods */
16
+ onAdd(map, gl) {
17
+ this.map = map;
18
+ this.deck = getDeckInstance({ map, gl, deck: this.props.deck });
19
+ addLayer(this.deck, this);
20
+ }
21
+ onRemove() {
22
+ if (this.deck) {
23
+ removeLayer(this.deck, this);
24
+ }
25
+ }
26
+ setProps(props) {
27
+ // id cannot be changed
28
+ Object.assign(this.props, props, { id: this.id });
29
+ // safe guard in case setProps is called before onAdd
30
+ if (this.deck) {
31
+ updateLayer(this.deck, this);
32
+ }
33
+ }
34
+ render() {
35
+ drawLayer(this.deck, this.map, this);
36
+ }
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAA2D;gBAE3E,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAiBhB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAIlB,0CAA0C;IAC1C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAKrF,mDAAmD;IACnD,mBAAmB,CACjB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAK1C,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKxF,iDAAiD;IACjD,QAAQ;IAMR,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
1
+ {"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAA2D;gBAE3E,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAgBhB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,oBAAoB;IAM5B,kBAAkB;IAIlB,0CAA0C;IAC1C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAKrF,mDAAmD;IACnD,mBAAmB,CACjB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAK1C,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKxF,iDAAiD;IACjD,QAAQ;IAMR,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
@@ -0,0 +1,139 @@
1
+ import { Deck, assert } from '@deck.gl/core';
2
+ import { getViewState } from './deck-utils';
3
+ /**
4
+ * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
5
+ * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
6
+ */
7
+ export default class MapboxOverlay {
8
+ constructor(props) {
9
+ this._updateContainerSize = () => {
10
+ if (this._map && this._container) {
11
+ const { clientWidth, clientHeight } = this._map.getContainer();
12
+ Object.assign(this._container.style, {
13
+ width: `${clientWidth}px`,
14
+ height: `${clientHeight}px`
15
+ });
16
+ }
17
+ };
18
+ this._updateViewState = () => {
19
+ const deck = this._deck;
20
+ if (deck) {
21
+ // @ts-ignore (2345) map is always defined if deck is
22
+ deck.setProps({ viewState: getViewState(this._map) });
23
+ // Redraw immediately if view state has changed
24
+ deck.redraw();
25
+ }
26
+ };
27
+ this._handleMouseEvent = (event) => {
28
+ const deck = this._deck;
29
+ if (!deck) {
30
+ return;
31
+ }
32
+ const mockEvent = {
33
+ type: event.type,
34
+ offsetCenter: event.point,
35
+ srcEvent: event
36
+ };
37
+ switch (event.type) {
38
+ case 'click':
39
+ mockEvent.tapCount = 1;
40
+ // Hack: because we do not listen to pointer down, perform picking now
41
+ deck._onPointerDown(mockEvent);
42
+ deck._onEvent(mockEvent);
43
+ break;
44
+ case 'dblclick':
45
+ mockEvent.type = 'click';
46
+ mockEvent.tapCount = 2;
47
+ deck._onEvent(mockEvent);
48
+ break;
49
+ case 'mousemove':
50
+ mockEvent.type = 'pointermove';
51
+ deck._onPointerMove(mockEvent);
52
+ break;
53
+ case 'mouseout':
54
+ mockEvent.type = 'pointerleave';
55
+ deck._onPointerMove(mockEvent);
56
+ break;
57
+ default:
58
+ return;
59
+ }
60
+ };
61
+ this._props = { ...props };
62
+ }
63
+ /** Update (partial) props of the underlying Deck instance. */
64
+ setProps(props) {
65
+ Object.assign(this._props, props);
66
+ if ('viewState' in this._props) {
67
+ delete this._props.viewState;
68
+ }
69
+ if (this._deck) {
70
+ this._deck.setProps(this._props);
71
+ }
72
+ }
73
+ /** Called when the control is added to a map */
74
+ onAdd(map) {
75
+ this._map = map;
76
+ /* global document */
77
+ const container = document.createElement('div');
78
+ Object.assign(container.style, {
79
+ position: 'absolute',
80
+ left: 0,
81
+ top: 0,
82
+ pointerEvents: 'none'
83
+ });
84
+ this._container = container;
85
+ this._deck = new Deck({
86
+ ...this._props,
87
+ parent: container,
88
+ viewState: getViewState(map)
89
+ });
90
+ map.on('resize', this._updateContainerSize);
91
+ map.on('render', this._updateViewState);
92
+ map.on('mousemove', this._handleMouseEvent);
93
+ map.on('mouseout', this._handleMouseEvent);
94
+ map.on('click', this._handleMouseEvent);
95
+ map.on('dblclick', this._handleMouseEvent);
96
+ this._updateContainerSize();
97
+ return container;
98
+ }
99
+ /** Called when the control is removed from a map */
100
+ onRemove() {
101
+ const map = this._map;
102
+ if (map) {
103
+ map.off('resize', this._updateContainerSize);
104
+ map.off('render', this._updateViewState);
105
+ map.off('mousemove', this._handleMouseEvent);
106
+ map.off('mouseout', this._handleMouseEvent);
107
+ map.off('click', this._handleMouseEvent);
108
+ map.off('dblclick', this._handleMouseEvent);
109
+ }
110
+ this._deck?.finalize();
111
+ this._deck = undefined;
112
+ this._map = undefined;
113
+ this._container = undefined;
114
+ }
115
+ getDefaultPosition() {
116
+ return 'top-left';
117
+ }
118
+ /** Forwards the Deck.pickObject method */
119
+ pickObject(params) {
120
+ assert(this._deck);
121
+ return this._deck.pickObject(params);
122
+ }
123
+ /** Forwards the Deck.pickMultipleObjects method */
124
+ pickMultipleObjects(params) {
125
+ assert(this._deck);
126
+ return this._deck.pickMultipleObjects(params);
127
+ }
128
+ /** Forwards the Deck.pickObjects method */
129
+ pickObjects(params) {
130
+ assert(this._deck);
131
+ return this._deck.pickObjects(params);
132
+ }
133
+ /** Remove from map and releases all resources */
134
+ finalize() {
135
+ if (this._map) {
136
+ this._map.removeControl(this);
137
+ }
138
+ }
139
+ }