@deck.gl/mapbox 8.8.0-alpha.2 → 8.8.0-alpha.5
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 +71 -50
- package/dist/es5/deck-utils.js +35 -35
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/mapbox-layer.js +12 -2
- package/dist/es5/mapbox-layer.js.map +1 -1
- package/dist/es5/mapbox-overlay.js +10 -7
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/esm/deck-utils.js +26 -28
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/mapbox-layer.js +17 -2
- package/dist/esm/mapbox-layer.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +11 -8
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +3 -2
- package/src/{deck-utils.js → deck-utils.ts} +68 -45
- package/src/{mapbox-layer.js → mapbox-layer.ts} +23 -8
- package/src/mapbox-overlay.ts +32 -26
- package/typed/deck-utils.d.ts +19 -0
- package/typed/deck-utils.d.ts.map +1 -0
- package/typed/index.d.ts +3 -0
- package/typed/index.d.ts.map +1 -0
- package/typed/mapbox-layer.d.ts +19 -0
- package/typed/mapbox-layer.d.ts.map +1 -0
- package/typed/mapbox-overlay.d.ts +33 -0
- package/typed/mapbox-overlay.d.ts.map +1 -0
- package/typed/package.json +6 -0
package/dist/dist.dev.js
CHANGED
|
@@ -103,7 +103,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
103
103
|
/*! no static exports found */
|
|
104
104
|
/***/ (function(module, exports, __webpack_require__) {
|
|
105
105
|
|
|
106
|
-
const MapboxUtils = __webpack_require__(/*! ./src */ "./src/index.ts");
|
|
106
|
+
const MapboxUtils = __webpack_require__(/*! ./src */ "./src/index.ts"); // @ts-ignore (2339) undefined property
|
|
107
|
+
|
|
107
108
|
|
|
108
109
|
const deck = globalThis.deck || {}; // Check if peer dependencies are included
|
|
109
110
|
|
|
@@ -115,9 +116,9 @@ module.exports = Object.assign(deck, MapboxUtils);
|
|
|
115
116
|
|
|
116
117
|
/***/ }),
|
|
117
118
|
|
|
118
|
-
/***/ "./src/deck-utils.
|
|
119
|
+
/***/ "./src/deck-utils.ts":
|
|
119
120
|
/*!***************************!*\
|
|
120
|
-
!*** ./src/deck-utils.
|
|
121
|
+
!*** ./src/deck-utils.ts ***!
|
|
121
122
|
\***************************/
|
|
122
123
|
/*! exports provided: getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer, getViewState */
|
|
123
124
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
@@ -143,17 +144,14 @@ function getDeckInstance({
|
|
|
143
144
|
return map.__deck;
|
|
144
145
|
}
|
|
145
146
|
|
|
146
|
-
const customRender = deck
|
|
147
|
+
const customRender = deck?.props._customRender;
|
|
147
148
|
const deckProps = {
|
|
148
149
|
useDevicePixels: true,
|
|
149
|
-
_customRender:
|
|
150
|
-
map.triggerRepaint();
|
|
150
|
+
_customRender: reason => {
|
|
151
|
+
map.triggerRepaint(); // customRender may be subscribed by DeckGL React component to update child props
|
|
152
|
+
// make sure it is still called
|
|
151
153
|
|
|
152
|
-
|
|
153
|
-
// customRender may be subscribed by DeckGL React component to update child props
|
|
154
|
-
// make sure it is still called
|
|
155
|
-
customRender();
|
|
156
|
-
}
|
|
154
|
+
customRender?.(reason);
|
|
157
155
|
},
|
|
158
156
|
// TODO: import these defaults from a single source of truth
|
|
159
157
|
parameters: {
|
|
@@ -165,10 +163,6 @@ function getDeckInstance({
|
|
|
165
163
|
depthFunc: gl.LEQUAL,
|
|
166
164
|
blendEquation: gl.FUNC_ADD
|
|
167
165
|
},
|
|
168
|
-
userData: {
|
|
169
|
-
isExternal: false,
|
|
170
|
-
mapboxLayers: new Set()
|
|
171
|
-
},
|
|
172
166
|
views: deck && deck.props.views || [new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["MapView"]({
|
|
173
167
|
id: 'mapbox'
|
|
174
168
|
})]
|
|
@@ -179,8 +173,8 @@ function getDeckInstance({
|
|
|
179
173
|
// block deck from setting the canvas size
|
|
180
174
|
Object.assign(deckProps, {
|
|
181
175
|
gl,
|
|
182
|
-
width:
|
|
183
|
-
height:
|
|
176
|
+
width: null,
|
|
177
|
+
height: null,
|
|
184
178
|
touchAction: 'unset',
|
|
185
179
|
viewState: getViewState(map)
|
|
186
180
|
}); // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.
|
|
@@ -191,7 +185,7 @@ function getDeckInstance({
|
|
|
191
185
|
|
|
192
186
|
if (deck) {
|
|
193
187
|
deck.setProps(deckProps);
|
|
194
|
-
deck.
|
|
188
|
+
deck.userData.isExternal = true;
|
|
195
189
|
} else {
|
|
196
190
|
deck = new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Deck"](deckProps);
|
|
197
191
|
map.on('remove', () => {
|
|
@@ -200,19 +194,21 @@ function getDeckInstance({
|
|
|
200
194
|
});
|
|
201
195
|
}
|
|
202
196
|
|
|
203
|
-
deck.
|
|
197
|
+
deck.userData.mapboxLayers = new Set();
|
|
198
|
+
deck.userData.mapboxVersion = getMapboxVersion(map);
|
|
204
199
|
map.__deck = deck;
|
|
205
200
|
map.on('render', () => {
|
|
201
|
+
// @ts-expect-error (2445) protected property
|
|
206
202
|
if (deck.layerManager) afterRender(deck, map);
|
|
207
203
|
});
|
|
208
204
|
return deck;
|
|
209
205
|
}
|
|
210
206
|
function addLayer(deck, layer) {
|
|
211
|
-
deck.
|
|
207
|
+
deck.userData.mapboxLayers.add(layer);
|
|
212
208
|
updateLayers(deck);
|
|
213
209
|
}
|
|
214
210
|
function removeLayer(deck, layer) {
|
|
215
|
-
deck.
|
|
211
|
+
deck.userData.mapboxLayers.delete(layer);
|
|
216
212
|
updateLayers(deck);
|
|
217
213
|
}
|
|
218
214
|
function updateLayer(deck, layer) {
|
|
@@ -221,14 +217,15 @@ function updateLayer(deck, layer) {
|
|
|
221
217
|
function drawLayer(deck, map, layer) {
|
|
222
218
|
let {
|
|
223
219
|
currentViewport
|
|
224
|
-
} = deck.
|
|
220
|
+
} = deck.userData;
|
|
225
221
|
|
|
226
222
|
if (!currentViewport) {
|
|
227
223
|
// This is the first layer drawn in this render cycle.
|
|
228
224
|
// Generate viewport from the current map state.
|
|
229
225
|
currentViewport = getViewport(deck, map, true);
|
|
230
|
-
deck.
|
|
231
|
-
}
|
|
226
|
+
deck.userData.currentViewport = currentViewport;
|
|
227
|
+
} // @ts-expect-error (2445) protected property
|
|
228
|
+
|
|
232
229
|
|
|
233
230
|
if (!deck.layerManager) {
|
|
234
231
|
return;
|
|
@@ -248,7 +245,9 @@ function getViewState(map) {
|
|
|
248
245
|
lat
|
|
249
246
|
} = map.getCenter();
|
|
250
247
|
return {
|
|
251
|
-
|
|
248
|
+
// Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian
|
|
249
|
+
// https://github.com/visgl/deck.gl/issues/6894
|
|
250
|
+
longitude: (lng + 540) % 360 - 180,
|
|
252
251
|
latitude: lat,
|
|
253
252
|
zoom: map.getZoom(),
|
|
254
253
|
bearing: map.getBearing(),
|
|
@@ -260,10 +259,12 @@ function getViewState(map) {
|
|
|
260
259
|
function getMapboxVersion(map) {
|
|
261
260
|
// parse mapbox version string
|
|
262
261
|
let major = 0;
|
|
263
|
-
let minor = 0;
|
|
262
|
+
let minor = 0; // @ts-ignore (2339) undefined property
|
|
264
263
|
|
|
265
|
-
|
|
266
|
-
|
|
264
|
+
const version = map.version;
|
|
265
|
+
|
|
266
|
+
if (version) {
|
|
267
|
+
[major, minor] = version.split('.').slice(0, 2).map(Number);
|
|
267
268
|
}
|
|
268
269
|
|
|
269
270
|
return {
|
|
@@ -275,7 +276,7 @@ function getMapboxVersion(map) {
|
|
|
275
276
|
function getViewport(deck, map, useMapboxProjection = true) {
|
|
276
277
|
const {
|
|
277
278
|
mapboxVersion
|
|
278
|
-
} = deck.
|
|
279
|
+
} = deck.userData;
|
|
279
280
|
return new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["WebMercatorViewport"](Object.assign({
|
|
280
281
|
id: 'mapbox',
|
|
281
282
|
x: 0,
|
|
@@ -297,12 +298,13 @@ function afterRender(deck, map) {
|
|
|
297
298
|
const {
|
|
298
299
|
mapboxLayers,
|
|
299
300
|
isExternal
|
|
300
|
-
} = deck.
|
|
301
|
+
} = deck.userData;
|
|
301
302
|
|
|
302
303
|
if (isExternal) {
|
|
303
304
|
// Draw non-Mapbox layers
|
|
304
305
|
const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
|
|
305
|
-
const
|
|
306
|
+
const deckLayers = Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["_flatten"])(deck.props.layers, Boolean);
|
|
307
|
+
const hasNonMapboxLayers = deckLayers.some(layer => layer && !mapboxLayerIds.includes(layer.id));
|
|
306
308
|
let viewports = deck.getViewports();
|
|
307
309
|
const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');
|
|
308
310
|
const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
|
|
@@ -322,7 +324,7 @@ function afterRender(deck, map) {
|
|
|
322
324
|
} // End of render cycle, clear generated viewport
|
|
323
325
|
|
|
324
326
|
|
|
325
|
-
deck.
|
|
327
|
+
deck.userData.currentViewport = null;
|
|
326
328
|
}
|
|
327
329
|
|
|
328
330
|
function onMapMove(deck, map) {
|
|
@@ -338,13 +340,13 @@ function onMapMove(deck, map) {
|
|
|
338
340
|
}
|
|
339
341
|
|
|
340
342
|
function updateLayers(deck) {
|
|
341
|
-
if (deck.
|
|
343
|
+
if (deck.userData.isExternal) {
|
|
342
344
|
return;
|
|
343
345
|
}
|
|
344
346
|
|
|
345
347
|
const layers = [];
|
|
346
348
|
let layerIndex = 0;
|
|
347
|
-
deck.
|
|
349
|
+
deck.userData.mapboxLayers.forEach(deckLayer => {
|
|
348
350
|
const LayerType = deckLayer.props.type;
|
|
349
351
|
const layer = new LayerType(deckLayer.props, {
|
|
350
352
|
_offset: layerIndex++
|
|
@@ -367,7 +369,7 @@ function updateLayers(deck) {
|
|
|
367
369
|
|
|
368
370
|
"use strict";
|
|
369
371
|
__webpack_require__.r(__webpack_exports__);
|
|
370
|
-
/* harmony import */ var _mapbox_layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapbox-layer */ "./src/mapbox-layer.
|
|
372
|
+
/* harmony import */ var _mapbox_layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapbox-layer */ "./src/mapbox-layer.ts");
|
|
371
373
|
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MapboxLayer", function() { return _mapbox_layer__WEBPACK_IMPORTED_MODULE_0__["default"]; });
|
|
372
374
|
|
|
373
375
|
/* harmony import */ var _mapbox_overlay__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapbox-overlay */ "./src/mapbox-overlay.ts");
|
|
@@ -378,9 +380,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
378
380
|
|
|
379
381
|
/***/ }),
|
|
380
382
|
|
|
381
|
-
/***/ "./src/mapbox-layer.
|
|
383
|
+
/***/ "./src/mapbox-layer.ts":
|
|
382
384
|
/*!*****************************!*\
|
|
383
|
-
!*** ./src/mapbox-layer.
|
|
385
|
+
!*** ./src/mapbox-layer.ts ***!
|
|
384
386
|
\*****************************/
|
|
385
387
|
/*! exports provided: default */
|
|
386
388
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
@@ -388,11 +390,25 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
388
390
|
"use strict";
|
|
389
391
|
__webpack_require__.r(__webpack_exports__);
|
|
390
392
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MapboxLayer; });
|
|
391
|
-
/* harmony import */ var _deck_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./deck-utils */ "./src/deck-utils.
|
|
393
|
+
/* harmony import */ var _deck_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./deck-utils */ "./src/deck-utils.ts");
|
|
394
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
395
|
+
|
|
392
396
|
|
|
393
397
|
class MapboxLayer {
|
|
394
398
|
/* eslint-disable no-this-before-super */
|
|
395
399
|
constructor(props) {
|
|
400
|
+
_defineProperty(this, "id", void 0);
|
|
401
|
+
|
|
402
|
+
_defineProperty(this, "type", void 0);
|
|
403
|
+
|
|
404
|
+
_defineProperty(this, "renderingMode", void 0);
|
|
405
|
+
|
|
406
|
+
_defineProperty(this, "map", void 0);
|
|
407
|
+
|
|
408
|
+
_defineProperty(this, "deck", void 0);
|
|
409
|
+
|
|
410
|
+
_defineProperty(this, "props", void 0);
|
|
411
|
+
|
|
396
412
|
if (!props.id) {
|
|
397
413
|
throw new Error('Layer must have an unique id');
|
|
398
414
|
}
|
|
@@ -418,7 +434,9 @@ class MapboxLayer {
|
|
|
418
434
|
}
|
|
419
435
|
|
|
420
436
|
onRemove() {
|
|
421
|
-
|
|
437
|
+
if (this.deck) {
|
|
438
|
+
Object(_deck_utils__WEBPACK_IMPORTED_MODULE_0__["removeLayer"])(this.deck, this);
|
|
439
|
+
}
|
|
422
440
|
}
|
|
423
441
|
|
|
424
442
|
setProps(props) {
|
|
@@ -432,7 +450,7 @@ class MapboxLayer {
|
|
|
432
450
|
}
|
|
433
451
|
}
|
|
434
452
|
|
|
435
|
-
render(
|
|
453
|
+
render() {
|
|
436
454
|
Object(_deck_utils__WEBPACK_IMPORTED_MODULE_0__["drawLayer"])(this.deck, this.map, this);
|
|
437
455
|
}
|
|
438
456
|
|
|
@@ -452,7 +470,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
452
470
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MapboxOverlay; });
|
|
453
471
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
|
|
454
472
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
455
|
-
/* harmony import */ var _deck_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deck-utils */ "./src/deck-utils.
|
|
473
|
+
/* harmony import */ var _deck_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deck-utils */ "./src/deck-utils.ts");
|
|
456
474
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
457
475
|
|
|
458
476
|
|
|
@@ -490,11 +508,12 @@ class MapboxOverlay {
|
|
|
490
508
|
const deck = this._deck;
|
|
491
509
|
|
|
492
510
|
if (deck) {
|
|
511
|
+
// @ts-ignore (2345) map is always defined if deck is
|
|
493
512
|
deck.setProps({
|
|
494
513
|
viewState: Object(_deck_utils__WEBPACK_IMPORTED_MODULE_1__["getViewState"])(this._map)
|
|
495
514
|
}); // Redraw immediately if view state has changed
|
|
496
515
|
|
|
497
|
-
deck.redraw(
|
|
516
|
+
deck.redraw();
|
|
498
517
|
}
|
|
499
518
|
});
|
|
500
519
|
|
|
@@ -513,11 +532,9 @@ class MapboxOverlay {
|
|
|
513
532
|
|
|
514
533
|
switch (event.type) {
|
|
515
534
|
case 'click':
|
|
516
|
-
// Hack: because we do not listen to pointer down, perform picking now
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
});
|
|
520
|
-
mockEvent.tapCount = 1;
|
|
535
|
+
mockEvent.tapCount = 1; // Hack: because we do not listen to pointer down, perform picking now
|
|
536
|
+
|
|
537
|
+
deck._onPointerDown(mockEvent);
|
|
521
538
|
|
|
522
539
|
deck._onEvent(mockEvent);
|
|
523
540
|
|
|
@@ -613,6 +630,7 @@ class MapboxOverlay {
|
|
|
613
630
|
}
|
|
614
631
|
|
|
615
632
|
this._deck?.finalize();
|
|
633
|
+
this._deck = undefined;
|
|
616
634
|
this._map = undefined;
|
|
617
635
|
this._container = undefined;
|
|
618
636
|
}
|
|
@@ -624,19 +642,22 @@ class MapboxOverlay {
|
|
|
624
642
|
|
|
625
643
|
|
|
626
644
|
pickObject(params) {
|
|
627
|
-
|
|
645
|
+
Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(this._deck);
|
|
646
|
+
return this._deck.pickObject(params);
|
|
628
647
|
}
|
|
629
648
|
/** Forwards the Deck.pickMultipleObjects method */
|
|
630
649
|
|
|
631
650
|
|
|
632
651
|
pickMultipleObjects(params) {
|
|
633
|
-
|
|
652
|
+
Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(this._deck);
|
|
653
|
+
return this._deck.pickMultipleObjects(params);
|
|
634
654
|
}
|
|
635
655
|
/** Forwards the Deck.pickObjects method */
|
|
636
656
|
|
|
637
657
|
|
|
638
658
|
pickObjects(params) {
|
|
639
|
-
|
|
659
|
+
Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["assert"])(this._deck);
|
|
660
|
+
return this._deck.pickObjects(params);
|
|
640
661
|
}
|
|
641
662
|
/** Remove from map and releases all resources */
|
|
642
663
|
|
package/dist/es5/deck-utils.js
CHANGED
|
@@ -17,6 +17,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
17
17
|
var _core = require("@deck.gl/core");
|
|
18
18
|
|
|
19
19
|
function getDeckInstance(_ref) {
|
|
20
|
+
var _deck;
|
|
21
|
+
|
|
20
22
|
var map = _ref.map,
|
|
21
23
|
gl = _ref.gl,
|
|
22
24
|
deck = _ref.deck;
|
|
@@ -25,15 +27,12 @@ function getDeckInstance(_ref) {
|
|
|
25
27
|
return map.__deck;
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
var customRender = deck
|
|
30
|
+
var customRender = (_deck = deck) === null || _deck === void 0 ? void 0 : _deck.props._customRender;
|
|
29
31
|
var deckProps = {
|
|
30
32
|
useDevicePixels: true,
|
|
31
|
-
_customRender: function _customRender() {
|
|
33
|
+
_customRender: function _customRender(reason) {
|
|
32
34
|
map.triggerRepaint();
|
|
33
|
-
|
|
34
|
-
if (customRender) {
|
|
35
|
-
customRender();
|
|
36
|
-
}
|
|
35
|
+
customRender === null || customRender === void 0 ? void 0 : customRender(reason);
|
|
37
36
|
},
|
|
38
37
|
parameters: {
|
|
39
38
|
depthMask: true,
|
|
@@ -44,10 +43,6 @@ function getDeckInstance(_ref) {
|
|
|
44
43
|
depthFunc: 515,
|
|
45
44
|
blendEquation: 32774
|
|
46
45
|
},
|
|
47
|
-
userData: {
|
|
48
|
-
isExternal: false,
|
|
49
|
-
mapboxLayers: new Set()
|
|
50
|
-
},
|
|
51
46
|
views: deck && deck.props.views || [new _core.MapView({
|
|
52
47
|
id: 'mapbox'
|
|
53
48
|
})]
|
|
@@ -56,8 +51,8 @@ function getDeckInstance(_ref) {
|
|
|
56
51
|
if (!deck || deck.props.gl === gl) {
|
|
57
52
|
Object.assign(deckProps, {
|
|
58
53
|
gl: gl,
|
|
59
|
-
width:
|
|
60
|
-
height:
|
|
54
|
+
width: null,
|
|
55
|
+
height: null,
|
|
61
56
|
touchAction: 'unset',
|
|
62
57
|
viewState: getViewState(map)
|
|
63
58
|
});
|
|
@@ -68,7 +63,7 @@ function getDeckInstance(_ref) {
|
|
|
68
63
|
|
|
69
64
|
if (deck) {
|
|
70
65
|
deck.setProps(deckProps);
|
|
71
|
-
deck.
|
|
66
|
+
deck.userData.isExternal = true;
|
|
72
67
|
} else {
|
|
73
68
|
deck = new _core.Deck(deckProps);
|
|
74
69
|
map.on('remove', function () {
|
|
@@ -77,7 +72,8 @@ function getDeckInstance(_ref) {
|
|
|
77
72
|
});
|
|
78
73
|
}
|
|
79
74
|
|
|
80
|
-
deck.
|
|
75
|
+
deck.userData.mapboxLayers = new Set();
|
|
76
|
+
deck.userData.mapboxVersion = getMapboxVersion(map);
|
|
81
77
|
map.__deck = deck;
|
|
82
78
|
map.on('render', function () {
|
|
83
79
|
if (deck.layerManager) afterRender(deck, map);
|
|
@@ -86,12 +82,12 @@ function getDeckInstance(_ref) {
|
|
|
86
82
|
}
|
|
87
83
|
|
|
88
84
|
function addLayer(deck, layer) {
|
|
89
|
-
deck.
|
|
85
|
+
deck.userData.mapboxLayers.add(layer);
|
|
90
86
|
updateLayers(deck);
|
|
91
87
|
}
|
|
92
88
|
|
|
93
89
|
function removeLayer(deck, layer) {
|
|
94
|
-
deck.
|
|
90
|
+
deck.userData.mapboxLayers.delete(layer);
|
|
95
91
|
updateLayers(deck);
|
|
96
92
|
}
|
|
97
93
|
|
|
@@ -100,11 +96,12 @@ function updateLayer(deck, layer) {
|
|
|
100
96
|
}
|
|
101
97
|
|
|
102
98
|
function drawLayer(deck, map, layer) {
|
|
103
|
-
var
|
|
99
|
+
var _ref2 = deck.userData,
|
|
100
|
+
currentViewport = _ref2.currentViewport;
|
|
104
101
|
|
|
105
102
|
if (!currentViewport) {
|
|
106
103
|
currentViewport = getViewport(deck, map, true);
|
|
107
|
-
deck.
|
|
104
|
+
deck.userData.currentViewport = currentViewport;
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
if (!deck.layerManager) {
|
|
@@ -113,8 +110,8 @@ function drawLayer(deck, map, layer) {
|
|
|
113
110
|
|
|
114
111
|
deck._drawLayers('mapbox-repaint', {
|
|
115
112
|
viewports: [currentViewport],
|
|
116
|
-
layerFilter: function layerFilter(
|
|
117
|
-
var deckLayer =
|
|
113
|
+
layerFilter: function layerFilter(_ref3) {
|
|
114
|
+
var deckLayer = _ref3.layer;
|
|
118
115
|
return layer.id === deckLayer.id;
|
|
119
116
|
},
|
|
120
117
|
clearCanvas: false
|
|
@@ -127,7 +124,7 @@ function getViewState(map) {
|
|
|
127
124
|
lat = _map$getCenter.lat;
|
|
128
125
|
|
|
129
126
|
return {
|
|
130
|
-
longitude: lng,
|
|
127
|
+
longitude: (lng + 540) % 360 - 180,
|
|
131
128
|
latitude: lat,
|
|
132
129
|
zoom: map.getZoom(),
|
|
133
130
|
bearing: map.getBearing(),
|
|
@@ -139,14 +136,15 @@ function getViewState(map) {
|
|
|
139
136
|
function getMapboxVersion(map) {
|
|
140
137
|
var major = 0;
|
|
141
138
|
var minor = 0;
|
|
139
|
+
var version = map.version;
|
|
142
140
|
|
|
143
|
-
if (
|
|
144
|
-
var
|
|
141
|
+
if (version) {
|
|
142
|
+
var _version$split$slice$ = version.split('.').slice(0, 2).map(Number);
|
|
145
143
|
|
|
146
|
-
var
|
|
144
|
+
var _version$split$slice$2 = (0, _slicedToArray2.default)(_version$split$slice$, 2);
|
|
147
145
|
|
|
148
|
-
major =
|
|
149
|
-
minor =
|
|
146
|
+
major = _version$split$slice$2[0];
|
|
147
|
+
minor = _version$split$slice$2[1];
|
|
150
148
|
}
|
|
151
149
|
|
|
152
150
|
return {
|
|
@@ -157,7 +155,8 @@ function getMapboxVersion(map) {
|
|
|
157
155
|
|
|
158
156
|
function getViewport(deck, map) {
|
|
159
157
|
var useMapboxProjection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
160
|
-
var
|
|
158
|
+
var _ref4 = deck.userData,
|
|
159
|
+
mapboxVersion = _ref4.mapboxVersion;
|
|
161
160
|
return new _core.WebMercatorViewport(Object.assign({
|
|
162
161
|
id: 'mapbox',
|
|
163
162
|
x: 0,
|
|
@@ -172,16 +171,17 @@ function getViewport(deck, map) {
|
|
|
172
171
|
}
|
|
173
172
|
|
|
174
173
|
function afterRender(deck, map) {
|
|
175
|
-
var
|
|
176
|
-
mapboxLayers =
|
|
177
|
-
isExternal =
|
|
174
|
+
var _ref5 = deck.userData,
|
|
175
|
+
mapboxLayers = _ref5.mapboxLayers,
|
|
176
|
+
isExternal = _ref5.isExternal;
|
|
178
177
|
|
|
179
178
|
if (isExternal) {
|
|
180
179
|
var mapboxLayerIds = Array.from(mapboxLayers, function (layer) {
|
|
181
180
|
return layer.id;
|
|
182
181
|
});
|
|
183
|
-
var
|
|
184
|
-
|
|
182
|
+
var deckLayers = (0, _core._flatten)(deck.props.layers, Boolean);
|
|
183
|
+
var hasNonMapboxLayers = deckLayers.some(function (layer) {
|
|
184
|
+
return layer && !mapboxLayerIds.includes(layer.id);
|
|
185
185
|
});
|
|
186
186
|
var viewports = deck.getViewports();
|
|
187
187
|
var mapboxViewportIdx = viewports.findIndex(function (vp) {
|
|
@@ -205,7 +205,7 @@ function afterRender(deck, map) {
|
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
deck.
|
|
208
|
+
deck.userData.currentViewport = null;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
function onMapMove(deck, map) {
|
|
@@ -218,13 +218,13 @@ function onMapMove(deck, map) {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
function updateLayers(deck) {
|
|
221
|
-
if (deck.
|
|
221
|
+
if (deck.userData.isExternal) {
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
var layers = [];
|
|
226
226
|
var layerIndex = 0;
|
|
227
|
-
deck.
|
|
227
|
+
deck.userData.mapboxLayers.forEach(function (deckLayer) {
|
|
228
228
|
var LayerType = deckLayer.props.type;
|
|
229
229
|
var layer = new LayerType(deckLayer.props, {
|
|
230
230
|
_offset: layerIndex++
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.js"],"names":["getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","triggerRepaint","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","userData","isExternal","mapboxLayers","Set","views","MapView","id","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","Deck","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","nearZMultiplier","mapboxLayerIds","Array","from","hasNonMapboxLayers","layers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","params","viewport","needsRedraw","clearRedrawFlags","layerIndex","forEach","LayerType","type","_offset","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView} from '@deck.gl/core';\n\nexport function getDeckInstance({map, gl, deck}) {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n const customRender = deck && deck.props._customRender;\n\n const deckProps = {\n useDevicePixels: true,\n _customRender: () => {\n map.triggerRepaint();\n if (customRender) {\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n customRender();\n }\n },\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: gl.LEQUAL,\n blendEquation: gl.FUNC_ADD\n },\n userData: {\n isExternal: false,\n mapboxLayers: new Set()\n },\n views: (deck && deck.props.views) || [new MapView({id: 'mapbox'})]\n };\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: false,\n height: false,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deck, map));\n }\n\n if (deck) {\n deck.setProps(deckProps);\n deck.props.userData.isExternal = true;\n } else {\n deck = new Deck(deckProps);\n map.on('remove', () => {\n deck.finalize();\n map.__deck = null;\n });\n }\n\n deck.props.userData.mapboxVersion = getMapboxVersion(map);\n map.__deck = deck;\n map.on('render', () => {\n if (deck.layerManager) afterRender(deck, map);\n });\n\n return deck;\n}\n\nexport function addLayer(deck, layer) {\n deck.props.userData.mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck, layer) {\n deck.props.userData.mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck, layer) {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck, map, layer) {\n let {currentViewport} = deck.props.userData;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n deck.props.userData.currentViewport = currentViewport;\n }\n if (!deck.layerManager) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map) {\n const {lng, lat} = map.getCenter();\n return {\n longitude: lng,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n repeat: map.getRenderWorldCopies()\n };\n}\n\nfunction getMapboxVersion(map) {\n // parse mapbox version string\n let major = 0;\n let minor = 0;\n if (map.version) {\n [major, minor] = map.version.split('.').slice(0, 2).map(Number);\n }\n return {major, minor};\n}\n\nfunction getViewport(deck, map, useMapboxProjection = true) {\n const {mapboxVersion} = deck.props.userData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\n );\n}\n\nfunction afterRender(deck, map) {\n const {mapboxLayers, isExternal} = deck.props.userData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const hasNonMapboxLayers = deck.props.layers.some(layer => !mapboxLayerIds.includes(layer.id));\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n deck.props.userData.currentViewport = null;\n}\n\nfunction onMapMove(deck, map) {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck) {\n if (deck.props.userData.isExternal) {\n return;\n }\n\n const layers = [];\n let layerIndex = 0;\n deck.props.userData.mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props, {_offset: layerIndex++});\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","reason","triggerRepaint","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","userData","isExternal","Deck","finalize","mapboxLayers","Set","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","nearZMultiplier","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","includes","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","params","viewport","needsRedraw","clearRedrawFlags","layerIndex","forEach","LayerType","type","_offset","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n mapboxVersion: {minor: number; major: number};\n};\n\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n const customRender = deck?.props._customRender;\n\n const deckProps: DeckProps = {\n useDevicePixels: true,\n _customRender: (reason: string) => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n customRender?.(reason);\n },\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: gl.LEQUAL,\n blendEquation: gl.FUNC_ADD\n },\n views: (deck && deck.props.views) || [new MapView({id: 'mapbox'})]\n };\n\n if (!deck || deck.props.gl === gl) {\n // deck is using the WebGLContext created by mapbox\n // block deck from setting the canvas size\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n // If using the WebGLContext created by deck (React use case), we use deck's viewState to drive the map.\n // Otherwise (pure JS use case), we use the map's viewState to drive deck.\n map.on('move', () => onMapMove(deck!, map));\n }\n\n if (deck) {\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deck = new Deck(deckProps);\n map.on('remove', () => {\n deck!.finalize();\n map.__deck = null;\n });\n }\n\n (deck.userData as UserData).mapboxLayers = new Set();\n (deck.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deck;\n map.on('render', () => {\n // @ts-expect-error (2445) protected property\n if (deck.layerManager) afterRender(deck, map);\n });\n\n return deck;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n }\n\n // @ts-expect-error (2445) protected property\n if (!deck.layerManager) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {repeat: boolean} {\n const {lng, lat} = map.getCenter();\n return {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n repeat: map.getRenderWorldCopies()\n };\n}\n\nfunction getMapboxVersion(map: Map): {minor: number; major: number} {\n // parse mapbox version string\n let major = 0;\n let minor = 0;\n // @ts-ignore (2339) undefined property\n const version: string = map.version;\n if (version) {\n [major, minor] = version.split('.').slice(0, 2).map(Number);\n }\n return {major, minor};\n}\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n const {mapboxVersion} = deck.userData as UserData;\n\n return new WebMercatorViewport(\n Object.assign(\n {\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height\n },\n getViewState(map),\n useMapboxProjection\n ? {\n // match mapbox's projection matrix\n // A change of near plane was made in 1.3.0\n // https://github.com/mapbox/mapbox-gl-js/pull/8502\n nearZMultiplier:\n (mapboxVersion.major === 1 && mapboxVersion.minor >= 3) || mapboxVersion.major >= 2\n ? 0.02\n : 1 / (deck.height || 1)\n }\n : {\n // use deck.gl's own default\n nearZMultiplier: 0.1\n }\n )\n );\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n let layerIndex = 0;\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props, {_offset: layerIndex++});\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
package/dist/es5/mapbox-layer.js
CHANGED
|
@@ -11,11 +11,19 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
13
|
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
14
16
|
var _deckUtils = require("./deck-utils");
|
|
15
17
|
|
|
16
18
|
var MapboxLayer = function () {
|
|
17
19
|
function MapboxLayer(props) {
|
|
18
20
|
(0, _classCallCheck2.default)(this, MapboxLayer);
|
|
21
|
+
(0, _defineProperty2.default)(this, "id", void 0);
|
|
22
|
+
(0, _defineProperty2.default)(this, "type", void 0);
|
|
23
|
+
(0, _defineProperty2.default)(this, "renderingMode", void 0);
|
|
24
|
+
(0, _defineProperty2.default)(this, "map", void 0);
|
|
25
|
+
(0, _defineProperty2.default)(this, "deck", void 0);
|
|
26
|
+
(0, _defineProperty2.default)(this, "props", void 0);
|
|
19
27
|
|
|
20
28
|
if (!props.id) {
|
|
21
29
|
throw new Error('Layer must have an unique id');
|
|
@@ -43,7 +51,9 @@ var MapboxLayer = function () {
|
|
|
43
51
|
}, {
|
|
44
52
|
key: "onRemove",
|
|
45
53
|
value: function onRemove() {
|
|
46
|
-
|
|
54
|
+
if (this.deck) {
|
|
55
|
+
(0, _deckUtils.removeLayer)(this.deck, this);
|
|
56
|
+
}
|
|
47
57
|
}
|
|
48
58
|
}, {
|
|
49
59
|
key: "setProps",
|
|
@@ -58,7 +68,7 @@ var MapboxLayer = function () {
|
|
|
58
68
|
}
|
|
59
69
|
}, {
|
|
60
70
|
key: "render",
|
|
61
|
-
value: function render(
|
|
71
|
+
value: function render() {
|
|
62
72
|
(0, _deckUtils.drawLayer)(this.deck, this.map, this);
|
|
63
73
|
}
|
|
64
74
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","Error","type","renderingMode","map","deck","gl","Object","assign"],"mappings":";;;;;;;;;;;;;;;AAAA;;IAQqBA,W;AASnB,uBAAYC,KAAZ,EAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIC,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKD,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKE,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBJ,KAAK,CAACI,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKN,KAAL,GAAaA,KAAb;AACD;;;;WAID,eAAMK,GAAN,EAAgBE,EAAhB,EAAiD;AAC/C,WAAKF,GAAL,GAAWA,GAAX;AACA,WAAKC,IAAL,GAAY,gCAAgB;AAACD,QAAAA,GAAG,EAAHA,GAAD;AAAME,QAAAA,EAAE,EAAFA,EAAN;AAAUD,QAAAA,IAAI,EAAE,KAAKN,KAAL,CAAWM;AAA3B,OAAhB,CAAZ;AACA,+BAAS,KAAKA,IAAd,EAAoB,IAApB;AACD;;;WAED,oBAAiB;AACf,UAAI,KAAKA,IAAT,EAAe;AACb,oCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF;;;WAED,kBAASN,KAAT,EAA0C;AAExCQ,MAAAA,MAAM,CAACC,MAAP,CAAc,KAAKT,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,QAAAA,EAAE,EAAE,KAAKA;AAAV,OAAjC;;AAEA,UAAI,KAAKK,IAAT,EAAe;AACb,oCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF;;;WAED,kBAAS;AACP,gCAAU,KAAKA,IAAf,EAAsB,KAAKD,GAA3B,EAAiC,IAAjC;AACD","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map!, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|