@deck.gl/mapbox 9.0.0-beta.2 → 9.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/{typed → dist}/deck-utils.d.ts +1 -1
  2. package/dist/deck-utils.d.ts.map +1 -0
  3. package/dist/deck-utils.js +266 -0
  4. package/dist/dist.dev.js +778 -147
  5. package/dist/index.cjs +545 -0
  6. package/dist/index.cjs.map +7 -0
  7. package/dist/index.d.ts +4 -0
  8. package/{typed → dist}/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/mapbox-layer.js +42 -0
  11. package/dist/mapbox-overlay.js +222 -0
  12. package/dist/resolve-layers.js +74 -0
  13. package/dist.min.js +1 -2
  14. package/package.json +17 -8
  15. package/dist/es5/deck-utils.js +0 -300
  16. package/dist/es5/deck-utils.js.map +0 -1
  17. package/dist/es5/index.js +0 -24
  18. package/dist/es5/index.js.map +0 -1
  19. package/dist/es5/mapbox-layer.js +0 -80
  20. package/dist/es5/mapbox-layer.js.map +0 -1
  21. package/dist/es5/mapbox-overlay.js +0 -302
  22. package/dist/es5/mapbox-overlay.js.map +0 -1
  23. package/dist/es5/resolve-layers.js +0 -137
  24. package/dist/es5/resolve-layers.js.map +0 -1
  25. package/dist/esm/deck-utils.js +0 -263
  26. package/dist/esm/deck-utils.js.map +0 -1
  27. package/dist/esm/index.js +0 -3
  28. package/dist/esm/index.js.map +0 -1
  29. package/dist/esm/mapbox-layer.js +0 -60
  30. package/dist/esm/mapbox-layer.js.map +0 -1
  31. package/dist/esm/mapbox-overlay.js +0 -272
  32. package/dist/esm/mapbox-overlay.js.map +0 -1
  33. package/dist/esm/resolve-layers.js +0 -77
  34. package/dist/esm/resolve-layers.js.map +0 -1
  35. package/typed/deck-utils.d.ts.map +0 -1
  36. package/typed/index.d.ts +0 -4
  37. /package/{typed → dist}/mapbox-layer.d.ts +0 -0
  38. /package/{typed → dist}/mapbox-layer.d.ts.map +0 -0
  39. /package/{typed → dist}/mapbox-overlay.d.ts +0 -0
  40. /package/{typed → dist}/mapbox-overlay.d.ts.map +0 -0
  41. /package/{typed → dist}/resolve-layers.d.ts +0 -0
  42. /package/{typed → dist}/resolve-layers.d.ts.map +0 -0
