@deck.gl/mapbox 8.8.25 → 8.8.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +29 -5
- package/dist/es5/deck-utils.js +22 -3
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/esm/deck-utils.js +23 -1
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/deck-utils.ts +26 -5
- package/typed/deck-utils.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -778,6 +778,7 @@ function getDeckInstance({
|
|
|
778
778
|
|
|
779
779
|
|
|
780
780
|
const customRender = deck?.props._customRender;
|
|
781
|
+
const onLoad = deck?.props.onLoad;
|
|
781
782
|
const deckProps = getInterleavedProps({ ...deck?.props,
|
|
782
783
|
_customRender: () => {
|
|
783
784
|
map.triggerRepaint(); // customRender may be subscribed by DeckGL React component to update child props
|
|
@@ -791,18 +792,26 @@ function getDeckInstance({
|
|
|
791
792
|
let deckInstance;
|
|
792
793
|
|
|
793
794
|
if (!deck || deck.props.gl === gl) {
|
|
794
|
-
// deck
|
|
795
|
-
//
|
|
795
|
+
// If deck isn't defined (Internal MapboxLayer use case),
|
|
796
|
+
// or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),
|
|
797
|
+
// block deck from setting the canvas size, and use the map's viewState to drive deck.
|
|
798
|
+
// Otherwise, we use deck's viewState to drive the map.
|
|
796
799
|
Object.assign(deckProps, {
|
|
797
800
|
gl,
|
|
798
801
|
width: null,
|
|
799
802
|
height: null,
|
|
800
803
|
touchAction: 'unset',
|
|
801
804
|
viewState: getViewState(map)
|
|
802
|
-
});
|
|
803
|
-
// Otherwise (pure JS use case), we use the map's viewState to drive deck.
|
|
805
|
+
});
|
|
804
806
|
|
|
805
|
-
|
|
807
|
+
if (deck?.isInitialized) {
|
|
808
|
+
watchMapMove(deck, map);
|
|
809
|
+
} else {
|
|
810
|
+
deckProps.onLoad = () => {
|
|
811
|
+
onLoad?.();
|
|
812
|
+
watchMapMove(deckInstance, map);
|
|
813
|
+
};
|
|
814
|
+
}
|
|
806
815
|
}
|
|
807
816
|
|
|
808
817
|
if (deck) {
|
|
@@ -825,6 +834,21 @@ function getDeckInstance({
|
|
|
825
834
|
});
|
|
826
835
|
return deckInstance;
|
|
827
836
|
}
|
|
837
|
+
|
|
838
|
+
function watchMapMove(deck, map) {
|
|
839
|
+
const _handleMapMove = () => {
|
|
840
|
+
if (deck.isInitialized) {
|
|
841
|
+
// call view state methods
|
|
842
|
+
onMapMove(deck, map);
|
|
843
|
+
} else {
|
|
844
|
+
// deregister itself when deck is finalized
|
|
845
|
+
map.off('move', _handleMapMove);
|
|
846
|
+
}
|
|
847
|
+
};
|
|
848
|
+
|
|
849
|
+
map.on('move', _handleMapMove);
|
|
850
|
+
}
|
|
851
|
+
|
|
828
852
|
function getInterleavedProps(currProps) {
|
|
829
853
|
const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
|
|
830
854
|
const nextProps = { ...currProps,
|
package/dist/es5/deck-utils.js
CHANGED
|
@@ -33,6 +33,7 @@ function getDeckInstance(_ref) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
var customRender = deck === null || deck === void 0 ? void 0 : deck.props._customRender;
|
|
36
|
+
var onLoad = deck === null || deck === void 0 ? void 0 : deck.props.onLoad;
|
|
36
37
|
var deckProps = getInterleavedProps(_objectSpread(_objectSpread({}, deck === null || deck === void 0 ? void 0 : deck.props), {}, {
|
|
37
38
|
_customRender: function _customRender() {
|
|
38
39
|
map.triggerRepaint();
|
|
@@ -49,9 +50,15 @@ function getDeckInstance(_ref) {
|
|
|
49
50
|
touchAction: 'unset',
|
|
50
51
|
viewState: getViewState(map)
|
|
51
52
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
|
|
54
|
+
if (deck !== null && deck !== void 0 && deck.isInitialized) {
|
|
55
|
+
watchMapMove(deck, map);
|
|
56
|
+
} else {
|
|
57
|
+
deckProps.onLoad = function () {
|
|
58
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
59
|
+
watchMapMove(deckInstance, map);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
if (deck) {
|
|
@@ -75,6 +82,18 @@ function getDeckInstance(_ref) {
|
|
|
75
82
|
return deckInstance;
|
|
76
83
|
}
|
|
77
84
|
|
|
85
|
+
function watchMapMove(deck, map) {
|
|
86
|
+
var _handleMapMove = function _handleMapMove() {
|
|
87
|
+
if (deck.isInitialized) {
|
|
88
|
+
onMapMove(deck, map);
|
|
89
|
+
} else {
|
|
90
|
+
map.off('move', _handleMapMove);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
map.on('move', _handleMapMove);
|
|
95
|
+
}
|
|
96
|
+
|
|
78
97
|
function getInterleavedProps(currProps) {
|
|
79
98
|
var useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
|
|
80
99
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","userData","isExternal","Deck","finalize","mapboxLayers","Set","mapboxVersion","getMapboxVersion","isInitialized","afterRender","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","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 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\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deckInstance, map));\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n return {\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\nfunction 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 const {mapboxVersion} = deck.userData as UserData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\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":["getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","onLoad","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","isInitialized","watchMapMove","setProps","userData","isExternal","Deck","on","finalize","mapboxLayers","Set","mapboxVersion","getMapboxVersion","afterRender","_handleMapMove","onMapMove","off","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","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 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\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n return {\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\nfunction 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 const {mapboxVersion} = deck.userData as UserData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\n );\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
package/dist/esm/deck-utils.js
CHANGED
|
@@ -9,6 +9,7 @@ export function getDeckInstance({
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
const customRender = deck === null || deck === void 0 ? void 0 : deck.props._customRender;
|
|
12
|
+
const onLoad = deck === null || deck === void 0 ? void 0 : deck.props.onLoad;
|
|
12
13
|
const deckProps = getInterleavedProps({ ...(deck === null || deck === void 0 ? void 0 : deck.props),
|
|
13
14
|
_customRender: () => {
|
|
14
15
|
map.triggerRepaint();
|
|
@@ -25,7 +26,15 @@ export function getDeckInstance({
|
|
|
25
26
|
touchAction: 'unset',
|
|
26
27
|
viewState: getViewState(map)
|
|
27
28
|
});
|
|
28
|
-
|
|
29
|
+
|
|
30
|
+
if (deck !== null && deck !== void 0 && deck.isInitialized) {
|
|
31
|
+
watchMapMove(deck, map);
|
|
32
|
+
} else {
|
|
33
|
+
deckProps.onLoad = () => {
|
|
34
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
35
|
+
watchMapMove(deckInstance, map);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
if (deck) {
|
|
@@ -48,6 +57,19 @@ export function getDeckInstance({
|
|
|
48
57
|
});
|
|
49
58
|
return deckInstance;
|
|
50
59
|
}
|
|
60
|
+
|
|
61
|
+
function watchMapMove(deck, map) {
|
|
62
|
+
const _handleMapMove = () => {
|
|
63
|
+
if (deck.isInitialized) {
|
|
64
|
+
onMapMove(deck, map);
|
|
65
|
+
} else {
|
|
66
|
+
map.off('move', _handleMapMove);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
map.on('move', _handleMapMove);
|
|
71
|
+
}
|
|
72
|
+
|
|
51
73
|
export function getInterleavedProps(currProps) {
|
|
52
74
|
const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
|
|
53
75
|
const nextProps = { ...currProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["Deck","WebMercatorViewport","MapView","_flatten","flatten","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","userData","isExternal","finalize","mapboxLayers","Set","mapboxVersion","getMapboxVersion","isInitialized","afterRender","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","x","y","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","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 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\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deckInstance, map));\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n return {\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\nfunction 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 const {mapboxVersion} = deck.userData as UserData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\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","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","onLoad","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","isInitialized","watchMapMove","setProps","userData","isExternal","on","finalize","mapboxLayers","Set","mapboxVersion","getMapboxVersion","afterRender","_handleMapMove","onMapMove","off","currProps","useDevicePixels","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","x","y","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"AAAA,SAAQA,IAAR,EAAcC,mBAAd,EAAmCC,OAAnC,EAA4CC,QAAQ,IAAIC,OAAxD,QAAsE,eAAtE;AAcA,OAAO,SAASC,eAAT,CAAyB;AAC9BC,EAAAA,GAD8B;AAE9BC,EAAAA,EAF8B;AAG9BC,EAAAA;AAH8B,CAAzB,EAQE;AAEP,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAGD,QAAMC,YAAY,GAAGF,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYC,aAAjC;AACA,QAAMC,MAAM,GAAGL,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYE,MAA3B;AAEA,QAAMC,SAAS,GAAGC,mBAAmB,CAAC,EACpC,IAAGP,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAT,CADoC;AAEpCC,IAAAA,aAAa,EAAE,MAAM;AACnBN,MAAAA,GAAG,CAACU,cAAJ;AAKAN,MAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAG,EAAH,CAAZ;AACD;AATmC,GAAD,CAArC;AAYA,MAAIO,YAAJ;;AAEA,MAAI,CAACT,IAAD,IAASA,IAAI,CAACG,KAAL,CAAWJ,EAAX,KAAkBA,EAA/B,EAAmC;AAKjCW,IAAAA,MAAM,CAACC,MAAP,CAAcL,SAAd,EAAyB;AACvBP,MAAAA,EADuB;AAEvBa,MAAAA,KAAK,EAAE,IAFgB;AAGvBC,MAAAA,MAAM,EAAE,IAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AALA,KAAzB;;AAOA,QAAIE,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEiB,aAAV,EAAyB;AACvBC,MAAAA,YAAY,CAAClB,IAAD,EAAOF,GAAP,CAAZ;AACD,KAFD,MAEO;AACLQ,MAAAA,SAAS,CAACD,MAAV,GAAmB,MAAM;AACvBA,QAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM;AACNa,QAAAA,YAAY,CAACT,YAAD,EAAeX,GAAf,CAAZ;AACD,OAHD;AAID;AACF;;AAED,MAAIE,IAAJ,EAAU;AACRS,IAAAA,YAAY,GAAGT,IAAf;AACAA,IAAAA,IAAI,CAACmB,QAAL,CAAcb,SAAd;AACCN,IAAAA,IAAI,CAACoB,QAAN,CAA4BC,UAA5B,GAAyC,IAAzC;AACD,GAJD,MAIO;AACLZ,IAAAA,YAAY,GAAG,IAAIjB,IAAJ,CAASc,SAAT,CAAf;AACAR,IAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrBb,MAAAA,YAAY,CAACc,QAAb;AACAzB,MAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD,KAHD;AAID;;AAEAQ,EAAAA,YAAY,CAACW,QAAd,CAAoCI,YAApC,GAAmD,IAAIC,GAAJ,EAAnD;AACChB,EAAAA,YAAY,CAACW,QAAd,CAAoCM,aAApC,GAAoDC,gBAAgB,CAAC7B,GAAD,CAApE;AACAA,EAAAA,GAAG,CAACG,MAAJ,GAAaQ,YAAb;AACAX,EAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrB,QAAIb,YAAY,CAACQ,aAAjB,EAAgCW,WAAW,CAACnB,YAAD,EAAeX,GAAf,CAAX;AACjC,GAFD;AAIA,SAAOW,YAAP;AACD;;AAED,SAASS,YAAT,CAAsBlB,IAAtB,EAAkCF,GAAlC,EAAqE;AACnE,QAAM+B,cAAc,GAAG,MAAM;AAC3B,QAAI7B,IAAI,CAACiB,aAAT,EAAwB;AAEtBa,MAAAA,SAAS,CAAC9B,IAAD,EAAOF,GAAP,CAAT;AACD,KAHD,MAGO;AAELA,MAAAA,GAAG,CAACiC,GAAJ,CAAQ,MAAR,EAAgBF,cAAhB;AACD;AACF,GARD;;AASA/B,EAAAA,GAAG,CAACwB,EAAJ,CAAO,MAAP,EAAeO,cAAf;AACD;;AAED,OAAO,SAAStB,mBAAT,CAA6ByB,SAA7B,EAAmD;AACxD,QAAMC,eAAe,GAAG,qBAAqBD,SAArB,GAAiCA,SAAS,CAACC,eAA3C,GAA6D,IAArF;AAEA,QAAMC,SAAoB,GAAG,EAC3B,GAAGF,SADwB;AAE3BC,IAAAA,eAF2B;AAI3BE,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,IADD;AAEVC,MAAAA,SAAS,EAAE,IAFD;AAGVC,MAAAA,KAAK,EAAE,IAHG;AAIVC,MAAAA,SAAS,EAAE,kBAJD;AAKVC,MAAAA,iBAAiB,EAAE,IALT;AAMVC,MAAAA,SAAS,KANC;AAOVC,MAAAA,aAAa,OAPH;AAQV,SAAGV,SAAS,CAACG;AARH,KAJe;AAc3BQ,IAAAA,KAAK,EAAEX,SAAS,CAACW,KAAV,IAAmB,CAAC,IAAIjD,OAAJ,CAAY;AAACkD,MAAAA,EAAE,EAAE;AAAL,KAAZ,CAAD;AAdC,GAA7B;AAiBA,SAAOV,SAAP;AACD;AAED,OAAO,SAASW,QAAT,CAAkB7C,IAAlB,EAA8B8C,KAA9B,EAA6D;AACjE9C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCuB,GAAzC,CAA6CD,KAA7C;AACAE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;AAED,OAAO,SAASiD,WAAT,CAAqBjD,IAArB,EAAiC8C,KAAjC,EAAgE;AACpE9C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyC0B,MAAzC,CAAgDJ,KAAhD;AACAE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;AAED,OAAO,SAASmD,WAAT,CAAqBnD,IAArB,EAAiC8C,KAAjC,EAAgE;AACrEE,EAAAA,YAAY,CAAChD,IAAD,CAAZ;AACD;AAED,OAAO,SAASoD,SAAT,CAAmBpD,IAAnB,EAA+BF,GAA/B,EAAyCgD,KAAzC,EAAwE;AAC7E,MAAI;AAACO,IAAAA;AAAD,MAAoBrD,IAAI,CAACoB,QAA7B;AACA,MAAIkC,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,CAAC;AAACZ,MAAAA,KAAK,EAAEa;AAAR,KAAD,KAAwBb,KAAK,CAACF,EAAN,KAAae,SAAS,CAACf,EAF3B;AAGjCU,IAAAA,UAHiC;AAIjCM,IAAAA,WAAW,EAAE;AAJoB,GAAnC;AAMD;AAED,OAAO,SAAS5C,YAAT,CAAsBlB,GAAtB,EAQL;AACA,QAAM;AAAC+D,IAAAA,GAAD;AAAMC,IAAAA;AAAN,MAAahE,GAAG,CAACiE,SAAJ,EAAnB;AACA,SAAO;AAGLC,IAAAA,SAAS,EAAG,CAACH,GAAG,GAAG,GAAP,IAAc,GAAf,GAAsB,GAH5B;AAILI,IAAAA,QAAQ,EAAEH,GAJL;AAKLI,IAAAA,IAAI,EAAEpE,GAAG,CAACqE,OAAJ,EALD;AAMLC,IAAAA,OAAO,EAAEtE,GAAG,CAACuE,UAAJ,EANJ;AAOLC,IAAAA,KAAK,EAAExE,GAAG,CAACyE,QAAJ,EAPF;AAQLC,IAAAA,OAAO,EAAE1E,GAAG,CAAC2E,UAAJ,EARJ;AASLC,IAAAA,MAAM,EAAE5E,GAAG,CAAC6E,oBAAJ;AATH,GAAP;AAWD;;AAED,SAAShD,gBAAT,CAA0B7B,GAA1B,EAAoE;AAElE,MAAI8E,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAG,CAAZ;AAEA,QAAMC,OAAe,GAAGhF,GAAG,CAACgF,OAA5B;;AACA,MAAIA,OAAJ,EAAa;AACX,KAACF,KAAD,EAAQC,KAAR,IAAiBC,OAAO,CAACC,KAAR,CAAc,GAAd,EAAmBC,KAAnB,CAAyB,CAAzB,EAA4B,CAA5B,EAA+BlF,GAA/B,CAAmCmF,MAAnC,CAAjB;AACD;;AACD,SAAO;AAACL,IAAAA,KAAD;AAAQC,IAAAA;AAAR,GAAP;AACD;;AAED,SAAStB,WAAT,CAAqBvD,IAArB,EAAiCF,GAAjC,EAA2CoF,mBAAmB,GAAG,IAAjE,EAA4F;AAC1F,QAAM;AAACxD,IAAAA;AAAD,MAAkB1B,IAAI,CAACoB,QAA7B;AAEA,SAAO,IAAI3B,mBAAJ,CACLiB,MAAM,CAACC,MAAP,CACE;AACEiC,IAAAA,EAAE,EAAE,QADN;AAEEuC,IAAAA,CAAC,EAAE,CAFL;AAGEC,IAAAA,CAAC,EAAE,CAHL;AAIExE,IAAAA,KAAK,EAAEZ,IAAI,CAACY,KAJd;AAKEC,IAAAA,MAAM,EAAEb,IAAI,CAACa;AALf,GADF,EAQEG,YAAY,CAAClB,GAAD,CARd,EASEoF,mBAAmB,GACf;AAIEG,IAAAA,eAAe,EACZ3D,aAAa,CAACkD,KAAd,KAAwB,CAAxB,IAA6BlD,aAAa,CAACmD,KAAd,IAAuB,CAArD,IAA2DnD,aAAa,CAACkD,KAAd,IAAuB,CAAlF,GACI,IADJ,GAEI,KAAK5E,IAAI,CAACa,MAAL,IAAe,CAApB;AAPR,GADe,GAUf;AAEEwE,IAAAA,eAAe,EAAE;AAFnB,GAnBN,CADK,CAAP;AA0BD;;AAED,SAASzD,WAAT,CAAqB5B,IAArB,EAAiCF,GAAjC,EAAiD;AAC/C,QAAM;AAAC0B,IAAAA,YAAD;AAAeH,IAAAA;AAAf,MAA6BrB,IAAI,CAACoB,QAAxC;;AAEA,MAAIC,UAAJ,EAAgB;AAEd,UAAMiE,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWhE,YAAX,EAAyBsB,KAAK,IAAIA,KAAK,CAACF,EAAxC,CAAvB;AACA,UAAM6C,UAAU,GAAG7F,OAAO,CAACI,IAAI,CAACG,KAAL,CAAWuF,MAAZ,EAAoBC,OAApB,CAA1B;AACA,UAAMC,kBAAkB,GAAGH,UAAU,CAACI,IAAX,CACzB/C,KAAK,IAAIA,KAAK,IAAI,CAACwC,cAAc,CAACQ,QAAf,CAAwBhD,KAAK,CAACF,EAA9B,CADM,CAA3B;AAGA,QAAIa,SAAS,GAAGzD,IAAI,CAAC+F,YAAL,EAAhB;AACA,UAAMC,iBAAiB,GAAGvC,SAAS,CAACwC,SAAV,CAAoBC,EAAE,IAAIA,EAAE,CAACtD,EAAH,KAAU,QAApC,CAA1B;AACA,UAAMuD,iBAAiB,GAAG1C,SAAS,CAAC2C,MAAV,GAAmB,CAAnB,IAAwBJ,iBAAiB,GAAG,CAAtE;;AAEA,QAAIJ,kBAAkB,IAAIO,iBAA1B,EAA6C;AAC3C,UAAIH,iBAAiB,IAAI,CAAzB,EAA4B;AAC1BvC,QAAAA,SAAS,GAAGA,SAAS,CAACuB,KAAV,EAAZ;AACAvB,QAAAA,SAAS,CAACuC,iBAAD,CAAT,GAA+BzC,WAAW,CAACvD,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAA1C;AACD;;AAEDE,MAAAA,IAAI,CAACwD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SADiC;AAEjCC,QAAAA,WAAW,EAAE2C,MAAM,IACjB,CAAC,CAACrG,IAAI,CAACG,KAAL,CAAWuD,WAAZ,IAA2B1D,IAAI,CAACG,KAAL,CAAWuD,WAAX,CAAuB2C,MAAvB,CAA5B,MACCA,MAAM,CAACC,QAAP,CAAgB1D,EAAhB,KAAuB,QAAvB,IAAmC,CAAC0C,cAAc,CAACQ,QAAf,CAAwBO,MAAM,CAACvD,KAAP,CAAaF,EAArC,CADrC,CAH+B;AAKjCgB,QAAAA,WAAW,EAAE;AALoB,OAAnC;AAOD;AACF;;AAGA5D,EAAAA,IAAI,CAACoB,QAAN,CAA4BiC,eAA5B,GAA8C,IAA9C;AACD;;AAED,SAASvB,SAAT,CAAmB9B,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,CAACuG,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAASxD,YAAT,CAAsBhD,IAAtB,EAAwC;AACtC,MAAKA,IAAI,CAACoB,QAAN,CAA4BC,UAAhC,EAA4C;AAC1C;AACD;;AAED,QAAMqE,MAAe,GAAG,EAAxB;AACC1F,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCiF,OAAzC,CAAiD9C,SAAS,IAAI;AAC5D,UAAM+C,SAAS,GAAG/C,SAAS,CAACxD,KAAV,CAAgBwG,IAAlC;AACA,UAAM7D,KAAK,GAAG,IAAI4D,SAAJ,CAAc/C,SAAS,CAACxD,KAAxB,CAAd;AACAuF,IAAAA,MAAM,CAACkB,IAAP,CAAY9D,KAAZ;AACD,GAJD;AAKA9C,EAAAA,IAAI,CAACmB,QAAL,CAAc;AAACuE,IAAAA;AAAD,GAAd;AACD","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport 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\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n deckInstance.finalize();\n map.__deck = null;\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;\n\n const nextProps: DeckProps = {\n ...currProps,\n useDevicePixels,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n return {\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\nfunction 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 const {mapboxVersion} = deck.userData as UserData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\n );\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
package/dist.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("deck")):"function"==typeof define&&define.amd?define(["deck"],t):"object"==typeof exports?exports.deck=t(require("deck")):e.deck=t(e.deck)}(window,(function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}([function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},function(t,r){t.exports=e},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}},function(e,t,r){var n=r(7),i=r(8),o=r(9);e.exports=function(e,t){return n(e)||i(e,t)||o()}},function(e,t,r){var n=r(10);e.exports=function(e,t){if(null==e)return{};var r,i,o=n(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}},function(e,t,r){var n=r(11),i=globalThis.deck||{};if(!i.Layer)throw new Error("@deck.gl/core is not found");e.exports=Object.assign(i,n)},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t){e.exports=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}},function(e,t,r){"use strict";r.r(t);var n=r(2),i=r.n(n),o=r(3),a=r.n(o),s=r(0),c=r.n(s),u=r(4),l=r.n(u),d=r(1);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){c()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function v(e){var t=e.map,r=e.gl,n=e.deck;if(t.__deck)return t.__deck;var i,o=null==n?void 0:n.props._customRender,a=h(f(f({},null==n?void 0:n.props),{},{_customRender:function(){t.triggerRepaint(),null==o||o("")}}));return n&&n.props.gl!==r||(Object.assign(a,{gl:r,width:null,height:null,touchAction:"unset",viewState:y(t)}),t.on("move",(function(){return function(e,t){e.setProps({viewState:y(t)}),e.needsRedraw({clearRedrawFlags:!0})}(i,t)}))),n?(i=n,n.setProps(a),n.userData.isExternal=!0):(i=new d.Deck(a),t.on("remove",(function(){i.finalize(),t.__deck=null}))),i.userData.mapboxLayers=new Set,i.userData.mapboxVersion=function(e){var t=0,r=0,n=e.version;if(n){var i=n.split(".").slice(0,2).map(Number),o=l()(i,2);t=o[0],r=o[1]}return{major:t,minor:r}}(t),t.__deck=i,t.on("render",(function(){i.isInitialized&&function(e,t){var r=e.userData,n=r.mapboxLayers;if(r.isExternal){var i=Array.from(n,(function(e){return e.id})),o=Object(d._flatten)(e.props.layers,Boolean).some((function(e){return e&&!i.includes(e.id)})),a=e.getViewports(),s=a.findIndex((function(e){return"mapbox"===e.id})),c=a.length>1||s<0;(o||c)&&(s>=0&&((a=a.slice())[s]=b(e,t,!1)),e._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(t){return(!e.props.layerFilter||e.props.layerFilter(t))&&("mapbox"!==t.viewport.id||!i.includes(t.layer.id))},clearCanvas:!1}))}e.userData.currentViewport=null}(i,t)})),i}function h(e){var t=!("useDevicePixels"in e)||e.useDevicePixels;return f(f({},e),{},{useDevicePixels:t,parameters:f({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},e.parameters),views:e.views||[new d.MapView({id:"mapbox"})]})}function y(e){var t=e.getCenter();return{longitude:(t.lng+540)%360-180,latitude:t.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch(),padding:e.getPadding(),repeat:e.getRenderWorldCopies()}}function b(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.userData,i=n.mapboxVersion;return new d.WebMercatorViewport(Object.assign({id:"mapbox",x:0,y:0,width:e.width,height:e.height},y(t),r?{nearZMultiplier:1===i.major&&i.minor>=3||i.major>=2?.02:1/(e.height||1)}:{nearZMultiplier:.1}))}function _(e){if(!e.userData.isExternal){var t=[];e.userData.mapboxLayers.forEach((function(e){var r=new(0,e.props.type)(e.props);t.push(r)})),e.setProps({layers:t})}}var m=function(){function e(t){if(i()(this,e),c()(this,"id",void 0),c()(this,"type",void 0),c()(this,"renderingMode",void 0),c()(this,"map",void 0),c()(this,"deck",void 0),c()(this,"props",void 0),!t.id)throw new Error("Layer must have an unique id");this.id=t.id,this.type="custom",this.renderingMode=t.renderingMode||"3d",this.map=null,this.deck=null,this.props=t}return a()(e,[{key:"onAdd",value:function(e,t){var r,n;this.map=e,this.deck=v({map:e,gl:t,deck:this.props.deck}),r=this.deck,n=this,r.userData.mapboxLayers.add(n),_(r)}},{key:"onRemove",value:function(){var e,t;this.deck&&(e=this.deck,t=this,e.userData.mapboxLayers.delete(t),_(e))}},{key:"setProps",value:function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&_(this.deck)}},{key:"render",value:function(){var e,t,r,n,i;e=this.deck,t=this.map,r=this,n=e.userData.currentViewport,i=!1,n||(n=b(e,t,!0),e.userData.currentViewport=n,i=!0),e.isInitialized&&e._drawLayers("mapbox-repaint",{viewports:[n],layerFilter:function(e){var t=e.layer;return r.id===t.id},clearStack:i,clearCanvas:!1})}}]),e}(),g=r(5),k=r.n(g);function O(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return w(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return w(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function j(e,t,r,n){if(e&&t&&e.style&&e.style._loaded){var i=Object(d._flatten)(n,Boolean);if(r!==n){var o,a=Object(d._flatten)(r,Boolean),s=new Set(a.map((function(e){return e.id}))),c=O(i);try{for(c.s();!(o=c.n()).done;){var u=o.value;s.delete(u.id)}}catch(e){c.e(e)}finally{c.f()}var l,p=O(s);try{for(p.s();!(l=p.n()).done;){var f=l.value;e.getLayer(f)&&e.removeLayer(f)}}catch(e){p.e(e)}finally{p.f()}}var v,h=O(i);try{for(h.s();!(v=h.n()).done;){var y=v.value,b=e.getLayer(y.id);b?b.implementation.setProps(y.props):e.addLayer(new m({id:y.id,deck:t}),y.props.beforeId)}}catch(e){h.e(e)}finally{h.f()}var _,g=e.style._order,k={},w=O(i);try{for(w.s();!(_=w.n()).done;){var j=_.value,x=j.props.beforeId;x&&g.includes(x)||(x="__UNDEFINED__"),k[x]=k[x]||[],k[x].push(j.id)}}catch(e){w.e(e)}finally{w.f()}for(var P in k)for(var E=k[P],S="__UNDEFINED__"===P?g.length:g.indexOf(P),D="__UNDEFINED__"===P?void 0:P,M=E.length-1;M>=0;M--){var C=E[M],A=g.indexOf(C);A!==S-1&&(e.moveLayer(C,D),A>S&&S++),S--,D=C}}}var x=["interleaved"];function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){c()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=function(){function e(t){var r=this;i()(this,e),c()(this,"_props",void 0),c()(this,"_deck",void 0),c()(this,"_map",void 0),c()(this,"_container",void 0),c()(this,"_interleaved",void 0),c()(this,"_handleStyleChange",(function(){j(r._map,r._deck,r._props.layers,r._props.layers)})),c()(this,"_updateContainerSize",(function(){if(r._map&&r._container){var e=r._map.getContainer(),t=e.clientWidth,n=e.clientHeight;Object.assign(r._container.style,{width:"".concat(t,"px"),height:"".concat(n,"px")})}})),c()(this,"_updateViewState",(function(){var e=r._deck;e&&(e.setProps({viewState:y(r._map)}),e.redraw())})),c()(this,"_handleMouseEvent",(function(e){var t=r._deck;if(t){var n={type:e.type,offsetCenter:e.point,srcEvent:e};switch(e.type){case"click":n.tapCount=1,t._onPointerDown(n),t._onEvent(n);break;case"dblclick":n.type="click",n.tapCount=2,t._onEvent(n);break;case"mousemove":n.type="pointermove",t._onPointerMove(n);break;case"mouseout":n.type="pointerleave",t._onPointerMove(n);break;default:return}}}));var n=t.interleaved,o=void 0!==n&&n,a=k()(t,x);this._interleaved=o,this._props=a}return a()(e,[{key:"setProps",value:function(e){this._interleaved&&e.layers&&j(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,e),this._deck&&this._deck.setProps(this._interleaved?h(this._props):this._props)}},{key:"onAdd",value:function(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)}},{key:"_onAddOverlaid",value:function(e){var t=document.createElement("div");return Object.assign(t.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=t,this._deck=new d.Deck(E(E({},this._props),{},{parent:t,viewState:y(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),t}},{key:"_onAddInterleaved",value:function(e){return this._deck=v({map:e,gl:e.painter.context.gl,deck:new d.Deck(E(E({},this._props),{},{gl:e.painter.context.gl}))}),e.on("styledata",this._handleStyleChange),j(e,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var e,t=this._map;t&&(this._interleaved?this._onRemoveInterleaved(t):this._onRemoveOverlaid(t)),null===(e=this._deck)||void 0===e||e.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(e){e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(e){e.off("styledata",this._handleStyleChange),j(e,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(e){return Object(d.assert)(this._deck),this._deck.pickObject(e)}},{key:"pickMultipleObjects",value:function(e){return Object(d.assert)(this._deck),this._deck.pickMultipleObjects(e)}},{key:"pickObjects",value:function(e){return Object(d.assert)(this._deck),this._deck.pickObjects(e)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),e}();r.d(t,"MapboxLayer",(function(){return m})),r.d(t,"MapboxOverlay",(function(){return S}))}])}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("deck")):"function"==typeof define&&define.amd?define(["deck"],t):"object"==typeof exports?exports.deck=t(require("deck")):e.deck=t(e.deck)}(window,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(t,n){t.exports=e},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,n){var r=n(7),i=n(8),o=n(9);e.exports=function(e,t){return r(e)||i(e,t)||o()}},function(e,t,n){var r=n(10);e.exports=function(e,t){if(null==e)return{};var n,i,o=r(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}},function(e,t,n){var r=n(11),i=globalThis.deck||{};if(!i.Layer)throw new Error("@deck.gl/core is not found");e.exports=Object.assign(i,r)},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}},function(e,t,n){"use strict";n.r(t);var r=n(2),i=n.n(r),o=n(3),a=n.n(o),s=n(0),c=n.n(s),u=n(4),l=n.n(u),d=n(1);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function v(e){var t=e.map,n=e.gl,r=e.deck;if(t.__deck)return t.__deck;var i,o=null==r?void 0:r.props._customRender,a=null==r?void 0:r.props.onLoad,s=y(f(f({},null==r?void 0:r.props),{},{_customRender:function(){t.triggerRepaint(),null==o||o("")}}));return r&&r.props.gl!==n||(Object.assign(s,{gl:n,width:null,height:null,touchAction:"unset",viewState:b(t)}),null!=r&&r.isInitialized?h(r,t):s.onLoad=function(){null==a||a(),h(i,t)}),r?(i=r,r.setProps(s),r.userData.isExternal=!0):(i=new d.Deck(s),t.on("remove",(function(){i.finalize(),t.__deck=null}))),i.userData.mapboxLayers=new Set,i.userData.mapboxVersion=function(e){var t=0,n=0,r=e.version;if(r){var i=r.split(".").slice(0,2).map(Number),o=l()(i,2);t=o[0],n=o[1]}return{major:t,minor:n}}(t),t.__deck=i,t.on("render",(function(){i.isInitialized&&function(e,t){var n=e.userData,r=n.mapboxLayers;if(n.isExternal){var i=Array.from(r,(function(e){return e.id})),o=Object(d._flatten)(e.props.layers,Boolean).some((function(e){return e&&!i.includes(e.id)})),a=e.getViewports(),s=a.findIndex((function(e){return"mapbox"===e.id})),c=a.length>1||s<0;(o||c)&&(s>=0&&((a=a.slice())[s]=_(e,t,!1)),e._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(t){return(!e.props.layerFilter||e.props.layerFilter(t))&&("mapbox"!==t.viewport.id||!i.includes(t.layer.id))},clearCanvas:!1}))}e.userData.currentViewport=null}(i,t)})),i}function h(e,t){t.on("move",(function n(){e.isInitialized?function(e,t){e.setProps({viewState:b(t)}),e.needsRedraw({clearRedrawFlags:!0})}(e,t):t.off("move",n)}))}function y(e){var t=!("useDevicePixels"in e)||e.useDevicePixels;return f(f({},e),{},{useDevicePixels:t,parameters:f({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},e.parameters),views:e.views||[new d.MapView({id:"mapbox"})]})}function b(e){var t=e.getCenter();return{longitude:(t.lng+540)%360-180,latitude:t.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch(),padding:e.getPadding(),repeat:e.getRenderWorldCopies()}}function _(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=e.userData,i=r.mapboxVersion;return new d.WebMercatorViewport(Object.assign({id:"mapbox",x:0,y:0,width:e.width,height:e.height},b(t),n?{nearZMultiplier:1===i.major&&i.minor>=3||i.major>=2?.02:1/(e.height||1)}:{nearZMultiplier:.1}))}function m(e){if(!e.userData.isExternal){var t=[];e.userData.mapboxLayers.forEach((function(e){var n=new(0,e.props.type)(e.props);t.push(n)})),e.setProps({layers:t})}}var g=function(){function e(t){if(i()(this,e),c()(this,"id",void 0),c()(this,"type",void 0),c()(this,"renderingMode",void 0),c()(this,"map",void 0),c()(this,"deck",void 0),c()(this,"props",void 0),!t.id)throw new Error("Layer must have an unique id");this.id=t.id,this.type="custom",this.renderingMode=t.renderingMode||"3d",this.map=null,this.deck=null,this.props=t}return a()(e,[{key:"onAdd",value:function(e,t){var n,r;this.map=e,this.deck=v({map:e,gl:t,deck:this.props.deck}),n=this.deck,r=this,n.userData.mapboxLayers.add(r),m(n)}},{key:"onRemove",value:function(){var e,t;this.deck&&(e=this.deck,t=this,e.userData.mapboxLayers.delete(t),m(e))}},{key:"setProps",value:function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&m(this.deck)}},{key:"render",value:function(){var e,t,n,r,i;e=this.deck,t=this.map,n=this,r=e.userData.currentViewport,i=!1,r||(r=_(e,t,!0),e.userData.currentViewport=r,i=!0),e.isInitialized&&e._drawLayers("mapbox-repaint",{viewports:[r],layerFilter:function(e){var t=e.layer;return n.id===t.id},clearStack:i,clearCanvas:!1})}}]),e}(),k=n(5),O=n.n(k);function w(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return j(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function x(e,t,n,r){if(e&&t&&e.style&&e.style._loaded){var i=Object(d._flatten)(r,Boolean);if(n!==r){var o,a=Object(d._flatten)(n,Boolean),s=new Set(a.map((function(e){return e.id}))),c=w(i);try{for(c.s();!(o=c.n()).done;){var u=o.value;s.delete(u.id)}}catch(e){c.e(e)}finally{c.f()}var l,p=w(s);try{for(p.s();!(l=p.n()).done;){var f=l.value;e.getLayer(f)&&e.removeLayer(f)}}catch(e){p.e(e)}finally{p.f()}}var v,h=w(i);try{for(h.s();!(v=h.n()).done;){var y=v.value,b=e.getLayer(y.id);b?b.implementation.setProps(y.props):e.addLayer(new g({id:y.id,deck:t}),y.props.beforeId)}}catch(e){h.e(e)}finally{h.f()}var _,m=e.style._order,k={},O=w(i);try{for(O.s();!(_=O.n()).done;){var j=_.value,x=j.props.beforeId;x&&m.includes(x)||(x="__UNDEFINED__"),k[x]=k[x]||[],k[x].push(j.id)}}catch(e){O.e(e)}finally{O.f()}for(var P in k)for(var E=k[P],S="__UNDEFINED__"===P?m.length:m.indexOf(P),D="__UNDEFINED__"===P?void 0:P,M=E.length-1;M>=0;M--){var I=E[M],C=m.indexOf(I);C!==S-1&&(e.moveLayer(I,D),C>S&&S++),S--,D=I}}}var P=["interleaved"];function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function S(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var D=function(){function e(t){var n=this;i()(this,e),c()(this,"_props",void 0),c()(this,"_deck",void 0),c()(this,"_map",void 0),c()(this,"_container",void 0),c()(this,"_interleaved",void 0),c()(this,"_handleStyleChange",(function(){x(n._map,n._deck,n._props.layers,n._props.layers)})),c()(this,"_updateContainerSize",(function(){if(n._map&&n._container){var e=n._map.getContainer(),t=e.clientWidth,r=e.clientHeight;Object.assign(n._container.style,{width:"".concat(t,"px"),height:"".concat(r,"px")})}})),c()(this,"_updateViewState",(function(){var e=n._deck;e&&(e.setProps({viewState:b(n._map)}),e.redraw())})),c()(this,"_handleMouseEvent",(function(e){var t=n._deck;if(t){var r={type:e.type,offsetCenter:e.point,srcEvent:e};switch(e.type){case"click":r.tapCount=1,t._onPointerDown(r),t._onEvent(r);break;case"dblclick":r.type="click",r.tapCount=2,t._onEvent(r);break;case"mousemove":r.type="pointermove",t._onPointerMove(r);break;case"mouseout":r.type="pointerleave",t._onPointerMove(r);break;default:return}}}));var r=t.interleaved,o=void 0!==r&&r,a=O()(t,P);this._interleaved=o,this._props=a}return a()(e,[{key:"setProps",value:function(e){this._interleaved&&e.layers&&x(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,e),this._deck&&this._deck.setProps(this._interleaved?y(this._props):this._props)}},{key:"onAdd",value:function(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)}},{key:"_onAddOverlaid",value:function(e){var t=document.createElement("div");return Object.assign(t.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=t,this._deck=new d.Deck(S(S({},this._props),{},{parent:t,viewState:b(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),t}},{key:"_onAddInterleaved",value:function(e){return this._deck=v({map:e,gl:e.painter.context.gl,deck:new d.Deck(S(S({},this._props),{},{gl:e.painter.context.gl}))}),e.on("styledata",this._handleStyleChange),x(e,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var e,t=this._map;t&&(this._interleaved?this._onRemoveInterleaved(t):this._onRemoveOverlaid(t)),null===(e=this._deck)||void 0===e||e.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(e){e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(e){e.off("styledata",this._handleStyleChange),x(e,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(e){return Object(d.assert)(this._deck),this._deck.pickObject(e)}},{key:"pickMultipleObjects",value:function(e){return Object(d.assert)(this._deck),this._deck.pickMultipleObjects(e)}},{key:"pickObjects",value:function(e){return Object(d.assert)(this._deck),this._deck.pickObjects(e)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),e}();n.d(t,"MapboxLayer",(function(){return g})),n.d(t,"MapboxOverlay",(function(){return D}))}])}));
|
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.8.
|
|
5
|
+
"version": "8.8.27",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"@deck.gl/core": "^8.0.0"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "6e8f00a3b32f8d17a615bcab270bb0f79b19d860"
|
|
39
39
|
}
|
package/src/deck-utils.ts
CHANGED
|
@@ -28,6 +28,7 @@ export function getDeckInstance({
|
|
|
28
28
|
|
|
29
29
|
// Only initialize certain props once per context
|
|
30
30
|
const customRender = deck?.props._customRender;
|
|
31
|
+
const onLoad = deck?.props.onLoad;
|
|
31
32
|
|
|
32
33
|
const deckProps = getInterleavedProps({
|
|
33
34
|
...deck?.props,
|
|
@@ -44,8 +45,10 @@ export function getDeckInstance({
|
|
|
44
45
|
let deckInstance: Deck;
|
|
45
46
|
|
|
46
47
|
if (!deck || deck.props.gl === gl) {
|
|
47
|
-
// deck
|
|
48
|
-
//
|
|
48
|
+
// If deck isn't defined (Internal MapboxLayer use case),
|
|
49
|
+
// or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),
|
|
50
|
+
// block deck from setting the canvas size, and use the map's viewState to drive deck.
|
|
51
|
+
// Otherwise, we use deck's viewState to drive the map.
|
|
49
52
|
Object.assign(deckProps, {
|
|
50
53
|
gl,
|
|
51
54
|
width: null,
|
|
@@ -53,9 +56,14 @@ export function getDeckInstance({
|
|
|
53
56
|
touchAction: 'unset',
|
|
54
57
|
viewState: getViewState(map)
|
|
55
58
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
if (deck?.isInitialized) {
|
|
60
|
+
watchMapMove(deck, map);
|
|
61
|
+
} else {
|
|
62
|
+
deckProps.onLoad = () => {
|
|
63
|
+
onLoad?.();
|
|
64
|
+
watchMapMove(deckInstance, map);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
if (deck) {
|
|
@@ -80,6 +88,19 @@ export function getDeckInstance({
|
|
|
80
88
|
return deckInstance;
|
|
81
89
|
}
|
|
82
90
|
|
|
91
|
+
function watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {
|
|
92
|
+
const _handleMapMove = () => {
|
|
93
|
+
if (deck.isInitialized) {
|
|
94
|
+
// call view state methods
|
|
95
|
+
onMapMove(deck, map);
|
|
96
|
+
} else {
|
|
97
|
+
// deregister itself when deck is finalized
|
|
98
|
+
map.off('move', _handleMapMove);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
map.on('move', _handleMapMove);
|
|
102
|
+
}
|
|
103
|
+
|
|
83
104
|
export function getInterleavedProps(currProps: DeckProps) {
|
|
84
105
|
const useDevicePixels = 'useDevicePixels' in currProps ? currProps.useDevicePixels : true;
|
|
85
106
|
|
|
@@ -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;AAWnC,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,
|
|
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;AAWnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,qBAAqB,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CAkEP;AAeD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAqBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAqB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAaA"}
|