@deck.gl/mapbox 8.10.0-alpha.1 → 8.10.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/dist.dev.js +10 -2
- package/dist/es5/deck-utils.js +4 -2
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/mapbox-overlay.js +9 -0
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/esm/deck-utils.js +4 -2
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +8 -0
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist.min.js +4 -4
- package/package.json +3 -2
- package/src/deck-utils.ts +7 -2
- package/src/mapbox-overlay.ts +8 -0
- package/typed/deck-utils.d.ts.map +1 -1
- package/typed/mapbox-overlay.d.ts +2 -0
- package/typed/mapbox-overlay.d.ts.map +1 -1
- package/typed/deck-utils.js +0 -185
- package/typed/index.js +0 -2
- package/typed/mapbox-layer.js +0 -37
- package/typed/mapbox-overlay.js +0 -139
package/LICENSE
CHANGED
package/dist/dist.dev.js
CHANGED
|
@@ -829,7 +829,7 @@ var __exports__ = (() => {
|
|
|
829
829
|
viewports: [currentViewport],
|
|
830
830
|
layerFilter: ({
|
|
831
831
|
layer: deckLayer
|
|
832
|
-
}) => layer.id === deckLayer.id,
|
|
832
|
+
}) => layer.id === deckLayer.id || deckLayer.props.operation.includes("terrain"),
|
|
833
833
|
clearStack,
|
|
834
834
|
clearCanvas: false
|
|
835
835
|
});
|
|
@@ -893,7 +893,9 @@ var __exports__ = (() => {
|
|
|
893
893
|
width: deck.width,
|
|
894
894
|
height: deck.height,
|
|
895
895
|
...getViewState(map),
|
|
896
|
-
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1
|
|
896
|
+
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1,
|
|
897
|
+
nearZ: map.transform._nearZ / map.transform.height,
|
|
898
|
+
farZ: map.transform._farZ / map.transform.height
|
|
897
899
|
});
|
|
898
900
|
}
|
|
899
901
|
function afterRender(deck, map) {
|
|
@@ -1167,6 +1169,12 @@ var __exports__ = (() => {
|
|
|
1167
1169
|
this._map.removeControl(this);
|
|
1168
1170
|
}
|
|
1169
1171
|
}
|
|
1172
|
+
getCanvas() {
|
|
1173
|
+
if (!this._map) {
|
|
1174
|
+
return null;
|
|
1175
|
+
}
|
|
1176
|
+
return this._interleaved ? this._map.getCanvas() : this._deck.getCanvas();
|
|
1177
|
+
}
|
|
1170
1178
|
_handleStyleChange = () => {
|
|
1171
1179
|
resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);
|
|
1172
1180
|
};
|
package/dist/es5/deck-utils.js
CHANGED
|
@@ -155,7 +155,7 @@ function drawLayer(deck, map, layer) {
|
|
|
155
155
|
viewports: [currentViewport],
|
|
156
156
|
layerFilter: function layerFilter(_ref3) {
|
|
157
157
|
var deckLayer = _ref3.layer;
|
|
158
|
-
return layer.id === deckLayer.id;
|
|
158
|
+
return layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain');
|
|
159
159
|
},
|
|
160
160
|
clearStack: clearStack,
|
|
161
161
|
clearCanvas: false
|
|
@@ -227,7 +227,9 @@ function getViewport(deck, map) {
|
|
|
227
227
|
width: deck.width,
|
|
228
228
|
height: deck.height
|
|
229
229
|
}, getViewState(map)), {}, {
|
|
230
|
-
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1
|
|
230
|
+
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1,
|
|
231
|
+
nearZ: map.transform._nearZ / map.transform.height,
|
|
232
|
+
farZ: map.transform._farZ / map.transform.height
|
|
231
233
|
}));
|
|
232
234
|
}
|
|
233
235
|
|
|
@@ -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","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","cos","sin","log2","cameraZFromSurface","surfaceElevation","elevation","useMapboxProjection","WebMercatorViewport","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n removeDeckInstance(map);\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
|
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":";;;;;;;;;;;;;;;;;;AAAA;;AAKA;;;;;;AAWA,IAAMA,SAAS,GAAG,GAAlB;AACA,IAAMC,kBAAkB,GAAGC,IAAI,CAACC,EAAL,GAAU,GAArC;;AAGO,SAASC,eAAT,OAQE;AAAA,MAPPC,GAOO,QAPPA,GAOO;AAAA,MANPC,EAMO,QANPA,EAMO;AAAA,MALPC,IAKO,QALPA,IAKO;;AAEP,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAGD,MAAMC,YAAY,GAAGF,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYC,aAAjC;AACA,MAAMC,MAAM,GAAGL,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYE,MAA3B;AAEA,MAAMC,SAAS,GAAGC,mBAAmB,iCAChCP,IADgC,aAChCA,IADgC,uBAChCA,IAAI,CAAEG,KAD0B;AAEnCC,IAAAA,aAAa,EAAE,yBAAM;AACnBN,MAAAA,GAAG,CAACU,cAAJ;AAKAN,MAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAG,EAAH,CAAZ;AACD;AATkC,KAArC;AAYA,MAAIO,YAAJ;;AAEA,MAAI,CAACT,IAAD,IAASA,IAAI,CAACG,KAAL,CAAWJ,EAAX,KAAkBA,EAA/B,EAAmC;AAKjCW,IAAAA,MAAM,CAACC,MAAP,CAAcL,SAAd,EAAyB;AACvBP,MAAAA,EAAE,EAAFA,EADuB;AAEvBa,MAAAA,KAAK,EAAE,IAFgB;AAGvBC,MAAAA,MAAM,EAAE,IAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AALA,KAAzB;;AAOA,QAAIE,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEiB,aAAV,EAAyB;AACvBC,MAAAA,YAAY,CAAClB,IAAD,EAAOF,GAAP,CAAZ;AACD,KAFD,MAEO;AACLQ,MAAAA,SAAS,CAACD,MAAV,GAAmB,YAAM;AACvBA,QAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM;AACNa,QAAAA,YAAY,CAACT,YAAD,EAAeX,GAAf,CAAZ;AACD,OAHD;AAID;AACF;;AAED,MAAIE,IAAJ,EAAU;AACRS,IAAAA,YAAY,GAAGT,IAAf;AACAA,IAAAA,IAAI,CAACmB,QAAL,CAAcb,SAAd;AACCN,IAAAA,IAAI,CAACoB,QAAN,CAA4BC,UAA5B,GAAyC,IAAzC;AACD,GAJD,MAIO;AACLZ,IAAAA,YAAY,GAAG,IAAIa,UAAJ,CAAShB,SAAT,CAAf;AACAR,IAAAA,GAAG,CAACyB,EAAJ,CAAO,QAAP,EAAiB,YAAM;AACrBC,MAAAA,kBAAkB,CAAC1B,GAAD,CAAlB;AACD,KAFD;AAGD;;AAEAW,EAAAA,YAAY,CAACW,QAAd,CAAoCK,YAApC,GAAmD,IAAIC,GAAJ,EAAnD;AAEA5B,EAAAA,GAAG,CAACG,MAAJ,GAAaQ,YAAb;AACAX,EAAAA,GAAG,CAACyB,EAAJ,CAAO,QAAP,EAAiB,YAAM;AACrB,QAAId,YAAY,CAACQ,aAAjB,EAAgCU,WAAW,CAAClB,YAAD,EAAeX,GAAf,CAAX;AACjC,GAFD;AAIA,SAAOW,YAAP;AACD;;AAED,SAASS,YAAT,CAAsBlB,IAAtB,EAAkCF,GAAlC,EAAqE;AACnE,MAAM8B,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,QAAI5B,IAAI,CAACiB,aAAT,EAAwB;AAEtBY,MAAAA,SAAS,CAAC7B,IAAD,EAAOF,GAAP,CAAT;AACD,KAHD,MAGO;AAELA,MAAAA,GAAG,CAACgC,GAAJ,CAAQ,MAAR,EAAgBF,cAAhB;AACD;AACF,GARD;;AASA9B,EAAAA,GAAG,CAACyB,EAAJ,CAAO,MAAP,EAAeK,cAAf;AACD;;AAEM,SAASJ,kBAAT,CAA4B1B,GAA5B,EAA+D;AAAA;;AACpE,iBAAAA,GAAG,CAACG,MAAJ,4DAAY8B,QAAZ;AACAjC,EAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD;;AAEM,SAASM,mBAAT,CAA6ByB,SAA7B,EAAmD;AACxD,MAAMC,SAAoB,mCACrBD,SADqB;AAGxBE,IAAAA,UAAU;AACRC,MAAAA,SAAS,EAAE,IADH;AAERC,MAAAA,SAAS,EAAE,IAFH;AAGRC,MAAAA,KAAK,EAAE,IAHC;AAIRC,MAAAA,SAAS,EAAE,kBAJH;AAKRC,MAAAA,iBAAiB,EAAE,IALX;AAMRC,MAAAA,SAAS,KAND;AAORC,MAAAA,aAAa;AAPL,OAQLT,SAAS,CAACE,UARL,CAHc;AAaxBQ,IAAAA,KAAK,EAAEV,SAAS,CAACU,KAAV,IAAmB,CAAC,IAAIC,aAAJ,CAAY;AAACC,MAAAA,EAAE,EAAE;AAAL,KAAZ,CAAD;AAbF,IAA1B;;AAgBA,SAAOX,SAAP;AACD;;AAEM,SAASY,QAAT,CAAkB7C,IAAlB,EAA8B8C,KAA9B,EAA6D;AACjE9C,EAAAA,IAAI,CAACoB,QAAN,CAA4BK,YAA5B,CAAyCsB,GAAzC,CAA6CD,KAA7C;AACAE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;;AAEM,SAASiD,WAAT,CAAqBjD,IAArB,EAAiC8C,KAAjC,EAAgE;AACpE9C,EAAAA,IAAI,CAACoB,QAAN,CAA4BK,YAA5B,CAAyCyB,MAAzC,CAAgDJ,KAAhD;AACAE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;;AAEM,SAASmD,WAAT,CAAqBnD,IAArB,EAAiC8C,KAAjC,EAAgE;AACrEE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;;AAEM,SAASoD,SAAT,CAAmBpD,IAAnB,EAA+BF,GAA/B,EAAyCgD,KAAzC,EAAwE;AAC7E,cAAwB9C,IAAI,CAACoB,QAA7B;AAAA,MAAKiC,eAAL,SAAKA,eAAL;AACA,MAAIC,UAAmB,GAAG,KAA1B;;AACA,MAAI,CAACD,eAAL,EAAsB;AAGpBA,IAAAA,eAAe,GAAGE,WAAW,CAACvD,IAAD,EAAOF,GAAP,EAAY,IAAZ,CAA7B;AACCE,IAAAA,IAAI,CAACoB,QAAN,CAA4BiC,eAA5B,GAA8CA,eAA9C;AACAC,IAAAA,UAAU,GAAG,IAAb;AACD;;AAED,MAAI,CAACtD,IAAI,CAACiB,aAAV,EAAyB;AACvB;AACD;;AAEDjB,EAAAA,IAAI,CAACwD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,IAAAA,SAAS,EAAE,CAACJ,eAAD,CADsB;AAEjCK,IAAAA,WAAW,EAAE;AAAA,UAASC,SAAT,SAAEb,KAAF;AAAA,aACXA,KAAK,CAACF,EAAN,KAAae,SAAS,CAACf,EAAvB,IAA6Be,SAAS,CAACxD,KAAV,CAAgByD,SAAhB,CAA0BC,QAA1B,CAAmC,SAAnC,CADlB;AAAA,KAFoB;AAIjCP,IAAAA,UAAU,EAAVA,UAJiC;AAKjCQ,IAAAA,WAAW,EAAE;AALoB,GAAnC;AAOD;;AAEM,SAAS9C,YAAT,CAAsBlB,GAAtB,EAQL;AAAA;;AACA,uBAAmBA,GAAG,CAACiE,SAAJ,EAAnB;AAAA,MAAOC,GAAP,kBAAOA,GAAP;AAAA,MAAYC,GAAZ,kBAAYA,GAAZ;;AAEA,MAAMlD,SAQL,GAAG;AAGFmD,IAAAA,SAAS,EAAG,CAACF,GAAG,GAAG,GAAP,IAAc,GAAf,GAAsB,GAH/B;AAIFG,IAAAA,QAAQ,EAAEF,GAJR;AAKFG,IAAAA,IAAI,EAAEtE,GAAG,CAACuE,OAAJ,EALJ;AAMFC,IAAAA,OAAO,EAAExE,GAAG,CAACyE,UAAJ,EANP;AAOFC,IAAAA,KAAK,EAAE1E,GAAG,CAAC2E,QAAJ,EAPL;AAQFC,IAAAA,OAAO,EAAE5E,GAAG,CAAC6E,UAAJ,EARP;AASFC,IAAAA,MAAM,EAAE9E,GAAG,CAAC+E,oBAAJ;AATN,GARJ;;AAoBA,yBAAI/E,GAAG,CAACgF,UAAR,4CAAI,qBAAAhF,GAAG,CAAP,EAAwB;AAEtBiF,IAAAA,qBAAqB,CAACjF,GAAD,EAAMiB,SAAN,CAArB;AACD;;AAED,SAAOA,SAAP;AACD;;AAED,SAASgE,qBAAT,CAA+BjF,GAA/B,EAAyCiB,SAAzC,EAAkE;AAChE,MAAIjB,GAAG,CAACkF,oBAAR,EAA8B;AAE5B,gCAAmBlF,GAAG,CAACkF,oBAAJ,EAAnB;AAAA,QAAOC,QAAP,yBAAOA,QAAP;;AACA,QAAI,CAACA,QAAD,IAAaA,QAAQ,CAACC,CAAT,KAAeC,SAAhC,EAA2C;AACzC;AACD;;AAGD,QAAMtE,MAAM,GAAGf,GAAG,CAACsF,SAAJ,CAAcvE,MAA7B;AACA,QAAOqD,SAAP,GAAqCnD,SAArC,CAAOmD,SAAP;AAAA,QAAkBC,QAAlB,GAAqCpD,SAArC,CAAkBoD,QAAlB;AAAA,QAA4BK,KAA5B,GAAqCzD,SAArC,CAA4ByD,KAA5B;AAGA,QAAMa,OAAO,GAAGJ,QAAQ,CAACK,CAAT,GAAa7F,SAA7B;AACA,QAAM8F,OAAO,GAAG,CAAC,IAAIN,QAAQ,CAACO,CAAd,IAAmB/F,SAAnC;AACA,QAAMgG,OAAO,GAAGR,QAAQ,CAACC,CAAT,GAAazF,SAA7B;AAGA,QAAMiG,MAAM,GAAG,gCAAc,CAACxB,SAAD,EAAYC,QAAZ,CAAd,CAAf;AACA,QAAMwB,EAAE,GAAGN,OAAO,GAAGK,MAAM,CAAC,CAAD,CAA3B;AACA,QAAME,EAAE,GAAGL,OAAO,GAAGG,MAAM,CAAC,CAAD,CAA3B;AACA,QAAMG,4BAA4B,GAAGlG,IAAI,CAACmG,IAAL,CAAUH,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAArC;AAEA,QAAMG,YAAY,GAAGvB,KAAK,GAAI9E,kBAA9B;AACA,QAAMsG,cAAc,GAAG,MAAMnF,MAA7B;AACA,QAAMoF,KAAK,GACTF,YAAY,GAAG,KAAf,GAEKC,cAAc,GAAGrG,IAAI,CAACuG,GAAL,CAASH,YAAT,CAAlB,GAA4CN,OAFhD,GAGKO,cAAc,GAAGrG,IAAI,CAACwG,GAAL,CAASJ,YAAT,CAAlB,GAA4CF,4BAJlD;AAKA9E,IAAAA,SAAS,CAACqD,IAAV,GAAiBzE,IAAI,CAACyG,IAAL,CAAUH,KAAV,CAAjB;AAEA,QAAMI,kBAAkB,GAAIL,cAAc,GAAGrG,IAAI,CAACuG,GAAL,CAASH,YAAT,CAAlB,GAA4CE,KAAvE;AACA,QAAMK,gBAAgB,GAAGb,OAAO,GAAGY,kBAAnC;AACAtF,IAAAA,SAAS,CAACkE,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAOqB,gBAAgB,GAAG,gCAAcnC,QAAd,CAA1B,CAArB;AACD,GAlCD,MAoCK,IAAI,OAAOrE,GAAG,CAACsF,SAAJ,CAAcmB,SAArB,KAAmC,QAAvC,EAAiD;AAGpDxF,IAAAA,SAAS,CAACkE,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAOnF,GAAG,CAACsF,SAAJ,CAAcmB,SAArB,CAArB;AACD;AACF;;AAcD,SAAShD,WAAT,CAAqBvD,IAArB,EAAiCF,GAAjC,EAA4F;AAAA,MAAjD0G,mBAAiD,uEAA3B,IAA2B;AAC1F,SAAO,IAAIC,yBAAJ;AACL7D,IAAAA,EAAE,EAAE,QADC;AAEL0C,IAAAA,CAAC,EAAE,CAFE;AAGLE,IAAAA,CAAC,EAAE,CAHE;AAIL5E,IAAAA,KAAK,EAAEZ,IAAI,CAACY,KAJP;AAKLC,IAAAA,MAAM,EAAEb,IAAI,CAACa;AALR,KAMFG,YAAY,CAAClB,GAAD,CANV;AAOL4G,IAAAA,eAAe,EAAEF,mBAAmB,GAEhC,IAFgC,GAIhC,GAXC;AAaLG,IAAAA,KAAK,EAAE7G,GAAG,CAACsF,SAAJ,CAAcwB,MAAd,GAAuB9G,GAAG,CAACsF,SAAJ,CAAcvE,MAbvC;AAeLgG,IAAAA,IAAI,EAAE/G,GAAG,CAACsF,SAAJ,CAAc0B,KAAd,GAAsBhH,GAAG,CAACsF,SAAJ,CAAcvE;AAfrC,KAAP;AAiBD;;AAED,SAASc,WAAT,CAAqB3B,IAArB,EAAiCF,GAAjC,EAAiD;AAC/C,cAAmCE,IAAI,CAACoB,QAAxC;AAAA,MAAOK,YAAP,SAAOA,YAAP;AAAA,MAAqBJ,UAArB,SAAqBA,UAArB;;AAEA,MAAIA,UAAJ,EAAgB;AAEd,QAAM0F,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWxF,YAAX,EAAyB,UAAAqB,KAAK;AAAA,aAAIA,KAAK,CAACF,EAAV;AAAA,KAA9B,CAAvB;AACA,QAAMsE,UAAU,GAAG,oBAAQlH,IAAI,CAACG,KAAL,CAAWgH,MAAnB,EAA2BC,OAA3B,CAAnB;AACA,QAAMC,kBAAkB,GAAGH,UAAU,CAACI,IAAX,CACzB,UAAAxE,KAAK;AAAA,aAAIA,KAAK,IAAI,CAACiE,cAAc,CAAClD,QAAf,CAAwBf,KAAK,CAACF,EAA9B,CAAd;AAAA,KADoB,CAA3B;AAGA,QAAIa,SAAS,GAAGzD,IAAI,CAACuH,YAAL,EAAhB;AACA,QAAMC,iBAAiB,GAAG/D,SAAS,CAACgE,SAAV,CAAoB,UAAAC,EAAE;AAAA,aAAIA,EAAE,CAAC9E,EAAH,KAAU,QAAd;AAAA,KAAtB,CAA1B;AACA,QAAM+E,iBAAiB,GAAGlE,SAAS,CAACmE,MAAV,GAAmB,CAAnB,IAAwBJ,iBAAiB,GAAG,CAAtE;;AAEA,QAAIH,kBAAkB,IAAIM,iBAA1B,EAA6C;AAC3C,UAAIH,iBAAiB,IAAI,CAAzB,EAA4B;AAC1B/D,QAAAA,SAAS,GAAGA,SAAS,CAACoE,KAAV,EAAZ;AACApE,QAAAA,SAAS,CAAC+D,iBAAD,CAAT,GAA+BjE,WAAW,CAACvD,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAA1C;AACD;;AAEDE,MAAAA,IAAI,CAACwD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SAAS,EAATA,SADiC;AAEjCC,QAAAA,WAAW,EAAE,qBAAAoE,MAAM;AAAA,iBACjB,CAAC,CAAC9H,IAAI,CAACG,KAAL,CAAWuD,WAAZ,IAA2B1D,IAAI,CAACG,KAAL,CAAWuD,WAAX,CAAuBoE,MAAvB,CAA5B,MACCA,MAAM,CAACC,QAAP,CAAgBnF,EAAhB,KAAuB,QAAvB,IAAmC,CAACmE,cAAc,CAAClD,QAAf,CAAwBiE,MAAM,CAAChF,KAAP,CAAaF,EAArC,CADrC,CADiB;AAAA,SAFc;AAKjCkB,QAAAA,WAAW,EAAE;AALoB,OAAnC;AAOD;AACF;;AAGA9D,EAAAA,IAAI,CAACoB,QAAN,CAA4BiC,eAA5B,GAA8C,IAA9C;AACD;;AAED,SAASxB,SAAT,CAAmB7B,IAAnB,EAA+BF,GAA/B,EAA+C;AAC7CE,EAAAA,IAAI,CAACmB,QAAL,CAAc;AACZJ,IAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AADX,GAAd;AAMAE,EAAAA,IAAI,CAACgI,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAASjF,YAAT,CAAsBhD,IAAtB,EAAwC;AACtC,MAAKA,IAAI,CAACoB,QAAN,CAA4BC,UAAhC,EAA4C;AAC1C;AACD;;AAED,MAAM8F,MAAe,GAAG,EAAxB;AACCnH,EAAAA,IAAI,CAACoB,QAAN,CAA4BK,YAA5B,CAAyCyG,OAAzC,CAAiD,UAAAvE,SAAS,EAAI;AAC5D,QAAMwE,SAAS,GAAGxE,SAAS,CAACxD,KAAV,CAAgBiI,IAAlC;AACA,QAAMtF,KAAK,GAAG,IAAIqF,SAAJ,CAAcxE,SAAS,CAACxD,KAAxB,CAAd;AACAgH,IAAAA,MAAM,CAACkB,IAAP,CAAYvF,KAAZ;AACD,GAJD;AAKA9C,EAAAA,IAAI,CAACmB,QAAL,CAAc;AAACgG,IAAAA,MAAM,EAANA;AAAD,GAAd;AACD","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n removeDeckInstance(map);\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) =>\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"}
|
|
@@ -294,6 +294,15 @@ var MapboxOverlay = function () {
|
|
|
294
294
|
this._map.removeControl(this);
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
+
}, {
|
|
298
|
+
key: "getCanvas",
|
|
299
|
+
value: function getCanvas() {
|
|
300
|
+
if (!this._map) {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return this._interleaved ? this._map.getCanvas() : this._deck.getCanvas();
|
|
305
|
+
}
|
|
297
306
|
}]);
|
|
298
307
|
return MapboxOverlay;
|
|
299
308
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_deck","_props","layers","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","params","pickObject","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_deck","_props","layers","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","params","pickObject","pickMultipleObjects","pickObjects","removeControl","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"}
|
package/dist/esm/deck-utils.js
CHANGED
|
@@ -126,7 +126,7 @@ export function drawLayer(deck, map, layer) {
|
|
|
126
126
|
viewports: [currentViewport],
|
|
127
127
|
layerFilter: ({
|
|
128
128
|
layer: deckLayer
|
|
129
|
-
}) => layer.id === deckLayer.id,
|
|
129
|
+
}) => layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),
|
|
130
130
|
clearStack,
|
|
131
131
|
clearCanvas: false
|
|
132
132
|
});
|
|
@@ -198,7 +198,9 @@ function getViewport(deck, map, useMapboxProjection = true) {
|
|
|
198
198
|
width: deck.width,
|
|
199
199
|
height: deck.height,
|
|
200
200
|
...getViewState(map),
|
|
201
|
-
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1
|
|
201
|
+
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1,
|
|
202
|
+
nearZ: map.transform._nearZ / map.transform.height,
|
|
203
|
+
farZ: map.transform._farZ / map.transform.height
|
|
202
204
|
});
|
|
203
205
|
}
|
|
204
206
|
|
|
@@ -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","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","cos","sin","log2","cameraZFromSurface","surfaceElevation","elevation","useMapboxProjection","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport GL from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n removeDeckInstance(map);\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
|
1
|
+
{"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"}
|
|
@@ -266,5 +266,13 @@ export default class MapboxOverlay {
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
getCanvas() {
|
|
270
|
+
if (!this._map) {
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return this._interleaved ? this._map.getCanvas() : this._deck.getCanvas();
|
|
275
|
+
}
|
|
276
|
+
|
|
269
277
|
}
|
|
270
278
|
//# sourceMappingURL=mapbox-overlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","removeDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","removeDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","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;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,gDAuJV,MAAM;AACjCH,MAAAA,aAAa,CAAC,KAAKI,IAAN,EAAY,KAAKC,KAAjB,EAAwB,KAAKC,MAAL,CAAYC,MAApC,EAA4C,KAAKD,MAAL,CAAYC,MAAxD,CAAb;AACD,KAzJsC;;AAAA,kDA2JR,MAAM;AACnC,UAAI,KAAKH,IAAL,IAAa,KAAKI,UAAtB,EAAkC;AAChC,cAAM;AAACC,UAAAA,WAAD;AAAcC,UAAAA;AAAd,YAA8B,KAAKN,IAAL,CAAUO,YAAV,EAApC;;AACAC,QAAAA,MAAM,CAACC,MAAP,CAAc,KAAKL,UAAL,CAAgBM,KAA9B,EAAqC;AACnCC,UAAAA,KAAK,YAAKN,WAAL,OAD8B;AAEnCO,UAAAA,MAAM,YAAKN,YAAL;AAF6B,SAArC;AAID;AACF,KAnKsC;;AAAA,8CAqKZ,MAAM;AAC/B,YAAMO,IAAI,GAAG,KAAKZ,KAAlB;;AACA,UAAIY,IAAJ,EAAU;AAERA,QAAAA,IAAI,CAACC,QAAL,CAAc;AAACC,UAAAA,SAAS,EAAEvB,YAAY,CAAC,KAAKQ,IAAN;AAAxB,SAAd;;AAEA,YAAIa,IAAI,CAACG,aAAT,EAAwB;AACtBH,UAAAA,IAAI,CAACI,MAAL;AACD;AACF;AACF,KA/KsC;;AAAA,+CAiLVC,KAAD,IAA0B;AACpD,YAAML,IAAI,GAAG,KAAKZ,KAAlB;;AACA,UAAI,CAACY,IAAD,IAAS,CAACA,IAAI,CAACG,aAAnB,EAAkC;AAChC;AACD;;AAED,YAAMG,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,KAAKC,mBAAtB;;AACA,UAAI,CAACP,KAAK,CAACI,KAAP,IAAgBE,QAApB,EAA8B;AAE5BL,QAAAA,SAAS,CAACO,MAAV,GAAmBR,KAAK,CAACS,aAAN,CAAoBC,OAApB,GAA8BJ,QAAQ,CAACI,OAA1D;AACAT,QAAAA,SAAS,CAACU,MAAV,GAAmBX,KAAK,CAACS,aAAN,CAAoBG,OAApB,GAA8BN,QAAQ,CAACM,OAA1D;AACAX,QAAAA,SAAS,CAACE,YAAV,GAAyB;AACvBU,UAAAA,CAAC,EAAEP,QAAQ,CAACO,CAAT,GAAaZ,SAAS,CAACO,MADH;AAEvBM,UAAAA,CAAC,EAAER,QAAQ,CAACQ,CAAT,GAAab,SAAS,CAACU;AAFH,SAAzB;AAID;;AAED,cAAQV,SAAS,CAACC,IAAlB;AACE,aAAK,WAAL;AACEP,UAAAA,IAAI,CAACoB,cAAL,CAAoBd,SAApB;;AACA,eAAKM,mBAAL,GAA2B,EACzB,GAAGP,KAAK,CAACI,KADgB;AAEzBM,YAAAA,OAAO,EAAEV,KAAK,CAACS,aAAN,CAAoBC,OAFJ;AAGzBE,YAAAA,OAAO,EAAEZ,KAAK,CAACS,aAAN,CAAoBG;AAHJ,WAA3B;AAKA;;AAEF,aAAK,WAAL;AACEX,UAAAA,SAAS,CAACC,IAAV,GAAiB,UAAjB;;AACAP,UAAAA,IAAI,CAACqB,QAAL,CAAcf,SAAd;;AACA;;AAEF,aAAK,MAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,SAAjB;;AACAP,UAAAA,IAAI,CAACqB,QAAL,CAAcf,SAAd;;AACA;;AAEF,aAAK,SAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,QAAjB;;AACAP,UAAAA,IAAI,CAACqB,QAAL,CAAcf,SAAd;;AACA;;AAEF,aAAK,OAAL;AACEA,UAAAA,SAAS,CAACgB,QAAV,GAAqB,CAArB;;AACAtB,UAAAA,IAAI,CAACqB,QAAL,CAAcf,SAAd;;AACA;;AAEF,aAAK,UAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,OAAjB;AACAD,UAAAA,SAAS,CAACgB,QAAV,GAAqB,CAArB;;AACAtB,UAAAA,IAAI,CAACqB,QAAL,CAAcf,SAAd;;AACA;;AAEF,aAAK,WAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,aAAjB;;AACAP,UAAAA,IAAI,CAACuB,cAAL,CAAoBjB,SAApB;;AACA;;AAEF,aAAK,UAAL;AACEA,UAAAA,SAAS,CAACC,IAAV,GAAiB,cAAjB;;AACAP,UAAAA,IAAI,CAACuB,cAAL,CAAoBjB,SAApB;;AACA;;AAEF;AACE;AA/CJ;AAiDD,KAhQsC;;AACrC,UAAM;AAACkB,MAAAA,WAAW,GAAG,KAAf;AAAsB,SAAGC;AAAzB,QAAuCvC,KAA7C;AACA,SAAKwC,YAAL,GAAoBF,WAApB;AACA,SAAKnC,MAAL,GAAcoC,UAAd;AACD;;AAGDxB,EAAAA,QAAQ,CAACf,KAAD,EAAkC;AACxC,QAAI,KAAKwC,YAAL,IAAqBxC,KAAK,CAACI,MAA/B,EAAuC;AACrCP,MAAAA,aAAa,CAAC,KAAKI,IAAN,EAAY,KAAKC,KAAjB,EAAwB,KAAKC,MAAL,CAAYC,MAApC,EAA4CJ,KAAK,CAACI,MAAlD,CAAb;AACD;;AAEDK,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKP,MAAnB,EAA2BH,KAA3B;;AAEA,QAAI,KAAKE,KAAT,EAAgB;AACd,WAAKA,KAAL,CAAWa,QAAX,CAAoB,KAAKyB,YAAL,GAAoB5C,mBAAmB,CAAC,KAAKO,MAAN,CAAvC,GAAuD,KAAKA,MAAhF;AACD;AACF;;AAGDsC,EAAAA,KAAK,CAACC,GAAD,EAA2B;AAC9B,SAAKzC,IAAL,GAAYyC,GAAZ;AACA,WAAO,KAAKF,YAAL,GAAoB,KAAKG,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,SAAK9C,UAAL,GAAkBwC,SAAlB;AAEA,SAAK3C,KAAL,GAAa,IAAIX,IAAJ,CAAS,EACpB,GAAG,KAAKY,MADY;AAEpBiD,MAAAA,MAAM,EAAEP,SAFY;AAGpB7B,MAAAA,SAAS,EAAEvB,YAAY,CAACiD,GAAD;AAHH,KAAT,CAAb;AAMAA,IAAAA,GAAG,CAACW,EAAJ,CAAO,QAAP,EAAiB,KAAKC,oBAAtB;AACAZ,IAAAA,GAAG,CAACW,EAAJ,CAAO,QAAP,EAAiB,KAAKE,gBAAtB;AACAb,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKG,iBAAzB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKG,iBAAzB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,MAAP,EAAe,KAAKG,iBAApB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,SAAP,EAAkB,KAAKG,iBAAvB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKG,iBAAzB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,UAAP,EAAmB,KAAKG,iBAAxB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,OAAP,EAAgB,KAAKG,iBAArB;AACAd,IAAAA,GAAG,CAACW,EAAJ,CAAO,UAAP,EAAmB,KAAKG,iBAAxB;;AAEA,SAAKF,oBAAL;;AACA,WAAOT,SAAP;AACD;;AAEOF,EAAAA,iBAAiB,CAACD,GAAD,EAA2B;AAClD,SAAKxC,KAAL,GAAaR,eAAe,CAAC;AAC3BgD,MAAAA,GAD2B;AAG3Be,MAAAA,EAAE,EAAEf,GAAG,CAACgB,OAAJ,CAAYC,OAAZ,CAAoBF,EAHG;AAI3B3C,MAAAA,IAAI,EAAE,IAAIvB,IAAJ,CAAS,EACb,GAAG,KAAKY,MADK;AAGbsD,QAAAA,EAAE,EAAEf,GAAG,CAACgB,OAAJ,CAAYC,OAAZ,CAAoBF;AAHX,OAAT;AAJqB,KAAD,CAA5B;AAWAf,IAAAA,GAAG,CAACW,EAAJ,CAAO,WAAP,EAAoB,KAAKO,kBAAzB;AACA/D,IAAAA,aAAa,CAAC6C,GAAD,EAAM,KAAKxC,KAAX,EAAkB,EAAlB,EAAsB,KAAKC,MAAL,CAAYC,MAAlC,CAAb;AAEA,WAAO0C,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAP;AACD;;AAGDc,EAAAA,QAAQ,GAAS;AACf,UAAMnB,GAAG,GAAG,KAAKzC,IAAjB;;AAEA,QAAIyC,GAAJ,EAAS;AACP,UAAI,KAAKF,YAAT,EAAuB;AACrB,aAAKsB,oBAAL,CAA0BpB,GAA1B;AACD,OAFD,MAEO;AACL,aAAKqB,iBAAL,CAAuBrB,GAAvB;AACD;AACF;;AAED,SAAKxC,KAAL,GAAa8D,SAAb;AACA,SAAK/D,IAAL,GAAY+D,SAAZ;AACA,SAAK3D,UAAL,GAAkB2D,SAAlB;AACD;;AAEOD,EAAAA,iBAAiB,CAACrB,GAAD,EAAiB;AAAA;;AACxCA,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,QAAR,EAAkB,KAAKX,oBAAvB;AACAZ,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,QAAR,EAAkB,KAAKV,gBAAvB;AACAb,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,WAAR,EAAqB,KAAKT,iBAA1B;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,WAAR,EAAqB,KAAKT,iBAA1B;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,MAAR,EAAgB,KAAKT,iBAArB;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,SAAR,EAAmB,KAAKT,iBAAxB;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,WAAR,EAAqB,KAAKT,iBAA1B;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,UAAR,EAAoB,KAAKT,iBAAzB;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,OAAR,EAAiB,KAAKT,iBAAtB;AACAd,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,UAAR,EAAoB,KAAKT,iBAAzB;AACA,wBAAKtD,KAAL,4DAAYgE,QAAZ;AACD;;AAEOJ,EAAAA,oBAAoB,CAACpB,GAAD,EAAiB;AAC3CA,IAAAA,GAAG,CAACuB,GAAJ,CAAQ,WAAR,EAAqB,KAAKL,kBAA1B;AACA/D,IAAAA,aAAa,CAAC6C,GAAD,EAAM,KAAKxC,KAAX,EAAkB,KAAKC,MAAL,CAAYC,MAA9B,EAAsC,EAAtC,CAAb;AACAT,IAAAA,kBAAkB,CAAC+C,GAAD,CAAlB;AACD;;AAEDyB,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,KAAKjE,IAAT,EAAe;AACb,WAAKA,IAAL,CAAUuE,aAAV,CAAwB,IAAxB;AACD;AACF;;AAGDC,EAAAA,SAAS,GAA6B;AACpC,QAAI,CAAC,KAAKxE,IAAV,EAAgB;AACd,aAAO,IAAP;AACD;;AACD,WAAO,KAAKuC,YAAL,GAAoB,KAAKvC,IAAL,CAAUwE,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"}
|
package/dist.min.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var
|
|
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 j(r,e){return Zr(r)||qr(r,e)||cr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function xe(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&xe(r.prototype,e),t&&xe(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var L=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var vn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function xt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function ge(r,e,t){var n=e[0],a=e[1],v=e[2],o=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*v+t[12]*o,r[1]=t[1]*n+t[5]*a+t[9]*v+t[13]*o,r[2]=t[2]*n+t[6]*a+t[10]*v+t[14]*o,r[3]=t[3]*n+t[7]*a+t[11]*v+t[15]*o,r}var ln=function(){var r=xt();return function(e,t,n,a,v,o){var i,s;for(t||(t=4),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],v(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2],e[i+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function B(r,e){var t=ge([],e,r);return me(t,t,1/t[3]),t}function hr(r,e,t){return r<e?e:r>t?t:r}function Mt(r){return Math.log(r)*Math.LOG2E}var _r=Math.log2||Mt;function ye(r,e){var t=e[0],n=e[1],a=e[2],v=e[3],o=e[4],i=e[5],s=e[6],l=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*i-n*o,p=t*s-a*o,g=t*l-v*o,m=n*s-a*i,x=n*l-v*i,E=a*l-v*s,I=c*_-f*u,T=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,A=h*M-y*w,d=P*A-p*O+g*z+m*S-x*T+E*I;return d?(d=1/d,r[0]=(i*A-s*O+l*z)*d,r[1]=(a*O-n*A-v*z)*d,r[2]=(_*E-w*x+M*m)*d,r[3]=(h*x-f*E-y*m)*d,r[4]=(s*S-o*A-l*T)*d,r[5]=(t*A-a*S+v*T)*d,r[6]=(w*g-u*E-M*p)*d,r[7]=(c*E-h*g+y*p)*d,r[8]=(o*O-i*S+l*I)*d,r[9]=(n*S-t*O-v*I)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(i*T-o*z-s*I)*d,r[13]=(t*z-n*T+a*I)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function wr(r,e,t){var n=e[0],a=e[1],v=e[2],o=e[3],i=e[4],s=e[5],l=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*i+m*f+x*_,r[1]=p*a+g*s+m*h+x*w,r[2]=p*v+g*l+m*y+x*M,r[3]=p*o+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*i+m*f+x*_,r[5]=p*a+g*s+m*h+x*w,r[6]=p*v+g*l+m*y+x*M,r[7]=p*o+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*i+m*f+x*_,r[9]=p*a+g*s+m*h+x*w,r[10]=p*v+g*l+m*y+x*M,r[11]=p*o+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*i+m*f+x*_,r[13]=p*a+g*s+m*h+x*w,r[14]=p*v+g*l+m*y+x*M,r[15]=p*o+g*c+m*u+x*P,r}function pr(r,e,t){var n=t[0],a=t[1],v=t[2],o,i,s,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*v+e[12],r[13]=e[1]*n+e[5]*a+e[9]*v+e[13],r[14]=e[2]*n+e[6]*a+e[10]*v+e[14],r[15]=e[3]*n+e[7]*a+e[11]*v+e[15]):(o=e[0],i=e[1],s=e[2],l=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=o,r[1]=i,r[2]=s,r[3]=l,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=o*n+c*a+u*v+e[12],r[13]=i*n+f*a+_*v+e[13],r[14]=s*n+h*a+w*v+e[14],r[15]=l*n+y*a+M*v+e[15]),r}function Pr(r,e,t){var n=t[0],a=t[1],v=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*v,r[9]=e[9]*v,r[10]=e[10]*v,r[11]=e[11]*v,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[4],o=e[5],i=e[6],s=e[7],l=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=v*a+l*n,r[5]=o*a+c*n,r[6]=i*a+f*n,r[7]=s*a+h*n,r[8]=l*a-v*n,r[9]=c*a-o*n,r[10]=f*a-i*n,r[11]=h*a-s*n,r}function _e(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[0],o=e[1],i=e[2],s=e[3],l=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=v*a+l*n,r[1]=o*a+c*n,r[2]=i*a+f*n,r[3]=s*a+h*n,r[4]=l*a-v*n,r[5]=c*a-o*n,r[6]=f*a-i*n,r[7]=h*a-s*n,r}function mt(r,e,t,n,a){var v=1/Math.tan(e/2),o;return r[0]=v/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=v,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(o=1/(n-a),r[10]=(a+n)*o,r[14]=2*a*n*o):(r[10]=-1,r[14]=-2*n),r}var we=mt;function Xr(r,e){var t=r[0],n=r[1],a=r[2],v=r[3],o=r[4],i=r[5],s=r[6],l=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],E=e[5],I=e[6],T=e[7],S=e[8],z=e[9],O=e[10],A=e[11],d=e[12],$=e[13],F=e[14],k=e[15];return Math.abs(t-P)<=L*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=L*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=L*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(v-m)<=L*Math.max(1,Math.abs(v),Math.abs(m))&&Math.abs(o-x)<=L*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(i-E)<=L*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(s-I)<=L*Math.max(1,Math.abs(s),Math.abs(I))&&Math.abs(l-T)<=L*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(c-S)<=L*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=L*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=L*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-A)<=L*Math.max(1,Math.abs(y),Math.abs(A))&&Math.abs(u-d)<=L*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=L*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-F)<=L*Math.max(1,Math.abs(w),Math.abs(F))&&Math.abs(M-k)<=L*Math.max(1,Math.abs(M),Math.abs(k))}function gt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Br(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Oe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Or(r,e,t,n){var a=e[0],v=e[1];return r[0]=a+n*(t[0]-a),r[1]=v+n*(t[1]-v),r}var pn=function(){var r=gt();return function(e,t,n,a,v,o){var i,s;for(t||(t=2),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],v(r,r,o),e[i]=r[0],e[i+1]=r[1];return e}}();function yt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function be(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function ut(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function Ee(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var ze=ut;var dn=function(){var r=yt();return function(e,t,n,a,v,o){var i,s;for(t||(t=3),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],v(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function C(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Y=Math.PI,Le=Y/4,Z=Y/180,Hr=180/Y,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function br(r){return Math.pow(2,r)}function R(r){var e=j(r,2),t=e[0],n=e[1];C(Number.isFinite(t)),C(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Z,v=n*Z,o=ar*(a+Y)/(2*Y),i=ar*(Y+Math.log(Math.tan(Le+v*.5)))/(2*Y);return[o,i]}function q(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*Y)-Y,v=2*(Math.atan(Math.exp(n/ar*(2*Y)-Y))-Le);return[a*Hr,v*Hr]}function Kr(r){var e=Math.cos(r*Z);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;C(Number.isFinite(e)&&Number.isFinite(t));var v=ar,o=Math.cos(e*Z),i=v/360,s=i/o,l=v/Gr/o,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[i,s,l],degreesPerUnit:[1/i,1/s,1/l]};if(a){var f=Z*Math.tan(e*Z)/o,h=i*f/2,y=v/Gr*f,u=y/s*l;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,v=r.scale,o=r.center,i=nr();pr(i,i,[0,0,-a]),ue(i,i,-t*Z),_e(i,i,n*Z);var s=v/e;return Pr(i,i,[s,s,s]),o&&pr(i,i,Ee([],o)),i}function Te(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,v=a===void 0?0:a,o=r.offset,i=r.center,s=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Z,w=v*Z,M=Er(u),P=M;i&&(P+=i[2]*s/Math.cos(w)/t);var p=_*(.5+(o?o[1]:0)/t),g=Math.sin(p)*P/Math.sin(hr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,E=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:E}}function ee(r){var e=Te(r),t=e.fov,n=e.aspect,a=e.near,v=e.far,o=we([],t,n,a,v);return o}function ir(r){return 2*Math.atan(.5/r)*Hr}function Er(r){return .5/Math.tan(.5*r*Z)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],v=t[2],o=v===void 0?0:v;return C(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(o)),B(e,[n,a,o,1])}function zr(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],v=n[1],o=n[2];if(C(Number.isFinite(a)&&Number.isFinite(v),"invalid pixel coordinate"),Number.isFinite(o)){var i=B(e,[a,v,o,1]);return i}var s=B(e,[a,v,0,1]),l=B(e,[a,v,1,1]),c=s[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Or([],s,l,h)}function Ar(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,v=a===void 0?0:a,o=r.maxZoom,i=o===void 0?24:o,s=r.offset,l=s===void 0?[0,0]:s,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=_t(r.padding),P=R([h,hr(w,-or,or)]),p=R([_,hr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),v),Math.max(Math.abs(p[1]-P[1]),v)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];C(m[0]>0&&m[1]>0);var x=m[0]/g[0],E=m[1]/g[1],I=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/E,S=[(p[0]+P[0])/2+I,(p[1]+P[1])/2+T],z=q(S),O=Math.min(i,_r(Math.abs(Math.min(x,E))));return C(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function _t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(C(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Se=Math.PI/180;function Lr(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,v={targetZ:e},o=a([0,n],v),i=a([t,n],v),s,l,c=r.fovy?.5*r.fovy*Se:Math.atan(.5/r.altitude),f=(90-r.pitch)*Se;return c>f-.01?(s=je(r,0,e),l=je(r,t,e)):(s=a([0,0],v),l=a([t,0],v)),[o,i,l,s]}function je(r,e,t){var n=r.pixelUnprojectionMatrix,a=B(n,[e,0,1,1]),v=B(n,[e,r.height,1,1]),o=t*r.distanceScales.unitsPerMeter[2],i=(o-a[2])/(v[2]-a[2]),s=Or([],a,v,i),l=q(s);return l.push(t),l}var Ie=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Xr(O.projectionMatrix,e.projectionMatrix)&&Xr(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=e.projectPosition(O),k=te(F,e.pixelProjectionMatrix),K=j(k,2),Mr=K[0],lr=K[1],fr=$?lr:e.height-lr;return O.length===2?[Mr,fr]:[Mr,fr,k[2]]}),b(this,"unproject",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=A.targetZ,k=F===void 0?void 0:F,K=j(O,3),Mr=K[0],lr=K[1],fr=K[2],rt=$?lr:e.height-lr,et=k&&k*e.distanceScales.unitsPerMeter[2],tt=zr([Mr,rt,fr],e.pixelUnprojectionMatrix,et),nt=e.unprojectPosition(tt),Ir=j(nt,3),kr=Ir[0],Dr=Ir[1],at=Ir[2];return Number.isFinite(fr)?[kr,Dr,at]:Number.isFinite(k)?[kr,Dr,k]:[kr,Dr]}),b(this,"projectPosition",function(O){var A=R(O),d=j(A,2),$=d[0],F=d[1],k=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,F,k]}),b(this,"unprojectPosition",function(O){var A=q(O),d=j(A,2),$=d[0],F=d[1],k=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,F,k]});var n=t.width,a=t.height,v=t.altitude,o=v===void 0?null:v,i=t.fovy,s=i===void 0?null:i,l=t.latitude,c=l===void 0?0:l,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,E=t.farZMultiplier,I=E===void 0?1.01:E;n=n||1,a=a||1,s===null&&o===null?(o=Qr,s=ir(o)):s===null?s=ir(o):o===null&&(o=Er(s));var T=br(u);o=Math.max(.75,o);var S=Jr({longitude:h,latitude:c}),z=R([h,c]);z.push(0),g&&be(z,z,ze([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:s,nearZMultiplier:x,farZMultiplier:I}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:o}),this.width=n,this.height=a,this.scale=T,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=o,this.fovy=s,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,v=this.viewMatrix,o=nr();wr(o,o,a),wr(o,o,v),this.viewProjectionMatrix=o;var i=nr();Pr(i,i,[t/2,-n/2,1]),pr(i,i,[1,-1,0]),wr(i,i,o);var s=ye(nr(),i);if(!s)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=s}},{key:"projectFlat",value:function(t){return R(t)}},{key:"unprojectFlat",value:function(t){return q(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,v=zr(a,this.pixelUnprojectionMatrix),o=R(n),i=Br([],o,Oe([],v)),s=Br([],this.center,i);return q(s)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,v=this.height,o=Ar(Object.assign({width:a,height:v,bounds:t},n)),i=o.longitude,s=o.latitude,l=o.zoom;return new r({width:a,height:v,longitude:i,latitude:s,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(s){return s[0]}))),v=Math.max.apply(Math,tr(n.map(function(s){return s[0]}))),o=Math.min.apply(Math,tr(n.map(function(s){return s[1]}))),i=Math.max.apply(Math,tr(n.map(function(s){return s[1]})));return[[a,o],[v,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Lr(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function ke(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function H(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ke(Object(t),!0).forEach(function(n){(0,Re.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):ke(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,Pt=Math.PI/180;function Tr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,v=n?.props.onLoad,o=ie(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(o,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?De(n,e):o.onLoad=function(){v?.(),De(i,e)}),n?(i=n,n.setProps(o),n.userData.isExternal=!0):(i=new U.Deck(o),e.on("remove",function(){ae(e)})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&bt(i,e)}),i}function De(r,e){var t=function n(){r.isInitialized?Et(r,e):e.off("move",n)};e.on("move",t)}function ae(r){var e;(e=r.__deck)===null||e===void 0||e.finalize(),r.__deck=null}function ie(r){var e=H(H({},r),{},{parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new U.MapView({id:"mapbox"})]});return e}function Ne(r,e){r.userData.mapboxLayers.add(e),oe(r)}function Fe(r,e){r.userData.mapboxLayers.delete(e),oe(r)}function Ce(r,e){oe(r)}function Ye(r,e,t){var n=r.userData,a=n.currentViewport,v=!1;a||(a=Ze(r,e,!0),r.userData.currentViewport=a,v=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var s=i.layer;return t.id===s.id},clearStack:v,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,v={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&Ot(r,v),v}function Ot(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,v=e.longitude,o=e.latitude,i=e.pitch,s=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=R([v,o]),h=s-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=i*Pt,w=1.5*a,M=_<.001?w*Math.cos(_)/c:w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(o)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ze(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new U.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},sr(e)),{},{nearZMultiplier:t?.02:.1}))}function bt(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var v=Array.from(n,function(f){return f.id}),o=(0,U._flatten)(r.props.layers,Boolean),i=o.some(function(f){return f&&!v.includes(f.id)}),s=r.getViewports(),l=s.findIndex(function(f){return f.id==="mapbox"}),c=s.length>1||l<0;(i||c)&&(l>=0&&(s=s.slice(),s[l]=Ze(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:s,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!v.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function Et(r,e){r.setProps({viewState:sr(e)}),r.needsRedraw({clearRedrawFlags:!0})}function oe(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Sr=function(){function r(e){if((0,qe.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,$e.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Tr({map:t,gl:n,deck:this.props.deck}),Ne(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Fe(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Ce(this.deck,this)}},{key:"render",value:function(){Ye(this.deck,this.map,this)}}]),r}();var Ge=D(Be()),Qe=D(Rr()),Ke=D(Nr()),N=D(yr()),Q=D(rr());var ve=D(rr());function jr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Tt(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
10
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var v=!0,
|
|
7
|
+
"use strict";var __exports__=(()=>{var Ze=Object.create;var mr=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var Xe=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Be=(r,e)=>{for(var t in e)mr(r,t,{get:e[t],enumerable:!0})},Mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of $e(e))!We.call(r,a)&&a!==t&&mr(r,a,{get:()=>e[a],enumerable:!(n=qe(e,a))||n.enumerable});return r},V=(r,e,t)=>(Mr(r,e,"default"),t&&Mr(t,e,"default")),lr=(r,e,t)=>(t=r!=null?Ze(Ve(r)):{},Mr(e||!r||!r.__esModule?mr(t,"default",{value:r,enumerable:!0}):t,r)),Ue=r=>Mr(mr({},"__esModule",{value:!0}),r);var K=Xe((ft,ie)=>{ie.exports=globalThis.deck});var dr={};Be(dr,{MapboxLayer:()=>Lr,MapboxOverlay:()=>De});var q={},oe=lr(K());V(q,lr(K()));if(!oe.Layer)throw new Error("@deck.gl/core is not found");V(dr,q);function B(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function se(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function U(r,e,t){return e&&se(r.prototype,e),t&&se(r,t),r}function h(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var X=lr(K());function J(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 Ir(r){if(Array.isArray(r))return J(r)}function Dr(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function fr(r,e){if(r){if(typeof r=="string")return J(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 J(r,e)}}function Rr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
8
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function rr(r){return Ir(r)||Dr(r)||fr(r)||Rr()}function Nr(r){if(Array.isArray(r))return r}function Fr(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,v=!1,s,i;try{for(t=t.call(r);!(a=(s=t.next()).done)&&(n.push(s.value),!(e&&n.length===e));a=!0);}catch(o){v=!0,i=o}finally{try{!a&&t.return!=null&&t.return()}finally{if(v)throw i}}return n}}function Cr(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
9
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Nr(r)||Fr(r,e)||fr(r,e)||Cr()}var L=1e-6,$=typeof Float32Array<"u"?Float32Array:Array;var Dt=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function He(){var r=new $(4);return $!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function le(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function fe(r,e,t){var n=e[0],a=e[1],v=e[2],s=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*v+t[12]*s,r[1]=t[1]*n+t[5]*a+t[9]*v+t[13]*s,r[2]=t[2]*n+t[6]*a+t[10]*v+t[14]*s,r[3]=t[3]*n+t[7]*a+t[11]*v+t[15]*s,r}var Rt=function(){var r=He();return function(e,t,n,a,v,s){var i,o;for(t||(t=4),n||(n=0),a?o=Math.min(a*t+n,e.length):o=e.length,i=n;i<o;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],v(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2],e[i+3]=r[3];return e}}();function er(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function W(r,e){var t=fe([],e,r);return le(t,t,1/t[3]),t}function cr(r,e,t){return r<e?e:r>t?t:r}function Ge(r){return Math.log(r)*Math.LOG2E}var yr=Math.log2||Ge;function ce(r,e){var t=e[0],n=e[1],a=e[2],v=e[3],s=e[4],i=e[5],o=e[6],l=e[7],c=e[8],f=e[9],p=e[10],u=e[11],_=e[12],w=e[13],P=e[14],m=e[15],O=t*i-n*s,d=t*o-a*s,y=t*l-v*s,g=n*o-a*i,M=n*l-v*i,b=a*l-v*o,k=c*w-f*_,T=c*P-p*_,S=c*m-u*_,z=f*P-p*w,E=f*m-u*w,A=p*m-u*P,x=O*A-d*E+y*z+g*S-M*T+b*k;return x?(x=1/x,r[0]=(i*A-o*E+l*z)*x,r[1]=(a*E-n*A-v*z)*x,r[2]=(w*b-P*M+m*g)*x,r[3]=(p*M-f*b-u*g)*x,r[4]=(o*S-s*A-l*T)*x,r[5]=(t*A-a*S+v*T)*x,r[6]=(P*y-_*b-m*d)*x,r[7]=(c*b-p*y+u*d)*x,r[8]=(s*E-i*S+l*k)*x,r[9]=(n*S-t*E-v*k)*x,r[10]=(_*M-w*y+m*O)*x,r[11]=(f*y-c*M-u*O)*x,r[12]=(i*T-s*z-o*k)*x,r[13]=(t*z-n*T+a*k)*x,r[14]=(w*d-_*g-P*O)*x,r[15]=(c*g-f*d+p*O)*x,r):null}function ur(r,e,t){var n=e[0],a=e[1],v=e[2],s=e[3],i=e[4],o=e[5],l=e[6],c=e[7],f=e[8],p=e[9],u=e[10],_=e[11],w=e[12],P=e[13],m=e[14],O=e[15],d=t[0],y=t[1],g=t[2],M=t[3];return r[0]=d*n+y*i+g*f+M*w,r[1]=d*a+y*o+g*p+M*P,r[2]=d*v+y*l+g*u+M*m,r[3]=d*s+y*c+g*_+M*O,d=t[4],y=t[5],g=t[6],M=t[7],r[4]=d*n+y*i+g*f+M*w,r[5]=d*a+y*o+g*p+M*P,r[6]=d*v+y*l+g*u+M*m,r[7]=d*s+y*c+g*_+M*O,d=t[8],y=t[9],g=t[10],M=t[11],r[8]=d*n+y*i+g*f+M*w,r[9]=d*a+y*o+g*p+M*P,r[10]=d*v+y*l+g*u+M*m,r[11]=d*s+y*c+g*_+M*O,d=t[12],y=t[13],g=t[14],M=t[15],r[12]=d*n+y*i+g*f+M*w,r[13]=d*a+y*o+g*p+M*P,r[14]=d*v+y*l+g*u+M*m,r[15]=d*s+y*c+g*_+M*O,r}function hr(r,e,t){var n=t[0],a=t[1],v=t[2],s,i,o,l,c,f,p,u,_,w,P,m;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*v+e[12],r[13]=e[1]*n+e[5]*a+e[9]*v+e[13],r[14]=e[2]*n+e[6]*a+e[10]*v+e[14],r[15]=e[3]*n+e[7]*a+e[11]*v+e[15]):(s=e[0],i=e[1],o=e[2],l=e[3],c=e[4],f=e[5],p=e[6],u=e[7],_=e[8],w=e[9],P=e[10],m=e[11],r[0]=s,r[1]=i,r[2]=o,r[3]=l,r[4]=c,r[5]=f,r[6]=p,r[7]=u,r[8]=_,r[9]=w,r[10]=P,r[11]=m,r[12]=s*n+c*a+_*v+e[12],r[13]=i*n+f*a+w*v+e[13],r[14]=o*n+p*a+P*v+e[14],r[15]=l*n+u*a+m*v+e[15]),r}function _r(r,e,t){var n=t[0],a=t[1],v=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*v,r[9]=e[9]*v,r[10]=e[10]*v,r[11]=e[11]*v,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function he(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[4],s=e[5],i=e[6],o=e[7],l=e[8],c=e[9],f=e[10],p=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=v*a+l*n,r[5]=s*a+c*n,r[6]=i*a+f*n,r[7]=o*a+p*n,r[8]=l*a-v*n,r[9]=c*a-s*n,r[10]=f*a-i*n,r[11]=p*a-o*n,r}function pe(r,e,t){var n=Math.sin(t),a=Math.cos(t),v=e[0],s=e[1],i=e[2],o=e[3],l=e[4],c=e[5],f=e[6],p=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=v*a+l*n,r[1]=s*a+c*n,r[2]=i*a+f*n,r[3]=o*a+p*n,r[4]=l*a-v*n,r[5]=c*a-s*n,r[6]=f*a-i*n,r[7]=p*a-o*n,r}function Qe(r,e,t,n,a){var v=1/Math.tan(e/2),s;return r[0]=v/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=v,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(s=1/(n-a),r[10]=(a+n)*s,r[14]=2*a*n*s):(r[10]=-1,r[14]=-2*n),r}var de=Qe;function Yr(r,e){var t=r[0],n=r[1],a=r[2],v=r[3],s=r[4],i=r[5],o=r[6],l=r[7],c=r[8],f=r[9],p=r[10],u=r[11],_=r[12],w=r[13],P=r[14],m=r[15],O=e[0],d=e[1],y=e[2],g=e[3],M=e[4],b=e[5],k=e[6],T=e[7],S=e[8],z=e[9],E=e[10],A=e[11],x=e[12],Z=e[13],R=e[14],I=e[15];return Math.abs(t-O)<=L*Math.max(1,Math.abs(t),Math.abs(O))&&Math.abs(n-d)<=L*Math.max(1,Math.abs(n),Math.abs(d))&&Math.abs(a-y)<=L*Math.max(1,Math.abs(a),Math.abs(y))&&Math.abs(v-g)<=L*Math.max(1,Math.abs(v),Math.abs(g))&&Math.abs(s-M)<=L*Math.max(1,Math.abs(s),Math.abs(M))&&Math.abs(i-b)<=L*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(o-k)<=L*Math.max(1,Math.abs(o),Math.abs(k))&&Math.abs(l-T)<=L*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(c-S)<=L*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=L*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(p-E)<=L*Math.max(1,Math.abs(p),Math.abs(E))&&Math.abs(u-A)<=L*Math.max(1,Math.abs(u),Math.abs(A))&&Math.abs(_-x)<=L*Math.max(1,Math.abs(_),Math.abs(x))&&Math.abs(w-Z)<=L*Math.max(1,Math.abs(w),Math.abs(Z))&&Math.abs(P-R)<=L*Math.max(1,Math.abs(P),Math.abs(R))&&Math.abs(m-I)<=L*Math.max(1,Math.abs(m),Math.abs(I))}function Ke(){var r=new $(2);return $!=Float32Array&&(r[0]=0,r[1]=0),r}function Zr(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Me(r,e){return r[0]=-e[0],r[1]=-e[1],r}function wr(r,e,t,n){var a=e[0],v=e[1];return r[0]=a+n*(t[0]-a),r[1]=v+n*(t[1]-v),r}var Yt=function(){var r=Ke();return function(e,t,n,a,v,s){var i,o;for(t||(t=2),n||(n=0),a?o=Math.min(a*t+n,e.length):o=e.length,i=n;i<o;i+=t)r[0]=e[i],r[1]=e[i+1],v(r,r,s),e[i]=r[0],e[i+1]=r[1];return e}}();function Je(){var r=new $(3);return $!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function me(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function rt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function ge(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var ye=rt;var Zt=function(){var r=Je();return function(e,t,n,a,v,s){var i,o;for(t||(t=3),n||(n=0),a?o=Math.min(a*t+n,e.length):o=e.length,i=n;i<o;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],v(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function N(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var F=Math.PI,_e=F/4,C=F/180,$r=180/F,tr=512,Vr=4003e4,ar=85.051129,Wr=1.5;function Pr(r){return Math.pow(2,r)}function D(r){var e=j(r,2),t=e[0],n=e[1];N(Number.isFinite(t)),N(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*C,v=n*C,s=tr*(a+F)/(2*F),i=tr*(F+Math.log(Math.tan(_e+v*.5)))/(2*F);return[s,i]}function Y(r){var e=j(r,2),t=e[0],n=e[1],a=t/tr*(2*F)-F,v=2*(Math.atan(Math.exp(n/tr*(2*F)-F))-_e);return[a*$r,v*$r]}function Xr(r){var e=Math.cos(r*C);return tr/Vr/e}function Br(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;N(Number.isFinite(e)&&Number.isFinite(t));var v=tr,s=Math.cos(e*C),i=v/360,o=i/s,l=v/Vr/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[i,o,l],degreesPerUnit:[1/i,1/o,1/l]};if(a){var f=C*Math.tan(e*C)/s,p=i*f/2,u=v/Vr*f,_=u/o*l;c.unitsPerDegree2=[0,p,u],c.unitsPerMeter2=[_,0,_]}return c}function Ur(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,v=r.scale,s=r.center,i=er();hr(i,i,[0,0,-a]),he(i,i,-t*C),pe(i,i,n*C);var o=v/e;return _r(i,i,[o,o,o]),s&&hr(i,i,ge([],s)),i}function we(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,v=a===void 0?0:a,s=r.offset,i=r.center,o=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,p=f===void 0?1:f,u=r.fovy,_=u===void 0?nr(Wr):u;n!==void 0&&(_=nr(n));var w=_*C,P=v*C,m=Or(_),O=m;i&&(O+=i[2]*o/Math.cos(P)/t);var d=w*(.5+(s?s[1]:0)/t),y=Math.sin(d)*O/Math.sin(cr(Math.PI/2-P-d,.01,Math.PI-.01)),g=Math.sin(P)*y+O,M=O*10,b=Math.min(g*p,M);return{fov:w,aspect:e/t,focalDistance:m,near:c,far:b}}function Hr(r){var e=we(r),t=e.fov,n=e.aspect,a=e.near,v=e.far,s=de([],t,n,a,v);return s}function nr(r){return 2*Math.atan(.5/r)*$r}function Or(r){return .5/Math.tan(.5*r*C)}function Gr(r,e){var t=j(r,3),n=t[0],a=t[1],v=t[2],s=v===void 0?0:v;return N(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(s)),W(e,[n,a,s,1])}function Er(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],v=n[1],s=n[2];if(N(Number.isFinite(a)&&Number.isFinite(v),"invalid pixel coordinate"),Number.isFinite(s)){var i=W(e,[a,v,s,1]);return i}var o=W(e,[a,v,0,1]),l=W(e,[a,v,1,1]),c=o[2],f=l[2],p=c===f?0:((t||0)-c)/(f-c);return wr([],o,l,p)}function br(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,v=a===void 0?0:a,s=r.maxZoom,i=s===void 0?24:s,o=r.offset,l=o===void 0?[0,0]:o,c=j(n,2),f=j(c[0],2),p=f[0],u=f[1],_=j(c[1],2),w=_[0],P=_[1],m=et(r.padding),O=D([p,cr(P,-ar,ar)]),d=D([w,cr(u,-ar,ar)]),y=[Math.max(Math.abs(d[0]-O[0]),v),Math.max(Math.abs(d[1]-O[1]),v)],g=[e-m.left-m.right-Math.abs(l[0])*2,t-m.top-m.bottom-Math.abs(l[1])*2];N(g[0]>0&&g[1]>0);var M=g[0]/y[0],b=g[1]/y[1],k=(m.right-m.left)/2/M,T=(m.bottom-m.top)/2/b,S=[(d[0]+O[0])/2+k,(d[1]+O[1])/2+T],z=Y(S),E=Math.min(i,yr(Math.abs(Math.min(M,b))));return N(Number.isFinite(E)),{longitude:z[0],latitude:z[1],zoom:E}}function et(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(N(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Pe=Math.PI/180;function zr(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,v={targetZ:e},s=a([0,n],v),i=a([t,n],v),o,l,c=r.fovy?.5*r.fovy*Pe:Math.atan(.5/r.altitude),f=(90-r.pitch)*Pe;return c>f-.01?(o=Oe(r,0,e),l=Oe(r,t,e)):(o=a([0,0],v),l=a([t,0],v)),[s,i,l,o]}function Oe(r,e,t){var n=r.pixelUnprojectionMatrix,a=W(n,[e,0,1,1]),v=W(n,[e,r.height,1,1]),s=t*r.distanceScales.unitsPerMeter[2],i=(s-a[2])/(v[2]-a[2]),o=wr([],a,v,i),l=Y(o);return l.push(t),l}var Ee=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};B(this,r),h(this,"latitude",void 0),h(this,"longitude",void 0),h(this,"zoom",void 0),h(this,"pitch",void 0),h(this,"bearing",void 0),h(this,"altitude",void 0),h(this,"fovy",void 0),h(this,"meterOffset",void 0),h(this,"center",void 0),h(this,"width",void 0),h(this,"height",void 0),h(this,"scale",void 0),h(this,"distanceScales",void 0),h(this,"viewMatrix",void 0),h(this,"projectionMatrix",void 0),h(this,"viewProjectionMatrix",void 0),h(this,"pixelProjectionMatrix",void 0),h(this,"pixelUnprojectionMatrix",void 0),h(this,"equals",function(E){return E instanceof r?E.width===e.width&&E.height===e.height&&Yr(E.projectionMatrix,e.projectionMatrix)&&Yr(E.viewMatrix,e.viewMatrix):!1}),h(this,"project",function(E){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},x=A.topLeft,Z=x===void 0?!0:x,R=e.projectPosition(E),I=Gr(R,e.pixelProjectionMatrix),Q=j(I,2),xr=Q[0],sr=Q[1],vr=Z?sr:e.height-sr;return E.length===2?[xr,vr]:[xr,vr,I[2]]}),h(this,"unproject",function(E){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},x=A.topLeft,Z=x===void 0?!0:x,R=A.targetZ,I=R===void 0?void 0:R,Q=j(E,3),xr=Q[0],sr=Q[1],vr=Q[2],Re=Z?sr:e.height-sr,Ne=I&&I*e.distanceScales.unitsPerMeter[2],Fe=Er([xr,Re,vr],e.pixelUnprojectionMatrix,Ne),Ce=e.unprojectPosition(Fe),Sr=j(Ce,3),jr=Sr[0],kr=Sr[1],Ye=Sr[2];return Number.isFinite(vr)?[jr,kr,Ye]:Number.isFinite(I)?[jr,kr,I]:[jr,kr]}),h(this,"projectPosition",function(E){var A=D(E),x=j(A,2),Z=x[0],R=x[1],I=(E[2]||0)*e.distanceScales.unitsPerMeter[2];return[Z,R,I]}),h(this,"unprojectPosition",function(E){var A=Y(E),x=j(A,2),Z=x[0],R=x[1],I=(E[2]||0)*e.distanceScales.metersPerUnit[2];return[Z,R,I]});var n=t.width,a=t.height,v=t.altitude,s=v===void 0?null:v,i=t.fovy,o=i===void 0?null:i,l=t.latitude,c=l===void 0?0:l,f=t.longitude,p=f===void 0?0:f,u=t.zoom,_=u===void 0?0:u,w=t.pitch,P=w===void 0?0:w,m=t.bearing,O=m===void 0?0:m,d=t.position,y=d===void 0?null:d,g=t.nearZMultiplier,M=g===void 0?.02:g,b=t.farZMultiplier,k=b===void 0?1.01:b;n=n||1,a=a||1,o===null&&s===null?(s=Wr,o=nr(s)):o===null?o=nr(s):s===null&&(s=Or(o));var T=Pr(_);s=Math.max(.75,s);var S=Br({longitude:p,latitude:c}),z=D([p,c]);z.push(0),y&&me(z,z,ye([],y,S.unitsPerMeter)),this.projectionMatrix=Hr({width:n,height:a,scale:T,center:z,pitch:P,fovy:o,nearZMultiplier:M,farZMultiplier:k}),this.viewMatrix=Ur({height:a,scale:T,center:z,pitch:P,bearing:O,altitude:s}),this.width=n,this.height=a,this.scale=T,this.latitude=c,this.longitude=p,this.zoom=_,this.pitch=P,this.bearing=O,this.altitude=s,this.fovy=o,this.center=z,this.meterOffset=y||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return U(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,v=this.viewMatrix,s=er();ur(s,s,a),ur(s,s,v),this.viewProjectionMatrix=s;var i=er();_r(i,i,[t/2,-n/2,1]),hr(i,i,[1,-1,0]),ur(i,i,s);var o=ce(er(),i);if(!o)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=o}},{key:"projectFlat",value:function(t){return D(t)}},{key:"unprojectFlat",value:function(t){return Y(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,v=Er(a,this.pixelUnprojectionMatrix),s=D(n),i=Zr([],s,Me([],v)),o=Zr([],this.center,i);return Y(o)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,v=this.height,s=br(Object.assign({width:a,height:v,bounds:t},n)),i=s.longitude,o=s.latitude,l=s.zoom;return new r({width:a,height:v,longitude:i,latitude:o,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,rr(n.map(function(o){return o[0]}))),v=Math.max.apply(Math,rr(n.map(function(o){return o[0]}))),s=Math.min.apply(Math,rr(n.map(function(o){return o[1]}))),i=Math.max.apply(Math,rr(n.map(function(o){return o[1]})));return[[a,s],[v,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return zr(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function be(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function H(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?be(Object(t),!0).forEach(function(n){h(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):be(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Qr=512,nt=Math.PI/180;function Ar(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,v=n?.props.onLoad,s=Jr(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(s,{gl:t,width:null,height:null,touchAction:"unset",viewState:ir(e)}),n!=null&&n.isInitialized?ze(n,e):s.onLoad=function(){v?.(),ze(i,e)}),n?(i=n,n.setProps(s),n.userData.isExternal=!0):(i=new X.Deck(s),e.on("remove",function(){Kr(e)})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&it(i,e)}),i}function ze(r,e){var t=function n(){r.isInitialized?ot(r,e):e.off("move",n)};e.on("move",t)}function Kr(r){var e;(e=r.__deck)===null||e===void 0||e.finalize(),r.__deck=null}function Jr(r){var e=H(H({},r),{},{parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return e}function Ae(r,e){r.userData.mapboxLayers.add(e),re(r)}function Le(r,e){r.userData.mapboxLayers.delete(e),re(r)}function Te(r,e){re(r)}function Se(r,e,t){var n=r.userData,a=n.currentViewport,v=!1;a||(a=je(r,e,!0),r.userData.currentViewport=a,v=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var o=i.layer;return t.id===o.id||o.props.operation.includes("terrain")},clearStack:v,clearCanvas:!1})}function ir(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,v={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&at(r,v),v}function at(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,v=e.longitude,s=e.latitude,i=e.pitch,o=n.x*Qr,l=(1-n.y)*Qr,c=n.z*Qr,f=D([v,s]),p=o-f[0],u=l-f[1],_=Math.sqrt(p*p+u*u),w=i*nt,P=1.5*a,m=w<.001?P*Math.cos(w)/c:P*Math.sin(w)/_;e.zoom=Math.log2(m);var O=P*Math.cos(w)/m,d=c-O;e.position=[0,0,d/Xr(s)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function je(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},ir(e)),{},{nearZMultiplier:t?.02:.1,nearZ:e.transform._nearZ/e.transform.height,farZ:e.transform._farZ/e.transform.height}))}function it(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var v=Array.from(n,function(f){return f.id}),s=(0,X._flatten)(r.props.layers,Boolean),i=s.some(function(f){return f&&!v.includes(f.id)}),o=r.getViewports(),l=o.findIndex(function(f){return f.id==="mapbox"}),c=o.length>1||l<0;(i||c)&&(l>=0&&(o=o.slice(),o[l]=je(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:o,layerFilter:function(p){return(!r.props.layerFilter||r.props.layerFilter(p))&&(p.viewport.id!=="mapbox"||!v.includes(p.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function ot(r,e){r.setProps({viewState:ir(e)}),r.needsRedraw({clearRedrawFlags:!0})}function re(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Lr=function(){function r(e){if(B(this,r),h(this,"id",void 0),h(this,"type",void 0),h(this,"renderingMode",void 0),h(this,"map",void 0),h(this,"deck",void 0),h(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return U(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Ar({map:t,gl:n,deck:this.props.deck}),Ae(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Le(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Te(this.deck,this)}},{key:"render",value:function(){Se(this.deck,this.map,this)}}]),r}();function ee(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,v;for(v=0;v<n.length;v++)a=n[v],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}function te(r,e){if(r==null)return{};var t=ee(r,e),n,a;if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(r);for(a=0;a<v.length;a++)n=v[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}var G=lr(K());var ae=lr(K());function Tr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=st(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
10
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var v=!0,s=!1,i;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return v=l.done,l},e:function(l){s=!0,i=l},f:function(){try{!v&&t.return!=null&&t.return()}finally{if(s)throw i}}}}function st(r,e){if(r){if(typeof r=="string")return ke(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 ke(r,e)}}function ke(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 ne="__UNDEFINED__";function pr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,ae._flatten)(n,Boolean);if(t!==n){var v=(0,ae._flatten)(t,Boolean),s=new Set(v.map(function(x){return x.id})),i=Tr(a),o;try{for(i.s();!(o=i.n()).done;){var l=o.value;s.delete(l.id)}}catch(x){i.e(x)}finally{i.f()}var c=Tr(s),f;try{for(c.s();!(f=c.n()).done;){var p=f.value;r.getLayer(p)&&r.removeLayer(p)}}catch(x){c.e(x)}finally{c.f()}}var u=Tr(a),_;try{for(u.s();!(_=u.n()).done;){var w=_.value,P=r.getLayer(w.id);P?P.implementation.setProps(w.props):r.addLayer(new Lr({id:w.id,deck:e}),w.props.beforeId)}}catch(x){u.e(x)}finally{u.f()}var m=r.style._order,O={},d=Tr(a),y;try{for(d.s();!(y=d.n()).done;){var g=y.value,M=g.props.beforeId;(!M||!m.includes(M))&&(M=ne),O[M]=O[M]||[],O[M].push(g.id)}}catch(x){d.e(x)}finally{d.f()}for(var b in O)for(var k=O[b],T=b===ne?m.length:m.indexOf(b),S=b===ne?void 0:b,z=k.length-1;z>=0;z--){var E=k[z],A=m.indexOf(E);A!==T-1&&(r.moveLayer(E,S),A>T&&T++),T--,S=E}}}var vt=["interleaved"];function Ie(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function or(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ie(Object(t),!0).forEach(function(n){h(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Ie(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var De=function(){function r(e){var t=this;B(this,r),h(this,"_props",void 0),h(this,"_deck",void 0),h(this,"_map",void 0),h(this,"_container",void 0),h(this,"_interleaved",void 0),h(this,"_lastMouseDownPoint",void 0),h(this,"_handleStyleChange",function(){pr(t._map,t._deck,t._props.layers,t._props.layers)}),h(this,"_updateContainerSize",function(){if(t._map&&t._container){var s=t._map.getContainer(),i=s.clientWidth,o=s.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(o,"px")})}}),h(this,"_updateViewState",function(){var s=t._deck;s&&(s.setProps({viewState:ir(t._map)}),s.isInitialized&&s.redraw())}),h(this,"_handleMouseEvent",function(s){var i=t._deck;if(!(!i||!i.isInitialized)){var o={type:s.type,offsetCenter:s.point,srcEvent:s},l=t._lastMouseDownPoint;switch(!s.point&&l&&(o.deltaX=s.originalEvent.clientX-l.clientX,o.deltaY=s.originalEvent.clientY-l.clientY,o.offsetCenter={x:l.x+o.deltaX,y:l.y+o.deltaY}),o.type){case"mousedown":i._onPointerDown(o),t._lastMouseDownPoint=or(or({},s.point),{},{clientX:s.originalEvent.clientX,clientY:s.originalEvent.clientY});break;case"dragstart":o.type="panstart",i._onEvent(o);break;case"drag":o.type="panmove",i._onEvent(o);break;case"dragend":o.type="panend",i._onEvent(o);break;case"click":o.tapCount=1,i._onEvent(o);break;case"dblclick":o.type="click",o.tapCount=2,i._onEvent(o);break;case"mousemove":o.type="pointermove",i._onPointerMove(o);break;case"mouseout":o.type="pointerleave",i._onPointerMove(o);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,v=te(e,vt);this._interleaved=a,this._props=v}return U(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&pr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?Jr(this._props):this._props)}},{key:"onAdd",value:function(t){return this._map=t,this._interleaved?this._onAddInterleaved(t):this._onAddOverlaid(t)}},{key:"_onAddOverlaid",value:function(t){var n=document.createElement("div");return Object.assign(n.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=n,this._deck=new G.Deck(or(or({},this._props),{},{parent:n,viewState:ir(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousedown",this._handleMouseEvent),t.on("dragstart",this._handleMouseEvent),t.on("drag",this._handleMouseEvent),t.on("dragend",this._handleMouseEvent),t.on("mousemove",this._handleMouseEvent),t.on("mouseout",this._handleMouseEvent),t.on("click",this._handleMouseEvent),t.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),n}},{key:"_onAddInterleaved",value:function(t){return this._deck=Ar({map:t,gl:t.painter.context.gl,deck:new G.Deck(or(or({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),pr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t=this._map;t&&(this._interleaved?this._onRemoveInterleaved(t):this._onRemoveOverlaid(t)),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){var n;t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousedown",this._handleMouseEvent),t.off("dragstart",this._handleMouseEvent),t.off("drag",this._handleMouseEvent),t.off("dragend",this._handleMouseEvent),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent),(n=this._deck)===null||n===void 0||n.finalize()}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),pr(t,this._deck,this._props.layers,[]),Kr(t)}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(t){return(0,G.assert)(this._deck),this._deck.pickObject(t)}},{key:"pickMultipleObjects",value:function(t){return(0,G.assert)(this._deck),this._deck.pickMultipleObjects(t)}},{key:"pickObjects",value:function(t){return(0,G.assert)(this._deck),this._deck.pickObjects(t)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}},{key:"getCanvas",value:function(){return this._map?this._interleaved?this._map.getCanvas():this._deck.getCanvas():null}}]),r}();return Ue(dr);})();
|
|
11
11
|
return __exports__;
|
|
12
12
|
});
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/mapbox",
|
|
3
3
|
"description": "Use deck.gl layers as custom mapbox-gl-js layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.10.0-alpha.
|
|
5
|
+
"version": "8.10.0-alpha.4",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"@babel/runtime": "^7.0.0",
|
|
33
34
|
"@luma.gl/constants": "^8.5.16",
|
|
34
35
|
"@math.gl/web-mercator": "^3.6.2",
|
|
35
36
|
"@types/mapbox-gl": "^2.6.3"
|
|
@@ -37,5 +38,5 @@
|
|
|
37
38
|
"peerDependencies": {
|
|
38
39
|
"@deck.gl/core": "^8.0.0"
|
|
39
40
|
},
|
|
40
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "8195f543d7673ab0d6755f316c4ad516cff4f049"
|
|
41
42
|
}
|
package/src/deck-utils.ts
CHANGED
|
@@ -162,7 +162,8 @@ export function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {
|
|
|
162
162
|
|
|
163
163
|
deck._drawLayers('mapbox-repaint', {
|
|
164
164
|
viewports: [currentViewport],
|
|
165
|
-
layerFilter: ({layer: deckLayer}) =>
|
|
165
|
+
layerFilter: ({layer: deckLayer}) =>
|
|
166
|
+
layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),
|
|
166
167
|
clearStack,
|
|
167
168
|
clearCanvas: false
|
|
168
169
|
});
|
|
@@ -275,7 +276,11 @@ function getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMerca
|
|
|
275
276
|
? // match mapbox-gl@>=1.3.0's projection matrix
|
|
276
277
|
0.02
|
|
277
278
|
: // use deck.gl's own default
|
|
278
|
-
0.1
|
|
279
|
+
0.1,
|
|
280
|
+
// @ts-expect-error Mapbox specific - extract near plane position
|
|
281
|
+
nearZ: map.transform._nearZ / map.transform.height,
|
|
282
|
+
// @ts-expect-error Mapbox specific - extract far plane position
|
|
283
|
+
farZ: map.transform._farZ / map.transform.height
|
|
279
284
|
});
|
|
280
285
|
}
|
|
281
286
|
|
package/src/mapbox-overlay.ts
CHANGED
|
@@ -177,6 +177,14 @@ export default class MapboxOverlay implements IControl {
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
/** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */
|
|
181
|
+
getCanvas(): HTMLCanvasElement | null {
|
|
182
|
+
if (!this._map) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();
|
|
186
|
+
}
|
|
187
|
+
|
|
180
188
|
private _handleStyleChange = () => {
|
|
181
189
|
resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);
|
|
182
190
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAiBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CAiEP;AAeD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAC,QAGnE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAkBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAiBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CAiEP;AAeD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAC,QAGnE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAkBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAsB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CA6BA"}
|
|
@@ -35,6 +35,8 @@ export default class MapboxOverlay implements IControl {
|
|
|
35
35
|
pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']>;
|
|
36
36
|
/** Remove from map and releases all resources */
|
|
37
37
|
finalize(): void;
|
|
38
|
+
/** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */
|
|
39
|
+
getCanvas(): HTMLCanvasElement | null;
|
|
38
40
|
private _handleStyleChange;
|
|
39
41
|
private _updateContainerSize;
|
|
40
42
|
private _updateViewState;
|
|
@@ -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,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
|
|
1
|
+
{"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAA2D;gBAE3E,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAgBhB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,oBAAoB;IAM5B,kBAAkB;IAIlB,0CAA0C;IAC1C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAKrF,mDAAmD;IACnD,mBAAmB,CACjB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAK1C,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKxF,iDAAiD;IACjD,QAAQ;IAMR,qGAAqG;IACrG,SAAS,IAAI,iBAAiB,GAAG,IAAI;IAOrC,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
|
package/typed/deck-utils.js
DELETED
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { Deck, WebMercatorViewport, MapView, _flatten as flatten } from '@deck.gl/core';
|
|
2
|
-
export function getDeckInstance({ map, gl, deck }) {
|
|
3
|
-
// Only create one deck instance per context
|
|
4
|
-
if (map.__deck) {
|
|
5
|
-
return map.__deck;
|
|
6
|
-
}
|
|
7
|
-
const customRender = deck?.props._customRender;
|
|
8
|
-
const deckProps = {
|
|
9
|
-
useDevicePixels: true,
|
|
10
|
-
_customRender: (reason) => {
|
|
11
|
-
map.triggerRepaint();
|
|
12
|
-
// customRender may be subscribed by DeckGL React component to update child props
|
|
13
|
-
// make sure it is still called
|
|
14
|
-
customRender?.(reason);
|
|
15
|
-
},
|
|
16
|
-
// TODO: import these defaults from a single source of truth
|
|
17
|
-
parameters: {
|
|
18
|
-
depthMask: true,
|
|
19
|
-
depthTest: true,
|
|
20
|
-
blend: true,
|
|
21
|
-
blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],
|
|
22
|
-
polygonOffsetFill: true,
|
|
23
|
-
depthFunc: gl.LEQUAL,
|
|
24
|
-
blendEquation: gl.FUNC_ADD
|
|
25
|
-
},
|
|
26
|
-
views: (deck && deck.props.views) || [new MapView({ id: 'mapbox' })]
|
|
27
|
-
};
|
|
28
|
-
if (!deck || deck.props.gl === gl) {
|
|
29
|
-
// deck is using the WebGLContext created by mapbox
|
|
30
|
-
// block deck from setting the canvas size
|
|
31
|
-
Object.assign(deckProps, {
|
|
32
|
-
gl,
|
|
33
|
-
width: null,
|
|
34
|
-
height: null,
|
|
35
|
-
touchAction: 'unset',
|
|
36
|
-
viewState: getViewState(map)
|
|
37
|
-
});
|
|
38
|
-
// If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
|
|
39
|
-
// Otherwise (pure JS use case), we use the map's viewState to drive deck.
|
|
40
|
-
map.on('move', () => onMapMove(deck, map));
|
|
41
|
-
}
|
|
42
|
-
if (deck) {
|
|
43
|
-
deck.setProps(deckProps);
|
|
44
|
-
deck.userData.isExternal = true;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
deck = new Deck(deckProps);
|
|
48
|
-
map.on('remove', () => {
|
|
49
|
-
deck.finalize();
|
|
50
|
-
map.__deck = null;
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
deck.userData.mapboxLayers = new Set();
|
|
54
|
-
deck.userData.mapboxVersion = getMapboxVersion(map);
|
|
55
|
-
map.__deck = deck;
|
|
56
|
-
map.on('render', () => {
|
|
57
|
-
// @ts-expect-error (2445) protected property
|
|
58
|
-
if (deck.layerManager)
|
|
59
|
-
afterRender(deck, map);
|
|
60
|
-
});
|
|
61
|
-
return deck;
|
|
62
|
-
}
|
|
63
|
-
export function addLayer(deck, layer) {
|
|
64
|
-
deck.userData.mapboxLayers.add(layer);
|
|
65
|
-
updateLayers(deck);
|
|
66
|
-
}
|
|
67
|
-
export function removeLayer(deck, layer) {
|
|
68
|
-
deck.userData.mapboxLayers.delete(layer);
|
|
69
|
-
updateLayers(deck);
|
|
70
|
-
}
|
|
71
|
-
export function updateLayer(deck, layer) {
|
|
72
|
-
updateLayers(deck);
|
|
73
|
-
}
|
|
74
|
-
export function drawLayer(deck, map, layer) {
|
|
75
|
-
let { currentViewport } = deck.userData;
|
|
76
|
-
if (!currentViewport) {
|
|
77
|
-
// This is the first layer drawn in this render cycle.
|
|
78
|
-
// Generate viewport from the current map state.
|
|
79
|
-
currentViewport = getViewport(deck, map, true);
|
|
80
|
-
deck.userData.currentViewport = currentViewport;
|
|
81
|
-
}
|
|
82
|
-
// @ts-expect-error (2445) protected property
|
|
83
|
-
if (!deck.layerManager) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
deck._drawLayers('mapbox-repaint', {
|
|
87
|
-
viewports: [currentViewport],
|
|
88
|
-
layerFilter: ({ layer: deckLayer }) => layer.id === deckLayer.id,
|
|
89
|
-
clearCanvas: false
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
export function getViewState(map) {
|
|
93
|
-
const { lng, lat } = map.getCenter();
|
|
94
|
-
return {
|
|
95
|
-
// Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian
|
|
96
|
-
// https://github.com/visgl/deck.gl/issues/6894
|
|
97
|
-
longitude: ((lng + 540) % 360) - 180,
|
|
98
|
-
latitude: lat,
|
|
99
|
-
zoom: map.getZoom(),
|
|
100
|
-
bearing: map.getBearing(),
|
|
101
|
-
pitch: map.getPitch(),
|
|
102
|
-
repeat: map.getRenderWorldCopies()
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function getMapboxVersion(map) {
|
|
106
|
-
// parse mapbox version string
|
|
107
|
-
let major = 0;
|
|
108
|
-
let minor = 0;
|
|
109
|
-
// @ts-ignore (2339) undefined property
|
|
110
|
-
const version = map.version;
|
|
111
|
-
if (version) {
|
|
112
|
-
[major, minor] = version.split('.').slice(0, 2).map(Number);
|
|
113
|
-
}
|
|
114
|
-
return { major, minor };
|
|
115
|
-
}
|
|
116
|
-
function getViewport(deck, map, useMapboxProjection = true) {
|
|
117
|
-
const { mapboxVersion } = deck.userData;
|
|
118
|
-
return new WebMercatorViewport(Object.assign({
|
|
119
|
-
id: 'mapbox',
|
|
120
|
-
x: 0,
|
|
121
|
-
y: 0,
|
|
122
|
-
width: deck.width,
|
|
123
|
-
height: deck.height
|
|
124
|
-
}, getViewState(map), useMapboxProjection
|
|
125
|
-
? {
|
|
126
|
-
// match mapbox's projection matrix
|
|
127
|
-
// A change of near plane was made in 1.3.0
|
|
128
|
-
// https://github.com/mapbox/mapbox-gl-js/pull/8502
|
|
129
|
-
nearZMultiplier: (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2
|
|
130
|
-
? 0.02
|
|
131
|
-
: 1 / (deck.height || 1)
|
|
132
|
-
}
|
|
133
|
-
: {
|
|
134
|
-
// use deck.gl's own default
|
|
135
|
-
nearZMultiplier: 0.1
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
function afterRender(deck, map) {
|
|
139
|
-
const { mapboxLayers, isExternal } = deck.userData;
|
|
140
|
-
if (isExternal) {
|
|
141
|
-
// Draw non-Mapbox layers
|
|
142
|
-
const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
|
|
143
|
-
const deckLayers = flatten(deck.props.layers, Boolean);
|
|
144
|
-
const hasNonMapboxLayers = deckLayers.some(layer => layer && !mapboxLayerIds.includes(layer.id));
|
|
145
|
-
let viewports = deck.getViewports();
|
|
146
|
-
const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');
|
|
147
|
-
const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
|
|
148
|
-
if (hasNonMapboxLayers || hasNonMapboxViews) {
|
|
149
|
-
if (mapboxViewportIdx >= 0) {
|
|
150
|
-
viewports = viewports.slice();
|
|
151
|
-
viewports[mapboxViewportIdx] = getViewport(deck, map, false);
|
|
152
|
-
}
|
|
153
|
-
deck._drawLayers('mapbox-repaint', {
|
|
154
|
-
viewports,
|
|
155
|
-
layerFilter: params => (!deck.props.layerFilter || deck.props.layerFilter(params)) &&
|
|
156
|
-
(params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),
|
|
157
|
-
clearCanvas: false
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// End of render cycle, clear generated viewport
|
|
162
|
-
deck.userData.currentViewport = null;
|
|
163
|
-
}
|
|
164
|
-
function onMapMove(deck, map) {
|
|
165
|
-
deck.setProps({
|
|
166
|
-
viewState: getViewState(map)
|
|
167
|
-
});
|
|
168
|
-
// Camera changed, will trigger a map repaint right after this
|
|
169
|
-
// Clear any change flag triggered by setting viewState so that deck does not request
|
|
170
|
-
// a second repaint
|
|
171
|
-
deck.needsRedraw({ clearRedrawFlags: true });
|
|
172
|
-
}
|
|
173
|
-
function updateLayers(deck) {
|
|
174
|
-
if (deck.userData.isExternal) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const layers = [];
|
|
178
|
-
let layerIndex = 0;
|
|
179
|
-
deck.userData.mapboxLayers.forEach(deckLayer => {
|
|
180
|
-
const LayerType = deckLayer.props.type;
|
|
181
|
-
const layer = new LayerType(deckLayer.props, { _offset: layerIndex++ });
|
|
182
|
-
layers.push(layer);
|
|
183
|
-
});
|
|
184
|
-
deck.setProps({ layers });
|
|
185
|
-
}
|
package/typed/index.js
DELETED
package/typed/mapbox-layer.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
|
|
2
|
-
export default class MapboxLayer {
|
|
3
|
-
/* eslint-disable no-this-before-super */
|
|
4
|
-
constructor(props) {
|
|
5
|
-
if (!props.id) {
|
|
6
|
-
throw new Error('Layer must have an unique id');
|
|
7
|
-
}
|
|
8
|
-
this.id = props.id;
|
|
9
|
-
this.type = 'custom';
|
|
10
|
-
this.renderingMode = props.renderingMode || '3d';
|
|
11
|
-
this.map = null;
|
|
12
|
-
this.deck = null;
|
|
13
|
-
this.props = props;
|
|
14
|
-
}
|
|
15
|
-
/* Mapbox custom layer methods */
|
|
16
|
-
onAdd(map, gl) {
|
|
17
|
-
this.map = map;
|
|
18
|
-
this.deck = getDeckInstance({ map, gl, deck: this.props.deck });
|
|
19
|
-
addLayer(this.deck, this);
|
|
20
|
-
}
|
|
21
|
-
onRemove() {
|
|
22
|
-
if (this.deck) {
|
|
23
|
-
removeLayer(this.deck, this);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
setProps(props) {
|
|
27
|
-
// id cannot be changed
|
|
28
|
-
Object.assign(this.props, props, { id: this.id });
|
|
29
|
-
// safe guard in case setProps is called before onAdd
|
|
30
|
-
if (this.deck) {
|
|
31
|
-
updateLayer(this.deck, this);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
render() {
|
|
35
|
-
drawLayer(this.deck, this.map, this);
|
|
36
|
-
}
|
|
37
|
-
}
|
package/typed/mapbox-overlay.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Deck, assert } from '@deck.gl/core';
|
|
2
|
-
import { getViewState } from './deck-utils';
|
|
3
|
-
/**
|
|
4
|
-
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
5
|
-
* Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
|
|
6
|
-
*/
|
|
7
|
-
export default class MapboxOverlay {
|
|
8
|
-
constructor(props) {
|
|
9
|
-
this._updateContainerSize = () => {
|
|
10
|
-
if (this._map && this._container) {
|
|
11
|
-
const { clientWidth, clientHeight } = this._map.getContainer();
|
|
12
|
-
Object.assign(this._container.style, {
|
|
13
|
-
width: `${clientWidth}px`,
|
|
14
|
-
height: `${clientHeight}px`
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
this._updateViewState = () => {
|
|
19
|
-
const deck = this._deck;
|
|
20
|
-
if (deck) {
|
|
21
|
-
// @ts-ignore (2345) map is always defined if deck is
|
|
22
|
-
deck.setProps({ viewState: getViewState(this._map) });
|
|
23
|
-
// Redraw immediately if view state has changed
|
|
24
|
-
deck.redraw();
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
this._handleMouseEvent = (event) => {
|
|
28
|
-
const deck = this._deck;
|
|
29
|
-
if (!deck) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const mockEvent = {
|
|
33
|
-
type: event.type,
|
|
34
|
-
offsetCenter: event.point,
|
|
35
|
-
srcEvent: event
|
|
36
|
-
};
|
|
37
|
-
switch (event.type) {
|
|
38
|
-
case 'click':
|
|
39
|
-
mockEvent.tapCount = 1;
|
|
40
|
-
// Hack: because we do not listen to pointer down, perform picking now
|
|
41
|
-
deck._onPointerDown(mockEvent);
|
|
42
|
-
deck._onEvent(mockEvent);
|
|
43
|
-
break;
|
|
44
|
-
case 'dblclick':
|
|
45
|
-
mockEvent.type = 'click';
|
|
46
|
-
mockEvent.tapCount = 2;
|
|
47
|
-
deck._onEvent(mockEvent);
|
|
48
|
-
break;
|
|
49
|
-
case 'mousemove':
|
|
50
|
-
mockEvent.type = 'pointermove';
|
|
51
|
-
deck._onPointerMove(mockEvent);
|
|
52
|
-
break;
|
|
53
|
-
case 'mouseout':
|
|
54
|
-
mockEvent.type = 'pointerleave';
|
|
55
|
-
deck._onPointerMove(mockEvent);
|
|
56
|
-
break;
|
|
57
|
-
default:
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
this._props = { ...props };
|
|
62
|
-
}
|
|
63
|
-
/** Update (partial) props of the underlying Deck instance. */
|
|
64
|
-
setProps(props) {
|
|
65
|
-
Object.assign(this._props, props);
|
|
66
|
-
if ('viewState' in this._props) {
|
|
67
|
-
delete this._props.viewState;
|
|
68
|
-
}
|
|
69
|
-
if (this._deck) {
|
|
70
|
-
this._deck.setProps(this._props);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/** Called when the control is added to a map */
|
|
74
|
-
onAdd(map) {
|
|
75
|
-
this._map = map;
|
|
76
|
-
/* global document */
|
|
77
|
-
const container = document.createElement('div');
|
|
78
|
-
Object.assign(container.style, {
|
|
79
|
-
position: 'absolute',
|
|
80
|
-
left: 0,
|
|
81
|
-
top: 0,
|
|
82
|
-
pointerEvents: 'none'
|
|
83
|
-
});
|
|
84
|
-
this._container = container;
|
|
85
|
-
this._deck = new Deck({
|
|
86
|
-
...this._props,
|
|
87
|
-
parent: container,
|
|
88
|
-
viewState: getViewState(map)
|
|
89
|
-
});
|
|
90
|
-
map.on('resize', this._updateContainerSize);
|
|
91
|
-
map.on('render', this._updateViewState);
|
|
92
|
-
map.on('mousemove', this._handleMouseEvent);
|
|
93
|
-
map.on('mouseout', this._handleMouseEvent);
|
|
94
|
-
map.on('click', this._handleMouseEvent);
|
|
95
|
-
map.on('dblclick', this._handleMouseEvent);
|
|
96
|
-
this._updateContainerSize();
|
|
97
|
-
return container;
|
|
98
|
-
}
|
|
99
|
-
/** Called when the control is removed from a map */
|
|
100
|
-
onRemove() {
|
|
101
|
-
const map = this._map;
|
|
102
|
-
if (map) {
|
|
103
|
-
map.off('resize', this._updateContainerSize);
|
|
104
|
-
map.off('render', this._updateViewState);
|
|
105
|
-
map.off('mousemove', this._handleMouseEvent);
|
|
106
|
-
map.off('mouseout', this._handleMouseEvent);
|
|
107
|
-
map.off('click', this._handleMouseEvent);
|
|
108
|
-
map.off('dblclick', this._handleMouseEvent);
|
|
109
|
-
}
|
|
110
|
-
this._deck?.finalize();
|
|
111
|
-
this._deck = undefined;
|
|
112
|
-
this._map = undefined;
|
|
113
|
-
this._container = undefined;
|
|
114
|
-
}
|
|
115
|
-
getDefaultPosition() {
|
|
116
|
-
return 'top-left';
|
|
117
|
-
}
|
|
118
|
-
/** Forwards the Deck.pickObject method */
|
|
119
|
-
pickObject(params) {
|
|
120
|
-
assert(this._deck);
|
|
121
|
-
return this._deck.pickObject(params);
|
|
122
|
-
}
|
|
123
|
-
/** Forwards the Deck.pickMultipleObjects method */
|
|
124
|
-
pickMultipleObjects(params) {
|
|
125
|
-
assert(this._deck);
|
|
126
|
-
return this._deck.pickMultipleObjects(params);
|
|
127
|
-
}
|
|
128
|
-
/** Forwards the Deck.pickObjects method */
|
|
129
|
-
pickObjects(params) {
|
|
130
|
-
assert(this._deck);
|
|
131
|
-
return this._deck.pickObjects(params);
|
|
132
|
-
}
|
|
133
|
-
/** Remove from map and releases all resources */
|
|
134
|
-
finalize() {
|
|
135
|
-
if (this._map) {
|
|
136
|
-
this._map.removeControl(this);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|