@deck.gl/mapbox 8.7.9 → 8.8.0-alpha.2
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 +221 -6
- package/dist/es5/deck-utils.js +4 -3
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mapbox-overlay.js +200 -0
- package/dist/es5/mapbox-overlay.js.map +1 -0
- package/dist/esm/deck-utils.js +4 -5
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +174 -0
- package/dist/esm/mapbox-overlay.js.map +1 -0
- package/dist.min.js +1 -1
- package/package.json +5 -2
- package/src/deck-utils.js +4 -4
- package/src/index.ts +1 -0
- package/src/mapbox-overlay.ts +175 -0
package/dist/dist.dev.js
CHANGED
|
@@ -119,7 +119,7 @@ module.exports = Object.assign(deck, MapboxUtils);
|
|
|
119
119
|
/*!***************************!*\
|
|
120
120
|
!*** ./src/deck-utils.js ***!
|
|
121
121
|
\***************************/
|
|
122
|
-
/*! exports provided: getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer */
|
|
122
|
+
/*! exports provided: getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer, getViewState */
|
|
123
123
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
124
124
|
|
|
125
125
|
"use strict";
|
|
@@ -129,6 +129,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
129
129
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeLayer", function() { return removeLayer; });
|
|
130
130
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateLayer", function() { return updateLayer; });
|
|
131
131
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drawLayer", function() { return drawLayer; });
|
|
132
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewState", function() { return getViewState; });
|
|
132
133
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
|
|
133
134
|
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
|
|
134
135
|
|
|
@@ -241,7 +242,6 @@ function drawLayer(deck, map, layer) {
|
|
|
241
242
|
clearCanvas: false
|
|
242
243
|
});
|
|
243
244
|
}
|
|
244
|
-
|
|
245
245
|
function getViewState(map) {
|
|
246
246
|
const {
|
|
247
247
|
lng,
|
|
@@ -252,7 +252,8 @@ function getViewState(map) {
|
|
|
252
252
|
latitude: lat,
|
|
253
253
|
zoom: map.getZoom(),
|
|
254
254
|
bearing: map.getBearing(),
|
|
255
|
-
pitch: map.getPitch()
|
|
255
|
+
pitch: map.getPitch(),
|
|
256
|
+
repeat: map.getRenderWorldCopies()
|
|
256
257
|
};
|
|
257
258
|
}
|
|
258
259
|
|
|
@@ -280,8 +281,7 @@ function getViewport(deck, map, useMapboxProjection = true) {
|
|
|
280
281
|
x: 0,
|
|
281
282
|
y: 0,
|
|
282
283
|
width: deck.width,
|
|
283
|
-
height: deck.height
|
|
284
|
-
repeat: map.getRenderWorldCopies()
|
|
284
|
+
height: deck.height
|
|
285
285
|
}, getViewState(map), useMapboxProjection ? {
|
|
286
286
|
// match mapbox's projection matrix
|
|
287
287
|
// A change of near plane was made in 1.3.0
|
|
@@ -362,7 +362,7 @@ function updateLayers(deck) {
|
|
|
362
362
|
/*!**********************!*\
|
|
363
363
|
!*** ./src/index.ts ***!
|
|
364
364
|
\**********************/
|
|
365
|
-
/*! exports provided: MapboxLayer */
|
|
365
|
+
/*! exports provided: MapboxLayer, MapboxOverlay */
|
|
366
366
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
367
367
|
|
|
368
368
|
"use strict";
|
|
@@ -370,6 +370,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
370
370
|
/* harmony import */ var _mapbox_layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapbox-layer */ "./src/mapbox-layer.js");
|
|
371
371
|
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MapboxLayer", function() { return _mapbox_layer__WEBPACK_IMPORTED_MODULE_0__["default"]; });
|
|
372
372
|
|
|
373
|
+
/* harmony import */ var _mapbox_overlay__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapbox-overlay */ "./src/mapbox-overlay.ts");
|
|
374
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MapboxOverlay", function() { return _mapbox_overlay__WEBPACK_IMPORTED_MODULE_1__["default"]; });
|
|
375
|
+
|
|
376
|
+
|
|
373
377
|
|
|
374
378
|
|
|
375
379
|
/***/ }),
|
|
@@ -436,6 +440,217 @@ class MapboxLayer {
|
|
|
436
440
|
|
|
437
441
|
/***/ }),
|
|
438
442
|
|
|
443
|
+
/***/ "./src/mapbox-overlay.ts":
|
|
444
|
+
/*!*******************************!*\
|
|
445
|
+
!*** ./src/mapbox-overlay.ts ***!
|
|
446
|
+
\*******************************/
|
|
447
|
+
/*! exports provided: default */
|
|
448
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
449
|
+
|
|
450
|
+
"use strict";
|
|
451
|
+
__webpack_require__.r(__webpack_exports__);
|
|
452
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MapboxOverlay; });
|
|
453
|
+
/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
|
|
454
|
+
/* 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.js");
|
|
456
|
+
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
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
463
|
+
* Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
|
|
464
|
+
*/
|
|
465
|
+
class MapboxOverlay {
|
|
466
|
+
constructor(props) {
|
|
467
|
+
_defineProperty(this, "_props", void 0);
|
|
468
|
+
|
|
469
|
+
_defineProperty(this, "_deck", void 0);
|
|
470
|
+
|
|
471
|
+
_defineProperty(this, "_map", void 0);
|
|
472
|
+
|
|
473
|
+
_defineProperty(this, "_container", void 0);
|
|
474
|
+
|
|
475
|
+
_defineProperty(this, "_updateContainerSize", () => {
|
|
476
|
+
if (this._map && this._container) {
|
|
477
|
+
const {
|
|
478
|
+
clientWidth,
|
|
479
|
+
clientHeight
|
|
480
|
+
} = this._map.getContainer();
|
|
481
|
+
|
|
482
|
+
Object.assign(this._container.style, {
|
|
483
|
+
width: `${clientWidth}px`,
|
|
484
|
+
height: `${clientHeight}px`
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
_defineProperty(this, "_updateViewState", () => {
|
|
490
|
+
const deck = this._deck;
|
|
491
|
+
|
|
492
|
+
if (deck) {
|
|
493
|
+
deck.setProps({
|
|
494
|
+
viewState: Object(_deck_utils__WEBPACK_IMPORTED_MODULE_1__["getViewState"])(this._map)
|
|
495
|
+
}); // Redraw immediately if view state has changed
|
|
496
|
+
|
|
497
|
+
deck.redraw(false);
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
|
|
501
|
+
_defineProperty(this, "_handleMouseEvent", event => {
|
|
502
|
+
const deck = this._deck;
|
|
503
|
+
|
|
504
|
+
if (!deck) {
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
const mockEvent = {
|
|
509
|
+
type: event.type,
|
|
510
|
+
offsetCenter: event.point,
|
|
511
|
+
srcEvent: event
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
switch (event.type) {
|
|
515
|
+
case 'click':
|
|
516
|
+
// Hack: because we do not listen to pointer down, perform picking now
|
|
517
|
+
deck._lastPointerDownInfo = deck.pickObject({ ...mockEvent.offsetCenter,
|
|
518
|
+
radius: deck.props.pickingRadius
|
|
519
|
+
});
|
|
520
|
+
mockEvent.tapCount = 1;
|
|
521
|
+
|
|
522
|
+
deck._onEvent(mockEvent);
|
|
523
|
+
|
|
524
|
+
break;
|
|
525
|
+
|
|
526
|
+
case 'dblclick':
|
|
527
|
+
mockEvent.type = 'click';
|
|
528
|
+
mockEvent.tapCount = 2;
|
|
529
|
+
|
|
530
|
+
deck._onEvent(mockEvent);
|
|
531
|
+
|
|
532
|
+
break;
|
|
533
|
+
|
|
534
|
+
case 'mousemove':
|
|
535
|
+
mockEvent.type = 'pointermove';
|
|
536
|
+
|
|
537
|
+
deck._onPointerMove(mockEvent);
|
|
538
|
+
|
|
539
|
+
break;
|
|
540
|
+
|
|
541
|
+
case 'mouseout':
|
|
542
|
+
mockEvent.type = 'pointerleave';
|
|
543
|
+
|
|
544
|
+
deck._onPointerMove(mockEvent);
|
|
545
|
+
|
|
546
|
+
break;
|
|
547
|
+
|
|
548
|
+
default:
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
this._props = { ...props
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
/** Update (partial) props of the underlying Deck instance. */
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
setProps(props) {
|
|
560
|
+
Object.assign(this._props, props);
|
|
561
|
+
|
|
562
|
+
if ('viewState' in this._props) {
|
|
563
|
+
delete this._props.viewState;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
if (this._deck) {
|
|
567
|
+
this._deck.setProps(this._props);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
/** Called when the control is added to a map */
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
onAdd(map) {
|
|
574
|
+
this._map = map;
|
|
575
|
+
/* global document */
|
|
576
|
+
|
|
577
|
+
const container = document.createElement('div');
|
|
578
|
+
Object.assign(container.style, {
|
|
579
|
+
position: 'absolute',
|
|
580
|
+
left: 0,
|
|
581
|
+
top: 0,
|
|
582
|
+
pointerEvents: 'none'
|
|
583
|
+
});
|
|
584
|
+
this._container = container;
|
|
585
|
+
this._deck = new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Deck"]({ ...this._props,
|
|
586
|
+
parent: container,
|
|
587
|
+
viewState: Object(_deck_utils__WEBPACK_IMPORTED_MODULE_1__["getViewState"])(map)
|
|
588
|
+
});
|
|
589
|
+
map.on('resize', this._updateContainerSize);
|
|
590
|
+
map.on('render', this._updateViewState);
|
|
591
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
592
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
593
|
+
map.on('click', this._handleMouseEvent);
|
|
594
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
595
|
+
|
|
596
|
+
this._updateContainerSize();
|
|
597
|
+
|
|
598
|
+
return container;
|
|
599
|
+
}
|
|
600
|
+
/** Called when the control is removed from a map */
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
onRemove() {
|
|
604
|
+
const map = this._map;
|
|
605
|
+
|
|
606
|
+
if (map) {
|
|
607
|
+
map.off('resize', this._updateContainerSize);
|
|
608
|
+
map.off('render', this._updateViewState);
|
|
609
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
610
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
611
|
+
map.off('click', this._handleMouseEvent);
|
|
612
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
this._deck?.finalize();
|
|
616
|
+
this._map = undefined;
|
|
617
|
+
this._container = undefined;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
getDefaultPosition() {
|
|
621
|
+
return 'top-left';
|
|
622
|
+
}
|
|
623
|
+
/** Forwards the Deck.pickObject method */
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
pickObject(params) {
|
|
627
|
+
return this._deck && this._deck.pickObject(params);
|
|
628
|
+
}
|
|
629
|
+
/** Forwards the Deck.pickMultipleObjects method */
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
pickMultipleObjects(params) {
|
|
633
|
+
return this._deck && this._deck.pickMultipleObjects(params);
|
|
634
|
+
}
|
|
635
|
+
/** Forwards the Deck.pickObjects method */
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
pickObjects(params) {
|
|
639
|
+
return this._deck && this._deck.pickObjects(params);
|
|
640
|
+
}
|
|
641
|
+
/** Remove from map and releases all resources */
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
finalize() {
|
|
645
|
+
if (this._map) {
|
|
646
|
+
this._map.removeControl(this);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/***/ }),
|
|
653
|
+
|
|
439
654
|
/***/ "@deck.gl/core":
|
|
440
655
|
/*!***********************!*\
|
|
441
656
|
!*** external "deck" ***!
|
package/dist/es5/deck-utils.js
CHANGED
|
@@ -10,6 +10,7 @@ exports.addLayer = addLayer;
|
|
|
10
10
|
exports.removeLayer = removeLayer;
|
|
11
11
|
exports.updateLayer = updateLayer;
|
|
12
12
|
exports.drawLayer = drawLayer;
|
|
13
|
+
exports.getViewState = getViewState;
|
|
13
14
|
|
|
14
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
16
|
|
|
@@ -130,7 +131,8 @@ function getViewState(map) {
|
|
|
130
131
|
latitude: lat,
|
|
131
132
|
zoom: map.getZoom(),
|
|
132
133
|
bearing: map.getBearing(),
|
|
133
|
-
pitch: map.getPitch()
|
|
134
|
+
pitch: map.getPitch(),
|
|
135
|
+
repeat: map.getRenderWorldCopies()
|
|
134
136
|
};
|
|
135
137
|
}
|
|
136
138
|
|
|
@@ -161,8 +163,7 @@ function getViewport(deck, map) {
|
|
|
161
163
|
x: 0,
|
|
162
164
|
y: 0,
|
|
163
165
|
width: deck.width,
|
|
164
|
-
height: deck.height
|
|
165
|
-
repeat: map.getRenderWorldCopies()
|
|
166
|
+
height: deck.height
|
|
166
167
|
}, getViewState(map), useMapboxProjection ? {
|
|
167
168
|
nearZMultiplier: mapboxVersion.major === 1 && mapboxVersion.minor >= 3 || mapboxVersion.major >= 2 ? 0.02 : 1 / (deck.height || 1)
|
|
168
169
|
} : {
|
|
@@ -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","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","repeat","getRenderWorldCopies","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\nfunction 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 };\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 repeat: map.getRenderWorldCopies()\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.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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -11,6 +11,14 @@ Object.defineProperty(exports, "MapboxLayer", {
|
|
|
11
11
|
return _mapboxLayer.default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
+
Object.defineProperty(exports, "MapboxOverlay", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _mapboxOverlay.default;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
14
20
|
|
|
15
21
|
var _mapboxLayer = _interopRequireDefault(require("./mapbox-layer"));
|
|
22
|
+
|
|
23
|
+
var _mapboxOverlay = _interopRequireDefault(require("./mapbox-overlay"));
|
|
16
24
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export {default as MapboxLayer} from './mapbox-layer';\nexport {default as MapboxOverlay} from './mapbox-overlay';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,200 @@
|
|
|
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _core = require("@deck.gl/core");
|
|
17
|
+
|
|
18
|
+
var _deckUtils = require("./deck-utils");
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
var MapboxOverlay = function () {
|
|
25
|
+
function MapboxOverlay(props) {
|
|
26
|
+
var _this = this;
|
|
27
|
+
|
|
28
|
+
(0, _classCallCheck2.default)(this, MapboxOverlay);
|
|
29
|
+
(0, _defineProperty2.default)(this, "_props", void 0);
|
|
30
|
+
(0, _defineProperty2.default)(this, "_deck", void 0);
|
|
31
|
+
(0, _defineProperty2.default)(this, "_map", void 0);
|
|
32
|
+
(0, _defineProperty2.default)(this, "_container", void 0);
|
|
33
|
+
(0, _defineProperty2.default)(this, "_updateContainerSize", function () {
|
|
34
|
+
if (_this._map && _this._container) {
|
|
35
|
+
var _this$_map$getContain = _this._map.getContainer(),
|
|
36
|
+
clientWidth = _this$_map$getContain.clientWidth,
|
|
37
|
+
clientHeight = _this$_map$getContain.clientHeight;
|
|
38
|
+
|
|
39
|
+
Object.assign(_this._container.style, {
|
|
40
|
+
width: "".concat(clientWidth, "px"),
|
|
41
|
+
height: "".concat(clientHeight, "px")
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
(0, _defineProperty2.default)(this, "_updateViewState", function () {
|
|
46
|
+
var deck = _this._deck;
|
|
47
|
+
|
|
48
|
+
if (deck) {
|
|
49
|
+
deck.setProps({
|
|
50
|
+
viewState: (0, _deckUtils.getViewState)(_this._map)
|
|
51
|
+
});
|
|
52
|
+
deck.redraw(false);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
(0, _defineProperty2.default)(this, "_handleMouseEvent", function (event) {
|
|
56
|
+
var deck = _this._deck;
|
|
57
|
+
|
|
58
|
+
if (!deck) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
var mockEvent = {
|
|
63
|
+
type: event.type,
|
|
64
|
+
offsetCenter: event.point,
|
|
65
|
+
srcEvent: event
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
switch (event.type) {
|
|
69
|
+
case 'click':
|
|
70
|
+
deck._lastPointerDownInfo = deck.pickObject(_objectSpread(_objectSpread({}, mockEvent.offsetCenter), {}, {
|
|
71
|
+
radius: deck.props.pickingRadius
|
|
72
|
+
}));
|
|
73
|
+
mockEvent.tapCount = 1;
|
|
74
|
+
|
|
75
|
+
deck._onEvent(mockEvent);
|
|
76
|
+
|
|
77
|
+
break;
|
|
78
|
+
|
|
79
|
+
case 'dblclick':
|
|
80
|
+
mockEvent.type = 'click';
|
|
81
|
+
mockEvent.tapCount = 2;
|
|
82
|
+
|
|
83
|
+
deck._onEvent(mockEvent);
|
|
84
|
+
|
|
85
|
+
break;
|
|
86
|
+
|
|
87
|
+
case 'mousemove':
|
|
88
|
+
mockEvent.type = 'pointermove';
|
|
89
|
+
|
|
90
|
+
deck._onPointerMove(mockEvent);
|
|
91
|
+
|
|
92
|
+
break;
|
|
93
|
+
|
|
94
|
+
case 'mouseout':
|
|
95
|
+
mockEvent.type = 'pointerleave';
|
|
96
|
+
|
|
97
|
+
deck._onPointerMove(mockEvent);
|
|
98
|
+
|
|
99
|
+
break;
|
|
100
|
+
|
|
101
|
+
default:
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this._props = _objectSpread({}, props);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
(0, _createClass2.default)(MapboxOverlay, [{
|
|
109
|
+
key: "setProps",
|
|
110
|
+
value: function setProps(props) {
|
|
111
|
+
Object.assign(this._props, props);
|
|
112
|
+
|
|
113
|
+
if ('viewState' in this._props) {
|
|
114
|
+
delete this._props.viewState;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (this._deck) {
|
|
118
|
+
this._deck.setProps(this._props);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
key: "onAdd",
|
|
123
|
+
value: function onAdd(map) {
|
|
124
|
+
this._map = map;
|
|
125
|
+
var container = document.createElement('div');
|
|
126
|
+
Object.assign(container.style, {
|
|
127
|
+
position: 'absolute',
|
|
128
|
+
left: 0,
|
|
129
|
+
top: 0,
|
|
130
|
+
pointerEvents: 'none'
|
|
131
|
+
});
|
|
132
|
+
this._container = container;
|
|
133
|
+
this._deck = new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
|
|
134
|
+
parent: container,
|
|
135
|
+
viewState: (0, _deckUtils.getViewState)(map)
|
|
136
|
+
}));
|
|
137
|
+
map.on('resize', this._updateContainerSize);
|
|
138
|
+
map.on('render', this._updateViewState);
|
|
139
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
140
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
141
|
+
map.on('click', this._handleMouseEvent);
|
|
142
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
143
|
+
|
|
144
|
+
this._updateContainerSize();
|
|
145
|
+
|
|
146
|
+
return container;
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
key: "onRemove",
|
|
150
|
+
value: function onRemove() {
|
|
151
|
+
var _this$_deck;
|
|
152
|
+
|
|
153
|
+
var map = this._map;
|
|
154
|
+
|
|
155
|
+
if (map) {
|
|
156
|
+
map.off('resize', this._updateContainerSize);
|
|
157
|
+
map.off('render', this._updateViewState);
|
|
158
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
159
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
160
|
+
map.off('click', this._handleMouseEvent);
|
|
161
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
(_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
|
|
165
|
+
this._map = undefined;
|
|
166
|
+
this._container = undefined;
|
|
167
|
+
}
|
|
168
|
+
}, {
|
|
169
|
+
key: "getDefaultPosition",
|
|
170
|
+
value: function getDefaultPosition() {
|
|
171
|
+
return 'top-left';
|
|
172
|
+
}
|
|
173
|
+
}, {
|
|
174
|
+
key: "pickObject",
|
|
175
|
+
value: function pickObject(params) {
|
|
176
|
+
return this._deck && this._deck.pickObject(params);
|
|
177
|
+
}
|
|
178
|
+
}, {
|
|
179
|
+
key: "pickMultipleObjects",
|
|
180
|
+
value: function pickMultipleObjects(params) {
|
|
181
|
+
return this._deck && this._deck.pickMultipleObjects(params);
|
|
182
|
+
}
|
|
183
|
+
}, {
|
|
184
|
+
key: "pickObjects",
|
|
185
|
+
value: function pickObjects(params) {
|
|
186
|
+
return this._deck && this._deck.pickObjects(params);
|
|
187
|
+
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "finalize",
|
|
190
|
+
value: function finalize() {
|
|
191
|
+
if (this._map) {
|
|
192
|
+
this._map.removeControl(this);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}]);
|
|
196
|
+
return MapboxOverlay;
|
|
197
|
+
}();
|
|
198
|
+
|
|
199
|
+
exports.default = MapboxOverlay;
|
|
200
|
+
//# sourceMappingURL=mapbox-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","_deck","setProps","viewState","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","_lastPointerDownInfo","pickObject","radius","pickingRadius","tapCount","_onEvent","_onPointerMove","_props","map","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","off","finalize","undefined","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck} from '@deck.gl/core';\nimport {getViewState} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\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: any;\n private _deck: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n\n constructor(props) {\n this._props = {...props};\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: any): void {\n Object.assign(this._props, props);\n\n if ('viewState' in this._props) {\n delete this._props.viewState;\n }\n\n if (this._deck) {\n this._deck.setProps(this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map) {\n this._map = map;\n\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 /** Called when the control is removed from a map */\n onRemove() {\n const map = this._map;\n\n if (map) {\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 this._deck?.finalize();\n this._map = undefined;\n this._container = undefined;\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params) {\n return this._deck && this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(params) {\n return this._deck && this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params) {\n return this._deck && 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 _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 _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n deck.redraw(false);\n }\n };\n\n _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 // Hack: because we do not listen to pointer down, perform picking now\n deck._lastPointerDownInfo = deck.pickObject({\n ...mockEvent.offsetCenter,\n radius: deck.props.pickingRadius\n });\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
package/dist/esm/deck-utils.js
CHANGED
|
@@ -98,8 +98,7 @@ export function drawLayer(deck, map, layer) {
|
|
|
98
98
|
clearCanvas: false
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
function getViewState(map) {
|
|
101
|
+
export function getViewState(map) {
|
|
103
102
|
const {
|
|
104
103
|
lng,
|
|
105
104
|
lat
|
|
@@ -109,7 +108,8 @@ function getViewState(map) {
|
|
|
109
108
|
latitude: lat,
|
|
110
109
|
zoom: map.getZoom(),
|
|
111
110
|
bearing: map.getBearing(),
|
|
112
|
-
pitch: map.getPitch()
|
|
111
|
+
pitch: map.getPitch(),
|
|
112
|
+
repeat: map.getRenderWorldCopies()
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -136,8 +136,7 @@ function getViewport(deck, map, useMapboxProjection = true) {
|
|
|
136
136
|
x: 0,
|
|
137
137
|
y: 0,
|
|
138
138
|
width: deck.width,
|
|
139
|
-
height: deck.height
|
|
140
|
-
repeat: map.getRenderWorldCopies()
|
|
139
|
+
height: deck.height
|
|
141
140
|
}, getViewState(map), useMapboxProjection ? {
|
|
142
141
|
nearZMultiplier: mapboxVersion.major === 1 && mapboxVersion.minor >= 3 || mapboxVersion.major >= 2 ? 0.02 : 1 / (deck.height || 1)
|
|
143
142
|
} : {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.js"],"names":["Deck","WebMercatorViewport","MapView","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","triggerRepaint","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","userData","isExternal","mapboxLayers","Set","views","id","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","major","minor","version","split","slice","Number","useMapboxProjection","x","y","repeat","getRenderWorldCopies","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":"AAAA,SAAQA,IAAR,EAAcC,mBAAd,EAAmCC,OAAnC,QAAiD,eAAjD;AAEA,OAAO,SAASC,eAAT,CAAyB;AAACC,EAAAA,GAAD;AAAMC,EAAAA,EAAN;AAAUC,EAAAA;AAAV,CAAzB,EAA0C;AAE/C,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAED,QAAMC,YAAY,GAAGF,IAAI,IAAIA,IAAI,CAACG,KAAL,CAAWC,aAAxC;AAEA,QAAMC,SAAS,GAAG;AAChBC,IAAAA,eAAe,EAAE,IADD;AAEhBF,IAAAA,aAAa,EAAE,MAAM;AACnBN,MAAAA,GAAG,CAACS,cAAJ;;AACA,UAAIL,YAAJ,EAAkB;AAGhBA,QAAAA,YAAY;AACb;AACF,KATe;AAWhBM,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,IADD;AAEVC,MAAAA,SAAS,EAAE,IAFD;AAGVC,MAAAA,KAAK,EAAE,IAHG;AAIVC,MAAAA,SAAS,EAAE,kBAJD;AAKVC,MAAAA,iBAAiB,EAAE,IALT;AAMVC,MAAAA,SAAS,KANC;AAOVC,MAAAA,aAAa;AAPH,KAXI;AAoBhBC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE,KADJ;AAERC,MAAAA,YAAY,EAAE,IAAIC,GAAJ;AAFN,KApBM;AAwBhBC,IAAAA,KAAK,EAAGpB,IAAI,IAAIA,IAAI,CAACG,KAAL,CAAWiB,KAApB,IAA8B,CAAC,IAAIxB,OAAJ,CAAY;AAACyB,MAAAA,EAAE,EAAE;AAAL,KAAZ,CAAD;AAxBrB,GAAlB;;AA2BA,MAAI,CAACrB,IAAD,IAASA,IAAI,CAACG,KAAL,CAAWJ,EAAX,KAAkBA,EAA/B,EAAmC;AAGjCuB,IAAAA,MAAM,CAACC,MAAP,CAAclB,SAAd,EAAyB;AACvBN,MAAAA,EADuB;AAEvByB,MAAAA,KAAK,EAAE,KAFgB;AAGvBC,MAAAA,MAAM,EAAE,KAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAC9B,GAAD;AALA,KAAzB;AASAA,IAAAA,GAAG,CAAC+B,EAAJ,CAAO,MAAP,EAAe,MAAMC,SAAS,CAAC9B,IAAD,EAAOF,GAAP,CAA9B;AACD;;AAED,MAAIE,IAAJ,EAAU;AACRA,IAAAA,IAAI,CAAC+B,QAAL,CAAc1B,SAAd;AACAL,IAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBC,UAApB,GAAiC,IAAjC;AACD,GAHD,MAGO;AACLjB,IAAAA,IAAI,GAAG,IAAIN,IAAJ,CAASW,SAAT,CAAP;AACAP,IAAAA,GAAG,CAAC+B,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrB7B,MAAAA,IAAI,CAACgC,QAAL;AACAlC,MAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD,KAHD;AAID;;AAEDD,EAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBiB,aAApB,GAAoCC,gBAAgB,CAACpC,GAAD,CAApD;AACAA,EAAAA,GAAG,CAACG,MAAJ,GAAaD,IAAb;AACAF,EAAAA,GAAG,CAAC+B,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrB,QAAI7B,IAAI,CAACmC,YAAT,EAAuBC,WAAW,CAACpC,IAAD,EAAOF,GAAP,CAAX;AACxB,GAFD;AAIA,SAAOE,IAAP;AACD;AAED,OAAO,SAASqC,QAAT,CAAkBrC,IAAlB,EAAwBsC,KAAxB,EAA+B;AACpCtC,EAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBE,YAApB,CAAiCqB,GAAjC,CAAqCD,KAArC;AACAE,EAAAA,YAAY,CAACxC,IAAD,CAAZ;AACD;AAED,OAAO,SAASyC,WAAT,CAAqBzC,IAArB,EAA2BsC,KAA3B,EAAkC;AACvCtC,EAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBE,YAApB,CAAiCwB,MAAjC,CAAwCJ,KAAxC;AACAE,EAAAA,YAAY,CAACxC,IAAD,CAAZ;AACD;AAED,OAAO,SAAS2C,WAAT,CAAqB3C,IAArB,EAA2BsC,KAA3B,EAAkC;AACvCE,EAAAA,YAAY,CAACxC,IAAD,CAAZ;AACD;AAED,OAAO,SAAS4C,SAAT,CAAmB5C,IAAnB,EAAyBF,GAAzB,EAA8BwC,KAA9B,EAAqC;AAC1C,MAAI;AAACO,IAAAA;AAAD,MAAoB7C,IAAI,CAACG,KAAL,CAAWa,QAAnC;;AACA,MAAI,CAAC6B,eAAL,EAAsB;AAGpBA,IAAAA,eAAe,GAAGC,WAAW,CAAC9C,IAAD,EAAOF,GAAP,EAAY,IAAZ,CAA7B;AACAE,IAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoB6B,eAApB,GAAsCA,eAAtC;AACD;;AACD,MAAI,CAAC7C,IAAI,CAACmC,YAAV,EAAwB;AACtB;AACD;;AAEDnC,EAAAA,IAAI,CAAC+C,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,IAAAA,SAAS,EAAE,CAACH,eAAD,CADsB;AAEjCI,IAAAA,WAAW,EAAE,CAAC;AAACX,MAAAA,KAAK,EAAEY;AAAR,KAAD,KAAwBZ,KAAK,CAACjB,EAAN,KAAa6B,SAAS,CAAC7B,EAF3B;AAGjC8B,IAAAA,WAAW,EAAE;AAHoB,GAAnC;AAKD;;AAED,SAASvB,YAAT,CAAsB9B,GAAtB,EAA2B;AACzB,QAAM;AAACsD,IAAAA,GAAD;AAAMC,IAAAA;AAAN,MAAavD,GAAG,CAACwD,SAAJ,EAAnB;AACA,SAAO;AACLC,IAAAA,SAAS,EAAEH,GADN;AAELI,IAAAA,QAAQ,EAAEH,GAFL;AAGLI,IAAAA,IAAI,EAAE3D,GAAG,CAAC4D,OAAJ,EAHD;AAILC,IAAAA,OAAO,EAAE7D,GAAG,CAAC8D,UAAJ,EAJJ;AAKLC,IAAAA,KAAK,EAAE/D,GAAG,CAACgE,QAAJ;AALF,GAAP;AAOD;;AAED,SAAS5B,gBAAT,CAA0BpC,GAA1B,EAA+B;AAE7B,MAAIiE,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAG,CAAZ;;AACA,MAAIlE,GAAG,CAACmE,OAAR,EAAiB;AACf,KAACF,KAAD,EAAQC,KAAR,IAAiBlE,GAAG,CAACmE,OAAJ,CAAYC,KAAZ,CAAkB,GAAlB,EAAuBC,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,EAAmCrE,GAAnC,CAAuCsE,MAAvC,CAAjB;AACD;;AACD,SAAO;AAACL,IAAAA,KAAD;AAAQC,IAAAA;AAAR,GAAP;AACD;;AAED,SAASlB,WAAT,CAAqB9C,IAArB,EAA2BF,GAA3B,EAAgCuE,mBAAmB,GAAG,IAAtD,EAA4D;AAC1D,QAAM;AAACpC,IAAAA;AAAD,MAAkBjC,IAAI,CAACG,KAAL,CAAWa,QAAnC;AAEA,SAAO,IAAIrB,mBAAJ,CACL2B,MAAM,CAACC,MAAP,CACE;AACEF,IAAAA,EAAE,EAAE,QADN;AAEEiD,IAAAA,CAAC,EAAE,CAFL;AAGEC,IAAAA,CAAC,EAAE,CAHL;AAIE/C,IAAAA,KAAK,EAAExB,IAAI,CAACwB,KAJd;AAKEC,IAAAA,MAAM,EAAEzB,IAAI,CAACyB,MALf;AAME+C,IAAAA,MAAM,EAAE1E,GAAG,CAAC2E,oBAAJ;AANV,GADF,EASE7C,YAAY,CAAC9B,GAAD,CATd,EAUEuE,mBAAmB,GACf;AAIEK,IAAAA,eAAe,EACZzC,aAAa,CAAC8B,KAAd,KAAwB,CAAxB,IAA6B9B,aAAa,CAAC+B,KAAd,IAAuB,CAArD,IAA2D/B,aAAa,CAAC8B,KAAd,IAAuB,CAAlF,GACI,IADJ,GAEI,KAAK/D,IAAI,CAACyB,MAAL,IAAe,CAApB;AAPR,GADe,GAUf;AAEEiD,IAAAA,eAAe,EAAE;AAFnB,GApBN,CADK,CAAP;AA2BD;;AAED,SAAStC,WAAT,CAAqBpC,IAArB,EAA2BF,GAA3B,EAAgC;AAC9B,QAAM;AAACoB,IAAAA,YAAD;AAAeD,IAAAA;AAAf,MAA6BjB,IAAI,CAACG,KAAL,CAAWa,QAA9C;;AAEA,MAAIC,UAAJ,EAAgB;AAEd,UAAM0D,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAW3D,YAAX,EAAyBoB,KAAK,IAAIA,KAAK,CAACjB,EAAxC,CAAvB;AACA,UAAMyD,kBAAkB,GAAG9E,IAAI,CAACG,KAAL,CAAW4E,MAAX,CAAkBC,IAAlB,CAAuB1C,KAAK,IAAI,CAACqC,cAAc,CAACM,QAAf,CAAwB3C,KAAK,CAACjB,EAA9B,CAAjC,CAA3B;AACA,QAAI2B,SAAS,GAAGhD,IAAI,CAACkF,YAAL,EAAhB;AACA,UAAMC,iBAAiB,GAAGnC,SAAS,CAACoC,SAAV,CAAoBC,EAAE,IAAIA,EAAE,CAAChE,EAAH,KAAU,QAApC,CAA1B;AACA,UAAMiE,iBAAiB,GAAGtC,SAAS,CAACuC,MAAV,GAAmB,CAAnB,IAAwBJ,iBAAiB,GAAG,CAAtE;;AAEA,QAAIL,kBAAkB,IAAIQ,iBAA1B,EAA6C;AAC3C,UAAIH,iBAAiB,IAAI,CAAzB,EAA4B;AAC1BnC,QAAAA,SAAS,GAAGA,SAAS,CAACmB,KAAV,EAAZ;AACAnB,QAAAA,SAAS,CAACmC,iBAAD,CAAT,GAA+BrC,WAAW,CAAC9C,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAA1C;AACD;;AAEDE,MAAAA,IAAI,CAAC+C,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SADiC;AAEjCC,QAAAA,WAAW,EAAEuC,MAAM,IACjB,CAAC,CAACxF,IAAI,CAACG,KAAL,CAAW8C,WAAZ,IAA2BjD,IAAI,CAACG,KAAL,CAAW8C,WAAX,CAAuBuC,MAAvB,CAA5B,MACCA,MAAM,CAACC,QAAP,CAAgBpE,EAAhB,KAAuB,QAAvB,IAAmC,CAACsD,cAAc,CAACM,QAAf,CAAwBO,MAAM,CAAClD,KAAP,CAAajB,EAArC,CADrC,CAH+B;AAKjC8B,QAAAA,WAAW,EAAE;AALoB,OAAnC;AAOD;AACF;;AAGDnD,EAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoB6B,eAApB,GAAsC,IAAtC;AACD;;AAED,SAASf,SAAT,CAAmB9B,IAAnB,EAAyBF,GAAzB,EAA8B;AAC5BE,EAAAA,IAAI,CAAC+B,QAAL,CAAc;AACZJ,IAAAA,SAAS,EAAEC,YAAY,CAAC9B,GAAD;AADX,GAAd;AAMAE,EAAAA,IAAI,CAAC0F,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAASnD,YAAT,CAAsBxC,IAAtB,EAA4B;AAC1B,MAAIA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBC,UAAxB,EAAoC;AAClC;AACD;;AAED,QAAM8D,MAAM,GAAG,EAAf;AACA,MAAIa,UAAU,GAAG,CAAjB;AACA5F,EAAAA,IAAI,CAACG,KAAL,CAAWa,QAAX,CAAoBE,YAApB,CAAiC2E,OAAjC,CAAyC3C,SAAS,IAAI;AACpD,UAAM4C,SAAS,GAAG5C,SAAS,CAAC/C,KAAV,CAAgB4F,IAAlC;AACA,UAAMzD,KAAK,GAAG,IAAIwD,SAAJ,CAAc5C,SAAS,CAAC/C,KAAxB,EAA+B;AAAC6F,MAAAA,OAAO,EAAEJ,UAAU;AAApB,KAA/B,CAAd;AACAb,IAAAA,MAAM,CAACkB,IAAP,CAAY3D,KAAZ;AACD,GAJD;AAKAtC,EAAAA,IAAI,CAAC+B,QAAL,CAAc;AAACgD,IAAAA;AAAD,GAAd;AACD","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\nfunction 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 };\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 repeat: map.getRenderWorldCopies()\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.js"],"names":["Deck","WebMercatorViewport","MapView","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","triggerRepaint","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","userData","isExternal","mapboxLayers","Set","views","id","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","setProps","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","repeat","getRenderWorldCopies","major","minor","version","split","slice","Number","useMapboxProjection","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"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["default","MapboxLayer"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,WAAnB,QAAqC,gBAArC","sourcesContent":["export {default as MapboxLayer} from './mapbox-layer';\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["default","MapboxLayer","MapboxOverlay"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,WAAnB,QAAqC,gBAArC;AACA,SAAQD,OAAO,IAAIE,aAAnB,QAAuC,kBAAvC","sourcesContent":["export {default as MapboxLayer} from './mapbox-layer';\nexport {default as MapboxOverlay} from './mapbox-overlay';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { Deck } from '@deck.gl/core';
|
|
3
|
+
import { getViewState } from './deck-utils';
|
|
4
|
+
export default class MapboxOverlay {
|
|
5
|
+
constructor(props) {
|
|
6
|
+
_defineProperty(this, "_props", void 0);
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "_deck", void 0);
|
|
9
|
+
|
|
10
|
+
_defineProperty(this, "_map", void 0);
|
|
11
|
+
|
|
12
|
+
_defineProperty(this, "_container", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "_updateContainerSize", () => {
|
|
15
|
+
if (this._map && this._container) {
|
|
16
|
+
const {
|
|
17
|
+
clientWidth,
|
|
18
|
+
clientHeight
|
|
19
|
+
} = this._map.getContainer();
|
|
20
|
+
|
|
21
|
+
Object.assign(this._container.style, {
|
|
22
|
+
width: "".concat(clientWidth, "px"),
|
|
23
|
+
height: "".concat(clientHeight, "px")
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
_defineProperty(this, "_updateViewState", () => {
|
|
29
|
+
const deck = this._deck;
|
|
30
|
+
|
|
31
|
+
if (deck) {
|
|
32
|
+
deck.setProps({
|
|
33
|
+
viewState: getViewState(this._map)
|
|
34
|
+
});
|
|
35
|
+
deck.redraw(false);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
_defineProperty(this, "_handleMouseEvent", event => {
|
|
40
|
+
const deck = this._deck;
|
|
41
|
+
|
|
42
|
+
if (!deck) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const mockEvent = {
|
|
47
|
+
type: event.type,
|
|
48
|
+
offsetCenter: event.point,
|
|
49
|
+
srcEvent: event
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
switch (event.type) {
|
|
53
|
+
case 'click':
|
|
54
|
+
deck._lastPointerDownInfo = deck.pickObject({ ...mockEvent.offsetCenter,
|
|
55
|
+
radius: deck.props.pickingRadius
|
|
56
|
+
});
|
|
57
|
+
mockEvent.tapCount = 1;
|
|
58
|
+
|
|
59
|
+
deck._onEvent(mockEvent);
|
|
60
|
+
|
|
61
|
+
break;
|
|
62
|
+
|
|
63
|
+
case 'dblclick':
|
|
64
|
+
mockEvent.type = 'click';
|
|
65
|
+
mockEvent.tapCount = 2;
|
|
66
|
+
|
|
67
|
+
deck._onEvent(mockEvent);
|
|
68
|
+
|
|
69
|
+
break;
|
|
70
|
+
|
|
71
|
+
case 'mousemove':
|
|
72
|
+
mockEvent.type = 'pointermove';
|
|
73
|
+
|
|
74
|
+
deck._onPointerMove(mockEvent);
|
|
75
|
+
|
|
76
|
+
break;
|
|
77
|
+
|
|
78
|
+
case 'mouseout':
|
|
79
|
+
mockEvent.type = 'pointerleave';
|
|
80
|
+
|
|
81
|
+
deck._onPointerMove(mockEvent);
|
|
82
|
+
|
|
83
|
+
break;
|
|
84
|
+
|
|
85
|
+
default:
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
this._props = { ...props
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setProps(props) {
|
|
95
|
+
Object.assign(this._props, props);
|
|
96
|
+
|
|
97
|
+
if ('viewState' in this._props) {
|
|
98
|
+
delete this._props.viewState;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (this._deck) {
|
|
102
|
+
this._deck.setProps(this._props);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
onAdd(map) {
|
|
107
|
+
this._map = map;
|
|
108
|
+
const container = document.createElement('div');
|
|
109
|
+
Object.assign(container.style, {
|
|
110
|
+
position: 'absolute',
|
|
111
|
+
left: 0,
|
|
112
|
+
top: 0,
|
|
113
|
+
pointerEvents: 'none'
|
|
114
|
+
});
|
|
115
|
+
this._container = container;
|
|
116
|
+
this._deck = new Deck({ ...this._props,
|
|
117
|
+
parent: container,
|
|
118
|
+
viewState: getViewState(map)
|
|
119
|
+
});
|
|
120
|
+
map.on('resize', this._updateContainerSize);
|
|
121
|
+
map.on('render', this._updateViewState);
|
|
122
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
123
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
124
|
+
map.on('click', this._handleMouseEvent);
|
|
125
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
126
|
+
|
|
127
|
+
this._updateContainerSize();
|
|
128
|
+
|
|
129
|
+
return container;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
onRemove() {
|
|
133
|
+
var _this$_deck;
|
|
134
|
+
|
|
135
|
+
const map = this._map;
|
|
136
|
+
|
|
137
|
+
if (map) {
|
|
138
|
+
map.off('resize', this._updateContainerSize);
|
|
139
|
+
map.off('render', this._updateViewState);
|
|
140
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
141
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
142
|
+
map.off('click', this._handleMouseEvent);
|
|
143
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
(_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
|
|
147
|
+
this._map = undefined;
|
|
148
|
+
this._container = undefined;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
getDefaultPosition() {
|
|
152
|
+
return 'top-left';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
pickObject(params) {
|
|
156
|
+
return this._deck && this._deck.pickObject(params);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
pickMultipleObjects(params) {
|
|
160
|
+
return this._deck && this._deck.pickMultipleObjects(params);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
pickObjects(params) {
|
|
164
|
+
return this._deck && this._deck.pickObjects(params);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
finalize() {
|
|
168
|
+
if (this._map) {
|
|
169
|
+
this._map.removeControl(this);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=mapbox-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["Deck","getViewState","MapboxOverlay","constructor","props","_map","_container","clientWidth","clientHeight","getContainer","Object","assign","style","width","height","deck","_deck","setProps","viewState","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","_lastPointerDownInfo","pickObject","radius","pickingRadius","tapCount","_onEvent","_onPointerMove","_props","onAdd","map","container","document","createElement","position","left","top","pointerEvents","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","onRemove","off","finalize","undefined","getDefaultPosition","params","pickMultipleObjects","pickObjects","removeControl"],"mappings":"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","sourcesContent":["import {Deck} from '@deck.gl/core';\nimport {getViewState} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\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: any;\n private _deck: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n\n constructor(props) {\n this._props = {...props};\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: any): void {\n Object.assign(this._props, props);\n\n if ('viewState' in this._props) {\n delete this._props.viewState;\n }\n\n if (this._deck) {\n this._deck.setProps(this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map) {\n this._map = map;\n\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 /** Called when the control is removed from a map */\n onRemove() {\n const map = this._map;\n\n if (map) {\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 this._deck?.finalize();\n this._map = undefined;\n this._container = undefined;\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params) {\n return this._deck && this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(params) {\n return this._deck && this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params) {\n return this._deck && 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 _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 _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n deck.redraw(false);\n }\n };\n\n _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 // Hack: because we do not listen to pointer down, perform picking now\n deck._lastPointerDownInfo = deck.pickObject({\n ...mockEvent.offsetCenter,\n radius: deck.props.pickingRadius\n });\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
package/dist.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("deck")):"function"==typeof define&&define.amd?define(["deck"],t):"object"==typeof exports?exports.deck=t(require("deck")):e.deck=t(e.deck)}(window,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=5)}([function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(t,n){t.exports=e},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,n){var r=n(6),i=n(7),o=n(8);e.exports=function(e,t){return r(e)||i(e,t)||o()}},function(e,t,n){var r=n(9),i=globalThis.deck||{};if(!i.Layer)throw new Error("@deck.gl/core is not found");e.exports=Object.assign(i,r)},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t,n){"use strict";n.r(t);var r=n(2),i=n.n(r),o=n(3),a=n.n(o),s=n(4),u=n.n(s),c=n(1);function p(e){var t=e.map,n=e.gl,r=e.deck;if(t.__deck)return t.__deck;var i=r&&r.props._customRender,o={useDevicePixels:!0,_customRender:function(){t.triggerRepaint(),i&&i()},parameters:{depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},userData:{isExternal:!1,mapboxLayers:new Set},views:r&&r.props.views||[new c.MapView({id:"mapbox"})]};return r&&r.props.gl!==n||(Object.assign(o,{gl:n,width:!1,height:!1,touchAction:"unset",viewState:l(t)}),t.on("move",(function(){return function(e,t){e.setProps({viewState:l(t)}),e.needsRedraw({clearRedrawFlags:!0})}(r,t)}))),r?(r.setProps(o),r.props.userData.isExternal=!0):(r=new c.Deck(o),t.on("remove",(function(){r.finalize(),t.__deck=null}))),r.props.userData.mapboxVersion=function(e){var t=0,n=0;if(e.version){var r=e.version.split(".").slice(0,2).map(Number),i=u()(r,2);t=i[0],n=i[1]}return{major:t,minor:n}}(t),t.__deck=r,t.on("render",(function(){r.layerManager&&function(e,t){var n=e.props.userData,r=n.mapboxLayers;if(n.isExternal){var i=Array.from(r,(function(e){return e.id})),o=e.props.layers.some((function(e){return!i.includes(e.id)})),a=e.getViewports(),s=a.findIndex((function(e){return"mapbox"===e.id})),u=a.length>1||s<0;(o||u)&&(s>=0&&((a=a.slice())[s]=d(e,t,!1)),e._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(t){return(!e.props.layerFilter||e.props.layerFilter(t))&&("mapbox"!==t.viewport.id||!i.includes(t.layer.id))},clearCanvas:!1}))}e.props.userData.currentViewport=null}(r,t)})),r}function l(e){var t=e.getCenter();return{longitude:t.lng,latitude:t.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch(),repeat:e.getRenderWorldCopies()}}function d(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=e.props.userData.mapboxVersion;return new c.WebMercatorViewport(Object.assign({id:"mapbox",x:0,y:0,width:e.width,height:e.height},l(t),n?{nearZMultiplier:1===r.major&&r.minor>=3||r.major>=2?.02:1/(e.height||1)}:{nearZMultiplier:.1}))}function f(e){if(!e.props.userData.isExternal){var t=[],n=0;e.props.userData.mapboxLayers.forEach((function(e){var r=new(0,e.props.type)(e.props,{_offset:n++});t.push(r)})),e.setProps({layers:t})}}var h=function(){function e(t){if(i()(this,e),!t.id)throw new Error("Layer must have an unique id");this.id=t.id,this.type="custom",this.renderingMode=t.renderingMode||"3d",this.map=null,this.deck=null,this.props=t}return a()(e,[{key:"onAdd",value:function(e,t){var n,r;this.map=e,this.deck=p({map:e,gl:t,deck:this.props.deck}),n=this.deck,r=this,n.props.userData.mapboxLayers.add(r),f(n)}},{key:"onRemove",value:function(){var e,t;e=this.deck,t=this,e.props.userData.mapboxLayers.delete(t),f(e)}},{key:"setProps",value:function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&f(this.deck)}},{key:"render",value:function(e,t){var n,r,i,o;n=this.deck,r=this.map,i=this,(o=n.props.userData.currentViewport)||(o=d(n,r,!0),n.props.userData.currentViewport=o),n.layerManager&&n._drawLayers("mapbox-repaint",{viewports:[o],layerFilter:function(e){var t=e.layer;return i.id===t.id},clearCanvas:!1})}}]),e}(),v=n(0),b=n.n(v);function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var _=function(){function e(t){var n=this;i()(this,e),b()(this,"_props",void 0),b()(this,"_deck",void 0),b()(this,"_map",void 0),b()(this,"_container",void 0),b()(this,"_updateContainerSize",(function(){if(n._map&&n._container){var e=n._map.getContainer(),t=e.clientWidth,r=e.clientHeight;Object.assign(n._container.style,{width:"".concat(t,"px"),height:"".concat(r,"px")})}})),b()(this,"_updateViewState",(function(){var e=n._deck;e&&(e.setProps({viewState:l(n._map)}),e.redraw(!1))})),b()(this,"_handleMouseEvent",(function(e){var t=n._deck;if(t){var r={type:e.type,offsetCenter:e.point,srcEvent:e};switch(e.type){case"click":t._lastPointerDownInfo=t.pickObject(m(m({},r.offsetCenter),{},{radius:t.props.pickingRadius})),r.tapCount=1,t._onEvent(r);break;case"dblclick":r.type="click",r.tapCount=2,t._onEvent(r);break;case"mousemove":r.type="pointermove",t._onPointerMove(r);break;case"mouseout":r.type="pointerleave",t._onPointerMove(r);break;default:return}}})),this._props=m({},t)}return a()(e,[{key:"setProps",value:function(e){Object.assign(this._props,e),"viewState"in this._props&&delete this._props.viewState,this._deck&&this._deck.setProps(this._props)}},{key:"onAdd",value:function(e){this._map=e;var t=document.createElement("div");return Object.assign(t.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=t,this._deck=new c.Deck(m(m({},this._props),{},{parent:t,viewState:l(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),t}},{key:"onRemove",value:function(){var e,t=this._map;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)),null===(e=this._deck)||void 0===e||e.finalize(),this._map=void 0,this._container=void 0}},{key:"getDefaultPosition",value:function(){return"top-left"}},{key:"pickObject",value:function(e){return this._deck&&this._deck.pickObject(e)}},{key:"pickMultipleObjects",value:function(e){return this._deck&&this._deck.pickMultipleObjects(e)}},{key:"pickObjects",value:function(e){return this._deck&&this._deck.pickObjects(e)}},{key:"finalize",value:function(){this._map&&this._map.removeControl(this)}}]),e}();n.d(t,"MapboxLayer",(function(){return h})),n.d(t,"MapboxOverlay",(function(){return _}))}])}));
|
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.
|
|
5
|
+
"version": "8.8.0-alpha.2",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -28,8 +28,11 @@
|
|
|
28
28
|
"build-bundle": "webpack --config ../../scripts/bundle.config.js",
|
|
29
29
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env.dev"
|
|
30
30
|
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@types/mapbox-gl": "^2.6.3"
|
|
33
|
+
},
|
|
31
34
|
"peerDependencies": {
|
|
32
35
|
"@deck.gl/core": "^8.0.0"
|
|
33
36
|
},
|
|
34
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "a52215449dff06fb683f5afd6399526353d11f35"
|
|
35
38
|
}
|
package/src/deck-utils.js
CHANGED
|
@@ -103,14 +103,15 @@ export function drawLayer(deck, map, layer) {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
function getViewState(map) {
|
|
106
|
+
export function getViewState(map) {
|
|
107
107
|
const {lng, lat} = map.getCenter();
|
|
108
108
|
return {
|
|
109
109
|
longitude: lng,
|
|
110
110
|
latitude: lat,
|
|
111
111
|
zoom: map.getZoom(),
|
|
112
112
|
bearing: map.getBearing(),
|
|
113
|
-
pitch: map.getPitch()
|
|
113
|
+
pitch: map.getPitch(),
|
|
114
|
+
repeat: map.getRenderWorldCopies()
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
|
|
@@ -134,8 +135,7 @@ function getViewport(deck, map, useMapboxProjection = true) {
|
|
|
134
135
|
x: 0,
|
|
135
136
|
y: 0,
|
|
136
137
|
width: deck.width,
|
|
137
|
-
height: deck.height
|
|
138
|
-
repeat: map.getRenderWorldCopies()
|
|
138
|
+
height: deck.height
|
|
139
139
|
},
|
|
140
140
|
getViewState(map),
|
|
141
141
|
useMapboxProjection
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {Deck} from '@deck.gl/core';
|
|
2
|
+
import {getViewState} from './deck-utils';
|
|
3
|
+
|
|
4
|
+
import type {Map, IControl, MapMouseEvent} from 'mapbox-gl';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface
|
|
8
|
+
* Renders deck.gl layers over the base map and automatically synchronizes with the map's camera
|
|
9
|
+
*/
|
|
10
|
+
export default class MapboxOverlay implements IControl {
|
|
11
|
+
private _props: any;
|
|
12
|
+
private _deck: Deck;
|
|
13
|
+
private _map?: Map;
|
|
14
|
+
private _container?: HTMLDivElement;
|
|
15
|
+
|
|
16
|
+
constructor(props) {
|
|
17
|
+
this._props = {...props};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Update (partial) props of the underlying Deck instance. */
|
|
21
|
+
setProps(props: any): void {
|
|
22
|
+
Object.assign(this._props, props);
|
|
23
|
+
|
|
24
|
+
if ('viewState' in this._props) {
|
|
25
|
+
delete this._props.viewState;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (this._deck) {
|
|
29
|
+
this._deck.setProps(this._props);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Called when the control is added to a map */
|
|
34
|
+
onAdd(map: Map) {
|
|
35
|
+
this._map = map;
|
|
36
|
+
|
|
37
|
+
/* global document */
|
|
38
|
+
const container = document.createElement('div');
|
|
39
|
+
Object.assign(container.style, {
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
left: 0,
|
|
42
|
+
top: 0,
|
|
43
|
+
pointerEvents: 'none'
|
|
44
|
+
});
|
|
45
|
+
this._container = container;
|
|
46
|
+
|
|
47
|
+
this._deck = new Deck({
|
|
48
|
+
...this._props,
|
|
49
|
+
parent: container,
|
|
50
|
+
viewState: getViewState(map)
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
map.on('resize', this._updateContainerSize);
|
|
54
|
+
map.on('render', this._updateViewState);
|
|
55
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
56
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
57
|
+
map.on('click', this._handleMouseEvent);
|
|
58
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
59
|
+
|
|
60
|
+
this._updateContainerSize();
|
|
61
|
+
return container;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Called when the control is removed from a map */
|
|
65
|
+
onRemove() {
|
|
66
|
+
const map = this._map;
|
|
67
|
+
|
|
68
|
+
if (map) {
|
|
69
|
+
map.off('resize', this._updateContainerSize);
|
|
70
|
+
map.off('render', this._updateViewState);
|
|
71
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
72
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
73
|
+
map.off('click', this._handleMouseEvent);
|
|
74
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
this._deck?.finalize();
|
|
78
|
+
this._map = undefined;
|
|
79
|
+
this._container = undefined;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getDefaultPosition() {
|
|
83
|
+
return 'top-left';
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Forwards the Deck.pickObject method */
|
|
87
|
+
pickObject(params) {
|
|
88
|
+
return this._deck && this._deck.pickObject(params);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Forwards the Deck.pickMultipleObjects method */
|
|
92
|
+
pickMultipleObjects(params) {
|
|
93
|
+
return this._deck && this._deck.pickMultipleObjects(params);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Forwards the Deck.pickObjects method */
|
|
97
|
+
pickObjects(params) {
|
|
98
|
+
return this._deck && this._deck.pickObjects(params);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Remove from map and releases all resources */
|
|
102
|
+
finalize() {
|
|
103
|
+
if (this._map) {
|
|
104
|
+
this._map.removeControl(this);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
_updateContainerSize = () => {
|
|
109
|
+
if (this._map && this._container) {
|
|
110
|
+
const {clientWidth, clientHeight} = this._map.getContainer();
|
|
111
|
+
Object.assign(this._container.style, {
|
|
112
|
+
width: `${clientWidth}px`,
|
|
113
|
+
height: `${clientHeight}px`
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
_updateViewState = () => {
|
|
119
|
+
const deck = this._deck;
|
|
120
|
+
if (deck) {
|
|
121
|
+
deck.setProps({viewState: getViewState(this._map)});
|
|
122
|
+
// Redraw immediately if view state has changed
|
|
123
|
+
deck.redraw(false);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
_handleMouseEvent = (event: MapMouseEvent) => {
|
|
128
|
+
const deck = this._deck;
|
|
129
|
+
if (!deck) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const mockEvent: {
|
|
134
|
+
type: string;
|
|
135
|
+
offsetCenter: {x: number; y: number};
|
|
136
|
+
srcEvent: MapMouseEvent;
|
|
137
|
+
tapCount?: number;
|
|
138
|
+
} = {
|
|
139
|
+
type: event.type,
|
|
140
|
+
offsetCenter: event.point,
|
|
141
|
+
srcEvent: event
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
switch (event.type) {
|
|
145
|
+
case 'click':
|
|
146
|
+
// Hack: because we do not listen to pointer down, perform picking now
|
|
147
|
+
deck._lastPointerDownInfo = deck.pickObject({
|
|
148
|
+
...mockEvent.offsetCenter,
|
|
149
|
+
radius: deck.props.pickingRadius
|
|
150
|
+
});
|
|
151
|
+
mockEvent.tapCount = 1;
|
|
152
|
+
deck._onEvent(mockEvent);
|
|
153
|
+
break;
|
|
154
|
+
|
|
155
|
+
case 'dblclick':
|
|
156
|
+
mockEvent.type = 'click';
|
|
157
|
+
mockEvent.tapCount = 2;
|
|
158
|
+
deck._onEvent(mockEvent);
|
|
159
|
+
break;
|
|
160
|
+
|
|
161
|
+
case 'mousemove':
|
|
162
|
+
mockEvent.type = 'pointermove';
|
|
163
|
+
deck._onPointerMove(mockEvent);
|
|
164
|
+
break;
|
|
165
|
+
|
|
166
|
+
case 'mouseout':
|
|
167
|
+
mockEvent.type = 'pointerleave';
|
|
168
|
+
deck._onPointerMove(mockEvent);
|
|
169
|
+
break;
|
|
170
|
+
|
|
171
|
+
default:
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
}
|