@deck.gl/mapbox 8.10.0-alpha.6 → 9.0.0-alpha.3
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 +3 -3
- package/dist/es5/deck-utils.js +2 -0
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/mapbox-layer.js.map +1 -1
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/esm/deck-utils.js +1 -0
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/mapbox-layer.js.map +1 -1
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist.min.js +2 -6
- package/package.json +4 -6
- package/src/deck-utils.ts +1 -3
- package/src/mapbox-layer.ts +1 -1
- package/src/mapbox-overlay.ts +1 -0
- package/typed/mapbox-overlay.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -62,14 +62,14 @@ var __exports__ = (() => {
|
|
|
62
62
|
// src/deck-utils.ts
|
|
63
63
|
var import_core2 = __toESM(require_core());
|
|
64
64
|
|
|
65
|
-
// ../../node_modules/@math.gl/web-mercator/dist/
|
|
65
|
+
// ../../node_modules/@math.gl/web-mercator/dist/assert.js
|
|
66
66
|
function assert(condition, message) {
|
|
67
67
|
if (!condition) {
|
|
68
68
|
throw new Error(message || "@math.gl/web-mercator: assertion failed.");
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
// ../../node_modules/@math.gl/web-mercator/dist/
|
|
72
|
+
// ../../node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js
|
|
73
73
|
var PI = Math.PI;
|
|
74
74
|
var PI_4 = PI / 4;
|
|
75
75
|
var DEGREES_TO_RADIANS = PI / 180;
|
|
@@ -91,7 +91,7 @@ var __exports__ = (() => {
|
|
|
91
91
|
return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
// ../../node_modules/@math.gl/web-mercator/dist/
|
|
94
|
+
// ../../node_modules/@math.gl/web-mercator/dist/get-bounds.js
|
|
95
95
|
var DEGREES_TO_RADIANS2 = Math.PI / 180;
|
|
96
96
|
|
|
97
97
|
// src/deck-utils.ts
|
package/dist/es5/deck-utils.js
CHANGED
|
@@ -20,6 +20,8 @@ var _core = require("@deck.gl/core");
|
|
|
20
20
|
|
|
21
21
|
var _webMercator = require("@math.gl/web-mercator");
|
|
22
22
|
|
|
23
|
+
var _constants = require("@luma.gl/constants");
|
|
24
|
+
|
|
23
25
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
24
26
|
|
|
25
27
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -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","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","operation","includes","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","nearZ","_nearZ","farZ","_farZ","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","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}) =>\n layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\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 // @ts-expect-error Mapbox specific - extract near plane position\n nearZ: map.transform._nearZ / map.transform.height,\n // @ts-expect-error Mapbox specific - extract far plane position\n farZ: map.transform._farZ / map.transform.height\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","operation","includes","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","nearZ","_nearZ","farZ","_farZ","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","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}) =>\n layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\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 nearZ: map.transform._nearZ / map.transform.height,\n farZ: map.transform._farZ / map.transform.height\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":";;;;;;;;;;;AAAA;;IAUqBA,W;AASnB,uBAAYC,KAAZ,EAA6C;AAAA;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;;;SAIDO,K,GAAA,eAAMH,GAAN,EAAgBI,EAAhB,EAAiD;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAY,gCAAgB;AAACD,MAAAA,GAAG,EAAHA,GAAD;AAAMI,MAAAA,EAAE,EAAFA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAhB,CAAZ;AACA,6BAAS,KAAKA,IAAd,EAAoB,IAApB;AACD,G;;SAEDI,Q,GAAA,oBAAiB;AACf,QAAI,KAAKJ,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDK,Q,GAAA,kBAASV,KAAT,EAA0C;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDQ,M,GAAA,kBAAS;AACP,8BAAU,KAAKR,IAAf,EAAsB,KAAKD,GAA3B,
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":";;;;;;;;;;;AAAA;;IAUqBA,W;AASnB,uBAAYC,KAAZ,EAA6C;AAAA;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;;;SAIDO,K,GAAA,eAAMH,GAAN,EAAgBI,EAAhB,EAAiD;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAY,gCAAgB;AAACD,MAAAA,GAAG,EAAHA,GAAD;AAAMI,MAAAA,EAAE,EAAFA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAhB,CAAZ;AACA,6BAAS,KAAKA,IAAd,EAAoB,IAApB;AACD,G;;SAEDI,Q,GAAA,oBAAiB;AACf,QAAI,KAAKJ,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDK,Q,GAAA,kBAASV,KAAT,EAA0C;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDQ,M,GAAA,kBAAS;AACP,8BAAU,KAAKR,IAAf,EAAsB,KAAKD,GAA3B,EAAgC,IAAhC;AACD,G","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n renderingMode?: '2d' | '3d';\n deck?: Deck;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"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 /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\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","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"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 /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\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 // eslint-disable-next-line complexity\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/esm/deck-utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Deck, WebMercatorViewport, MapView, _flatten as flatten } from '@deck.gl/core';
|
|
2
2
|
import { lngLatToWorld, unitsPerMeter } from '@math.gl/web-mercator';
|
|
3
|
+
import { GL } from '@luma.gl/constants';
|
|
3
4
|
const TILE_SIZE = 512;
|
|
4
5
|
const DEGREES_TO_RADIANS = Math.PI / 180;
|
|
5
6
|
export function getDeckInstance({
|
|
@@ -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","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","operation","includes","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","nearZ","_nearZ","farZ","_farZ","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","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}) =>\n layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\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 // @ts-expect-error Mapbox specific - extract near plane position\n nearZ: map.transform._nearZ / map.transform.height,\n // @ts-expect-error Mapbox specific - extract far plane position\n farZ: map.transform._farZ / map.transform.height\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","GL","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","operation","includes","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","nearZ","_nearZ","farZ","_farZ","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","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}) =>\n layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\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 nearZ: map.transform._nearZ / map.transform.height,\n farZ: map.transform._farZ / map.transform.height\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","MapboxLayer","constructor","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":"AAAA,SAAQA,eAAR,EAAyBC,QAAzB,EAAmCC,WAAnC,EAAgDC,WAAhD,EAA6DC,SAA7D,QAA6E,cAA7E;AAUA,eAAe,MAAMC,WAAN,CAAwE;AASrFC,EAAAA,WAAW,CAACC,KAAD,EAAkC;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;AAIDO,EAAAA,KAAK,CAACH,GAAD,EAAWI,EAAX,EAA4C;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAYZ,eAAe,CAAC;AAACW,MAAAA,GAAD;AAAMI,MAAAA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAD,CAA3B;AACAX,IAAAA,QAAQ,CAAC,KAAKW,IAAN,EAAY,IAAZ,CAAR;AACD;;AAEDI,EAAAA,QAAQ,GAAS;AACf,QAAI,KAAKJ,IAAT,EAAe;AACbV,MAAAA,WAAW,CAAC,KAAKU,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDK,EAAAA,QAAQ,CAACV,KAAD,EAAkC;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACbT,MAAAA,WAAW,CAAC,KAAKS,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDQ,EAAAA,MAAM,GAAG;AACPhB,IAAAA,SAAS,CAAC,KAAKQ,IAAN,EAAa,KAAKD,GAAlB,
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","MapboxLayer","constructor","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":"AAAA,SAAQA,eAAR,EAAyBC,QAAzB,EAAmCC,WAAnC,EAAgDC,WAAhD,EAA6DC,SAA7D,QAA6E,cAA7E;AAUA,eAAe,MAAMC,WAAN,CAAwE;AASrFC,EAAAA,WAAW,CAACC,KAAD,EAAkC;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;AAIDO,EAAAA,KAAK,CAACH,GAAD,EAAWI,EAAX,EAA4C;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAYZ,eAAe,CAAC;AAACW,MAAAA,GAAD;AAAMI,MAAAA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAD,CAA3B;AACAX,IAAAA,QAAQ,CAAC,KAAKW,IAAN,EAAY,IAAZ,CAAR;AACD;;AAEDI,EAAAA,QAAQ,GAAS;AACf,QAAI,KAAKJ,IAAT,EAAe;AACbV,MAAAA,WAAW,CAAC,KAAKU,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDK,EAAAA,QAAQ,CAACV,KAAD,EAAkC;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACbT,MAAAA,WAAW,CAAC,KAAKS,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDQ,EAAAA,MAAM,GAAG;AACPhB,IAAAA,SAAS,CAAC,KAAKQ,IAAN,EAAa,KAAKD,GAAlB,EAAuB,IAAvB,CAAT;AACD;;AA/CoF","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n renderingMode?: '2d' | '3d';\n deck?: Deck;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","removeDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"mappings":"AAAA,SAAQA,IAAR,EAAcC,MAAd,QAA2B,eAA3B;AACA,SAAQC,YAAR,EAAsBC,eAAtB,EAAuCC,kBAAvC,EAA2DC,mBAA3D,QAAqF,cAArF;AAMA,SAAQC,aAAR,QAA4B,kBAA5B;AAqBA,eAAe,MAAMC,aAAN,CAAwC;AAQrDC,EAAAA,WAAW,CAACC,KAAD,EAA4B;AAAA,SAP/BC,MAO+B;AAAA,SAN/BC,KAM+B;AAAA,SAL/BC,IAK+B;AAAA,SAJ/BC,UAI+B;AAAA,SAH/BC,YAG+B;AAAA,SAF/BC,mBAE+B;;AAAA,SAuJ/BC,kBAvJ+B,GAuJV,MAAM;AACjCV,MAAAA,aAAa,CAAC,KAAKM,IAAN,EAAY,KAAKD,KAAjB,EAAwB,KAAKD,MAAL,CAAYO,MAApC,EAA4C,KAAKP,MAAL,CAAYO,MAAxD,CAAb;AACD,KAzJsC;;AAAA,SA2J/BC,oBA3J+B,GA2JR,MAAM;AACnC,UAAI,KAAKN,IAAL,IAAa,KAAKC,UAAtB,EAAkC;AAChC,cAAM;AAACM,UAAAA,WAAD;AAAcC,UAAAA;AAAd,YAA8B,KAAKR,IAAL,CAAUS,YAAV,EAApC;;AACAC,QAAAA,MAAM,CAACC,MAAP,CAAc,KAAKV,UAAL,CAAgBW,KAA9B,EAAqC;AACnCC,UAAAA,KAAK,EAAG,GAAEN,WAAY,IADa;AAEnCO,UAAAA,MAAM,EAAG,GAAEN,YAAa;AAFW,SAArC;AAID;AACF,KAnKsC;;AAAA,SAqK/BO,gBArK+B,GAqKZ,MAAM;AAC/B,YAAMC,IAAI,GAAG,KAAKjB,KAAlB;;AACA,UAAIiB,IAAJ,EAAU;AAERA,QAAAA,IAAI,CAACC,QAAL,CAAc;AAACC,UAAAA,SAAS,EAAE5B,YAAY,CAAC,KAAKU,IAAN;AAAxB,SAAd;;AAEA,YAAIgB,IAAI,CAACG,aAAT,EAAwB;AACtBH,UAAAA,IAAI,CAACI,MAAL;AACD;AACF;AACF,KA/KsC;;AAAA,SAiL/BC,iBAjL+B,GAiLVC,KAAD,IAA0B;AACpD,YAAMN,IAAI,GAAG,KAAKjB,KAAlB;;AACA,UAAI,CAACiB,IAAD,IAAS,CAACA,IAAI,CAACG,aAAnB,EAAkC;AAChC;AACD;;AAED,YAAMI,SAOL,GAAG;AACFC,QAAAA,IAAI,EAAEF,KAAK,CAACE,IADV;AAEFC,QAAAA,YAAY,EAAEH,KAAK,CAACI,KAFlB;AAGFC,QAAAA,QAAQ,EAAEL;AAHR,OAPJ;AAaA,YAAMM,QAAQ,GAAG,KAAKzB,mBAAtB;;AACA,UAAI,CAACmB,KAAK,CAACI,KAAP,IAAgBE,QAApB,EAA8B;AAE5BL,QAAAA,SAAS,CAACM,MAAV,GAAmBP,KAAK,CAACQ,aAAN,CAAoBC,OAApB,GAA8BH,QAAQ,CAACG,OAA1D;AACAR,QAAAA,SAAS,CAACS,MAAV,GAAmBV,KAAK,CAACQ,aAAN,CAAoBG,OAApB,GAA8BL,QAAQ,CAACK,OAA1D;AACAV,QAAAA,SAAS,CAACE,YAAV,GAAyB;AACvBS,UAAAA,CAAC,EAAEN,QAAQ,CAACM,CAAT,GAAaX,SAAS,CAACM,MADH;AAEvBM,UAAAA,CAAC,EAAEP,QAAQ,CAACO,CAAT,GAAaZ,SAAS,CAACS;AAFH,SAAzB;AAID;;AAED,cAAQT,SAAS,CAACC,IAAlB;AACE,aAAK,WAAL;AACER,UAAAA,IAAI,CAACoB,cAAL,CAAoBb,SAApB;;AACA,eAAKpB,mBAAL,GAA2B,EACzB,GAAGmB,KAAK,CAACI,KADgB;AAEzBK,YAAAA,OAAO,EAAET,KAAK,CAACQ,aAAN,CAAoBC,OAFJ;AAGzBE,YAAAA,OAAO,EAAEX,KAAK,CAACQ,aAAN,CAAoBG;AAHJ,WAA3B;AAKA;;AAEF,aAAK,WAAL;AACEV,UAAAA,SAAS,CAACC,IAAV,GAAiB,UAAjB;;AACAR,UAAAA,IAAI,CAACqB,QAAL,CAAcd,SAAd;;AACA;;AAEF,aAAK,MAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,SAAjB;;AACAR,UAAAA,IAAI,CAACqB,QAAL,CAAcd,SAAd;;AACA;;AAEF,aAAK,SAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,QAAjB;;AACAR,UAAAA,IAAI,CAACqB,QAAL,CAAcd,SAAd;;AACA;;AAEF,aAAK,OAAL;AACEA,UAAAA,SAAS,CAACe,QAAV,GAAqB,CAArB;;AACAtB,UAAAA,IAAI,CAACqB,QAAL,CAAcd,SAAd;;AACA;;AAEF,aAAK,UAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,OAAjB;AACAD,UAAAA,SAAS,CAACe,QAAV,GAAqB,CAArB;;AACAtB,UAAAA,IAAI,CAACqB,QAAL,CAAcd,SAAd;;AACA;;AAEF,aAAK,WAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,aAAjB;;AACAR,UAAAA,IAAI,CAACuB,cAAL,CAAoBhB,SAApB;;AACA;;AAEF,aAAK,UAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,cAAjB;;AACAR,UAAAA,IAAI,CAACuB,cAAL,CAAoBhB,SAApB;;AACA;;AAEF;AACE;AA/CJ;AAiDD,KAhQsC;;AACrC,UAAM;AAACiB,MAAAA,WAAW,GAAG,KAAf;AAAsB,SAAGC;AAAzB,QAAuC5C,KAA7C;AACA,SAAKK,YAAL,GAAoBsC,WAApB;AACA,SAAK1C,MAAL,GAAc2C,UAAd;AACD;;AAGDxB,EAAAA,QAAQ,CAACpB,KAAD,EAAkC;AACxC,QAAI,KAAKK,YAAL,IAAqBL,KAAK,CAACQ,MAA/B,EAAuC;AACrCX,MAAAA,aAAa,CAAC,KAAKM,IAAN,EAAY,KAAKD,KAAjB,EAAwB,KAAKD,MAAL,CAAYO,MAApC,EAA4CR,KAAK,CAACQ,MAAlD,CAAb;AACD;;AAEDK,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKb,MAAnB,EAA2BD,KAA3B;;AAEA,QAAI,KAAKE,KAAT,EAAgB;AACd,WAAKA,KAAL,CAAWkB,QAAX,CAAoB,KAAKf,YAAL,GAAoBT,mBAAmB,CAAC,KAAKK,MAAN,CAAvC,GAAuD,KAAKA,MAAhF;AACD;AACF;;AAGD4C,EAAAA,KAAK,CAACC,GAAD,EAA2B;AAC9B,SAAK3C,IAAL,GAAY2C,GAAZ;AACA,WAAO,KAAKzC,YAAL,GAAoB,KAAK0C,iBAAL,CAAuBD,GAAvB,CAApB,GAAkD,KAAKE,cAAL,CAAoBF,GAApB,CAAzD;AACD;;AAEOE,EAAAA,cAAc,CAACF,GAAD,EAA2B;AAE/C,UAAMG,SAAS,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAlB;AACAtC,IAAAA,MAAM,CAACC,MAAP,CAAcmC,SAAS,CAAClC,KAAxB,EAA+B;AAC7BqC,MAAAA,QAAQ,EAAE,UADmB;AAE7BC,MAAAA,IAAI,EAAE,CAFuB;AAG7BC,MAAAA,GAAG,EAAE,CAHwB;AAI7BC,MAAAA,aAAa,EAAE;AAJc,KAA/B;AAMA,SAAKnD,UAAL,GAAkB6C,SAAlB;AAEA,SAAK/C,KAAL,GAAa,IAAIX,IAAJ,CAAS,EACpB,GAAG,KAAKU,MADY;AAEpBuD,MAAAA,MAAM,EAAEP,SAFY;AAGpB5B,MAAAA,SAAS,EAAE5B,YAAY,CAACqD,GAAD;AAHH,KAAT,CAAb;AAMAA,IAAAA,GAAG,CAACW,EAAJ,CAAO,QAAP,EAAiB,KAAKhD,oBAAtB;AACAqC,IAAAA,GAAG,CAACW,EAAJ,CAAO,QAAP,EAAiB,KAAKvC,gBAAtB;AACA4B,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKjC,iBAAzB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKjC,iBAAzB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,MAAP,EAAe,KAAKjC,iBAApB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,SAAP,EAAkB,KAAKjC,iBAAvB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKjC,iBAAzB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,UAAP,EAAmB,KAAKjC,iBAAxB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,OAAP,EAAgB,KAAKjC,iBAArB;AACAsB,IAAAA,GAAG,CAACW,EAAJ,CAAO,UAAP,EAAmB,KAAKjC,iBAAxB;;AAEA,SAAKf,oBAAL;;AACA,WAAOwC,SAAP;AACD;;AAEOF,EAAAA,iBAAiB,CAACD,GAAD,EAA2B;AAClD,SAAK5C,KAAL,GAAaR,eAAe,CAAC;AAC3BoD,MAAAA,GAD2B;AAG3BY,MAAAA,EAAE,EAAEZ,GAAG,CAACa,OAAJ,CAAYC,OAAZ,CAAoBF,EAHG;AAI3BvC,MAAAA,IAAI,EAAE,IAAI5B,IAAJ,CAAS,EACb,GAAG,KAAKU,MADK;AAGbyD,QAAAA,EAAE,EAAEZ,GAAG,CAACa,OAAJ,CAAYC,OAAZ,CAAoBF;AAHX,OAAT;AAJqB,KAAD,CAA5B;AAWAZ,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKlD,kBAAzB;AACAV,IAAAA,aAAa,CAACiD,GAAD,EAAM,KAAK5C,KAAX,EAAkB,EAAlB,EAAsB,KAAKD,MAAL,CAAYO,MAAlC,CAAb;AAEA,WAAO0C,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAP;AACD;;AAGDU,EAAAA,QAAQ,GAAS;AACf,UAAMf,GAAG,GAAG,KAAK3C,IAAjB;;AAEA,QAAI2C,GAAJ,EAAS;AACP,UAAI,KAAKzC,YAAT,EAAuB;AACrB,aAAKyD,oBAAL,CAA0BhB,GAA1B;AACD,OAFD,MAEO;AACL,aAAKiB,iBAAL,CAAuBjB,GAAvB;AACD;AACF;;AAED,SAAK5C,KAAL,GAAa8D,SAAb;AACA,SAAK7D,IAAL,GAAY6D,SAAZ;AACA,SAAK5D,UAAL,GAAkB4D,SAAlB;AACD;;AAEOD,EAAAA,iBAAiB,CAACjB,GAAD,EAAiB;AAAA;;AACxCA,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,QAAR,EAAkB,KAAKxD,oBAAvB;AACAqC,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,QAAR,EAAkB,KAAK/C,gBAAvB;AACA4B,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,WAAR,EAAqB,KAAKzC,iBAA1B;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,WAAR,EAAqB,KAAKzC,iBAA1B;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,MAAR,EAAgB,KAAKzC,iBAArB;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,SAAR,EAAmB,KAAKzC,iBAAxB;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,WAAR,EAAqB,KAAKzC,iBAA1B;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,UAAR,EAAoB,KAAKzC,iBAAzB;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,OAAR,EAAiB,KAAKzC,iBAAtB;AACAsB,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,UAAR,EAAoB,KAAKzC,iBAAzB;AACA,wBAAKtB,KAAL,4DAAYgE,QAAZ;AACD;;AAEOJ,EAAAA,oBAAoB,CAAChB,GAAD,EAAiB;AAC3CA,IAAAA,GAAG,CAACmB,GAAJ,CAAQ,WAAR,EAAqB,KAAK1D,kBAA1B;AACAV,IAAAA,aAAa,CAACiD,GAAD,EAAM,KAAK5C,KAAX,EAAkB,KAAKD,MAAL,CAAYO,MAA9B,EAAsC,EAAtC,CAAb;AACAb,IAAAA,kBAAkB,CAACmD,GAAD,CAAlB;AACD;;AAEDqB,EAAAA,kBAAkB,GAAG;AACnB,WAAO,UAAP;AACD;;AAGDC,EAAAA,UAAU,CAACC,MAAD,EAA4E;AACpF7E,IAAAA,MAAM,CAAC,KAAKU,KAAN,CAAN;AACA,WAAO,KAAKA,KAAL,CAAWkE,UAAX,CAAsBC,MAAtB,CAAP;AACD;;AAGDC,EAAAA,mBAAmB,CACjBD,MADiB,EAEwB;AACzC7E,IAAAA,MAAM,CAAC,KAAKU,KAAN,CAAN;AACA,WAAO,KAAKA,KAAL,CAAWoE,mBAAX,CAA+BD,MAA/B,CAAP;AACD;;AAGDE,EAAAA,WAAW,CAACF,MAAD,EAA8E;AACvF7E,IAAAA,MAAM,CAAC,KAAKU,KAAN,CAAN;AACA,WAAO,KAAKA,KAAL,CAAWqE,WAAX,CAAuBF,MAAvB,CAAP;AACD;;AAGDH,EAAAA,QAAQ,GAAG;AACT,QAAI,KAAK/D,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUqE,aAAV,CAAwB,IAAxB;AACD;AACF;;AAGDC,EAAAA,SAAS,GAA6B;AACpC,QAAI,CAAC,KAAKtE,IAAV,EAAgB;AACd,aAAO,IAAP;AACD;;AACD,WAAO,KAAKE,YAAL,GAAoB,KAAKF,IAAL,CAAUsE,SAAV,EAApB,GAA4C,KAAKvE,KAAL,CAAYuE,SAAZ,EAAnD;AACD;;AA7JoD","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 /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\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","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"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 /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\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 // eslint-disable-next-line complexity\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,11 +4,7 @@
|
|
|
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
|
|
8
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function
|
|
9
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function rt(r,e){if(r){if(typeof r=="string")return xe(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 xe(r,e)}}function xe(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 et(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,o=!1,v,i;try{for(t=t.call(r);!(a=(v=t.next()).done)&&(n.push(v.value),!(e&&n.length===e));a=!0);}catch(s){o=!0,i=s}finally{try{!a&&t.return!=null&&t.return()}finally{if(o)throw i}}return n}}function tt(r){if(Array.isArray(r))return r}function Pr(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,o=a===void 0?0:a,v=r.maxZoom,i=v===void 0?24:v,s=r.offset,l=s===void 0?[0,0]:s,c=qr(n,2),f=qr(c[0],2),p=f[0],u=f[1],y=qr(c[1],2),_=y[0],w=y[1],x=nt(r.padding),P=D([p,or(w,-rr,rr)]),h=D([_,or(u,-rr,rr)]),m=[Math.max(Math.abs(h[0]-P[0]),o),Math.max(Math.abs(h[1]-P[1]),o)],M=[e-x.left-x.right-Math.abs(l[0])*2,t-x.top-x.bottom-Math.abs(l[1])*2];k(M[0]>0&&M[1]>0);var d=M[0]/m[0],A=M[1]/m[1],I=(x.right-x.left)/2/d,S=(x.bottom-x.top)/2/A,L=[(h[0]+P[0])/2+I,(h[1]+P[1])/2+S],T=Y(L),E=Math.min(i,xr(Math.abs(Math.min(d,A))));return k(Number.isFinite(E)),{longitude:T[0],latitude:T[1],zoom:E}}function nt(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(k(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Me=Math.PI/180;function br(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,o={targetZ:e},v=a([0,n],o),i=a([t,n],o),s,l,c=r.fovy?.5*r.fovy*Me:Math.atan(.5/r.altitude),f=(90-r.pitch)*Me;return c>f-.01?(s=ge(r,0,e),l=ge(r,t,e)):(s=a([0,0],o),l=a([t,0],o)),[v,i,l,s]}function ge(r,e,t){var n=r.pixelUnprojectionMatrix,a=W(n,[e,0,1,1]),o=W(n,[e,r.height,1,1]),v=t*r.distanceScales.unitsPerMeter[2],i=(v-a[2])/(o[2]-a[2]),s=mr([],a,o,i),l=Y(s);return l.push(t),l}function Or(r){return ot(r)||it(r)||me(r)||at()}function at(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
10
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function it(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function ot(r){if(Array.isArray(r))return Vr(r)}function lr(r,e){return vt(r)||lt(r,e)||me(r,e)||st()}function st(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
11
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function me(r,e){if(r){if(typeof r=="string")return Vr(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 Vr(r,e)}}function Vr(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 lt(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,o=!1,v,i;try{for(t=t.call(r);!(a=(v=t.next()).done)&&(n.push(v.value),!(e&&n.length===e));a=!0);}catch(s){o=!0,i=s}finally{try{!a&&t.return!=null&&t.return()}finally{if(o)throw i}}return n}}function vt(r){if(Array.isArray(r))return r}function ct(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}var ue=function(){function r(){var t=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};ct(this,r),O(this,"latitude",void 0),O(this,"longitude",void 0),O(this,"zoom",void 0),O(this,"pitch",void 0),O(this,"bearing",void 0),O(this,"altitude",void 0),O(this,"fovy",void 0),O(this,"meterOffset",void 0),O(this,"center",void 0),O(this,"width",void 0),O(this,"height",void 0),O(this,"scale",void 0),O(this,"distanceScales",void 0),O(this,"viewMatrix",void 0),O(this,"projectionMatrix",void 0),O(this,"viewProjectionMatrix",void 0),O(this,"pixelProjectionMatrix",void 0),O(this,"pixelUnprojectionMatrix",void 0),O(this,"equals",function(b){return b instanceof r?b.width===t.width&&b.height===t.height&&Ir(b.projectionMatrix,t.projectionMatrix)&&Ir(b.viewMatrix,t.viewMatrix):!1}),O(this,"project",function(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},j=g.topLeft,Z=j===void 0?!0:j,R=t.projectPosition(b),N=$r(R,t.pixelProjectionMatrix),H=lr(N,2),fr=H[0],nr=H[1],ar=Z?nr:t.height-nr;return b.length===2?[fr,ar]:[fr,ar,N[2]]}),O(this,"unproject",function(b){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},j=g.topLeft,Z=j===void 0?!0:j,R=g.targetZ,N=R===void 0?void 0:R,H=lr(b,3),fr=H[0],nr=H[1],ar=H[2],Se=Z?nr:t.height-nr,Le=N&&N*t.distanceScales.unitsPerMeter[2],Ie=wr([fr,Se,ar],t.pixelUnprojectionMatrix,Le),je=t.unprojectPosition(Ie),Tr=lr(je,3),Sr=Tr[0],Lr=Tr[1],De=Tr[2];return Number.isFinite(ar)?[Sr,Lr,De]:Number.isFinite(N)?[Sr,Lr,N]:[Sr,Lr]}),O(this,"projectPosition",function(b){var g=D(b),j=lr(g,2),Z=j[0],R=j[1],N=(b[2]||0)*t.distanceScales.unitsPerMeter[2];return[Z,R,N]}),O(this,"unprojectPosition",function(b){var g=Y(b),j=lr(g,2),Z=j[0],R=j[1],N=(b[2]||0)*t.distanceScales.metersPerUnit[2];return[Z,R,N]});var a=n.width,o=n.height,v=n.altitude,i=v===void 0?null:v,s=n.fovy,l=s===void 0?null:s,c=n.latitude,f=c===void 0?0:c,p=n.longitude,u=p===void 0?0:p,y=n.zoom,_=y===void 0?0:y,w=n.pitch,x=w===void 0?0:w,P=n.bearing,h=P===void 0?0:P,m=n.position,M=m===void 0?null:m,d=n.nearZMultiplier,A=d===void 0?.02:d,I=n.farZMultiplier,S=I===void 0?1.01:I;a=a||1,o=o||1,l===null&&i===null?(i=kr,l=J(i)):l===null?l=J(i):i===null&&(i=_r(l));var L=yr(_);i=Math.max(.75,i);var T=Cr({longitude:u,latitude:f}),E=D([u,f]);E.push(0),M&&le(E,E,ce([],M,T.unitsPerMeter)),this.projectionMatrix=Zr({width:a,height:o,scale:L,center:E,pitch:x,fovy:l,nearZMultiplier:A,farZMultiplier:S}),this.viewMatrix=Yr({height:o,scale:L,center:E,pitch:x,bearing:h,altitude:i}),this.width=a,this.height=o,this.scale=L,this.latitude=f,this.longitude=u,this.zoom=_,this.pitch=x,this.bearing=h,this.altitude=i,this.fovy=l,this.center=E,this.meterOffset=M||[0,0,0],this.distanceScales=T,this._initMatrices(),Object.freeze(this)}var e=r.prototype;return e._initMatrices=function(){var n=this.width,a=this.height,o=this.projectionMatrix,v=this.viewMatrix,i=Q();Mr(i,i,o),Mr(i,i,v),this.viewProjectionMatrix=i;var s=Q();gr(s,s,[n/2,-a/2,1]),sr(s,s,[1,-1,0]),Mr(s,s,i);var l=te(Q(),s);if(!l)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=s,this.pixelUnprojectionMatrix=l},e.projectFlat=function(n){return D(n)},e.unprojectFlat=function(n){return Y(n)},e.getMapCenterByLngLatPosition=function(n){var a=n.lngLat,o=n.pos,v=wr(o,this.pixelUnprojectionMatrix),i=D(a),s=jr([],i,se([],v)),l=jr([],this.center,s);return Y(l)},e.fitBounds=function(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=this.width,v=this.height,i=Pr(Object.assign({width:o,height:v,bounds:n},a)),s=i.longitude,l=i.latitude,c=i.zoom;return new r({width:o,height:v,longitude:s,latitude:l,zoom:c})},e.getBounds=function(n){var a=this.getBoundingRegion(n),o=Math.min.apply(Math,Or(a.map(function(l){return l[0]}))),v=Math.max.apply(Math,Or(a.map(function(l){return l[0]}))),i=Math.min.apply(Math,Or(a.map(function(l){return l[1]}))),s=Math.max.apply(Math,Or(a.map(function(l){return l[1]})));return[[o,i],[v,s]]},e.getBoundingRegion=function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return br(this,n.z||0)},e.getLocationAtPoint=function(n){var a=n.lngLat,o=n.pos;return this.getMapCenterByLngLatPosition({lngLat:a,pos:o})},r}();function ye(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 B(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ye(Object(t),!0).forEach(function(n){ht(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):ye(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}function ht(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var Wr=512,pt=Math.PI/180;function Er(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,o=n?.props.onLoad,v=Br(B(B({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(v,{gl:t,width:null,height:null,touchAction:"unset",viewState:er(e)}),n!=null&&n.isInitialized?_e(n,e):v.onLoad=function(){o?.(),_e(i,e)}),n?(i=n,n.setProps(v),n.userData.isExternal=!0):(i=new X.Deck(v),e.on("remove",function(){Xr(e)})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&xt(i,e)}),i}function _e(r,e){var t=function n(){r.isInitialized?Mt(r,e):e.off("move",n)};e.on("move",t)}function Xr(r){var e;(e=r.__deck)===null||e===void 0||e.finalize(),r.__deck=null}function Br(r){var e=B(B({},r),{},{parameters:B({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return e}function we(r,e){r.userData.mapboxLayers.add(e),Ur(r)}function Pe(r,e){r.userData.mapboxLayers.delete(e),Ur(r)}function be(r,e){Ur(r)}function Oe(r,e,t){var n=r.userData,a=n.currentViewport,o=!1;a||(a=Ee(r,e,!0),r.userData.currentViewport=a,o=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var s=i.layer;return t.id===s.id||s.props.operation.includes("terrain")},clearStack:o,clearCanvas:!1})}function er(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,o={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&dt(r,o),o}function dt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,o=e.longitude,v=e.latitude,i=e.pitch,s=n.x*Wr,l=(1-n.y)*Wr,c=n.z*Wr,f=D([o,v]),p=s-f[0],u=l-f[1],y=Math.sqrt(p*p+u*u),_=i*pt,w=1.5*a,x=_<.001?w*Math.cos(_)/c:w*Math.sin(_)/y;e.zoom=Math.log2(x);var P=w*Math.cos(_)/x,h=c-P;e.position=[0,0,h/Fr(v)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ee(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(B(B({id:"mapbox",x:0,y:0,width:r.width,height:r.height},er(e)),{},{nearZMultiplier:t?.02:.1,nearZ:e.transform._nearZ/e.transform.height,farZ:e.transform._farZ/e.transform.height}))}function xt(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var o=Array.from(n,function(f){return f.id}),v=(0,X._flatten)(r.props.layers,Boolean),i=v.some(function(f){return f&&!o.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]=Ee(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:s,layerFilter:function(p){return(!r.props.layerFilter||r.props.layerFilter(p))&&(p.viewport.id!=="mapbox"||!o.includes(p.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function Mt(r,e){r.setProps({viewState:er(e)}),r.needsRedraw({clearRedrawFlags:!0})}function Ur(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})}}function gt(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}var Ar=function(){function r(t){if(gt(this,r),this.id=void 0,this.type=void 0,this.renderingMode=void 0,this.map=void 0,this.deck=void 0,this.props=void 0,!t.id)throw new Error("Layer must have an unique id");this.id=t.id,this.type="custom",this.renderingMode=t.renderingMode||"3d",this.map=null,this.deck=null,this.props=t}var e=r.prototype;return e.onAdd=function(n,a){this.map=n,this.deck=Er({map:n,gl:a,deck:this.props.deck}),we(this.deck,this)},e.onRemove=function(){this.deck&&Pe(this.deck,this)},e.setProps=function(n){Object.assign(this.props,n,{id:this.id}),this.deck&&be(this.deck,this)},e.render=function(){Oe(this.deck,this.map,this)},r}();var U=ir(G());var Gr=ir(G());function zr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=mt(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.
|
|
12
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,v=!1,i;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return o=l.done,l},e:function(l){v=!0,i=l},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(v)throw i}}}}function mt(r,e){if(r){if(typeof r=="string")return Ae(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 Ae(r,e)}}function Ae(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 Hr="__UNDEFINED__";function vr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,Gr._flatten)(n,Boolean);if(t!==n){var o=(0,Gr._flatten)(t,Boolean),v=new Set(o.map(function(g){return g.id})),i=zr(a),s;try{for(i.s();!(s=i.n()).done;){var l=s.value;v.delete(l.id)}}catch(g){i.e(g)}finally{i.f()}var c=zr(v),f;try{for(c.s();!(f=c.n()).done;){var p=f.value;r.getLayer(p)&&r.removeLayer(p)}}catch(g){c.e(g)}finally{c.f()}}var u=zr(a),y;try{for(u.s();!(y=u.n()).done;){var _=y.value,w=r.getLayer(_.id);w?w.implementation.setProps(_.props):r.addLayer(new Ar({id:_.id,deck:e}),_.props.beforeId)}}catch(g){u.e(g)}finally{u.f()}var x=r.style._order,P={},h=zr(a),m;try{for(h.s();!(m=h.n()).done;){var M=m.value,d=M.props.beforeId;(!d||!x.includes(d))&&(d=Hr),P[d]=P[d]||[],P[d].push(M.id)}}catch(g){h.e(g)}finally{h.f()}for(var A in P)for(var I=P[A],S=A===Hr?x.length:x.indexOf(A),L=A===Hr?void 0:A,T=I.length-1;T>=0;T--){var E=I[T],b=x.indexOf(E);b!==S-1&&(r.moveLayer(E,L),b>S&&S++),S--,L=E}}}var ut=["interleaved"];function yt(r,e){if(r==null)return{};var t=_t(r,e),n,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);for(a=0;a<o.length;a++)n=o[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}function _t(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,o;for(o=0;o<n.length;o++)a=n[o],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}function ze(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 tr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ze(Object(t),!0).forEach(function(n){wt(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):ze(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}function wt(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Pt(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}var Te=function(){function r(t){var n=this;Pt(this,r),this._props=void 0,this._deck=void 0,this._map=void 0,this._container=void 0,this._interleaved=void 0,this._lastMouseDownPoint=void 0,this._handleStyleChange=function(){vr(n._map,n._deck,n._props.layers,n._props.layers)},this._updateContainerSize=function(){if(n._map&&n._container){var i=n._map.getContainer(),s=i.clientWidth,l=i.clientHeight;Object.assign(n._container.style,{width:"".concat(s,"px"),height:"".concat(l,"px")})}},this._updateViewState=function(){var i=n._deck;i&&(i.setProps({viewState:er(n._map)}),i.isInitialized&&i.redraw())},this._handleMouseEvent=function(i){var s=n._deck;if(!(!s||!s.isInitialized)){var l={type:i.type,offsetCenter:i.point,srcEvent:i},c=n._lastMouseDownPoint;switch(!i.point&&c&&(l.deltaX=i.originalEvent.clientX-c.clientX,l.deltaY=i.originalEvent.clientY-c.clientY,l.offsetCenter={x:c.x+l.deltaX,y:c.y+l.deltaY}),l.type){case"mousedown":s._onPointerDown(l),n._lastMouseDownPoint=tr(tr({},i.point),{},{clientX:i.originalEvent.clientX,clientY:i.originalEvent.clientY});break;case"dragstart":l.type="panstart",s._onEvent(l);break;case"drag":l.type="panmove",s._onEvent(l);break;case"dragend":l.type="panend",s._onEvent(l);break;case"click":l.tapCount=1,s._onEvent(l);break;case"dblclick":l.type="click",l.tapCount=2,s._onEvent(l);break;case"mousemove":l.type="pointermove",s._onPointerMove(l);break;case"mouseout":l.type="pointerleave",s._onPointerMove(l);break;default:return}}};var a=t.interleaved,o=a===void 0?!1:a,v=yt(t,ut);this._interleaved=o,this._props=v}var e=r.prototype;return e.setProps=function(n){this._interleaved&&n.layers&&vr(this._map,this._deck,this._props.layers,n.layers),Object.assign(this._props,n),this._deck&&this._deck.setProps(this._interleaved?Br(this._props):this._props)},e.onAdd=function(n){return this._map=n,this._interleaved?this._onAddInterleaved(n):this._onAddOverlaid(n)},e._onAddOverlaid=function(n){var a=document.createElement("div");return Object.assign(a.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=a,this._deck=new U.Deck(tr(tr({},this._props),{},{parent:a,viewState:er(n)})),n.on("resize",this._updateContainerSize),n.on("render",this._updateViewState),n.on("mousedown",this._handleMouseEvent),n.on("dragstart",this._handleMouseEvent),n.on("drag",this._handleMouseEvent),n.on("dragend",this._handleMouseEvent),n.on("mousemove",this._handleMouseEvent),n.on("mouseout",this._handleMouseEvent),n.on("click",this._handleMouseEvent),n.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),a},e._onAddInterleaved=function(n){return this._deck=Er({map:n,gl:n.painter.context.gl,deck:new U.Deck(tr(tr({},this._props),{},{gl:n.painter.context.gl}))}),n.on("styledata",this._handleStyleChange),vr(n,this._deck,[],this._props.layers),document.createElement("div")},e.onRemove=function(){var n=this._map;n&&(this._interleaved?this._onRemoveInterleaved(n):this._onRemoveOverlaid(n)),this._deck=void 0,this._map=void 0,this._container=void 0},e._onRemoveOverlaid=function(n){var a;n.off("resize",this._updateContainerSize),n.off("render",this._updateViewState),n.off("mousedown",this._handleMouseEvent),n.off("dragstart",this._handleMouseEvent),n.off("drag",this._handleMouseEvent),n.off("dragend",this._handleMouseEvent),n.off("mousemove",this._handleMouseEvent),n.off("mouseout",this._handleMouseEvent),n.off("click",this._handleMouseEvent),n.off("dblclick",this._handleMouseEvent),(a=this._deck)===null||a===void 0||a.finalize()},e._onRemoveInterleaved=function(n){n.off("styledata",this._handleStyleChange),vr(n,this._deck,this._props.layers,[]),Xr(n)},e.getDefaultPosition=function(){return"top-left"},e.pickObject=function(n){return(0,U.assert)(this._deck),this._deck.pickObject(n)},e.pickMultipleObjects=function(n){return(0,U.assert)(this._deck),this._deck.pickMultipleObjects(n)},e.pickObjects=function(n){return(0,U.assert)(this._deck),this._deck.pickObjects(n)},e.finalize=function(){this._map&&this._map.removeControl(this)},e.getCanvas=function(){return this._map?this._interleaved?this._map.getCanvas():this._deck.getCanvas():null},r}();return $e(cr);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var yt=Object.create;var N=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,Pt=Object.prototype.hasOwnProperty;var Ot=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),Et=(t,n)=>{for(var r in n)N(t,r,{get:n[r],enumerable:!0})},R=(t,n,r,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of xt(n))!Pt.call(t,o)&&o!==r&&N(t,o,{get:()=>n[o],enumerable:!(e=bt(n,o))||e.enumerable});return t},m=(t,n,r)=>(R(t,n,"default"),r&&R(r,n,"default")),k=(t,n,r)=>(r=t!=null?yt(wt(t)):{},R(n||!t||!t.__esModule?N(r,"default",{value:t,enumerable:!0}):r,t)),Lt=t=>R(N({},"__esModule",{value:!0}),t);var L=Ot((oe,st)=>{st.exports=globalThis.deck});var z={};Et(z,{MapboxLayer:()=>U,MapboxOverlay:()=>Mt});var d={},at=k(L());m(d,k(L()));if(!at.Layer)throw new Error("@deck.gl/core is not found");m(z,d);var g=k(L());function Z(t,n){if(!t)throw new Error(n||"@math.gl/web-mercator: assertion failed.")}var b=Math.PI,St=b/4,Y=b/180,fe=180/b,q=512,kt=4003e4;function T(t){let[n,r]=t;Z(Number.isFinite(n)),Z(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let e=n*Y,o=r*Y,c=q*(e+b)/(2*b),l=q*(b+Math.log(Math.tan(St+o*.5)))/(2*b);return[c,l]}function G(t){let n=Math.cos(t*Y);return q/kt/n}var Me=Math.PI/180;function ut(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,e)}return r}function x(t){for(var n=1;n<arguments.length;n++){var r=arguments[n]!=null?arguments[n]:{};n%2?ut(Object(r),!0).forEach(function(e){Wt(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ut(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Wt(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}var H=512,Yt=Math.PI/180;function V(t){var n=t.map,r=t.gl,e=t.deck;if(n.__deck)return n.__deck;var o=e?.props._customRender,c=e?.props.onLoad,l=K(x(x({},e?.props),{},{_customRender:function(){n.triggerRepaint(),o?.("")}})),i;return(!e||e.props.gl===r)&&(Object.assign(l,{gl:r,width:null,height:null,touchAction:"unset",viewState:j(n)}),e!=null&&e.isInitialized?ft(e,n):l.onLoad=function(){c?.(),ft(i,n)}),e?(i=e,e.setProps(l),e.userData.isExternal=!0):(i=new g.Deck(l),n.on("remove",function(){$(n)})),i.userData.mapboxLayers=new Set,n.__deck=i,n.on("render",function(){i.isInitialized&&Gt(i,n)}),i}function ft(t,n){var r=function e(){t.isInitialized?Ht(t,n):n.off("move",e)};n.on("move",r)}function $(t){var n;(n=t.__deck)===null||n===void 0||n.finalize(),t.__deck=null}function K(t){var n=x(x({},t),{},{parameters:x({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},t.parameters),views:t.views||[new g.MapView({id:"mapbox"})]});return n}function dt(t,n){t.userData.mapboxLayers.add(n),J(t)}function ht(t,n){t.userData.mapboxLayers.delete(n),J(t)}function pt(t,n){J(t)}function vt(t,n,r){var e=t.userData,o=e.currentViewport,c=!1;o||(o=mt(t,n,!0),t.userData.currentViewport=o,c=!0),t.isInitialized&&t._drawLayers("mapbox-repaint",{viewports:[o],layerFilter:function(i){var a=i.layer;return r.id===a.id||a.props.operation.includes("terrain")},clearStack:c,clearCanvas:!1})}function j(t){var n,r=t.getCenter(),e=r.lng,o=r.lat,c={longitude:(e+540)%360-180,latitude:o,zoom:t.getZoom(),bearing:t.getBearing(),pitch:t.getPitch(),padding:t.getPadding(),repeat:t.getRenderWorldCopies()};return(n=t.getTerrain)!==null&&n!==void 0&&n.call(t)&&qt(t,c),c}function qt(t,n){if(t.getFreeCameraOptions){var r=t.getFreeCameraOptions(),e=r.position;if(!e||e.z===void 0)return;var o=t.transform.height,c=n.longitude,l=n.latitude,i=n.pitch,a=e.x*H,s=(1-e.y)*H,u=e.z*H,f=T([c,l]),h=a-f[0],_=s-f[1],A=Math.sqrt(h*h+_*_),p=i*Yt,P=1.5*o,M=p<.001?P*Math.cos(p)/u:P*Math.sin(p)/A;n.zoom=Math.log2(M);var y=P*Math.cos(p)/M,O=u-y;n.position=[0,0,O/G(l)]}else typeof t.transform.elevation=="number"&&(n.position=[0,0,t.transform.elevation])}function mt(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new g.WebMercatorViewport(x(x({id:"mapbox",x:0,y:0,width:t.width,height:t.height},j(n)),{},{nearZMultiplier:r?.02:.1,nearZ:n.transform._nearZ/n.transform.height,farZ:n.transform._farZ/n.transform.height}))}function Gt(t,n){var r=t.userData,e=r.mapboxLayers,o=r.isExternal;if(o){var c=Array.from(e,function(f){return f.id}),l=(0,g._flatten)(t.props.layers,Boolean),i=l.some(function(f){return f&&!c.includes(f.id)}),a=t.getViewports(),s=a.findIndex(function(f){return f.id==="mapbox"}),u=a.length>1||s<0;(i||u)&&(s>=0&&(a=a.slice(),a[s]=mt(t,n,!1)),t._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(h){return(!t.props.layerFilter||t.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!c.includes(h.layer.id))},clearCanvas:!1}))}t.userData.currentViewport=null}function Ht(t,n){t.setProps({viewState:j(n)}),t.needsRedraw({clearRedrawFlags:!0})}function J(t){if(!t.userData.isExternal){var n=[];t.userData.mapboxLayers.forEach(function(r){var e=r.props.type,o=new e(r.props);n.push(o)}),t.setProps({layers:n})}}function $t(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var U=function(){function t(r){if($t(this,t),this.id=void 0,this.type=void 0,this.renderingMode=void 0,this.map=void 0,this.deck=void 0,this.props=void 0,!r.id)throw new Error("Layer must have an unique id");this.id=r.id,this.type="custom",this.renderingMode=r.renderingMode||"3d",this.map=null,this.deck=null,this.props=r}var n=t.prototype;return n.onAdd=function(e,o){this.map=e,this.deck=V({map:e,gl:o,deck:this.props.deck}),dt(this.deck,this)},n.onRemove=function(){this.deck&&ht(this.deck,this)},n.setProps=function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&pt(this.deck,this)},n.render=function(){vt(this.deck,this.map,this)},t}();var w=k(L());var tt=k(L());function X(t,n){var r=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Kt(t))||n&&t&&typeof t.length=="number"){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(s){throw s},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
8
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,l=!1,i;return{s:function(){r=r.call(t)},n:function(){var s=r.next();return c=s.done,s},e:function(s){l=!0,i=s},f:function(){try{!c&&r.return!=null&&r.return()}finally{if(l)throw i}}}}function Kt(t,n){if(t){if(typeof t=="string")return gt(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return gt(t,n)}}function gt(t,n){(n==null||n>t.length)&&(n=t.length);for(var r=0,e=new Array(n);r<n;r++)e[r]=t[r];return e}var Q="__UNDEFINED__";function C(t,n,r,e){if(!(!t||!n||!t.style||!t.style._loaded)){var o=(0,tt._flatten)(e,Boolean);if(r!==e){var c=(0,tt._flatten)(r,Boolean),l=new Set(c.map(function(v){return v.id})),i=X(o),a;try{for(i.s();!(a=i.n()).done;){var s=a.value;l.delete(s.id)}}catch(v){i.e(v)}finally{i.f()}var u=X(l),f;try{for(u.s();!(f=u.n()).done;){var h=f.value;t.getLayer(h)&&t.removeLayer(h)}}catch(v){u.e(v)}finally{u.f()}}var _=X(o),A;try{for(_.s();!(A=_.n()).done;){var p=A.value,P=t.getLayer(p.id);P?P.implementation.setProps(p.props):t.addLayer(new U({id:p.id,deck:n}),p.props.beforeId)}}catch(v){_.e(v)}finally{_.f()}var M=t.style._order,y={},O=X(o),et;try{for(O.s();!(et=O.n()).done;){var nt=et.value,E=nt.props.beforeId;(!E||!M.includes(E))&&(E=Q),y[E]=y[E]||[],y[E].push(nt.id)}}catch(v){O.e(v)}finally{O.f()}for(var S in y)for(var rt=y[S],I=S===Q?M.length:M.indexOf(S),ot=S===Q?void 0:S,B=rt.length-1;B>=0;B--){var W=rt[B],it=M.indexOf(W);it!==I-1&&(t.moveLayer(W,ot),it>I&&I++),I--,ot=W}}}var Jt=["interleaved"];function Qt(t,n){if(t==null)return{};var r=te(t,n),e,o;if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(t);for(o=0;o<c.length;o++)e=c[o],!(n.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(r[e]=t[e])}return r}function te(t,n){if(t==null)return{};var r={},e=Object.keys(t),o,c;for(c=0;c<e.length;c++)o=e[c],!(n.indexOf(o)>=0)&&(r[o]=t[o]);return r}function _t(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,e)}return r}function D(t){for(var n=1;n<arguments.length;n++){var r=arguments[n]!=null?arguments[n]:{};n%2?_t(Object(r),!0).forEach(function(e){ee(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):_t(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function ee(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}function ne(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var Mt=function(){function t(r){var e=this;ne(this,t),this._props=void 0,this._deck=void 0,this._map=void 0,this._container=void 0,this._interleaved=void 0,this._lastMouseDownPoint=void 0,this._handleStyleChange=function(){C(e._map,e._deck,e._props.layers,e._props.layers)},this._updateContainerSize=function(){if(e._map&&e._container){var i=e._map.getContainer(),a=i.clientWidth,s=i.clientHeight;Object.assign(e._container.style,{width:"".concat(a,"px"),height:"".concat(s,"px")})}},this._updateViewState=function(){var i=e._deck;i&&(i.setProps({viewState:j(e._map)}),i.isInitialized&&i.redraw())},this._handleMouseEvent=function(i){var a=e._deck;if(!(!a||!a.isInitialized)){var s={type:i.type,offsetCenter:i.point,srcEvent:i},u=e._lastMouseDownPoint;switch(!i.point&&u&&(s.deltaX=i.originalEvent.clientX-u.clientX,s.deltaY=i.originalEvent.clientY-u.clientY,s.offsetCenter={x:u.x+s.deltaX,y:u.y+s.deltaY}),s.type){case"mousedown":a._onPointerDown(s),e._lastMouseDownPoint=D(D({},i.point),{},{clientX:i.originalEvent.clientX,clientY:i.originalEvent.clientY});break;case"dragstart":s.type="panstart",a._onEvent(s);break;case"drag":s.type="panmove",a._onEvent(s);break;case"dragend":s.type="panend",a._onEvent(s);break;case"click":s.tapCount=1,a._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,a._onEvent(s);break;case"mousemove":s.type="pointermove",a._onPointerMove(s);break;case"mouseout":s.type="pointerleave",a._onPointerMove(s);break;default:return}}};var o=r.interleaved,c=o===void 0?!1:o,l=Qt(r,Jt);this._interleaved=c,this._props=l}var n=t.prototype;return n.setProps=function(e){this._interleaved&&e.layers&&C(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,e),this._deck&&this._deck.setProps(this._interleaved?K(this._props):this._props)},n.onAdd=function(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)},n._onAddOverlaid=function(e){var o=document.createElement("div");return Object.assign(o.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=o,this._deck=new w.Deck(D(D({},this._props),{},{parent:o,viewState:j(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousedown",this._handleMouseEvent),e.on("dragstart",this._handleMouseEvent),e.on("drag",this._handleMouseEvent),e.on("dragend",this._handleMouseEvent),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),o},n._onAddInterleaved=function(e){return this._deck=V({map:e,gl:e.painter.context.gl,deck:new w.Deck(D(D({},this._props),{},{gl:e.painter.context.gl}))}),e.on("styledata",this._handleStyleChange),C(e,this._deck,[],this._props.layers),document.createElement("div")},n.onRemove=function(){var e=this._map;e&&(this._interleaved?this._onRemoveInterleaved(e):this._onRemoveOverlaid(e)),this._deck=void 0,this._map=void 0,this._container=void 0},n._onRemoveOverlaid=function(e){var o;e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousedown",this._handleMouseEvent),e.off("dragstart",this._handleMouseEvent),e.off("drag",this._handleMouseEvent),e.off("dragend",this._handleMouseEvent),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent),(o=this._deck)===null||o===void 0||o.finalize()},n._onRemoveInterleaved=function(e){e.off("styledata",this._handleStyleChange),C(e,this._deck,this._props.layers,[]),$(e)},n.getDefaultPosition=function(){return"top-left"},n.pickObject=function(e){return(0,w.assert)(this._deck),this._deck.pickObject(e)},n.pickMultipleObjects=function(e){return(0,w.assert)(this._deck),this._deck.pickMultipleObjects(e)},n.pickObjects=function(e){return(0,w.assert)(this._deck),this._deck.pickObjects(e)},n.finalize=function(){this._map&&this._map.removeControl(this)},n.getCanvas=function(){return this._map?this._interleaved?this._map.getCanvas():this._deck.getCanvas():null},t}();return Lt(z);})();
|
|
13
9
|
return __exports__;
|
|
14
10
|
});
|
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": "
|
|
5
|
+
"version": "9.0.0-alpha.3",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -30,13 +30,11 @@
|
|
|
30
30
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@math.gl/web-mercator": "^3.6.2",
|
|
36
|
-
"@types/mapbox-gl": "^2.6.3"
|
|
33
|
+
"@luma.gl/core": "9.0.0-alpha.42",
|
|
34
|
+
"@math.gl/web-mercator": "^4.0.0"
|
|
37
35
|
},
|
|
38
36
|
"peerDependencies": {
|
|
39
37
|
"@deck.gl/core": "^8.0.0"
|
|
40
38
|
},
|
|
41
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "51dfb88f9168ccf478d01b28a2c5ada7bd8281c7"
|
|
42
40
|
}
|
package/src/deck-utils.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type MapboxLayer from './mapbox-layer';
|
|
|
4
4
|
import type {Map} from 'mapbox-gl';
|
|
5
5
|
|
|
6
6
|
import {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';
|
|
7
|
-
import GL from '@luma.gl/constants';
|
|
7
|
+
import {GL} from '@luma.gl/constants';
|
|
8
8
|
|
|
9
9
|
type UserData = {
|
|
10
10
|
isExternal: boolean;
|
|
@@ -277,9 +277,7 @@ function getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMerca
|
|
|
277
277
|
0.02
|
|
278
278
|
: // use deck.gl's own default
|
|
279
279
|
0.1,
|
|
280
|
-
// @ts-expect-error Mapbox specific - extract near plane position
|
|
281
280
|
nearZ: map.transform._nearZ / map.transform.height,
|
|
282
|
-
// @ts-expect-error Mapbox specific - extract far plane position
|
|
283
281
|
farZ: map.transform._farZ / map.transform.height
|
|
284
282
|
});
|
|
285
283
|
}
|
package/src/mapbox-layer.ts
CHANGED
package/src/mapbox-overlay.ts
CHANGED
|
@@ -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;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,qGAAqG;IACrG,SAAS,IAAI,iBAAiB,GAAG,IAAI;IAOrC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;
|
|
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,qGAAqG;IACrG,SAAS,IAAI,iBAAiB,GAAG,IAAI;IAOrC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAGF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
|