@deck.gl/mapbox 8.9.5 → 8.9.6
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 +42 -4
- package/dist/es5/mapbox-overlay.js +55 -5
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +56 -5
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist.min.js +4 -4
- package/package.json +2 -2
- package/src/mapbox-overlay.ts +51 -5
- package/typed/deck-utils.js +185 -0
- package/typed/index.js +2 -0
- package/typed/mapbox-layer.js +37 -0
- package/typed/mapbox-overlay.d.ts +1 -0
- package/typed/mapbox-overlay.d.ts.map +1 -1
- package/typed/mapbox-overlay.js +139 -0
package/dist/dist.dev.js
CHANGED
|
@@ -1091,6 +1091,10 @@ var __exports__ = (() => {
|
|
|
1091
1091
|
});
|
|
1092
1092
|
map.on("resize", this._updateContainerSize);
|
|
1093
1093
|
map.on("render", this._updateViewState);
|
|
1094
|
+
map.on("mousedown", this._handleMouseEvent);
|
|
1095
|
+
map.on("dragstart", this._handleMouseEvent);
|
|
1096
|
+
map.on("drag", this._handleMouseEvent);
|
|
1097
|
+
map.on("dragend", this._handleMouseEvent);
|
|
1094
1098
|
map.on("mousemove", this._handleMouseEvent);
|
|
1095
1099
|
map.on("mouseout", this._handleMouseEvent);
|
|
1096
1100
|
map.on("click", this._handleMouseEvent);
|
|
@@ -1128,6 +1132,10 @@ var __exports__ = (() => {
|
|
|
1128
1132
|
_onRemoveOverlaid(map) {
|
|
1129
1133
|
map.off("resize", this._updateContainerSize);
|
|
1130
1134
|
map.off("render", this._updateViewState);
|
|
1135
|
+
map.off("mousedown", this._handleMouseEvent);
|
|
1136
|
+
map.off("dragstart", this._handleMouseEvent);
|
|
1137
|
+
map.off("drag", this._handleMouseEvent);
|
|
1138
|
+
map.off("dragend", this._handleMouseEvent);
|
|
1131
1139
|
map.off("mousemove", this._handleMouseEvent);
|
|
1132
1140
|
map.off("mouseout", this._handleMouseEvent);
|
|
1133
1141
|
map.off("click", this._handleMouseEvent);
|
|
@@ -1178,12 +1186,14 @@ var __exports__ = (() => {
|
|
|
1178
1186
|
deck.setProps({
|
|
1179
1187
|
viewState: getViewState(this._map)
|
|
1180
1188
|
});
|
|
1181
|
-
deck.
|
|
1189
|
+
if (deck.isInitialized) {
|
|
1190
|
+
deck.redraw();
|
|
1191
|
+
}
|
|
1182
1192
|
}
|
|
1183
1193
|
};
|
|
1184
1194
|
_handleMouseEvent = (event) => {
|
|
1185
1195
|
const deck = this._deck;
|
|
1186
|
-
if (!deck) {
|
|
1196
|
+
if (!deck || !deck.isInitialized) {
|
|
1187
1197
|
return;
|
|
1188
1198
|
}
|
|
1189
1199
|
const mockEvent = {
|
|
@@ -1191,10 +1201,38 @@ var __exports__ = (() => {
|
|
|
1191
1201
|
offsetCenter: event.point,
|
|
1192
1202
|
srcEvent: event
|
|
1193
1203
|
};
|
|
1194
|
-
|
|
1204
|
+
const lastDown = this._lastMouseDownPoint;
|
|
1205
|
+
if (!event.point && lastDown) {
|
|
1206
|
+
mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;
|
|
1207
|
+
mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;
|
|
1208
|
+
mockEvent.offsetCenter = {
|
|
1209
|
+
x: lastDown.x + mockEvent.deltaX,
|
|
1210
|
+
y: lastDown.y + mockEvent.deltaY
|
|
1211
|
+
};
|
|
1212
|
+
}
|
|
1213
|
+
switch (mockEvent.type) {
|
|
1214
|
+
case "mousedown":
|
|
1215
|
+
deck._onPointerDown(mockEvent);
|
|
1216
|
+
this._lastMouseDownPoint = {
|
|
1217
|
+
...event.point,
|
|
1218
|
+
clientX: event.originalEvent.clientX,
|
|
1219
|
+
clientY: event.originalEvent.clientY
|
|
1220
|
+
};
|
|
1221
|
+
break;
|
|
1222
|
+
case "dragstart":
|
|
1223
|
+
mockEvent.type = "panstart";
|
|
1224
|
+
deck._onEvent(mockEvent);
|
|
1225
|
+
break;
|
|
1226
|
+
case "drag":
|
|
1227
|
+
mockEvent.type = "panmove";
|
|
1228
|
+
deck._onEvent(mockEvent);
|
|
1229
|
+
break;
|
|
1230
|
+
case "dragend":
|
|
1231
|
+
mockEvent.type = "panend";
|
|
1232
|
+
deck._onEvent(mockEvent);
|
|
1233
|
+
break;
|
|
1195
1234
|
case "click":
|
|
1196
1235
|
mockEvent.tapCount = 1;
|
|
1197
|
-
deck._onPointerDown(mockEvent);
|
|
1198
1236
|
deck._onEvent(mockEvent);
|
|
1199
1237
|
break;
|
|
1200
1238
|
case "dblclick":
|
|
@@ -37,6 +37,7 @@ var MapboxOverlay = function () {
|
|
|
37
37
|
(0, _defineProperty2.default)(this, "_map", void 0);
|
|
38
38
|
(0, _defineProperty2.default)(this, "_container", void 0);
|
|
39
39
|
(0, _defineProperty2.default)(this, "_interleaved", void 0);
|
|
40
|
+
(0, _defineProperty2.default)(this, "_lastMouseDownPoint", void 0);
|
|
40
41
|
(0, _defineProperty2.default)(this, "_handleStyleChange", function () {
|
|
41
42
|
(0, _resolveLayers.resolveLayers)(_this._map, _this._deck, _this._props.layers, _this._props.layers);
|
|
42
43
|
});
|
|
@@ -59,13 +60,16 @@ var MapboxOverlay = function () {
|
|
|
59
60
|
deck.setProps({
|
|
60
61
|
viewState: (0, _deckUtils.getViewState)(_this._map)
|
|
61
62
|
});
|
|
62
|
-
|
|
63
|
+
|
|
64
|
+
if (deck.isInitialized) {
|
|
65
|
+
deck.redraw();
|
|
66
|
+
}
|
|
63
67
|
}
|
|
64
68
|
});
|
|
65
69
|
(0, _defineProperty2.default)(this, "_handleMouseEvent", function (event) {
|
|
66
70
|
var deck = _this._deck;
|
|
67
71
|
|
|
68
|
-
if (!deck) {
|
|
72
|
+
if (!deck || !deck.isInitialized) {
|
|
69
73
|
return;
|
|
70
74
|
}
|
|
71
75
|
|
|
@@ -74,13 +78,51 @@ var MapboxOverlay = function () {
|
|
|
74
78
|
offsetCenter: event.point,
|
|
75
79
|
srcEvent: event
|
|
76
80
|
};
|
|
81
|
+
var lastDown = _this._lastMouseDownPoint;
|
|
82
|
+
|
|
83
|
+
if (!event.point && lastDown) {
|
|
84
|
+
mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;
|
|
85
|
+
mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;
|
|
86
|
+
mockEvent.offsetCenter = {
|
|
87
|
+
x: lastDown.x + mockEvent.deltaX,
|
|
88
|
+
y: lastDown.y + mockEvent.deltaY
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
switch (mockEvent.type) {
|
|
93
|
+
case 'mousedown':
|
|
94
|
+
deck._onPointerDown(mockEvent);
|
|
95
|
+
|
|
96
|
+
_this._lastMouseDownPoint = _objectSpread(_objectSpread({}, event.point), {}, {
|
|
97
|
+
clientX: event.originalEvent.clientX,
|
|
98
|
+
clientY: event.originalEvent.clientY
|
|
99
|
+
});
|
|
100
|
+
break;
|
|
101
|
+
|
|
102
|
+
case 'dragstart':
|
|
103
|
+
mockEvent.type = 'panstart';
|
|
104
|
+
|
|
105
|
+
deck._onEvent(mockEvent);
|
|
106
|
+
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case 'drag':
|
|
110
|
+
mockEvent.type = 'panmove';
|
|
111
|
+
|
|
112
|
+
deck._onEvent(mockEvent);
|
|
113
|
+
|
|
114
|
+
break;
|
|
115
|
+
|
|
116
|
+
case 'dragend':
|
|
117
|
+
mockEvent.type = 'panend';
|
|
118
|
+
|
|
119
|
+
deck._onEvent(mockEvent);
|
|
120
|
+
|
|
121
|
+
break;
|
|
77
122
|
|
|
78
|
-
switch (event.type) {
|
|
79
123
|
case 'click':
|
|
80
124
|
mockEvent.tapCount = 1;
|
|
81
125
|
|
|
82
|
-
deck._onPointerDown(mockEvent);
|
|
83
|
-
|
|
84
126
|
deck._onEvent(mockEvent);
|
|
85
127
|
|
|
86
128
|
break;
|
|
@@ -154,6 +196,10 @@ var MapboxOverlay = function () {
|
|
|
154
196
|
}));
|
|
155
197
|
map.on('resize', this._updateContainerSize);
|
|
156
198
|
map.on('render', this._updateViewState);
|
|
199
|
+
map.on('mousedown', this._handleMouseEvent);
|
|
200
|
+
map.on('dragstart', this._handleMouseEvent);
|
|
201
|
+
map.on('drag', this._handleMouseEvent);
|
|
202
|
+
map.on('dragend', this._handleMouseEvent);
|
|
157
203
|
map.on('mousemove', this._handleMouseEvent);
|
|
158
204
|
map.on('mouseout', this._handleMouseEvent);
|
|
159
205
|
map.on('click', this._handleMouseEvent);
|
|
@@ -202,6 +248,10 @@ var MapboxOverlay = function () {
|
|
|
202
248
|
value: function _onRemoveOverlaid(map) {
|
|
203
249
|
map.off('resize', this._updateContainerSize);
|
|
204
250
|
map.off('render', this._updateViewState);
|
|
251
|
+
map.off('mousedown', this._handleMouseEvent);
|
|
252
|
+
map.off('dragstart', this._handleMouseEvent);
|
|
253
|
+
map.off('drag', this._handleMouseEvent);
|
|
254
|
+
map.off('dragend', this._handleMouseEvent);
|
|
205
255
|
map.off('mousemove', this._handleMouseEvent);
|
|
206
256
|
map.off('mouseout', this._handleMouseEvent);
|
|
207
257
|
map.off('click', this._handleMouseEvent);
|
|
@@ -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","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","tapCount","_onPointerDown","_onEvent","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","finalize","undefined","off","params","pickObject","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n\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('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n deck.redraw();\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck) {\n return;\n }\n\n const mockEvent: {\n type: string;\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 switch (event.type) {\n case 'click':\n mockEvent.tapCount = 1;\n // Hack: because we do not listen to pointer down, perform picking now\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\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","finalize","undefined","off","params","pickObject","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
|
@@ -14,6 +14,8 @@ export default class MapboxOverlay {
|
|
|
14
14
|
|
|
15
15
|
_defineProperty(this, "_interleaved", void 0);
|
|
16
16
|
|
|
17
|
+
_defineProperty(this, "_lastMouseDownPoint", void 0);
|
|
18
|
+
|
|
17
19
|
_defineProperty(this, "_handleStyleChange", () => {
|
|
18
20
|
resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);
|
|
19
21
|
});
|
|
@@ -39,14 +41,17 @@ export default class MapboxOverlay {
|
|
|
39
41
|
deck.setProps({
|
|
40
42
|
viewState: getViewState(this._map)
|
|
41
43
|
});
|
|
42
|
-
|
|
44
|
+
|
|
45
|
+
if (deck.isInitialized) {
|
|
46
|
+
deck.redraw();
|
|
47
|
+
}
|
|
43
48
|
}
|
|
44
49
|
});
|
|
45
50
|
|
|
46
51
|
_defineProperty(this, "_handleMouseEvent", event => {
|
|
47
52
|
const deck = this._deck;
|
|
48
53
|
|
|
49
|
-
if (!deck) {
|
|
54
|
+
if (!deck || !deck.isInitialized) {
|
|
50
55
|
return;
|
|
51
56
|
}
|
|
52
57
|
|
|
@@ -55,13 +60,51 @@ export default class MapboxOverlay {
|
|
|
55
60
|
offsetCenter: event.point,
|
|
56
61
|
srcEvent: event
|
|
57
62
|
};
|
|
63
|
+
const lastDown = this._lastMouseDownPoint;
|
|
64
|
+
|
|
65
|
+
if (!event.point && lastDown) {
|
|
66
|
+
mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;
|
|
67
|
+
mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;
|
|
68
|
+
mockEvent.offsetCenter = {
|
|
69
|
+
x: lastDown.x + mockEvent.deltaX,
|
|
70
|
+
y: lastDown.y + mockEvent.deltaY
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
switch (mockEvent.type) {
|
|
75
|
+
case 'mousedown':
|
|
76
|
+
deck._onPointerDown(mockEvent);
|
|
77
|
+
|
|
78
|
+
this._lastMouseDownPoint = { ...event.point,
|
|
79
|
+
clientX: event.originalEvent.clientX,
|
|
80
|
+
clientY: event.originalEvent.clientY
|
|
81
|
+
};
|
|
82
|
+
break;
|
|
83
|
+
|
|
84
|
+
case 'dragstart':
|
|
85
|
+
mockEvent.type = 'panstart';
|
|
86
|
+
|
|
87
|
+
deck._onEvent(mockEvent);
|
|
88
|
+
|
|
89
|
+
break;
|
|
90
|
+
|
|
91
|
+
case 'drag':
|
|
92
|
+
mockEvent.type = 'panmove';
|
|
93
|
+
|
|
94
|
+
deck._onEvent(mockEvent);
|
|
95
|
+
|
|
96
|
+
break;
|
|
97
|
+
|
|
98
|
+
case 'dragend':
|
|
99
|
+
mockEvent.type = 'panend';
|
|
100
|
+
|
|
101
|
+
deck._onEvent(mockEvent);
|
|
102
|
+
|
|
103
|
+
break;
|
|
58
104
|
|
|
59
|
-
switch (event.type) {
|
|
60
105
|
case 'click':
|
|
61
106
|
mockEvent.tapCount = 1;
|
|
62
107
|
|
|
63
|
-
deck._onPointerDown(mockEvent);
|
|
64
|
-
|
|
65
108
|
deck._onEvent(mockEvent);
|
|
66
109
|
|
|
67
110
|
break;
|
|
@@ -133,6 +176,10 @@ export default class MapboxOverlay {
|
|
|
133
176
|
});
|
|
134
177
|
map.on('resize', this._updateContainerSize);
|
|
135
178
|
map.on('render', this._updateViewState);
|
|
179
|
+
map.on('mousedown', this._handleMouseEvent);
|
|
180
|
+
map.on('dragstart', this._handleMouseEvent);
|
|
181
|
+
map.on('drag', this._handleMouseEvent);
|
|
182
|
+
map.on('dragend', this._handleMouseEvent);
|
|
136
183
|
map.on('mousemove', this._handleMouseEvent);
|
|
137
184
|
map.on('mouseout', this._handleMouseEvent);
|
|
138
185
|
map.on('click', this._handleMouseEvent);
|
|
@@ -178,6 +225,10 @@ export default class MapboxOverlay {
|
|
|
178
225
|
_onRemoveOverlaid(map) {
|
|
179
226
|
map.off('resize', this._updateContainerSize);
|
|
180
227
|
map.off('render', this._updateViewState);
|
|
228
|
+
map.off('mousedown', this._handleMouseEvent);
|
|
229
|
+
map.off('dragstart', this._handleMouseEvent);
|
|
230
|
+
map.off('drag', this._handleMouseEvent);
|
|
231
|
+
map.off('dragend', this._handleMouseEvent);
|
|
181
232
|
map.off('mousemove', this._handleMouseEvent);
|
|
182
233
|
map.off('mouseout', this._handleMouseEvent);
|
|
183
234
|
map.off('click', this._handleMouseEvent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","assert","getViewState","getDeckInstance","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","tapCount","_onPointerDown","_onEvent","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","finalize","undefined","off","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n\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('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n deck.redraw();\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck) {\n return;\n }\n\n const mockEvent: {\n type: string;\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 switch (event.type) {\n case 'click':\n mockEvent.tapCount = 1;\n // Hack: because we do not listen to pointer down, perform picking now\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\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","getInterleavedProps","resolveLayers","MapboxOverlay","constructor","props","_map","_deck","_props","layers","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","finalize","undefined","off","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck?.finalize();\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
package/dist.min.js
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var at=Object.create;var
|
|
8
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||
|
|
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)||fr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function de(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&de(r.prototype,e),t&&de(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var L=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var sn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function dt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function Me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function me(r,e,t){var n=e[0],a=e[1],o=e[2],s=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*o+t[12]*s,r[1]=t[1]*n+t[5]*a+t[9]*o+t[13]*s,r[2]=t[2]*n+t[6]*a+t[10]*o+t[14]*s,r[3]=t[3]*n+t[7]*a+t[11]*o+t[15]*s,r}var vn=function(){var r=dt();return function(e,t,n,a,o,s){var i,v;for(t||(t=4),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],o(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2],e[i+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function U(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function cr(r,e,t){return r<e?e:r>t?t:r}function xt(r){return Math.log(r)*Math.LOG2E}var ur=Math.log2||xt;function ge(r,e){var t=e[0],n=e[1],a=e[2],o=e[3],s=e[4],i=e[5],v=e[6],l=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*i-n*s,p=t*v-a*s,g=t*l-o*s,m=n*v-a*i,x=n*l-o*i,A=a*l-o*v,D=c*_-f*u,T=c*w-h*u,S=c*M-y*u,z=f*w-h*_,O=f*M-y*_,E=h*M-y*w,d=P*E-p*O+g*z+m*S-x*T+A*D;return d?(d=1/d,r[0]=(i*E-v*O+l*z)*d,r[1]=(a*O-n*E-o*z)*d,r[2]=(_*A-w*x+M*m)*d,r[3]=(h*x-f*A-y*m)*d,r[4]=(v*S-s*E-l*T)*d,r[5]=(t*E-a*S+o*T)*d,r[6]=(w*g-u*A-M*p)*d,r[7]=(c*A-h*g+y*p)*d,r[8]=(s*O-i*S+l*D)*d,r[9]=(n*S-t*O-o*D)*d,r[10]=(u*x-_*g+M*P)*d,r[11]=(f*g-c*x-y*P)*d,r[12]=(i*T-s*z-v*D)*d,r[13]=(t*z-n*T+a*D)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function _r(r,e,t){var n=e[0],a=e[1],o=e[2],s=e[3],i=e[4],v=e[5],l=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*i+m*f+x*_,r[1]=p*a+g*v+m*h+x*w,r[2]=p*o+g*l+m*y+x*M,r[3]=p*s+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*i+m*f+x*_,r[5]=p*a+g*v+m*h+x*w,r[6]=p*o+g*l+m*y+x*M,r[7]=p*s+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*i+m*f+x*_,r[9]=p*a+g*v+m*h+x*w,r[10]=p*o+g*l+m*y+x*M,r[11]=p*s+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*i+m*f+x*_,r[13]=p*a+g*v+m*h+x*w,r[14]=p*o+g*l+m*y+x*M,r[15]=p*s+g*c+m*u+x*P,r}function hr(r,e,t){var n=t[0],a=t[1],o=t[2],s,i,v,l,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*o+e[12],r[13]=e[1]*n+e[5]*a+e[9]*o+e[13],r[14]=e[2]*n+e[6]*a+e[10]*o+e[14],r[15]=e[3]*n+e[7]*a+e[11]*o+e[15]):(s=e[0],i=e[1],v=e[2],l=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=s,r[1]=i,r[2]=v,r[3]=l,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=s*n+c*a+u*o+e[12],r[13]=i*n+f*a+_*o+e[13],r[14]=v*n+h*a+w*o+e[14],r[15]=l*n+y*a+M*o+e[15]),r}function wr(r,e,t){var n=t[0],a=t[1],o=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*o,r[9]=e[9]*o,r[10]=e[10]*o,r[11]=e[11]*o,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ye(r,e,t){var n=Math.sin(t),a=Math.cos(t),o=e[4],s=e[5],i=e[6],v=e[7],l=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=o*a+l*n,r[5]=s*a+c*n,r[6]=i*a+f*n,r[7]=v*a+h*n,r[8]=l*a-o*n,r[9]=c*a-s*n,r[10]=f*a-i*n,r[11]=h*a-v*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),o=e[0],s=e[1],i=e[2],v=e[3],l=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=o*a+l*n,r[1]=s*a+c*n,r[2]=i*a+f*n,r[3]=v*a+h*n,r[4]=l*a-o*n,r[5]=c*a-s*n,r[6]=f*a-i*n,r[7]=h*a-v*n,r}function Mt(r,e,t,n,a){var o=1/Math.tan(e/2),s;return r[0]=o/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=o,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(s=1/(n-a),r[10]=(a+n)*s,r[14]=2*a*n*s):(r[10]=-1,r[14]=-2*n),r}var _e=Mt;function Br(r,e){var t=r[0],n=r[1],a=r[2],o=r[3],s=r[4],i=r[5],v=r[6],l=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],A=e[5],D=e[6],T=e[7],S=e[8],z=e[9],O=e[10],E=e[11],d=e[12],$=e[13],N=e[14],I=e[15];return Math.abs(t-P)<=L*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=L*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=L*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(o-m)<=L*Math.max(1,Math.abs(o),Math.abs(m))&&Math.abs(s-x)<=L*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(i-A)<=L*Math.max(1,Math.abs(i),Math.abs(A))&&Math.abs(v-D)<=L*Math.max(1,Math.abs(v),Math.abs(D))&&Math.abs(l-T)<=L*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(c-S)<=L*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=L*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=L*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-E)<=L*Math.max(1,Math.abs(y),Math.abs(E))&&Math.abs(u-d)<=L*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=L*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-N)<=L*Math.max(1,Math.abs(w),Math.abs(N))&&Math.abs(M-I)<=L*Math.max(1,Math.abs(M),Math.abs(I))}function mt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Ur(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Pe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Pr(r,e,t,n){var a=e[0],o=e[1];return r[0]=a+n*(t[0]-a),r[1]=o+n*(t[1]-o),r}var hn=function(){var r=mt();return function(e,t,n,a,o,s){var i,v;for(t||(t=2),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],o(r,r,s),e[i]=r[0],e[i+1]=r[1];return e}}();function gt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Oe(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function yt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function be(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var Ae=yt;var pn=function(){var r=gt();return function(e,t,n,a,o,s){var i,v;for(t||(t=3),n||(n=0),a?v=Math.min(a*t+n,e.length):v=e.length,i=n;i<v;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],o(r,r,s),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function F(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var C=Math.PI,Ee=C/4,Y=C/180,Hr=180/C,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function Or(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];F(Number.isFinite(t)),F(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Y,o=n*Y,s=ar*(a+C)/(2*C),i=ar*(C+Math.log(Math.tan(Ee+o*.5)))/(2*C);return[s,i]}function Z(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*C)-C,o=2*(Math.atan(Math.exp(n/ar*(2*C)-C))-Ee);return[a*Hr,o*Hr]}function Kr(r){var e=Math.cos(r*Y);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;F(Number.isFinite(e)&&Number.isFinite(t));var o=ar,s=Math.cos(e*Y),i=o/360,v=i/s,l=o/Gr/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[i,v,l],degreesPerUnit:[1/i,1/v,1/l]};if(a){var f=Y*Math.tan(e*Y)/s,h=i*f/2,y=o/Gr*f,u=y/v*l;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,o=r.scale,s=r.center,i=nr();hr(i,i,[0,0,-a]),ye(i,i,-t*Y),ue(i,i,n*Y);var v=o/e;return wr(i,i,[v,v,v]),s&&hr(i,i,be([],s)),i}function Le(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,o=a===void 0?0:a,s=r.offset,i=r.center,v=r.scale,l=r.nearZMultiplier,c=l===void 0?1:l,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Y,w=o*Y,M=br(u),P=M;i&&(P+=i[2]*v/Math.cos(w)/t);var p=_*(.5+(s?s[1]:0)/t),g=Math.sin(p)*P/Math.sin(cr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,A=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:A}}function ee(r){var e=Le(r),t=e.fov,n=e.aspect,a=e.near,o=e.far,s=_e([],t,n,a,o);return s}function ir(r){return 2*Math.atan(.5/r)*Hr}function br(r){return .5/Math.tan(.5*r*Y)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],o=t[2],s=o===void 0?0:o;return F(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(s)),U(e,[n,a,s,1])}function Ar(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],o=n[1],s=n[2];if(F(Number.isFinite(a)&&Number.isFinite(o),"invalid pixel coordinate"),Number.isFinite(s)){var i=U(e,[a,o,s,1]);return i}var v=U(e,[a,o,0,1]),l=U(e,[a,o,1,1]),c=v[2],f=l[2],h=c===f?0:((t||0)-c)/(f-c);return Pr([],v,l,h)}function zr(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,o=a===void 0?0:a,s=r.maxZoom,i=s===void 0?24:s,v=r.offset,l=v===void 0?[0,0]:v,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=ut(r.padding),P=k([h,cr(w,-or,or)]),p=k([_,cr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),o),Math.max(Math.abs(p[1]-P[1]),o)],m=[e-M.left-M.right-Math.abs(l[0])*2,t-M.top-M.bottom-Math.abs(l[1])*2];F(m[0]>0&&m[1]>0);var x=m[0]/g[0],A=m[1]/g[1],D=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/A,S=[(p[0]+P[0])/2+D,(p[1]+P[1])/2+T],z=Z(S),O=Math.min(i,ur(Math.abs(Math.min(x,A))));return F(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function ut(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(F(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Te=Math.PI/180;function Er(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,o={targetZ:e},s=a([0,n],o),i=a([t,n],o),v,l,c=r.fovy?.5*r.fovy*Te:Math.atan(.5/r.altitude),f=(90-r.pitch)*Te;return c>f-.01?(v=Se(r,0,e),l=Se(r,t,e)):(v=a([0,0],o),l=a([t,0],o)),[s,i,l,v]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=U(n,[e,0,1,1]),o=U(n,[e,r.height,1,1]),s=t*r.distanceScales.unitsPerMeter[2],i=(s-a[2])/(o[2]-a[2]),v=Pr([],a,o,i),l=Z(v);return l.push(t),l}var je=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Br(O.projectionMatrix,e.projectionMatrix)&&Br(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=e.projectPosition(O),I=te(N,e.pixelProjectionMatrix),K=j(I,2),xr=K[0],vr=K[1],lr=$?vr:e.height-vr;return O.length===2?[xr,lr]:[xr,lr,I[2]]}),b(this,"unproject",function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=E.topLeft,$=d===void 0?!0:d,N=E.targetZ,I=N===void 0?void 0:N,K=j(O,3),xr=K[0],vr=K[1],lr=K[2],Je=$?vr:e.height-vr,rt=I&&I*e.distanceScales.unitsPerMeter[2],et=Ar([xr,Je,lr],e.pixelUnprojectionMatrix,rt),tt=e.unprojectPosition(et),Dr=j(tt,3),Ir=Dr[0],Rr=Dr[1],nt=Dr[2];return Number.isFinite(lr)?[Ir,Rr,nt]:Number.isFinite(I)?[Ir,Rr,I]:[Ir,Rr]}),b(this,"projectPosition",function(O){var E=k(O),d=j(E,2),$=d[0],N=d[1],I=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,N,I]}),b(this,"unprojectPosition",function(O){var E=Z(O),d=j(E,2),$=d[0],N=d[1],I=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,N,I]});var n=t.width,a=t.height,o=t.altitude,s=o===void 0?null:o,i=t.fovy,v=i===void 0?null:i,l=t.latitude,c=l===void 0?0:l,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,A=t.farZMultiplier,D=A===void 0?1.01:A;n=n||1,a=a||1,v===null&&s===null?(s=Qr,v=ir(s)):v===null?v=ir(s):s===null&&(s=br(v));var T=Or(u);s=Math.max(.75,s);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ae([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:v,nearZMultiplier:x,farZMultiplier:D}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:s}),this.width=n,this.height=a,this.scale=T,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=s,this.fovy=v,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,o=this.viewMatrix,s=nr();_r(s,s,a),_r(s,s,o),this.viewProjectionMatrix=s;var i=nr();wr(i,i,[t/2,-n/2,1]),hr(i,i,[1,-1,0]),_r(i,i,s);var v=ge(nr(),i);if(!v)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=v}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return Z(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,o=Ar(a,this.pixelUnprojectionMatrix),s=k(n),i=Ur([],s,Pe([],o)),v=Ur([],this.center,i);return Z(v)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,o=this.height,s=zr(Object.assign({width:a,height:o,bounds:t},n)),i=s.longitude,v=s.latitude,l=s.zoom;return new r({width:a,height:o,longitude:i,latitude:v,zoom:l})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(v){return v[0]}))),o=Math.max.apply(Math,tr(n.map(function(v){return v[0]}))),s=Math.min.apply(Math,tr(n.map(function(v){return v[1]}))),i=Math.max.apply(Math,tr(n.map(function(v){return v[1]})));return[[a,s],[o,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Er(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function De(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?De(Object(t),!0).forEach(function(n){(0,Re.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):De(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,wt=Math.PI/180;function Lr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,o=n?.props.onLoad,s=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(s,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?Ie(n,e):s.onLoad=function(){o?.(),Ie(i,e)}),n?(i=n,n.setProps(s),n.userData.isExternal=!0):(i=new X.Deck(s),e.on("remove",function(){i.finalize(),e.__deck=null})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&Ot(i,e)}),i}function Ie(r,e){var t=function n(){r.isInitialized?bt(r,e):e.off("move",n)};e.on("move",t)}function ae(r){var e="useDevicePixels"in r?r.useDevicePixels:!0,t=H(H({},r),{},{useDevicePixels:e,parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new X.MapView({id:"mapbox"})]});return t}function ke(r,e){r.userData.mapboxLayers.add(e),ie(r)}function Ne(r,e){r.userData.mapboxLayers.delete(e),ie(r)}function Fe(r,e){ie(r)}function Ce(r,e,t){var n=r.userData,a=n.currentViewport,o=!1;a||(a=Ye(r,e,!0),r.userData.currentViewport=a,o=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var v=i.layer;return t.id===v.id},clearStack:o,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,o={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&Pt(r,o),o}function Pt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,o=e.longitude,s=e.latitude,i=e.pitch,v=n.x*ne,l=(1-n.y)*ne,c=n.z*ne,f=k([o,s]),h=v-f[0],y=l-f[1],u=Math.sqrt(h*h+y*y),_=i*wt,w=1.5*a,M=_<.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(s)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ye(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new X.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},sr(e)),{},{nearZMultiplier:t?.02:.1}))}function Ot(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var o=Array.from(n,function(f){return f.id}),s=(0,X._flatten)(r.props.layers,Boolean),i=s.some(function(f){return f&&!o.includes(f.id)}),v=r.getViewports(),l=v.findIndex(function(f){return f.id==="mapbox"}),c=v.length>1||l<0;(i||c)&&(l>=0&&(v=v.slice(),v[l]=Ye(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:v,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!o.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function bt(r,e){r.setProps({viewState:sr(e)}),r.needsRedraw({clearRedrawFlags:!0})}function ie(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Tr=function(){function r(e){if((0,Ze.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,qe.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Lr({map:t,gl:n,deck:this.props.deck}),ke(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Ne(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Fe(this.deck,this)}},{key:"render",value:function(){Ce(this.deck,this.map,this)}}]),r}();var He=R(Be()),Ge=R(kr()),Qe=R(Nr()),q=R(gr()),Q=R(rr());var se=R(rr());function Sr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Lt(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
10
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var
|
|
7
|
+
"use strict";var __exports__=(()=>{var at=Object.create;var gr=Object.defineProperty;var it=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),vt=(r,e)=>{for(var t in e)gr(r,t,{get:e[t],enumerable:!0})},mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ot(e))!lt.call(r,a)&&a!==t&&gr(r,a,{get:()=>e[a],enumerable:!(n=it(e,a))||n.enumerable});return r},X=(r,e,t)=>(mr(r,e,"default"),t&&mr(t,e,"default")),R=(r,e,t)=>(t=r!=null?at(st(r)):{},mr(e||!r||!r.__esModule?gr(t,"default",{value:r,enumerable:!0}):t,r)),ft=r=>mr(gr({},"__esModule",{value:!0}),r);var rr=J((jt,le)=>{le.exports=globalThis.deck});var kr=J((It,fe)=>{function ct(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}fe.exports=ct});var Nr=J((Rt,he)=>{function ce(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function ht(r,e,t){return e&&ce(r.prototype,e),t&&ce(r,t),r}he.exports=ht});var yr=J((kt,pe)=>{function pt(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}pe.exports=pt});var Ve=J((va,$e)=>{function Et(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,l;for(l=0;l<n.length;l++)a=n[l],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}$e.exports=Et});var Xe=J((fa,We)=>{var zt=Ve();function At(r,e){if(r==null)return{};var t=zt(r,e),n,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(r);for(a=0;a<l.length;a++)n=l[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}We.exports=At});var xr={};vt(xr,{MapboxLayer:()=>Sr,MapboxOverlay:()=>Ke});var V={},ve=R(rr());X(V,R(rr()));if(!ve.Layer)throw new Error("@deck.gl/core is not found");X(xr,V);var Ze=R(kr()),qe=R(Nr()),G=R(yr());var Re=R(yr()),U=R(rr());function er(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function Fr(r){if(Array.isArray(r))return er(r)}function Cr(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function cr(r,e){if(r){if(typeof r=="string")return er(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return er(r,e)}}function Yr(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
8
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tr(r){return Fr(r)||Cr(r)||cr(r)||Yr()}function Zr(r){if(Array.isArray(r))return r}function qr(r,e){var t=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(t!=null){var n=[],a=!0,l=!1,o,i;try{for(t=t.call(r);!(a=(o=t.next()).done)&&(n.push(o.value),!(e&&n.length===e));a=!0);}catch(s){l=!0,i=s}finally{try{!a&&t.return!=null&&t.return()}finally{if(l)throw i}}return n}}function $r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
9
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function j(r,e){return Zr(r)||qr(r,e)||cr(r,e)||$r()}function Vr(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function de(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}function Wr(r,e,t){return e&&de(r.prototype,e),t&&de(r,t),r}function b(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}var L=1e-6,W=typeof Float32Array<"u"?Float32Array:Array;var sn=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});function dt(){var r=new W(4);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}function Me(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r[3]=e[3]*t,r}function me(r,e,t){var n=e[0],a=e[1],l=e[2],o=e[3];return r[0]=t[0]*n+t[4]*a+t[8]*l+t[12]*o,r[1]=t[1]*n+t[5]*a+t[9]*l+t[13]*o,r[2]=t[2]*n+t[6]*a+t[10]*l+t[14]*o,r[3]=t[3]*n+t[7]*a+t[11]*l+t[15]*o,r}var ln=function(){var r=dt();return function(e,t,n,a,l,o){var i,s;for(t||(t=4),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],r[3]=e[i+3],l(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2],e[i+3]=r[3];return e}}();function nr(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function B(r,e){var t=me([],e,r);return Me(t,t,1/t[3]),t}function hr(r,e,t){return r<e?e:r>t?t:r}function xt(r){return Math.log(r)*Math.LOG2E}var _r=Math.log2||xt;function ge(r,e){var t=e[0],n=e[1],a=e[2],l=e[3],o=e[4],i=e[5],s=e[6],v=e[7],c=e[8],f=e[9],h=e[10],y=e[11],u=e[12],_=e[13],w=e[14],M=e[15],P=t*i-n*o,p=t*s-a*o,g=t*v-l*o,m=n*s-a*i,x=n*v-l*i,E=a*v-l*s,D=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*D;return d?(d=1/d,r[0]=(i*A-s*O+v*z)*d,r[1]=(a*O-n*A-l*z)*d,r[2]=(_*E-w*x+M*m)*d,r[3]=(h*x-f*E-y*m)*d,r[4]=(s*S-o*A-v*T)*d,r[5]=(t*A-a*S+l*T)*d,r[6]=(w*g-u*E-M*p)*d,r[7]=(c*E-h*g+y*p)*d,r[8]=(o*O-i*S+v*D)*d,r[9]=(n*S-t*O-l*D)*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*D)*d,r[13]=(t*z-n*T+a*D)*d,r[14]=(_*p-u*m-w*P)*d,r[15]=(c*m-f*p+h*P)*d,r):null}function wr(r,e,t){var n=e[0],a=e[1],l=e[2],o=e[3],i=e[4],s=e[5],v=e[6],c=e[7],f=e[8],h=e[9],y=e[10],u=e[11],_=e[12],w=e[13],M=e[14],P=e[15],p=t[0],g=t[1],m=t[2],x=t[3];return r[0]=p*n+g*i+m*f+x*_,r[1]=p*a+g*s+m*h+x*w,r[2]=p*l+g*v+m*y+x*M,r[3]=p*o+g*c+m*u+x*P,p=t[4],g=t[5],m=t[6],x=t[7],r[4]=p*n+g*i+m*f+x*_,r[5]=p*a+g*s+m*h+x*w,r[6]=p*l+g*v+m*y+x*M,r[7]=p*o+g*c+m*u+x*P,p=t[8],g=t[9],m=t[10],x=t[11],r[8]=p*n+g*i+m*f+x*_,r[9]=p*a+g*s+m*h+x*w,r[10]=p*l+g*v+m*y+x*M,r[11]=p*o+g*c+m*u+x*P,p=t[12],g=t[13],m=t[14],x=t[15],r[12]=p*n+g*i+m*f+x*_,r[13]=p*a+g*s+m*h+x*w,r[14]=p*l+g*v+m*y+x*M,r[15]=p*o+g*c+m*u+x*P,r}function pr(r,e,t){var n=t[0],a=t[1],l=t[2],o,i,s,v,c,f,h,y,u,_,w,M;return e===r?(r[12]=e[0]*n+e[4]*a+e[8]*l+e[12],r[13]=e[1]*n+e[5]*a+e[9]*l+e[13],r[14]=e[2]*n+e[6]*a+e[10]*l+e[14],r[15]=e[3]*n+e[7]*a+e[11]*l+e[15]):(o=e[0],i=e[1],s=e[2],v=e[3],c=e[4],f=e[5],h=e[6],y=e[7],u=e[8],_=e[9],w=e[10],M=e[11],r[0]=o,r[1]=i,r[2]=s,r[3]=v,r[4]=c,r[5]=f,r[6]=h,r[7]=y,r[8]=u,r[9]=_,r[10]=w,r[11]=M,r[12]=o*n+c*a+u*l+e[12],r[13]=i*n+f*a+_*l+e[13],r[14]=s*n+h*a+w*l+e[14],r[15]=v*n+y*a+M*l+e[15]),r}function Pr(r,e,t){var n=t[0],a=t[1],l=t[2];return r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r[3]=e[3]*n,r[4]=e[4]*a,r[5]=e[5]*a,r[6]=e[6]*a,r[7]=e[7]*a,r[8]=e[8]*l,r[9]=e[9]*l,r[10]=e[10]*l,r[11]=e[11]*l,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r}function ye(r,e,t){var n=Math.sin(t),a=Math.cos(t),l=e[4],o=e[5],i=e[6],s=e[7],v=e[8],c=e[9],f=e[10],h=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=l*a+v*n,r[5]=o*a+c*n,r[6]=i*a+f*n,r[7]=s*a+h*n,r[8]=v*a-l*n,r[9]=c*a-o*n,r[10]=f*a-i*n,r[11]=h*a-s*n,r}function ue(r,e,t){var n=Math.sin(t),a=Math.cos(t),l=e[0],o=e[1],i=e[2],s=e[3],v=e[4],c=e[5],f=e[6],h=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=l*a+v*n,r[1]=o*a+c*n,r[2]=i*a+f*n,r[3]=s*a+h*n,r[4]=v*a-l*n,r[5]=c*a-o*n,r[6]=f*a-i*n,r[7]=h*a-s*n,r}function Mt(r,e,t,n,a){var l=1/Math.tan(e/2),o;return r[0]=l/t,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=l,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,a!=null&&a!==1/0?(o=1/(n-a),r[10]=(a+n)*o,r[14]=2*a*n*o):(r[10]=-1,r[14]=-2*n),r}var _e=Mt;function Xr(r,e){var t=r[0],n=r[1],a=r[2],l=r[3],o=r[4],i=r[5],s=r[6],v=r[7],c=r[8],f=r[9],h=r[10],y=r[11],u=r[12],_=r[13],w=r[14],M=r[15],P=e[0],p=e[1],g=e[2],m=e[3],x=e[4],E=e[5],D=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],I=e[15];return Math.abs(t-P)<=L*Math.max(1,Math.abs(t),Math.abs(P))&&Math.abs(n-p)<=L*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-g)<=L*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(l-m)<=L*Math.max(1,Math.abs(l),Math.abs(m))&&Math.abs(o-x)<=L*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(i-E)<=L*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(s-D)<=L*Math.max(1,Math.abs(s),Math.abs(D))&&Math.abs(v-T)<=L*Math.max(1,Math.abs(v),Math.abs(T))&&Math.abs(c-S)<=L*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-z)<=L*Math.max(1,Math.abs(f),Math.abs(z))&&Math.abs(h-O)<=L*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(y-A)<=L*Math.max(1,Math.abs(y),Math.abs(A))&&Math.abs(u-d)<=L*Math.max(1,Math.abs(u),Math.abs(d))&&Math.abs(_-$)<=L*Math.max(1,Math.abs(_),Math.abs($))&&Math.abs(w-F)<=L*Math.max(1,Math.abs(w),Math.abs(F))&&Math.abs(M-I)<=L*Math.max(1,Math.abs(M),Math.abs(I))}function mt(){var r=new W(2);return W!=Float32Array&&(r[0]=0,r[1]=0),r}function Br(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Pe(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Or(r,e,t,n){var a=e[0],l=e[1];return r[0]=a+n*(t[0]-a),r[1]=l+n*(t[1]-l),r}var hn=function(){var r=mt();return function(e,t,n,a,l,o){var i,s;for(t||(t=2),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],l(r,r,o),e[i]=r[0],e[i+1]=r[1];return e}}();function gt(){var r=new W(3);return W!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Oe(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function yt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function be(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}var Ee=yt;var pn=function(){var r=gt();return function(e,t,n,a,l,o){var i,s;for(t||(t=3),n||(n=0),a?s=Math.min(a*t+n,e.length):s=e.length,i=n;i<s;i+=t)r[0]=e[i],r[1]=e[i+1],r[2]=e[i+2],l(r,r,o),e[i]=r[0],e[i+1]=r[1],e[i+2]=r[2];return e}}();function C(r,e){if(!r)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Y=Math.PI,Ae=Y/4,Z=Y/180,Hr=180/Y,ar=512,Gr=4003e4,or=85.051129,Qr=1.5;function br(r){return Math.pow(2,r)}function k(r){var e=j(r,2),t=e[0],n=e[1];C(Number.isFinite(t)),C(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var a=t*Z,l=n*Z,o=ar*(a+Y)/(2*Y),i=ar*(Y+Math.log(Math.tan(Ae+l*.5)))/(2*Y);return[o,i]}function q(r){var e=j(r,2),t=e[0],n=e[1],a=t/ar*(2*Y)-Y,l=2*(Math.atan(Math.exp(n/ar*(2*Y)-Y))-Ae);return[a*Hr,l*Hr]}function Kr(r){var e=Math.cos(r*Z);return ar/Gr/e}function Jr(r){var e=r.latitude,t=r.longitude,n=r.highPrecision,a=n===void 0?!1:n;C(Number.isFinite(e)&&Number.isFinite(t));var l=ar,o=Math.cos(e*Z),i=l/360,s=i/o,v=l/Gr/o,c={unitsPerMeter:[v,v,v],metersPerUnit:[1/v,1/v,1/v],unitsPerDegree:[i,s,v],degreesPerUnit:[1/i,1/s,1/v]};if(a){var f=Z*Math.tan(e*Z)/o,h=i*f/2,y=l/Gr*f,u=y/s*v;c.unitsPerDegree2=[0,h,y],c.unitsPerMeter2=[u,0,u]}return c}function re(r){var e=r.height,t=r.pitch,n=r.bearing,a=r.altitude,l=r.scale,o=r.center,i=nr();pr(i,i,[0,0,-a]),ye(i,i,-t*Z),ue(i,i,n*Z);var s=l/e;return Pr(i,i,[s,s,s]),o&&pr(i,i,be([],o)),i}function Le(r){var e=r.width,t=r.height,n=r.altitude,a=r.pitch,l=a===void 0?0:a,o=r.offset,i=r.center,s=r.scale,v=r.nearZMultiplier,c=v===void 0?1:v,f=r.farZMultiplier,h=f===void 0?1:f,y=r.fovy,u=y===void 0?ir(Qr):y;n!==void 0&&(u=ir(n));var _=u*Z,w=l*Z,M=Er(u),P=M;i&&(P+=i[2]*s/Math.cos(w)/t);var p=_*(.5+(o?o[1]:0)/t),g=Math.sin(p)*P/Math.sin(hr(Math.PI/2-w-p,.01,Math.PI-.01)),m=Math.sin(w)*g+P,x=P*10,E=Math.min(m*h,x);return{fov:_,aspect:e/t,focalDistance:M,near:c,far:E}}function ee(r){var e=Le(r),t=e.fov,n=e.aspect,a=e.near,l=e.far,o=_e([],t,n,a,l);return o}function ir(r){return 2*Math.atan(.5/r)*Hr}function Er(r){return .5/Math.tan(.5*r*Z)}function te(r,e){var t=j(r,3),n=t[0],a=t[1],l=t[2],o=l===void 0?0:l;return C(Number.isFinite(n)&&Number.isFinite(a)&&Number.isFinite(o)),B(e,[n,a,o,1])}function zr(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=j(r,3),a=n[0],l=n[1],o=n[2];if(C(Number.isFinite(a)&&Number.isFinite(l),"invalid pixel coordinate"),Number.isFinite(o)){var i=B(e,[a,l,o,1]);return i}var s=B(e,[a,l,0,1]),v=B(e,[a,l,1,1]),c=s[2],f=v[2],h=c===f?0:((t||0)-c)/(f-c);return Or([],s,v,h)}function Ar(r){var e=r.width,t=r.height,n=r.bounds,a=r.minExtent,l=a===void 0?0:a,o=r.maxZoom,i=o===void 0?24:o,s=r.offset,v=s===void 0?[0,0]:s,c=j(n,2),f=j(c[0],2),h=f[0],y=f[1],u=j(c[1],2),_=u[0],w=u[1],M=ut(r.padding),P=k([h,hr(w,-or,or)]),p=k([_,hr(y,-or,or)]),g=[Math.max(Math.abs(p[0]-P[0]),l),Math.max(Math.abs(p[1]-P[1]),l)],m=[e-M.left-M.right-Math.abs(v[0])*2,t-M.top-M.bottom-Math.abs(v[1])*2];C(m[0]>0&&m[1]>0);var x=m[0]/g[0],E=m[1]/g[1],D=(M.right-M.left)/2/x,T=(M.bottom-M.top)/2/E,S=[(p[0]+P[0])/2+D,(p[1]+P[1])/2+T],z=q(S),O=Math.min(i,_r(Math.abs(Math.min(x,E))));return C(Number.isFinite(O)),{longitude:z[0],latitude:z[1],zoom:O}}function ut(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:(C(Number.isFinite(r.top)&&Number.isFinite(r.bottom)&&Number.isFinite(r.left)&&Number.isFinite(r.right)),r)}var Te=Math.PI/180;function Lr(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=r.width,n=r.height,a=r.unproject,l={targetZ:e},o=a([0,n],l),i=a([t,n],l),s,v,c=r.fovy?.5*r.fovy*Te:Math.atan(.5/r.altitude),f=(90-r.pitch)*Te;return c>f-.01?(s=Se(r,0,e),v=Se(r,t,e)):(s=a([0,0],l),v=a([t,0],l)),[o,i,v,s]}function Se(r,e,t){var n=r.pixelUnprojectionMatrix,a=B(n,[e,0,1,1]),l=B(n,[e,r.height,1,1]),o=t*r.distanceScales.unitsPerMeter[2],i=(o-a[2])/(l[2]-a[2]),s=Or([],a,l,i),v=q(s);return v.push(t),v}var je=function(){function r(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vr(this,r),b(this,"latitude",void 0),b(this,"longitude",void 0),b(this,"zoom",void 0),b(this,"pitch",void 0),b(this,"bearing",void 0),b(this,"altitude",void 0),b(this,"fovy",void 0),b(this,"meterOffset",void 0),b(this,"center",void 0),b(this,"width",void 0),b(this,"height",void 0),b(this,"scale",void 0),b(this,"distanceScales",void 0),b(this,"viewMatrix",void 0),b(this,"projectionMatrix",void 0),b(this,"viewProjectionMatrix",void 0),b(this,"pixelProjectionMatrix",void 0),b(this,"pixelUnprojectionMatrix",void 0),b(this,"equals",function(O){return O instanceof r?O.width===e.width&&O.height===e.height&&Xr(O.projectionMatrix,e.projectionMatrix)&&Xr(O.viewMatrix,e.viewMatrix):!1}),b(this,"project",function(O){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=A.topLeft,$=d===void 0?!0:d,F=e.projectPosition(O),I=te(F,e.pixelProjectionMatrix),K=j(I,2),Mr=K[0],vr=K[1],fr=$?vr:e.height-vr;return O.length===2?[Mr,fr]:[Mr,fr,I[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,I=F===void 0?void 0:F,K=j(O,3),Mr=K[0],vr=K[1],fr=K[2],Je=$?vr:e.height-vr,rt=I&&I*e.distanceScales.unitsPerMeter[2],et=zr([Mr,Je,fr],e.pixelUnprojectionMatrix,rt),tt=e.unprojectPosition(et),Dr=j(tt,3),Ir=Dr[0],Rr=Dr[1],nt=Dr[2];return Number.isFinite(fr)?[Ir,Rr,nt]:Number.isFinite(I)?[Ir,Rr,I]:[Ir,Rr]}),b(this,"projectPosition",function(O){var A=k(O),d=j(A,2),$=d[0],F=d[1],I=(O[2]||0)*e.distanceScales.unitsPerMeter[2];return[$,F,I]}),b(this,"unprojectPosition",function(O){var A=q(O),d=j(A,2),$=d[0],F=d[1],I=(O[2]||0)*e.distanceScales.metersPerUnit[2];return[$,F,I]});var n=t.width,a=t.height,l=t.altitude,o=l===void 0?null:l,i=t.fovy,s=i===void 0?null:i,v=t.latitude,c=v===void 0?0:v,f=t.longitude,h=f===void 0?0:f,y=t.zoom,u=y===void 0?0:y,_=t.pitch,w=_===void 0?0:_,M=t.bearing,P=M===void 0?0:M,p=t.position,g=p===void 0?null:p,m=t.nearZMultiplier,x=m===void 0?.02:m,E=t.farZMultiplier,D=E===void 0?1.01:E;n=n||1,a=a||1,s===null&&o===null?(o=Qr,s=ir(o)):s===null?s=ir(o):o===null&&(o=Er(s));var T=br(u);o=Math.max(.75,o);var S=Jr({longitude:h,latitude:c}),z=k([h,c]);z.push(0),g&&Oe(z,z,Ee([],g,S.unitsPerMeter)),this.projectionMatrix=ee({width:n,height:a,scale:T,center:z,pitch:w,fovy:s,nearZMultiplier:x,farZMultiplier:D}),this.viewMatrix=re({height:a,scale:T,center:z,pitch:w,bearing:P,altitude:o}),this.width=n,this.height=a,this.scale=T,this.latitude=c,this.longitude=h,this.zoom=u,this.pitch=w,this.bearing=P,this.altitude=o,this.fovy=s,this.center=z,this.meterOffset=g||[0,0,0],this.distanceScales=S,this._initMatrices(),Object.freeze(this)}return Wr(r,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,a=this.projectionMatrix,l=this.viewMatrix,o=nr();wr(o,o,a),wr(o,o,l),this.viewProjectionMatrix=o;var i=nr();Pr(i,i,[t/2,-n/2,1]),pr(i,i,[1,-1,0]),wr(i,i,o);var s=ge(nr(),i);if(!s)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=i,this.pixelUnprojectionMatrix=s}},{key:"projectFlat",value:function(t){return k(t)}},{key:"unprojectFlat",value:function(t){return q(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,a=t.pos,l=zr(a,this.pixelUnprojectionMatrix),o=k(n),i=Br([],o,Pe([],l)),s=Br([],this.center,i);return q(s)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=this.width,l=this.height,o=Ar(Object.assign({width:a,height:l,bounds:t},n)),i=o.longitude,s=o.latitude,v=o.zoom;return new r({width:a,height:l,longitude:i,latitude:s,zoom:v})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),a=Math.min.apply(Math,tr(n.map(function(s){return s[0]}))),l=Math.max.apply(Math,tr(n.map(function(s){return s[0]}))),o=Math.min.apply(Math,tr(n.map(function(s){return s[1]}))),i=Math.max.apply(Math,tr(n.map(function(s){return s[1]})));return[[a,o],[l,i]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Lr(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,a=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:a})}}]),r}();function De(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?De(Object(t),!0).forEach(function(n){(0,Re.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):De(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var ne=512,wt=Math.PI/180;function Tr(r){var e=r.map,t=r.gl,n=r.deck;if(e.__deck)return e.__deck;var a=n?.props._customRender,l=n?.props.onLoad,o=ae(H(H({},n?.props),{},{_customRender:function(){e.triggerRepaint(),a?.("")}})),i;return(!n||n.props.gl===t)&&(Object.assign(o,{gl:t,width:null,height:null,touchAction:"unset",viewState:sr(e)}),n!=null&&n.isInitialized?Ie(n,e):o.onLoad=function(){l?.(),Ie(i,e)}),n?(i=n,n.setProps(o),n.userData.isExternal=!0):(i=new U.Deck(o),e.on("remove",function(){i.finalize(),e.__deck=null})),i.userData.mapboxLayers=new Set,e.__deck=i,e.on("render",function(){i.isInitialized&&Ot(i,e)}),i}function Ie(r,e){var t=function n(){r.isInitialized?bt(r,e):e.off("move",n)};e.on("move",t)}function ae(r){var e="useDevicePixels"in r?r.useDevicePixels:!0,t=H(H({},r),{},{useDevicePixels:e,parameters:H({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},r.parameters),views:r.views||[new U.MapView({id:"mapbox"})]});return t}function ke(r,e){r.userData.mapboxLayers.add(e),ie(r)}function Ne(r,e){r.userData.mapboxLayers.delete(e),ie(r)}function Fe(r,e){ie(r)}function Ce(r,e,t){var n=r.userData,a=n.currentViewport,l=!1;a||(a=Ye(r,e,!0),r.userData.currentViewport=a,l=!0),r.isInitialized&&r._drawLayers("mapbox-repaint",{viewports:[a],layerFilter:function(i){var s=i.layer;return t.id===s.id},clearStack:l,clearCanvas:!1})}function sr(r){var e,t=r.getCenter(),n=t.lng,a=t.lat,l={longitude:(n+540)%360-180,latitude:a,zoom:r.getZoom(),bearing:r.getBearing(),pitch:r.getPitch(),padding:r.getPadding(),repeat:r.getRenderWorldCopies()};return(e=r.getTerrain)!==null&&e!==void 0&&e.call(r)&&Pt(r,l),l}function Pt(r,e){if(r.getFreeCameraOptions){var t=r.getFreeCameraOptions(),n=t.position;if(!n||n.z===void 0)return;var a=r.transform.height,l=e.longitude,o=e.latitude,i=e.pitch,s=n.x*ne,v=(1-n.y)*ne,c=n.z*ne,f=k([l,o]),h=s-f[0],y=v-f[1],u=Math.sqrt(h*h+y*y),_=i*wt,w=1.5*a,M=_<.001?w*Math.cos(_)/c:w*Math.sin(_)/u;e.zoom=Math.log2(M);var P=w*Math.cos(_)/M,p=c-P;e.position=[0,0,p/Kr(o)]}else typeof r.transform.elevation=="number"&&(e.position=[0,0,r.transform.elevation])}function Ye(r,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new U.WebMercatorViewport(H(H({id:"mapbox",x:0,y:0,width:r.width,height:r.height},sr(e)),{},{nearZMultiplier:t?.02:.1}))}function Ot(r,e){var t=r.userData,n=t.mapboxLayers,a=t.isExternal;if(a){var l=Array.from(n,function(f){return f.id}),o=(0,U._flatten)(r.props.layers,Boolean),i=o.some(function(f){return f&&!l.includes(f.id)}),s=r.getViewports(),v=s.findIndex(function(f){return f.id==="mapbox"}),c=s.length>1||v<0;(i||c)&&(v>=0&&(s=s.slice(),s[v]=Ye(r,e,!1)),r._drawLayers("mapbox-repaint",{viewports:s,layerFilter:function(h){return(!r.props.layerFilter||r.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!l.includes(h.layer.id))},clearCanvas:!1}))}r.userData.currentViewport=null}function bt(r,e){r.setProps({viewState:sr(e)}),r.needsRedraw({clearRedrawFlags:!0})}function ie(r){if(!r.userData.isExternal){var e=[];r.userData.mapboxLayers.forEach(function(t){var n=t.props.type,a=new n(t.props);e.push(a)}),r.setProps({layers:e})}}var Sr=function(){function r(e){if((0,Ze.default)(this,r),(0,G.default)(this,"id",void 0),(0,G.default)(this,"type",void 0),(0,G.default)(this,"renderingMode",void 0),(0,G.default)(this,"map",void 0),(0,G.default)(this,"deck",void 0),(0,G.default)(this,"props",void 0),!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.map=null,this.deck=null,this.props=e}return(0,qe.default)(r,[{key:"onAdd",value:function(t,n){this.map=t,this.deck=Tr({map:t,gl:n,deck:this.props.deck}),ke(this.deck,this)}},{key:"onRemove",value:function(){this.deck&&Ne(this.deck,this)}},{key:"setProps",value:function(t){Object.assign(this.props,t,{id:this.id}),this.deck&&Fe(this.deck,this)}},{key:"render",value:function(){Ce(this.deck,this.map,this)}}]),r}();var He=R(Xe()),Ge=R(kr()),Qe=R(Nr()),N=R(yr()),Q=R(rr());var se=R(rr());function jr(r,e){var t=typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=Lt(r))||e&&r&&typeof r.length=="number"){t&&(r=t);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(v){throw v},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
10
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l=!0,o=!1,i;return{s:function(){t=t.call(r)},n:function(){var v=t.next();return l=v.done,v},e:function(v){o=!0,i=v},f:function(){try{!l&&t.return!=null&&t.return()}finally{if(o)throw i}}}}function Lt(r,e){if(r){if(typeof r=="string")return Be(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Be(r,e)}}function Be(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var oe="__UNDEFINED__";function dr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,se._flatten)(n,Boolean);if(t!==n){var l=(0,se._flatten)(t,Boolean),o=new Set(l.map(function(d){return d.id})),i=jr(a),s;try{for(i.s();!(s=i.n()).done;){var v=s.value;o.delete(v.id)}}catch(d){i.e(d)}finally{i.f()}var c=jr(o),f;try{for(c.s();!(f=c.n()).done;){var h=f.value;r.getLayer(h)&&r.removeLayer(h)}}catch(d){c.e(d)}finally{c.f()}}var y=jr(a),u;try{for(y.s();!(u=y.n()).done;){var _=u.value,w=r.getLayer(_.id);w?w.implementation.setProps(_.props):r.addLayer(new Sr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=jr(a),g;try{for(p.s();!(g=p.n()).done;){var m=g.value,x=m.props.beforeId;(!x||!M.includes(x))&&(x=oe),P[x]=P[x]||[],P[x].push(m.id)}}catch(d){p.e(d)}finally{p.f()}for(var E in P)for(var D=P[E],T=E===oe?M.length:M.indexOf(E),S=E===oe?void 0:E,z=D.length-1;z>=0;z--){var O=D[z],A=M.indexOf(O);A!==T-1&&(r.moveLayer(O,S),A>T&&T++),T--,S=O}}}var Tt=["interleaved"];function Ue(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(r,a).enumerable})),t.push.apply(t,n)}return t}function lr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ue(Object(t),!0).forEach(function(n){(0,N.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Ue(Object(t)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(t,n))})}return r}var Ke=function(){function r(e){var t=this;(0,Ge.default)(this,r),(0,N.default)(this,"_props",void 0),(0,N.default)(this,"_deck",void 0),(0,N.default)(this,"_map",void 0),(0,N.default)(this,"_container",void 0),(0,N.default)(this,"_interleaved",void 0),(0,N.default)(this,"_lastMouseDownPoint",void 0),(0,N.default)(this,"_handleStyleChange",function(){dr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,N.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var o=t._map.getContainer(),i=o.clientWidth,s=o.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(s,"px")})}}),(0,N.default)(this,"_updateViewState",function(){var o=t._deck;o&&(o.setProps({viewState:sr(t._map)}),o.isInitialized&&o.redraw())}),(0,N.default)(this,"_handleMouseEvent",function(o){var i=t._deck;if(!(!i||!i.isInitialized)){var s={type:o.type,offsetCenter:o.point,srcEvent:o},v=t._lastMouseDownPoint;switch(!o.point&&v&&(s.deltaX=o.originalEvent.clientX-v.clientX,s.deltaY=o.originalEvent.clientY-v.clientY,s.offsetCenter={x:v.x+s.deltaX,y:v.y+s.deltaY}),s.type){case"mousedown":i._onPointerDown(s),t._lastMouseDownPoint=lr(lr({},o.point),{},{clientX:o.originalEvent.clientX,clientY:o.originalEvent.clientY});break;case"dragstart":s.type="panstart",i._onEvent(s);break;case"drag":s.type="panmove",i._onEvent(s);break;case"dragend":s.type="panend",i._onEvent(s);break;case"click":s.tapCount=1,i._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,i._onEvent(s);break;case"mousemove":s.type="pointermove",i._onPointerMove(s);break;case"mouseout":s.type="pointerleave",i._onPointerMove(s);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,l=(0,He.default)(e,Tt);this._interleaved=a,this._props=l}return(0,Qe.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&dr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?ae(this._props):this._props)}},{key:"onAdd",value:function(t){return this._map=t,this._interleaved?this._onAddInterleaved(t):this._onAddOverlaid(t)}},{key:"_onAddOverlaid",value:function(t){var n=document.createElement("div");return Object.assign(n.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=n,this._deck=new Q.Deck(lr(lr({},this._props),{},{parent:n,viewState:sr(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),t.on("mousedown",this._handleMouseEvent),t.on("dragstart",this._handleMouseEvent),t.on("drag",this._handleMouseEvent),t.on("dragend",this._handleMouseEvent),t.on("mousemove",this._handleMouseEvent),t.on("mouseout",this._handleMouseEvent),t.on("click",this._handleMouseEvent),t.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),n}},{key:"_onAddInterleaved",value:function(t){return this._deck=Tr({map:t,gl:t.painter.context.gl,deck:new Q.Deck(lr(lr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),dr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t,n=this._map;n&&(this._interleaved?this._onRemoveInterleaved(n):this._onRemoveOverlaid(n)),(t=this._deck)===null||t===void 0||t.finalize(),this._deck=void 0,this._map=void 0,this._container=void 0}},{key:"_onRemoveOverlaid",value:function(t){t.off("resize",this._updateContainerSize),t.off("render",this._updateViewState),t.off("mousedown",this._handleMouseEvent),t.off("dragstart",this._handleMouseEvent),t.off("drag",this._handleMouseEvent),t.off("dragend",this._handleMouseEvent),t.off("mousemove",this._handleMouseEvent),t.off("mouseout",this._handleMouseEvent),t.off("click",this._handleMouseEvent),t.off("dblclick",this._handleMouseEvent)}},{key:"_onRemoveInterleaved",value:function(t){t.off("styledata",this._handleStyleChange),dr(t,this._deck,this._props.layers,[])}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObject(t)}},{key:"pickMultipleObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickMultipleObjects(t)}},{key:"pickObjects",value:function(t){return(0,Q.assert)(this._deck),this._deck.pickObjects(t)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),r}();return ft(xr);})();
|
|
11
11
|
return __exports__;
|
|
12
12
|
});
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/mapbox",
|
|
3
3
|
"description": "Use deck.gl layers as custom mapbox-gl-js layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.9.
|
|
5
|
+
"version": "8.9.6",
|
|
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": "539cc9960aa47bbe22f607a5de49e943f6765d61"
|
|
39
39
|
}
|
package/src/mapbox-overlay.ts
CHANGED
|
@@ -32,6 +32,7 @@ export default class MapboxOverlay implements IControl {
|
|
|
32
32
|
private _map?: Map;
|
|
33
33
|
private _container?: HTMLDivElement;
|
|
34
34
|
private _interleaved: boolean;
|
|
35
|
+
private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};
|
|
35
36
|
|
|
36
37
|
constructor(props: MapboxOverlayProps) {
|
|
37
38
|
const {interleaved = false, ...otherProps} = props;
|
|
@@ -77,6 +78,10 @@ export default class MapboxOverlay implements IControl {
|
|
|
77
78
|
|
|
78
79
|
map.on('resize', this._updateContainerSize);
|
|
79
80
|
map.on('render', this._updateViewState);
|
|
81
|
+
map.on('mousedown', this._handleMouseEvent);
|
|
82
|
+
map.on('dragstart', this._handleMouseEvent);
|
|
83
|
+
map.on('drag', this._handleMouseEvent);
|
|
84
|
+
map.on('dragend', this._handleMouseEvent);
|
|
80
85
|
map.on('mousemove', this._handleMouseEvent);
|
|
81
86
|
map.on('mouseout', this._handleMouseEvent);
|
|
82
87
|
map.on('click', this._handleMouseEvent);
|
|
@@ -125,6 +130,10 @@ export default class MapboxOverlay implements IControl {
|
|
|
125
130
|
private _onRemoveOverlaid(map: Map): void {
|
|
126
131
|
map.off('resize', this._updateContainerSize);
|
|
127
132
|
map.off('render', this._updateViewState);
|
|
133
|
+
map.off('mousedown', this._handleMouseEvent);
|
|
134
|
+
map.off('dragstart', this._handleMouseEvent);
|
|
135
|
+
map.off('drag', this._handleMouseEvent);
|
|
136
|
+
map.off('dragend', this._handleMouseEvent);
|
|
128
137
|
map.off('mousemove', this._handleMouseEvent);
|
|
129
138
|
map.off('mouseout', this._handleMouseEvent);
|
|
130
139
|
map.off('click', this._handleMouseEvent);
|
|
@@ -187,18 +196,22 @@ export default class MapboxOverlay implements IControl {
|
|
|
187
196
|
// @ts-ignore (2345) map is always defined if deck is
|
|
188
197
|
deck.setProps({viewState: getViewState(this._map)});
|
|
189
198
|
// Redraw immediately if view state has changed
|
|
190
|
-
deck.
|
|
199
|
+
if (deck.isInitialized) {
|
|
200
|
+
deck.redraw();
|
|
201
|
+
}
|
|
191
202
|
}
|
|
192
203
|
};
|
|
193
204
|
|
|
194
205
|
private _handleMouseEvent = (event: MapMouseEvent) => {
|
|
195
206
|
const deck = this._deck;
|
|
196
|
-
if (!deck) {
|
|
207
|
+
if (!deck || !deck.isInitialized) {
|
|
197
208
|
return;
|
|
198
209
|
}
|
|
199
210
|
|
|
200
211
|
const mockEvent: {
|
|
201
212
|
type: string;
|
|
213
|
+
deltaX?: number;
|
|
214
|
+
deltaY?: number;
|
|
202
215
|
offsetCenter: {x: number; y: number};
|
|
203
216
|
srcEvent: MapMouseEvent;
|
|
204
217
|
tapCount?: number;
|
|
@@ -208,11 +221,44 @@ export default class MapboxOverlay implements IControl {
|
|
|
208
221
|
srcEvent: event
|
|
209
222
|
};
|
|
210
223
|
|
|
211
|
-
|
|
224
|
+
const lastDown = this._lastMouseDownPoint;
|
|
225
|
+
if (!event.point && lastDown) {
|
|
226
|
+
// drag* events do not contain a `point` field
|
|
227
|
+
mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;
|
|
228
|
+
mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;
|
|
229
|
+
mockEvent.offsetCenter = {
|
|
230
|
+
x: lastDown.x + mockEvent.deltaX,
|
|
231
|
+
y: lastDown.y + mockEvent.deltaY
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
switch (mockEvent.type) {
|
|
236
|
+
case 'mousedown':
|
|
237
|
+
deck._onPointerDown(mockEvent as MjolnirGestureEvent);
|
|
238
|
+
this._lastMouseDownPoint = {
|
|
239
|
+
...event.point,
|
|
240
|
+
clientX: event.originalEvent.clientX,
|
|
241
|
+
clientY: event.originalEvent.clientY
|
|
242
|
+
};
|
|
243
|
+
break;
|
|
244
|
+
|
|
245
|
+
case 'dragstart':
|
|
246
|
+
mockEvent.type = 'panstart';
|
|
247
|
+
deck._onEvent(mockEvent as MjolnirGestureEvent);
|
|
248
|
+
break;
|
|
249
|
+
|
|
250
|
+
case 'drag':
|
|
251
|
+
mockEvent.type = 'panmove';
|
|
252
|
+
deck._onEvent(mockEvent as MjolnirGestureEvent);
|
|
253
|
+
break;
|
|
254
|
+
|
|
255
|
+
case 'dragend':
|
|
256
|
+
mockEvent.type = 'panend';
|
|
257
|
+
deck._onEvent(mockEvent as MjolnirGestureEvent);
|
|
258
|
+
break;
|
|
259
|
+
|
|
212
260
|
case 'click':
|
|
213
261
|
mockEvent.tapCount = 1;
|
|
214
|
-
// Hack: because we do not listen to pointer down, perform picking now
|
|
215
|
-
deck._onPointerDown(mockEvent as MjolnirGestureEvent);
|
|
216
262
|
deck._onEvent(mockEvent as MjolnirGestureEvent);
|
|
217
263
|
break;
|
|
218
264
|
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Deck, WebMercatorViewport, MapView, _flatten as flatten } from '@deck.gl/core';
|
|
2
|
+
export function getDeckInstance({ map, gl, deck }) {
|
|
3
|
+
// Only create one deck instance per context
|
|
4
|
+
if (map.__deck) {
|
|
5
|
+
return map.__deck;
|
|
6
|
+
}
|
|
7
|
+
const customRender = deck?.props._customRender;
|
|
8
|
+
const deckProps = {
|
|
9
|
+
useDevicePixels: true,
|
|
10
|
+
_customRender: (reason) => {
|
|
11
|
+
map.triggerRepaint();
|
|
12
|
+
// customRender may be subscribed by DeckGL React component to update child props
|
|
13
|
+
// make sure it is still called
|
|
14
|
+
customRender?.(reason);
|
|
15
|
+
},
|
|
16
|
+
// TODO: import these defaults from a single source of truth
|
|
17
|
+
parameters: {
|
|
18
|
+
depthMask: true,
|
|
19
|
+
depthTest: true,
|
|
20
|
+
blend: true,
|
|
21
|
+
blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],
|
|
22
|
+
polygonOffsetFill: true,
|
|
23
|
+
depthFunc: gl.LEQUAL,
|
|
24
|
+
blendEquation: gl.FUNC_ADD
|
|
25
|
+
},
|
|
26
|
+
views: (deck && deck.props.views) || [new MapView({ id: 'mapbox' })]
|
|
27
|
+
};
|
|
28
|
+
if (!deck || deck.props.gl === gl) {
|
|
29
|
+
// deck is using the WebGLContext created by mapbox
|
|
30
|
+
// block deck from setting the canvas size
|
|
31
|
+
Object.assign(deckProps, {
|
|
32
|
+
gl,
|
|
33
|
+
width: null,
|
|
34
|
+
height: null,
|
|
35
|
+
touchAction: 'unset',
|
|
36
|
+
viewState: getViewState(map)
|
|
37
|
+
});
|
|
38
|
+
// If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
|
|
39
|
+
// Otherwise (pure JS use case), we use the map's viewState to drive deck.
|
|
40
|
+
map.on('move', () => onMapMove(deck, map));
|
|
41
|
+
}
|
|
42
|
+
if (deck) {
|
|
43
|
+
deck.setProps(deckProps);
|
|
44
|
+
deck.userData.isExternal = true;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
deck = new Deck(deckProps);
|
|
48
|
+
map.on('remove', () => {
|
|
49
|
+
deck.finalize();
|
|
50
|
+
map.__deck = null;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
deck.userData.mapboxLayers = new Set();
|
|
54
|
+
deck.userData.mapboxVersion = getMapboxVersion(map);
|
|
55
|
+
map.__deck = deck;
|
|
56
|
+
map.on('render', () => {
|
|
57
|
+
// @ts-expect-error (2445) protected property
|
|
58
|
+
if (deck.layerManager)
|
|
59
|
+
afterRender(deck, map);
|
|
60
|
+
});
|
|
61
|
+
return deck;
|
|
62
|
+
}
|
|
63
|
+
export function addLayer(deck, layer) {
|
|
64
|
+
deck.userData.mapboxLayers.add(layer);
|
|
65
|
+
updateLayers(deck);
|
|
66
|
+
}
|
|
67
|
+
export function removeLayer(deck, layer) {
|
|
68
|
+
deck.userData.mapboxLayers.delete(layer);
|
|
69
|
+
updateLayers(deck);
|
|
70
|
+
}
|
|
71
|
+
export function updateLayer(deck, layer) {
|
|
72
|
+
updateLayers(deck);
|
|
73
|
+
}
|
|
74
|
+
export function drawLayer(deck, map, layer) {
|
|
75
|
+
let { currentViewport } = deck.userData;
|
|
76
|
+
if (!currentViewport) {
|
|
77
|
+
// This is the first layer drawn in this render cycle.
|
|
78
|
+
// Generate viewport from the current map state.
|
|
79
|
+
currentViewport = getViewport(deck, map, true);
|
|
80
|
+
deck.userData.currentViewport = currentViewport;
|
|
81
|
+
}
|
|
82
|
+
// @ts-expect-error (2445) protected property
|
|
83
|
+
if (!deck.layerManager) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
deck._drawLayers('mapbox-repaint', {
|
|
87
|
+
viewports: [currentViewport],
|
|
88
|
+
layerFilter: ({ layer: deckLayer }) => layer.id === deckLayer.id,
|
|
89
|
+
clearCanvas: false
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export function getViewState(map) {
|
|
93
|
+
const { lng, lat } = map.getCenter();
|
|
94
|
+
return {
|
|
95
|
+
// Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian
|
|
96
|
+
// https://github.com/visgl/deck.gl/issues/6894
|
|
97
|
+
longitude: ((lng + 540) % 360) - 180,
|
|
98
|
+
latitude: lat,
|
|
99
|
+
zoom: map.getZoom(),
|
|
100
|
+
bearing: map.getBearing(),
|
|
101
|
+
pitch: map.getPitch(),
|
|
102
|
+
repeat: map.getRenderWorldCopies()
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function getMapboxVersion(map) {
|
|
106
|
+
// parse mapbox version string
|
|
107
|
+
let major = 0;
|
|
108
|
+
let minor = 0;
|
|
109
|
+
// @ts-ignore (2339) undefined property
|
|
110
|
+
const version = map.version;
|
|
111
|
+
if (version) {
|
|
112
|
+
[major, minor] = version.split('.').slice(0, 2).map(Number);
|
|
113
|
+
}
|
|
114
|
+
return { major, minor };
|
|
115
|
+
}
|
|
116
|
+
function getViewport(deck, map, useMapboxProjection = true) {
|
|
117
|
+
const { mapboxVersion } = deck.userData;
|
|
118
|
+
return new WebMercatorViewport(Object.assign({
|
|
119
|
+
id: 'mapbox',
|
|
120
|
+
x: 0,
|
|
121
|
+
y: 0,
|
|
122
|
+
width: deck.width,
|
|
123
|
+
height: deck.height
|
|
124
|
+
}, getViewState(map), useMapboxProjection
|
|
125
|
+
? {
|
|
126
|
+
// match mapbox's projection matrix
|
|
127
|
+
// A change of near plane was made in 1.3.0
|
|
128
|
+
// https://github.com/mapbox/mapbox-gl-js/pull/8502
|
|
129
|
+
nearZMultiplier: (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2
|
|
130
|
+
? 0.02
|
|
131
|
+
: 1 / (deck.height || 1)
|
|
132
|
+
}
|
|
133
|
+
: {
|
|
134
|
+
// use deck.gl's own default
|
|
135
|
+
nearZMultiplier: 0.1
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
function afterRender(deck, map) {
|
|
139
|
+
const { mapboxLayers, isExternal } = deck.userData;
|
|
140
|
+
if (isExternal) {
|
|
141
|
+
// Draw non-Mapbox layers
|
|
142
|
+
const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
|
|
143
|
+
const deckLayers = flatten(deck.props.layers, Boolean);
|
|
144
|
+
const hasNonMapboxLayers = deckLayers.some(layer => layer && !mapboxLayerIds.includes(layer.id));
|
|
145
|
+
let viewports = deck.getViewports();
|
|
146
|
+
const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');
|
|
147
|
+
const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
|
|
148
|
+
if (hasNonMapboxLayers || hasNonMapboxViews) {
|
|
149
|
+
if (mapboxViewportIdx >= 0) {
|
|
150
|
+
viewports = viewports.slice();
|
|
151
|
+
viewports[mapboxViewportIdx] = getViewport(deck, map, false);
|
|
152
|
+
}
|
|
153
|
+
deck._drawLayers('mapbox-repaint', {
|
|
154
|
+
viewports,
|
|
155
|
+
layerFilter: params => (!deck.props.layerFilter || deck.props.layerFilter(params)) &&
|
|
156
|
+
(params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),
|
|
157
|
+
clearCanvas: false
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// End of render cycle, clear generated viewport
|
|
162
|
+
deck.userData.currentViewport = null;
|
|
163
|
+
}
|
|
164
|
+
function onMapMove(deck, map) {
|
|
165
|
+
deck.setProps({
|
|
166
|
+
viewState: getViewState(map)
|
|
167
|
+
});
|
|
168
|
+
// Camera changed, will trigger a map repaint right after this
|
|
169
|
+
// Clear any change flag triggered by setting viewState so that deck does not request
|
|
170
|
+
// a second repaint
|
|
171
|
+
deck.needsRedraw({ clearRedrawFlags: true });
|
|
172
|
+
}
|
|
173
|
+
function updateLayers(deck) {
|
|
174
|
+
if (deck.userData.isExternal) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const layers = [];
|
|
178
|
+
let layerIndex = 0;
|
|
179
|
+
deck.userData.mapboxLayers.forEach(deckLayer => {
|
|
180
|
+
const LayerType = deckLayer.props.type;
|
|
181
|
+
const layer = new LayerType(deckLayer.props, { _offset: layerIndex++ });
|
|
182
|
+
layers.push(layer);
|
|
183
|
+
});
|
|
184
|
+
deck.setProps({ layers });
|
|
185
|
+
}
|
package/typed/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
|
|
2
|
+
export default class MapboxLayer {
|
|
3
|
+
/* eslint-disable no-this-before-super */
|
|
4
|
+
constructor(props) {
|
|
5
|
+
if (!props.id) {
|
|
6
|
+
throw new Error('Layer must have an unique id');
|
|
7
|
+
}
|
|
8
|
+
this.id = props.id;
|
|
9
|
+
this.type = 'custom';
|
|
10
|
+
this.renderingMode = props.renderingMode || '3d';
|
|
11
|
+
this.map = null;
|
|
12
|
+
this.deck = null;
|
|
13
|
+
this.props = props;
|
|
14
|
+
}
|
|
15
|
+
/* Mapbox custom layer methods */
|
|
16
|
+
onAdd(map, gl) {
|
|
17
|
+
this.map = map;
|
|
18
|
+
this.deck = getDeckInstance({ map, gl, deck: this.props.deck });
|
|
19
|
+
addLayer(this.deck, this);
|
|
20
|
+
}
|
|
21
|
+
onRemove() {
|
|
22
|
+
if (this.deck) {
|
|
23
|
+
removeLayer(this.deck, this);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
setProps(props) {
|
|
27
|
+
// id cannot be changed
|
|
28
|
+
Object.assign(this.props, props, { id: this.id });
|
|
29
|
+
// safe guard in case setProps is called before onAdd
|
|
30
|
+
if (this.deck) {
|
|
31
|
+
updateLayer(this.deck, this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
drawLayer(this.deck, this.map, this);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -14,6 +14,7 @@ export default class MapboxOverlay implements IControl {
|
|
|
14
14
|
private _map?;
|
|
15
15
|
private _container?;
|
|
16
16
|
private _interleaved;
|
|
17
|
+
private _lastMouseDownPoint?;
|
|
17
18
|
constructor(props: MapboxOverlayProps);
|
|
18
19
|
/** Update (partial) props of the underlying Deck instance. */
|
|
19
20
|
setProps(props: MapboxOverlayProps): void;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAA2D;gBAE3E,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAiBhB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAIlB,0CAA0C;IAC1C,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAKrF,mDAAmD;IACnD,mBAAmB,CACjB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAK1C,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKxF,iDAAiD;IACjD,QAAQ;IAMR,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,oBAAoB,CAQ1B;IAEF,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,iBAAiB,CA+EvB;CACH"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Deck, assert } from '@deck.gl/core';
|
|
2
|
+
import { getViewState } from './deck-utils';
|
|
3
|
+
/**
|
|
4
|
+
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
5
|
+
* Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
|
|
6
|
+
*/
|
|
7
|
+
export default class MapboxOverlay {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
this._updateContainerSize = () => {
|
|
10
|
+
if (this._map && this._container) {
|
|
11
|
+
const { clientWidth, clientHeight } = this._map.getContainer();
|
|
12
|
+
Object.assign(this._container.style, {
|
|
13
|
+
width: `${clientWidth}px`,
|
|
14
|
+
height: `${clientHeight}px`
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
this._updateViewState = () => {
|
|
19
|
+
const deck = this._deck;
|
|
20
|
+
if (deck) {
|
|
21
|
+
// @ts-ignore (2345) map is always defined if deck is
|
|
22
|
+
deck.setProps({ viewState: getViewState(this._map) });
|
|
23
|
+
// Redraw immediately if view state has changed
|
|
24
|
+
deck.redraw();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
this._handleMouseEvent = (event) => {
|
|
28
|
+
const deck = this._deck;
|
|
29
|
+
if (!deck) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const mockEvent = {
|
|
33
|
+
type: event.type,
|
|
34
|
+
offsetCenter: event.point,
|
|
35
|
+
srcEvent: event
|
|
36
|
+
};
|
|
37
|
+
switch (event.type) {
|
|
38
|
+
case 'click':
|
|
39
|
+
mockEvent.tapCount = 1;
|
|
40
|
+
// Hack: because we do not listen to pointer down, perform picking now
|
|
41
|
+
deck._onPointerDown(mockEvent);
|
|
42
|
+
deck._onEvent(mockEvent);
|
|
43
|
+
break;
|
|
44
|
+
case 'dblclick':
|
|
45
|
+
mockEvent.type = 'click';
|
|
46
|
+
mockEvent.tapCount = 2;
|
|
47
|
+
deck._onEvent(mockEvent);
|
|
48
|
+
break;
|
|
49
|
+
case 'mousemove':
|
|
50
|
+
mockEvent.type = 'pointermove';
|
|
51
|
+
deck._onPointerMove(mockEvent);
|
|
52
|
+
break;
|
|
53
|
+
case 'mouseout':
|
|
54
|
+
mockEvent.type = 'pointerleave';
|
|
55
|
+
deck._onPointerMove(mockEvent);
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
this._props = { ...props };
|
|
62
|
+
}
|
|
63
|
+
/** Update (partial) props of the underlying Deck instance. */
|
|
64
|
+
setProps(props) {
|
|
65
|
+
Object.assign(this._props, props);
|
|
66
|
+
if ('viewState' in this._props) {
|
|
67
|
+
delete this._props.viewState;
|
|
68
|
+
}
|
|
69
|
+
if (this._deck) {
|
|
70
|
+
this._deck.setProps(this._props);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Called when the control is added to a map */
|
|
74
|
+
onAdd(map) {
|
|
75
|
+
this._map = map;
|
|
76
|
+
/* global document */
|
|
77
|
+
const container = document.createElement('div');
|
|
78
|
+
Object.assign(container.style, {
|
|
79
|
+
position: 'absolute',
|
|
80
|
+
left: 0,
|
|
81
|
+
top: 0,
|
|
82
|
+
pointerEvents: 'none'
|
|
83
|
+
});
|
|
84
|
+
this._container = container;
|
|
85
|
+
this._deck = new Deck({
|
|
86
|
+
...this._props,
|
|
87
|
+
parent: container,
|
|
88
|
+
viewState: getViewState(map)
|
|
89
|
+
});
|
|
90
|
+
map.on('resize', this._updateContainerSize);
|
|
91
|
+
map.on('render', this._updateViewState);
|
|
92
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
93
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
94
|
+
map.on('click', this._handleMouseEvent);
|
|
95
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
96
|
+
this._updateContainerSize();
|
|
97
|
+
return container;
|
|
98
|
+
}
|
|
99
|
+
/** Called when the control is removed from a map */
|
|
100
|
+
onRemove() {
|
|
101
|
+
const map = this._map;
|
|
102
|
+
if (map) {
|
|
103
|
+
map.off('resize', this._updateContainerSize);
|
|
104
|
+
map.off('render', this._updateViewState);
|
|
105
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
106
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
107
|
+
map.off('click', this._handleMouseEvent);
|
|
108
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
109
|
+
}
|
|
110
|
+
this._deck?.finalize();
|
|
111
|
+
this._deck = undefined;
|
|
112
|
+
this._map = undefined;
|
|
113
|
+
this._container = undefined;
|
|
114
|
+
}
|
|
115
|
+
getDefaultPosition() {
|
|
116
|
+
return 'top-left';
|
|
117
|
+
}
|
|
118
|
+
/** Forwards the Deck.pickObject method */
|
|
119
|
+
pickObject(params) {
|
|
120
|
+
assert(this._deck);
|
|
121
|
+
return this._deck.pickObject(params);
|
|
122
|
+
}
|
|
123
|
+
/** Forwards the Deck.pickMultipleObjects method */
|
|
124
|
+
pickMultipleObjects(params) {
|
|
125
|
+
assert(this._deck);
|
|
126
|
+
return this._deck.pickMultipleObjects(params);
|
|
127
|
+
}
|
|
128
|
+
/** Forwards the Deck.pickObjects method */
|
|
129
|
+
pickObjects(params) {
|
|
130
|
+
assert(this._deck);
|
|
131
|
+
return this._deck.pickObjects(params);
|
|
132
|
+
}
|
|
133
|
+
/** Remove from map and releases all resources */
|
|
134
|
+
finalize() {
|
|
135
|
+
if (this._map) {
|
|
136
|
+
this._map.removeControl(this);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|