@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 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" ***!
@@ -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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export {default as MapboxLayer} from './mapbox-layer';\n"],"file":"index.js"}
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"}
@@ -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":"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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":["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
@@ -1,2 +1,3 @@
1
1
  export { default as MapboxLayer } from './mapbox-layer';
2
+ export { default as MapboxOverlay } from './mapbox-overlay';
2
3
  //# sourceMappingURL=index.js.map
@@ -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,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("deck")):"function"==typeof define&&define.amd?define(["deck"],r):"object"==typeof exports?exports.deck=r(require("deck")):e.deck=r(e.deck)}(window,(function(e){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=4)}([function(r,t){r.exports=e},function(e,r){e.exports=function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}},function(e,r){function t(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}},function(e,r,t){var n=t(5),o=t(6),i=t(7);e.exports=function(e,r){return n(e)||o(e,r)||i()}},function(e,r,t){var n=t(8),o=globalThis.deck||{};if(!o.Layer)throw new Error("@deck.gl/core is not found");e.exports=Object.assign(o,n)},function(e,r){e.exports=function(e){if(Array.isArray(e))return e}},function(e,r){e.exports=function(e,r){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var t=[],n=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(n=(a=u.next()).done)&&(t.push(a.value),!r||t.length!==r);n=!0);}catch(e){o=!0,i=e}finally{try{n||null==u.return||u.return()}finally{if(o)throw i}}return t}}},function(e,r){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,r,t){"use strict";t.r(r);var n=t(1),o=t.n(n),i=t(2),a=t.n(i),u=t(3),s=t.n(u),p=t(0);function c(e){var r=e.map,t=e.gl,n=e.deck;if(r.__deck)return r.__deck;var o=n&&n.props._customRender,i={useDevicePixels:!0,_customRender:function(){r.triggerRepaint(),o&&o()},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:n&&n.props.views||[new p.MapView({id:"mapbox"})]};return n&&n.props.gl!==t||(Object.assign(i,{gl:t,width:!1,height:!1,touchAction:"unset",viewState:l(r)}),r.on("move",(function(){return function(e,r){e.setProps({viewState:l(r)}),e.needsRedraw({clearRedrawFlags:!0})}(n,r)}))),n?(n.setProps(i),n.props.userData.isExternal=!0):(n=new p.Deck(i),r.on("remove",(function(){n.finalize(),r.__deck=null}))),n.props.userData.mapboxVersion=function(e){var r=0,t=0;if(e.version){var n=e.version.split(".").slice(0,2).map(Number),o=s()(n,2);r=o[0],t=o[1]}return{major:r,minor:t}}(r),r.__deck=n,r.on("render",(function(){n.layerManager&&function(e,r){var t=e.props.userData,n=t.mapboxLayers;if(t.isExternal){var o=Array.from(n,(function(e){return e.id})),i=e.props.layers.some((function(e){return!o.includes(e.id)})),a=e.getViewports(),u=a.findIndex((function(e){return"mapbox"===e.id})),s=a.length>1||u<0;(i||s)&&(u>=0&&((a=a.slice())[u]=d(e,r,!1)),e._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(r){return(!e.props.layerFilter||e.props.layerFilter(r))&&("mapbox"!==r.viewport.id||!o.includes(r.layer.id))},clearCanvas:!1}))}e.props.userData.currentViewport=null}(n,r)})),n}function l(e){var r=e.getCenter();return{longitude:r.lng,latitude:r.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch()}}function d(e,r){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.props.userData.mapboxVersion;return new p.WebMercatorViewport(Object.assign({id:"mapbox",x:0,y:0,width:e.width,height:e.height,repeat:r.getRenderWorldCopies()},l(r),t?{nearZMultiplier:1===n.major&&n.minor>=3||n.major>=2?.02:1/(e.height||1)}:{nearZMultiplier:.1}))}function f(e){if(!e.props.userData.isExternal){var r=[],t=0;e.props.userData.mapboxLayers.forEach((function(e){var n=new(0,e.props.type)(e.props,{_offset:t++});r.push(n)})),e.setProps({layers:r})}}var y=function(){function e(r){if(o()(this,e),!r.id)throw new Error("Layer must have an unique id");this.id=r.id,this.type="custom",this.renderingMode=r.renderingMode||"3d",this.map=null,this.deck=null,this.props=r}return a()(e,[{key:"onAdd",value:function(e,r){var t,n;this.map=e,this.deck=c({map:e,gl:r,deck:this.props.deck}),t=this.deck,n=this,t.props.userData.mapboxLayers.add(n),f(t)}},{key:"onRemove",value:function(){var e,r;e=this.deck,r=this,e.props.userData.mapboxLayers.delete(r),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,r){var t,n,o,i;t=this.deck,n=this.map,o=this,(i=t.props.userData.currentViewport)||(i=d(t,n,!0),t.props.userData.currentViewport=i),t.layerManager&&t._drawLayers("mapbox-repaint",{viewports:[i],layerFilter:function(e){var r=e.layer;return o.id===r.id},clearCanvas:!1})}}]),e}();t.d(r,"MapboxLayer",(function(){return y}))}])}));
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.7.9",
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": "c060732d18d0dcf68b277da889a79bc428aca347"
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
@@ -1 +1,2 @@
1
1
  export {default as MapboxLayer} from './mapbox-layer';
2
+ export {default as MapboxOverlay} from './mapbox-overlay';
@@ -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
+ }