@@ -1,302 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _core = require("@deck.gl/core");
17
-
18
- var _deckUtils = require("./deck-utils");
19
-
20
- var _resolveLayers = require("./resolve-layers");
21
-
22
- var _excluded = ["interleaved"];
23
-
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
-
28
- var MapboxOverlay = function () {
29
- function MapboxOverlay(props) {
30
- var _this = this;
31
-
32
- (0, _classCallCheck2.default)(this, MapboxOverlay);
33
- this._props = void 0;
34
- this._deck = void 0;
35
- this._map = void 0;
36
- this._container = void 0;
37
- this._interleaved = void 0;
38
- this._lastMouseDownPoint = void 0;
39
-
40
- this._handleStyleChange = function () {
41
- (0, _resolveLayers.resolveLayers)(_this._map, _this._deck, _this._props.layers, _this._props.layers);
42
- };
43
-
44
- this._updateContainerSize = function () {
45
- if (_this._map && _this._container) {
46
- var _this$_map$getContain = _this._map.getContainer(),
47
- clientWidth = _this$_map$getContain.clientWidth,
48
- clientHeight = _this$_map$getContain.clientHeight;
49
-
50
- Object.assign(_this._container.style, {
51
- width: "".concat(clientWidth, "px"),
52
- height: "".concat(clientHeight, "px")
53
- });
54
- }
55
- };
56
-
57
- this._updateViewState = function () {
58
- var deck = _this._deck;
59
-
60
- if (deck) {
61
- deck.setProps({
62
- viewState: (0, _deckUtils.getViewState)(_this._map)
63
- });
64
-
65
- if (deck.isInitialized) {
66
- deck.redraw();
67
- }
68
- }
69
- };
70
-
71
- this._handleMouseEvent = function (event) {
72
- var deck = _this._deck;
73
-
74
- if (!deck || !deck.isInitialized) {
75
- return;
76
- }
77
-
78
- var mockEvent = {
79
- type: event.type,
80
- offsetCenter: event.point,
81
- srcEvent: event
82
- };
83
- var lastDown = _this._lastMouseDownPoint;
84
-
85
- if (!event.point && lastDown) {
86
- mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;
87
- mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;
88
- mockEvent.offsetCenter = {
89
- x: lastDown.x + mockEvent.deltaX,
90
- y: lastDown.y + mockEvent.deltaY
91
- };
92
- }
93
-
94
- switch (mockEvent.type) {
95
- case 'mousedown':
96
- deck._onPointerDown(mockEvent);
97
-
98
- _this._lastMouseDownPoint = _objectSpread(_objectSpread({}, event.point), {}, {
99
- clientX: event.originalEvent.clientX,
100
- clientY: event.originalEvent.clientY
101
- });
102
- break;
103
-
104
- case 'dragstart':
105
- mockEvent.type = 'panstart';
106
-
107
- deck._onEvent(mockEvent);
108
-
109
- break;
110
-
111
- case 'drag':
112
- mockEvent.type = 'panmove';
113
-
114
- deck._onEvent(mockEvent);
115
-
116
- break;
117
-
118
- case 'dragend':
119
- mockEvent.type = 'panend';
120
-
121
- deck._onEvent(mockEvent);
122
-
123
- break;
124
-
125
- case 'click':
126
- mockEvent.tapCount = 1;
127
-
128
- deck._onEvent(mockEvent);
129
-
130
- break;
131
-
132
- case 'dblclick':
133
- mockEvent.type = 'click';
134
- mockEvent.tapCount = 2;
135
-
136
- deck._onEvent(mockEvent);
137
-
138
- break;
139
-
140
- case 'mousemove':
141
- mockEvent.type = 'pointermove';
142
-
143
- deck._onPointerMove(mockEvent);
144
-
145
- break;
146
-
147
- case 'mouseout':
148
- mockEvent.type = 'pointerleave';
149
-
150
- deck._onPointerMove(mockEvent);
151
-
152
- break;
153
-
154
- default:
155
- return;
156
- }
157
- };
158
-
159
- var _props$interleaved = props.interleaved,
160
- interleaved = _props$interleaved === void 0 ? false : _props$interleaved,
161
- otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
162
- this._interleaved = interleaved;
163
- this._props = otherProps;
164
- }
165
-
166
- var _proto = MapboxOverlay.prototype;
167
-
168
- _proto.setProps = function setProps(props) {
169
- if (this._interleaved && props.layers) {
170
- (0, _resolveLayers.resolveLayers)(this._map, this._deck, this._props.layers, props.layers);
171
- }
172
-
173
- Object.assign(this._props, props);
174
-
175
- if (this._deck) {
176
- this._deck.setProps(this._interleaved ? (0, _deckUtils.getInterleavedProps)(this._props) : this._props);
177
- }
178
- };
179
-
180
- _proto.onAdd = function onAdd(map) {
181
- this._map = map;
182
- return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);
183
- };
184
-
185
- _proto._onAddOverlaid = function _onAddOverlaid(map) {
186
- var container = document.createElement('div');
187
- Object.assign(container.style, {
188
- position: 'absolute',
189
- left: 0,
190
- top: 0,
191
- pointerEvents: 'none'
192
- });
193
- this._container = container;
194
- this._deck = new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
195
- parent: container,
196
- viewState: (0, _deckUtils.getViewState)(map)
197
- }));
198
- map.on('resize', this._updateContainerSize);
199
- map.on('render', this._updateViewState);
200
- map.on('mousedown', this._handleMouseEvent);
201
- map.on('dragstart', this._handleMouseEvent);
202
- map.on('drag', this._handleMouseEvent);
203
- map.on('dragend', this._handleMouseEvent);
204
- map.on('mousemove', this._handleMouseEvent);
205
- map.on('mouseout', this._handleMouseEvent);
206
- map.on('click', this._handleMouseEvent);
207
- map.on('dblclick', this._handleMouseEvent);
208
-
209
- this._updateContainerSize();
210
-
211
- return container;
212
- };
213
-
214
- _proto._onAddInterleaved = function _onAddInterleaved(map) {
215
- this._deck = (0, _deckUtils.getDeckInstance)({
216
- map: map,
217
- gl: map.painter.context.gl,
218
- deck: new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
219
- gl: map.painter.context.gl
220
- }))
221
- });
222
- map.on('styledata', this._handleStyleChange);
223
- (0, _resolveLayers.resolveLayers)(map, this._deck, [], this._props.layers);
224
- return document.createElement('div');
225
- };
226
-
227
- _proto.onRemove = function onRemove() {
228
- var map = this._map;
229
-
230
- if (map) {
231
- if (this._interleaved) {
232
- this._onRemoveInterleaved(map);
233
- } else {
234
- this._onRemoveOverlaid(map);
235
- }
236
- }
237
-
238
- this._deck = undefined;
239
- this._map = undefined;
240
- this._container = undefined;
241
- };
242
-
243
- _proto._onRemoveOverlaid = function _onRemoveOverlaid(map) {
244
- var _this$_deck;
245
-
246
- map.off('resize', this._updateContainerSize);
247
- map.off('render', this._updateViewState);
248
- map.off('mousedown', this._handleMouseEvent);
249
- map.off('dragstart', this._handleMouseEvent);
250
- map.off('drag', this._handleMouseEvent);
251
- map.off('dragend', this._handleMouseEvent);
252
- map.off('mousemove', this._handleMouseEvent);
253
- map.off('mouseout', this._handleMouseEvent);
254
- map.off('click', this._handleMouseEvent);
255
- map.off('dblclick', this._handleMouseEvent);
256
- (_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
257
- };
258
-
259
- _proto._onRemoveInterleaved = function _onRemoveInterleaved(map) {
260
- map.off('styledata', this._handleStyleChange);
261
- (0, _resolveLayers.resolveLayers)(map, this._deck, this._props.layers, []);
262
- (0, _deckUtils.removeDeckInstance)(map);
263
- };
264
-
265
- _proto.getDefaultPosition = function getDefaultPosition() {
266
- return 'top-left';
267
- };
268
-
269
- _proto.pickObject = function pickObject(params) {
270
- (0, _core.assert)(this._deck);
271
- return this._deck.pickObject(params);
272
- };
273
-
274
- _proto.pickMultipleObjects = function pickMultipleObjects(params) {
275
- (0, _core.assert)(this._deck);
276
- return this._deck.pickMultipleObjects(params);
277
- };
278
-
279
- _proto.pickObjects = function pickObjects(params) {
280
- (0, _core.assert)(this._deck);
281
- return this._deck.pickObjects(params);
282
- };
283
-
284
- _proto.finalize = function finalize() {
285
- if (this._map) {
286
- this._map.removeControl(this);
287
- }
288
- };
289
-
290
- _proto.getCanvas = function getCanvas() {
291
- if (!this._map) {
292
- return null;
293
- }
294
-
295
- return this._interleaved ? this._map.getCanvas() : this._deck.getCanvas();
296
- };
297
-
298
- return MapboxOverlay;
299
- }();
300
-
301
- exports.default = MapboxOverlay;
302
- //# sourceMappingURL=mapbox-overlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n // eslint-disable-next-line complexity\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
@@ -1,137 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.resolveLayers = resolveLayers;
9
-
10
- var _core = require("@deck.gl/core");
11
-
12
- var _mapboxLayer = _interopRequireDefault(require("./mapbox-layer"));
13
-
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
-
16
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
-
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
-
20
- var UNDEFINED_BEFORE_ID = '__UNDEFINED__';
21
-
22
- function resolveLayers(map, deck, oldLayers, newLayers) {
23
- if (!map || !deck || !map.style || !map.style._loaded) {
24
- return;
25
- }
26
-
27
- var layers = (0, _core._flatten)(newLayers, Boolean);
28
-
29
- if (oldLayers !== newLayers) {
30
- var prevLayers = (0, _core._flatten)(oldLayers, Boolean);
31
- var prevLayerIds = new Set(prevLayers.map(function (l) {
32
- return l.id;
33
- }));
34
-
35
- var _iterator = _createForOfIteratorHelper(layers),
36
- _step;
37
-
38
- try {
39
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
40
- var layer = _step.value;
41
- prevLayerIds.delete(layer.id);
42
- }
43
- } catch (err) {
44
- _iterator.e(err);
45
- } finally {
46
- _iterator.f();
47
- }
48
-
49
- var _iterator2 = _createForOfIteratorHelper(prevLayerIds),
50
- _step2;
51
-
52
- try {
53
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
54
- var id = _step2.value;
55
-
56
- if (map.getLayer(id)) {
57
- map.removeLayer(id);
58
- }
59
- }
60
- } catch (err) {
61
- _iterator2.e(err);
62
- } finally {
63
- _iterator2.f();
64
- }
65
- }
66
-
67
- var _iterator3 = _createForOfIteratorHelper(layers),
68
- _step3;
69
-
70
- try {
71
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
72
- var _layer = _step3.value;
73
- var mapboxLayer = map.getLayer(_layer.id);
74
-
75
- if (mapboxLayer) {
76
- mapboxLayer.implementation.setProps(_layer.props);
77
- } else {
78
- map.addLayer(new _mapboxLayer.default({
79
- id: _layer.id,
80
- deck: deck
81
- }), _layer.props.beforeId);
82
- }
83
- }
84
- } catch (err) {
85
- _iterator3.e(err);
86
- } finally {
87
- _iterator3.f();
88
- }
89
-
90
- var mapLayers = map.style._order;
91
- var layerGroups = {};
92
-
93
- var _iterator4 = _createForOfIteratorHelper(layers),
94
- _step4;
95
-
96
- try {
97
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
98
- var _layer2 = _step4.value;
99
- var _beforeId = _layer2.props.beforeId;
100
-
101
- if (!_beforeId || !mapLayers.includes(_beforeId)) {
102
- _beforeId = UNDEFINED_BEFORE_ID;
103
- }
104
-
105
- layerGroups[_beforeId] = layerGroups[_beforeId] || [];
106
-
107
- layerGroups[_beforeId].push(_layer2.id);
108
- }
109
- } catch (err) {
110
- _iterator4.e(err);
111
- } finally {
112
- _iterator4.f();
113
- }
114
-
115
- for (var beforeId in layerGroups) {
116
- var layerGroup = layerGroups[beforeId];
117
- var lastLayerIndex = beforeId === UNDEFINED_BEFORE_ID ? mapLayers.length : mapLayers.indexOf(beforeId);
118
- var lastLayerId = beforeId === UNDEFINED_BEFORE_ID ? undefined : beforeId;
119
-
120
- for (var i = layerGroup.length - 1; i >= 0; i--) {
121
- var layerId = layerGroup[i];
122
- var layerIndex = mapLayers.indexOf(layerId);
123
-
124
- if (layerIndex !== lastLayerIndex - 1) {
125
- map.moveLayer(layerId, lastLayerId);
126
-
127
- if (layerIndex > lastLayerIndex) {
128
- lastLayerIndex++;
129
- }
130
- }
131
-
132
- lastLayerIndex--;
133
- lastLayerId = layerId;
134
- }
135
- }
136
- }
137
- //# sourceMappingURL=resolve-layers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/resolve-layers.ts"],"names":["UNDEFINED_BEFORE_ID","resolveLayers","map","deck","oldLayers","newLayers","style","_loaded","layers","Boolean","prevLayers","prevLayerIds","Set","l","id","layer","delete","getLayer","removeLayer","mapboxLayer","implementation","setProps","props","addLayer","MapboxLayer","beforeId","mapLayers","_order","layerGroups","includes","push","layerGroup","lastLayerIndex","length","indexOf","lastLayerId","undefined","i","layerId","layerIndex","moveLayer"],"mappings":"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","sourcesContent":["import {_flatten as flatten} from '@deck.gl/core';\nimport MapboxLayer from './mapbox-layer';\n\nimport type {Deck, LayersList, Layer} from '@deck.gl/core';\nimport type {Map} from 'mapbox-gl';\n\nconst UNDEFINED_BEFORE_ID = '__UNDEFINED__';\n\n/** Insert Deck layers into the mapbox Map according to the user-defined order */\n// eslint-disable-next-line complexity, max-statements\nexport function resolveLayers(\n map?: Map,\n deck?: Deck,\n oldLayers?: LayersList,\n newLayers?: LayersList\n) {\n // Wait until map style is loaded\n // @ts-ignore non-public map property\n if (!map || !deck || !map.style || !map.style._loaded) {\n return;\n }\n\n const layers = flatten(newLayers, Boolean) as Layer[];\n\n if (oldLayers !== newLayers) {\n // Step 1: remove layers that no longer exist\n const prevLayers = flatten(oldLayers, Boolean) as Layer[];\n const prevLayerIds = new Set<string>(prevLayers.map(l => l.id));\n\n for (const layer of layers) {\n prevLayerIds.delete(layer.id);\n }\n\n for (const id of prevLayerIds) {\n if (map.getLayer(id)) {\n map.removeLayer(id);\n }\n }\n }\n\n // Step 2: add missing layers\n for (const layer of layers) {\n const mapboxLayer = map.getLayer(layer.id) as MapboxLayer<Layer>;\n if (mapboxLayer) {\n // @ts-expect-error not typed\n mapboxLayer.implementation.setProps(layer.props);\n } else {\n map.addLayer(\n new MapboxLayer({id: layer.id, deck}),\n // @ts-expect-error beforeId is not defined in LayerProps\n layer.props.beforeId\n );\n }\n }\n\n // Step 3: check the order of layers\n // If beforeId is defined, the deck layer should always render before the mapbox layer [beforeId]\n // If beforeId is not defined, the deck layer should appear after all mapbox layers\n // When two deck layers share the same beforeId, they are rendered in the order that is passed into Deck props.layers\n // @ts-ignore non-public map property\n const mapLayers: string[] = map.style._order;\n\n // Group deck layers by beforeId\n const layerGroups: Record<string, string[]> = {};\n for (const layer of layers) {\n // @ts-expect-error beforeId is not defined in LayerProps\n let {beforeId} = layer.props;\n if (!beforeId || !mapLayers.includes(beforeId)) {\n beforeId = UNDEFINED_BEFORE_ID;\n }\n layerGroups[beforeId] = layerGroups[beforeId] || [];\n layerGroups[beforeId].push(layer.id);\n }\n\n for (const beforeId in layerGroups) {\n const layerGroup = layerGroups[beforeId];\n let lastLayerIndex =\n beforeId === UNDEFINED_BEFORE_ID ? mapLayers.length : mapLayers.indexOf(beforeId);\n let lastLayerId = beforeId === UNDEFINED_BEFORE_ID ? undefined : beforeId;\n for (let i = layerGroup.length - 1; i >= 0; i--) {\n const layerId = layerGroup[i];\n const layerIndex = mapLayers.indexOf(layerId);\n if (layerIndex !== lastLayerIndex - 1) {\n map.moveLayer(layerId, lastLayerId);\n if (layerIndex > lastLayerIndex) {\n // The last layer's index have changed\n lastLayerIndex++;\n }\n }\n lastLayerIndex--;\n lastLayerId = layerId;\n }\n }\n}\n"],"file":"resolve-layers.js"}