@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 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.redraw();
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
- switch (event.type) {
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
- deck.redraw();
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
- deck.redraw();
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 mr=Object.defineProperty;var it=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var st=Object.getPrototypeOf,vt=Object.prototype.hasOwnProperty;var J=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),lt=(r,e)=>{for(var t in e)mr(r,t,{get:e[t],enumerable:!0})},Mr=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ot(e))!vt.call(r,a)&&a!==t&&mr(r,a,{get:()=>e[a],enumerable:!(n=it(e,a))||n.enumerable});return r},B=(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?mr(t,"default",{value:r,enumerable:!0}):t,r)),ft=r=>Mr(mr({},"__esModule",{value:!0}),r);var rr=J((jt,ve)=>{ve.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 gr=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((la,$e)=>{function At(r,e){if(r==null)return{};var t={},n=Object.keys(r),a,o;for(o=0;o<n.length;o++)a=n[o],!(e.indexOf(a)>=0)&&(t[a]=r[a]);return t}$e.exports=At});var Be=J((fa,We)=>{var zt=Ve();function Et(r,e){if(r==null)return{};var t=zt(r,e),n,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);for(a=0;a<o.length;a++)n=o[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(r,n)&&(t[n]=r[n])}return t}We.exports=Et});var dr={};lt(dr,{MapboxLayer:()=>Tr,MapboxOverlay:()=>Ke});var V={},le=R(rr());B(V,R(rr()));if(!le.Layer)throw new Error("@deck.gl/core is not found");B(dr,V);var Ze=R(kr()),qe=R(Nr()),G=R(gr());var Re=R(gr()),X=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 fr(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)||fr(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,o=!1,s,i;try{for(t=t.call(r);!(a=(s=t.next()).done)&&(n.push(s.value),!(e&&n.length===e));a=!0);}catch(v){o=!0,i=v}finally{try{!a&&t.return!=null&&t.return()}finally{if(o)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)||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 o=!0,s=!1,i;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return o=l.done,l},e:function(l){s=!0,i=l},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(s)throw i}}}}function Lt(r,e){if(r){if(typeof r=="string")return Ue(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Ue(r,e)}}function Ue(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}var oe="__UNDEFINED__";function pr(r,e,t,n){if(!(!r||!e||!r.style||!r.style._loaded)){var a=(0,se._flatten)(n,Boolean);if(t!==n){var o=(0,se._flatten)(t,Boolean),s=new Set(o.map(function(d){return d.id})),i=Sr(a),v;try{for(i.s();!(v=i.n()).done;){var l=v.value;s.delete(l.id)}}catch(d){i.e(d)}finally{i.f()}var c=Sr(s),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=Sr(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 Tr({id:_.id,deck:e}),_.props.beforeId)}}catch(d){y.e(d)}finally{y.f()}var M=r.style._order,P={},p=Sr(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 A in P)for(var D=P[A],T=A===oe?M.length:M.indexOf(A),S=A===oe?void 0:A,z=D.length-1;z>=0;z--){var O=D[z],E=M.indexOf(O);E!==T-1&&(r.moveLayer(O,S),E>T&&T++),T--,S=O}}}var Tt=["interleaved"];function Xe(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 jr(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Xe(Object(t),!0).forEach(function(n){(0,q.default)(r,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):Xe(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,q.default)(this,"_props",void 0),(0,q.default)(this,"_deck",void 0),(0,q.default)(this,"_map",void 0),(0,q.default)(this,"_container",void 0),(0,q.default)(this,"_interleaved",void 0),(0,q.default)(this,"_handleStyleChange",function(){pr(t._map,t._deck,t._props.layers,t._props.layers)}),(0,q.default)(this,"_updateContainerSize",function(){if(t._map&&t._container){var s=t._map.getContainer(),i=s.clientWidth,v=s.clientHeight;Object.assign(t._container.style,{width:"".concat(i,"px"),height:"".concat(v,"px")})}}),(0,q.default)(this,"_updateViewState",function(){var s=t._deck;s&&(s.setProps({viewState:sr(t._map)}),s.redraw())}),(0,q.default)(this,"_handleMouseEvent",function(s){var i=t._deck;if(i){var v={type:s.type,offsetCenter:s.point,srcEvent:s};switch(s.type){case"click":v.tapCount=1,i._onPointerDown(v),i._onEvent(v);break;case"dblclick":v.type="click",v.tapCount=2,i._onEvent(v);break;case"mousemove":v.type="pointermove",i._onPointerMove(v);break;case"mouseout":v.type="pointerleave",i._onPointerMove(v);break;default:return}}});var n=e.interleaved,a=n===void 0?!1:n,o=(0,He.default)(e,Tt);this._interleaved=a,this._props=o}return(0,Qe.default)(r,[{key:"setProps",value:function(t){this._interleaved&&t.layers&&pr(this._map,this._deck,this._props.layers,t.layers),Object.assign(this._props,t),this._deck&&this._deck.setProps(this._interleaved?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(jr(jr({},this._props),{},{parent:n,viewState:sr(t)})),t.on("resize",this._updateContainerSize),t.on("render",this._updateViewState),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=Lr({map:t,gl:t.painter.context.gl,deck:new Q.Deck(jr(jr({},this._props),{},{gl:t.painter.context.gl}))}),t.on("styledata",this._handleStyleChange),pr(t,this._deck,[],this._props.layers),document.createElement("div")}},{key:"onRemove",value:function(){var t,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("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),pr(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(dr);})();
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",
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": "001fc31bd3dfa02eb4a0caba299584952f2236f6"
38
+ "gitHead": "539cc9960aa47bbe22f607a5de49e943f6765d61"
39
39
  }
@@ -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.redraw();
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
- switch (event.type) {
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,2 @@
1
+ export { default as MapboxLayer } from './mapbox-layer';
2
+ export { default as MapboxOverlay } from './mapbox-overlay';
@@ -0,0 +1,37 @@
1
+ import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
2
+ export default class MapboxLayer {
3
+ /* eslint-disable no-this-before-super */
4
+ constructor(props) {
5
+ if (!props.id) {
6
+ throw new Error('Layer must have an unique id');
7
+ }
8
+ this.id = props.id;
9
+ this.type = 'custom';
10
+ this.renderingMode = props.renderingMode || '3d';
11
+ this.map = null;
12
+ this.deck = null;
13
+ this.props = props;
14
+ }
15
+ /* Mapbox custom layer methods */
16
+ onAdd(map, gl) {
17
+ this.map = map;
18
+ this.deck = getDeckInstance({ map, gl, deck: this.props.deck });
19
+ addLayer(this.deck, this);
20
+ }
21
+ onRemove() {
22
+ if (this.deck) {
23
+ removeLayer(this.deck, this);
24
+ }
25
+ }
26
+ setProps(props) {
27
+ // id cannot be changed
28
+ Object.assign(this.props, props, { id: this.id });
29
+ // safe guard in case setProps is called before onAdd
30
+ if (this.deck) {
31
+ updateLayer(this.deck, this);
32
+ }
33
+ }
34
+ render() {
35
+ drawLayer(this.deck, this.map, this);
36
+ }
37
+ }
@@ -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;gBAElB,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;IA4BtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAiBhB,OAAO,CAAC,iBAAiB;IASzB,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,CAQtB;IAEF,OAAO,CAAC,iBAAiB,CA4CvB;CACH"}
1
+ {"version":3,"file":"mapbox-overlay.d.ts","sourceRoot":"","sources":["../src/mapbox-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAC,GAAG,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAI7C,oBAAY,kBAAkB,GAAG,IAAI,CACnC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,mBAAmB,CAAC,CAA2D;gBAE3E,KAAK,EAAE,kBAAkB;IAMrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYzC,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,cAAc;IAK/B,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,iBAAiB;IAkBzB,oDAAoD;IACpD,QAAQ,IAAI,IAAI;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
+ }