@deck.gl/mapbox 8.6.0-alpha.3 → 8.6.1

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
@@ -227,8 +227,7 @@ function drawLayer(deck, map, layer) {
227
227
  }
228
228
  deck._drawLayers('mapbox-repaint', {
229
229
  viewports: [currentViewport],
230
- // TODO - accept layerFilter in drawLayers' renderOptions
231
- layers: getLayers(deck, deckLayer => shouldDrawLayer(layer.id, deckLayer)),
230
+ layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,
232
231
  clearCanvas: false
233
232
  });
234
233
  }
@@ -294,18 +293,11 @@ function afterRender(deck, map) {
294
293
  if (isExternal) {
295
294
  // Draw non-Mapbox layers
296
295
  const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
297
- const layers = getLayers(deck, deckLayer => {
298
- for (const id of mapboxLayerIds) {
299
- if (shouldDrawLayer(id, deckLayer)) {
300
- return false;
301
- }
302
- }
303
- return true;
304
- });
305
- if (layers.length > 0) {
296
+ const hasNonMapboxLayers = deck.props.layers.some(layer => !mapboxLayerIds.includes(layer.id));
297
+ if (hasNonMapboxLayers) {
306
298
  deck._drawLayers('mapbox-repaint', {
307
299
  viewports: [getViewport(deck, map, false)],
308
- layers,
300
+ layerFilter: ({layer}) => !mapboxLayerIds.includes(layer.id),
309
301
  clearCanvas: false
310
302
  });
311
303
  }
@@ -325,22 +317,6 @@ function onMapMove(deck, map) {
325
317
  deck.needsRedraw({clearRedrawFlags: true});
326
318
  }
327
319
 
328
- function getLayers(deck, layerFilter) {
329
- const layers = deck.layerManager.getLayers();
330
- return layers.filter(layerFilter);
331
- }
332
-
333
- function shouldDrawLayer(id, layer) {
334
- let layerInstance = layer;
335
- while (layerInstance) {
336
- if (layerInstance.id === id) {
337
- return true;
338
- }
339
- layerInstance = layerInstance.parent;
340
- }
341
- return false;
342
- }
343
-
344
320
  function updateLayers(deck) {
345
321
  if (deck.props.userData.isExternal) {
346
322
  return;
@@ -15,12 +15,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
15
15
 
16
16
  var _core = require("@deck.gl/core");
17
17
 
18
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
19
-
20
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
-
22
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
-
24
18
  function getDeckInstance(_ref) {
25
19
  var map = _ref.map,
26
20
  gl = _ref.gl,
@@ -109,9 +103,10 @@ function drawLayer(deck, map, layer) {
109
103
 
110
104
  deck._drawLayers('mapbox-repaint', {
111
105
  viewports: [currentViewport],
112
- layers: getLayers(deck, function (deckLayer) {
113
- return shouldDrawLayer(layer.id, deckLayer);
114
- }),
106
+ layerFilter: function layerFilter(_ref2) {
107
+ var deckLayer = _ref2.layer;
108
+ return layer.id === deckLayer.id;
109
+ },
115
110
  clearCanvas: false
116
111
  });
117
112
  }
@@ -174,31 +169,17 @@ function afterRender(deck, map) {
174
169
  var mapboxLayerIds = Array.from(mapboxLayers, function (layer) {
175
170
  return layer.id;
176
171
  });
177
- var layers = getLayers(deck, function (deckLayer) {
178
- var _iterator = _createForOfIteratorHelper(mapboxLayerIds),
179
- _step;
180
-
181
- try {
182
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
183
- var id = _step.value;
184
-
185
- if (shouldDrawLayer(id, deckLayer)) {
186
- return false;
187
- }
188
- }
189
- } catch (err) {
190
- _iterator.e(err);
191
- } finally {
192
- _iterator.f();
193
- }
194
-
195
- return true;
172
+ var hasNonMapboxLayers = deck.props.layers.some(function (layer) {
173
+ return !mapboxLayerIds.includes(layer.id);
196
174
  });
197
175
 
198
- if (layers.length > 0) {
176
+ if (hasNonMapboxLayers) {
199
177
  deck._drawLayers('mapbox-repaint', {
200
178
  viewports: [getViewport(deck, map, false)],
201
- layers: layers,
179
+ layerFilter: function layerFilter(_ref3) {
180
+ var layer = _ref3.layer;
181
+ return !mapboxLayerIds.includes(layer.id);
182
+ },
202
183
  clearCanvas: false
203
184
  });
204
185
  }
@@ -216,25 +197,6 @@ function onMapMove(deck, map) {
216
197
  });
217
198
  }
218
199
 
219
- function getLayers(deck, layerFilter) {
220
- var layers = deck.layerManager.getLayers();
221
- return layers.filter(layerFilter);
222
- }
223
-
224
- function shouldDrawLayer(id, layer) {
225
- var layerInstance = layer;
226
-
227
- while (layerInstance) {
228
- if (layerInstance.id === id) {
229
- return true;
230
- }
231
-
232
- layerInstance = layerInstance.parent;
233
- }
234
-
235
- return false;
236
- }
237
-
238
200
  function updateLayers(deck) {
239
201
  if (deck.props.userData.isExternal) {
240
202
  return;
@@ -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","blendFunc","blendEquation","userData","isExternal","mapboxLayers","Set","setProps","Object","assign","width","height","touchAction","viewState","getViewState","Deck","on","onMapMove","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layers","getLayers","deckLayer","shouldDrawLayer","id","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","repeat","nearZMultiplier","mapboxLayerIds","Array","from","length","needsRedraw","clearRedrawFlags","layerFilter","filter","layerInstance","parent","forEach","LayerType","type","push"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;AAEO,SAASA,eAAT,OAA0C;AAAA,MAAhBC,GAAgB,QAAhBA,GAAgB;AAAA,MAAXC,EAAW,QAAXA,EAAW;AAAA,MAAPC,IAAO,QAAPA,IAAO;;AAE/C,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAED,MAAMC,YAAY,GAAGF,IAAI,IAAIA,IAAI,CAACG,KAAL,CAAWC,aAAxC;AAEA,MAAMC,SAAS,GAAG;AAChBC,IAAAA,eAAe,EAAE,IADD;AAEhBF,IAAAA,aAAa,EAAE,yBAAM;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,SAAS,EAAE,kBAHD;AAIVC,MAAAA,aAAa;AAJH,KAXI;AAiBhBC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE,KADJ;AAERC,MAAAA,YAAY,EAAE,IAAIC,GAAJ;AAFN;AAjBM,GAAlB;;AAuBA,MAAIhB,IAAJ,EAAU;AACRA,IAAAA,IAAI,CAACiB,QAAL,CAAcZ,SAAd;AACAL,IAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBC,UAApB,GAAiC,IAAjC;AACD,GAHD,MAGO;AAELI,IAAAA,MAAM,CAACC,MAAP,CAAcd,SAAd,EAAyB;AACvBN,MAAAA,EAAE,EAAFA,EADuB;AAEvBqB,MAAAA,KAAK,EAAE,KAFgB;AAGvBC,MAAAA,MAAM,EAAE,KAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAC1B,GAAD;AALA,KAAzB;AAOAE,IAAAA,IAAI,GAAG,IAAIyB,UAAJ,CAASpB,SAAT,CAAP;AAKAP,IAAAA,GAAG,CAAC4B,EAAJ,CAAO,MAAP,EAAe;AAAA,aAAMC,SAAS,CAAC3B,IAAD,EAAOF,GAAP,CAAf;AAAA,KAAf;AACAA,IAAAA,GAAG,CAAC4B,EAAJ,CAAO,QAAP,EAAiB,YAAM;AACrB1B,MAAAA,IAAI,CAAC4B,QAAL;AACA9B,MAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD,KAHD;AAID;;AACDD,EAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBgB,aAApB,GAAoCC,gBAAgB,CAAChC,GAAD,CAApD;AACAA,EAAAA,GAAG,CAACG,MAAJ,GAAaD,IAAb;AACAF,EAAAA,GAAG,CAAC4B,EAAJ,CAAO,QAAP,EAAiB,YAAM;AACrB,QAAI1B,IAAI,CAAC+B,YAAT,EAAuBC,WAAW,CAAChC,IAAD,EAAOF,GAAP,CAAX;AACxB,GAFD;AAIA,SAAOE,IAAP;AACD;;AAEM,SAASiC,QAAT,CAAkBjC,IAAlB,EAAwBkC,KAAxB,EAA+B;AACpClC,EAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBE,YAApB,CAAiCoB,GAAjC,CAAqCD,KAArC;AACAE,EAAAA,YAAY,CAACpC,IAAD,CAAZ;AACD;;AAEM,SAASqC,WAAT,CAAqBrC,IAArB,EAA2BkC,KAA3B,EAAkC;AACvClC,EAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBE,YAApB,CAAiCuB,MAAjC,CAAwCJ,KAAxC;AACAE,EAAAA,YAAY,CAACpC,IAAD,CAAZ;AACD;;AAEM,SAASuC,WAAT,CAAqBvC,IAArB,EAA2BkC,KAA3B,EAAkC;AACvCE,EAAAA,YAAY,CAACpC,IAAD,CAAZ;AACD;;AAEM,SAASwC,SAAT,CAAmBxC,IAAnB,EAAyBF,GAAzB,EAA8BoC,KAA9B,EAAqC;AAAA,MACrCO,eADqC,GAClBzC,IAAI,CAACG,KAAL,CAAWU,QADO,CACrC4B,eADqC;;AAE1C,MAAI,CAACA,eAAL,EAAsB;AAGpBA,IAAAA,eAAe,GAAGC,WAAW,CAAC1C,IAAD,EAAOF,GAAP,EAAY,IAAZ,CAA7B;AACAE,IAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoB4B,eAApB,GAAsCA,eAAtC;AACD;;AACD,MAAI,CAACzC,IAAI,CAAC+B,YAAV,EAAwB;AACtB;AACD;;AACD/B,EAAAA,IAAI,CAAC2C,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,IAAAA,SAAS,EAAE,CAACH,eAAD,CADsB;AAGjCI,IAAAA,MAAM,EAAEC,SAAS,CAAC9C,IAAD,EAAO,UAAA+C,SAAS;AAAA,aAAIC,eAAe,CAACd,KAAK,CAACe,EAAP,EAAWF,SAAX,CAAnB;AAAA,KAAhB,CAHgB;AAIjCG,IAAAA,WAAW,EAAE;AAJoB,GAAnC;AAMD;;AAED,SAAS1B,YAAT,CAAsB1B,GAAtB,EAA2B;AAAA,uBACNA,GAAG,CAACqD,SAAJ,EADM;AAAA,MAClBC,GADkB,kBAClBA,GADkB;AAAA,MACbC,GADa,kBACbA,GADa;;AAEzB,SAAO;AACLC,IAAAA,SAAS,EAAEF,GADN;AAELG,IAAAA,QAAQ,EAAEF,GAFL;AAGLG,IAAAA,IAAI,EAAE1D,GAAG,CAAC2D,OAAJ,EAHD;AAILC,IAAAA,OAAO,EAAE5D,GAAG,CAAC6D,UAAJ,EAJJ;AAKLC,IAAAA,KAAK,EAAE9D,GAAG,CAAC+D,QAAJ;AALF,GAAP;AAOD;;AAED,SAAS/B,gBAAT,CAA0BhC,GAA1B,EAA+B;AAE7B,MAAIgE,KAAK,GAAG,CAAZ;AACA,MAAIC,KAAK,GAAG,CAAZ;;AACA,MAAIjE,GAAG,CAACkE,OAAR,EAAiB;AAAA,gCACElE,GAAG,CAACkE,OAAJ,CACdC,KADc,CACR,GADQ,EAEdC,KAFc,CAER,CAFQ,EAEL,CAFK,EAGdpE,GAHc,CAGVqE,MAHU,CADF;;AAAA;;AACdL,IAAAA,KADc;AACPC,IAAAA,KADO;AAKhB;;AACD,SAAO;AAACD,IAAAA,KAAK,EAALA,KAAD;AAAQC,IAAAA,KAAK,EAALA;AAAR,GAAP;AACD;;AAED,SAASrB,WAAT,CAAqB1C,IAArB,EAA2BF,GAA3B,EAA4D;AAAA,MAA5BsE,mBAA4B,uEAAN,IAAM;AAAA,MACnDvC,aADmD,GAClC7B,IAAI,CAACG,KAAL,CAAWU,QADuB,CACnDgB,aADmD;AAG1D,SAAO,IAAIwC,yBAAJ,CACLnD,MAAM,CAACC,MAAP,CACE;AACEmD,IAAAA,CAAC,EAAE,CADL;AAEEC,IAAAA,CAAC,EAAE,CAFL;AAGEnD,IAAAA,KAAK,EAAEpB,IAAI,CAACoB,KAHd;AAIEC,IAAAA,MAAM,EAAErB,IAAI,CAACqB,MAJf;AAKEmD,IAAAA,MAAM,EAAE;AALV,GADF,EAQEhD,YAAY,CAAC1B,GAAD,CARd,EASEsE,mBAAmB,GACf;AAIEK,IAAAA,eAAe,EACZ5C,aAAa,CAACiC,KAAd,KAAwB,CAAxB,IAA6BjC,aAAa,CAACkC,KAAd,IAAuB,CAArD,IAA2DlC,aAAa,CAACiC,KAAd,IAAuB,CAAlF,GACI,IADJ,GAEI,KAAK9D,IAAI,CAACqB,MAAL,IAAe,CAApB;AAPR,GADe,GAUf;AAEEoD,IAAAA,eAAe,EAAE;AAFnB,GAnBN,CADK,CAAP;AA0BD;;AAED,SAASzC,WAAT,CAAqBhC,IAArB,EAA2BF,GAA3B,EAAgC;AAAA,6BACKE,IAAI,CAACG,KAAL,CAAWU,QADhB;AAAA,MACvBE,YADuB,wBACvBA,YADuB;AAAA,MACTD,UADS,wBACTA,UADS;;AAG9B,MAAIA,UAAJ,EAAgB;AAEd,QAAM4D,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAW7D,YAAX,EAAyB,UAAAmB,KAAK;AAAA,aAAIA,KAAK,CAACe,EAAV;AAAA,KAA9B,CAAvB;AACA,QAAMJ,MAAM,GAAGC,SAAS,CAAC9C,IAAD,EAAO,UAAA+C,SAAS,EAAI;AAAA,iDACzB2B,cADyB;AAAA;;AAAA;AAC1C,4DAAiC;AAAA,cAAtBzB,EAAsB;;AAC/B,cAAID,eAAe,CAACC,EAAD,EAAKF,SAAL,CAAnB,EAAoC;AAClC,mBAAO,KAAP;AACD;AACF;AALyC;AAAA;AAAA;AAAA;AAAA;;AAM1C,aAAO,IAAP;AACD,KAPuB,CAAxB;;AAQA,QAAIF,MAAM,CAACgC,MAAP,GAAgB,CAApB,EAAuB;AACrB7E,MAAAA,IAAI,CAAC2C,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SAAS,EAAE,CAACF,WAAW,CAAC1C,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAAZ,CADsB;AAEjC+C,QAAAA,MAAM,EAANA,MAFiC;AAGjCK,QAAAA,WAAW,EAAE;AAHoB,OAAnC;AAKD;AACF;;AAGDlD,EAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoB4B,eAApB,GAAsC,IAAtC;AACD;;AAED,SAASd,SAAT,CAAmB3B,IAAnB,EAAyBF,GAAzB,EAA8B;AAC5BE,EAAAA,IAAI,CAACiB,QAAL,CAAc;AACZM,IAAAA,SAAS,EAAEC,YAAY,CAAC1B,GAAD;AADX,GAAd;AAMAE,EAAAA,IAAI,CAAC8E,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAASjC,SAAT,CAAmB9C,IAAnB,EAAyBgF,WAAzB,EAAsC;AACpC,MAAMnC,MAAM,GAAG7C,IAAI,CAAC+B,YAAL,CAAkBe,SAAlB,EAAf;AACA,SAAOD,MAAM,CAACoC,MAAP,CAAcD,WAAd,CAAP;AACD;;AAED,SAAShC,eAAT,CAAyBC,EAAzB,EAA6Bf,KAA7B,EAAoC;AAClC,MAAIgD,aAAa,GAAGhD,KAApB;;AACA,SAAOgD,aAAP,EAAsB;AACpB,QAAIA,aAAa,CAACjC,EAAd,KAAqBA,EAAzB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AACDiC,IAAAA,aAAa,GAAGA,aAAa,CAACC,MAA9B;AACD;;AACD,SAAO,KAAP;AACD;;AAED,SAAS/C,YAAT,CAAsBpC,IAAtB,EAA4B;AAC1B,MAAIA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBC,UAAxB,EAAoC;AAClC;AACD;;AAED,MAAM+B,MAAM,GAAG,EAAf;AACA7C,EAAAA,IAAI,CAACG,KAAL,CAAWU,QAAX,CAAoBE,YAApB,CAAiCqE,OAAjC,CAAyC,UAAArC,SAAS,EAAI;AACpD,QAAMsC,SAAS,GAAGtC,SAAS,CAAC5C,KAAV,CAAgBmF,IAAlC;AACA,QAAMpD,KAAK,GAAG,IAAImD,SAAJ,CAActC,SAAS,CAAC5C,KAAxB,CAAd;AACA0C,IAAAA,MAAM,CAAC0C,IAAP,CAAYrD,KAAZ;AACD,GAJD;AAKAlC,EAAAA,IAAI,CAACiB,QAAL,CAAc;AAAC4B,IAAAA,MAAM,EAANA;AAAD,GAAd;AACD","sourcesContent":["import {Deck, WebMercatorViewport} 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 blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n blendEquation: gl.FUNC_ADD\n },\n userData: {\n isExternal: false,\n mapboxLayers: new Set()\n }\n };\n\n if (deck) {\n deck.setProps(deckProps);\n deck.props.userData.isExternal = true;\n } else {\n // Using external gl context - do not set css size\n Object.assign(deckProps, {\n gl,\n width: false,\n height: false,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n deck = new Deck(deckProps);\n\n // If deck is externally provided (React use case), we use deck's viewState to\n // 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 map.on('remove', () => {\n deck.finalize();\n map.__deck = null;\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 deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n // TODO - accept layerFilter in drawLayers' renderOptions\n layers: getLayers(deck, deckLayer => shouldDrawLayer(layer.id, deckLayer)),\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\n .split('.')\n .slice(0, 2)\n .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 x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n repeat: true\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 layers = getLayers(deck, deckLayer => {\n for (const id of mapboxLayerIds) {\n if (shouldDrawLayer(id, deckLayer)) {\n return false;\n }\n }\n return true;\n });\n if (layers.length > 0) {\n deck._drawLayers('mapbox-repaint', {\n viewports: [getViewport(deck, map, false)],\n layers,\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 getLayers(deck, layerFilter) {\n const layers = deck.layerManager.getLayers();\n return layers.filter(layerFilter);\n}\n\nfunction shouldDrawLayer(id, layer) {\n let layerInstance = layer;\n while (layerInstance) {\n if (layerInstance.id === id) {\n return true;\n }\n layerInstance = layerInstance.parent;\n }\n return false;\n}\n\nfunction updateLayers(deck) {\n if (deck.props.userData.isExternal) {\n return;\n }\n\n const layers = [];\n deck.props.userData.mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\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","blendFunc","blendEquation","userData","isExternal","mapboxLayers","Set","setProps","Object","assign","width","height","touchAction","viewState","getViewState","Deck","on","onMapMove","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","id","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","major","minor","version","split","slice","Number","useMapboxProjection","WebMercatorViewport","x","y","repeat","nearZMultiplier","mapboxLayerIds","Array","from","hasNonMapboxLayers","layers","some","includes","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport} 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 blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n blendEquation: gl.FUNC_ADD\n },\n userData: {\n isExternal: false,\n mapboxLayers: new Set()\n }\n };\n\n if (deck) {\n deck.setProps(deckProps);\n deck.props.userData.isExternal = true;\n } else {\n // Using external gl context - do not set css size\n Object.assign(deckProps, {\n gl,\n width: false,\n height: false,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n deck = new Deck(deckProps);\n\n // If deck is externally provided (React use case), we use deck's viewState to\n // 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 map.on('remove', () => {\n deck.finalize();\n map.__deck = null;\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 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\n .split('.')\n .slice(0, 2)\n .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 x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n repeat: true\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 if (hasNonMapboxLayers) {\n deck._drawLayers('mapbox-repaint', {\n viewports: [getViewport(deck, map, false)],\n layerFilter: ({layer}) => !mapboxLayerIds.includes(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 deck.props.userData.mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
@@ -83,7 +83,9 @@ export function drawLayer(deck, map, layer) {
83
83
 
84
84
  deck._drawLayers('mapbox-repaint', {
85
85
  viewports: [currentViewport],
86
- layers: getLayers(deck, deckLayer => shouldDrawLayer(layer.id, deckLayer)),
86
+ layerFilter: ({
87
+ layer: deckLayer
88
+ }) => layer.id === deckLayer.id,
87
89
  clearCanvas: false
88
90
  });
89
91
  }
@@ -141,20 +143,14 @@ function afterRender(deck, map) {
141
143
 
142
144
  if (isExternal) {
143
145
  const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
144
- const layers = getLayers(deck, deckLayer => {
145
- for (const id of mapboxLayerIds) {
146
- if (shouldDrawLayer(id, deckLayer)) {
147
- return false;
148
- }
149
- }
150
-
151
- return true;
152
- });
146
+ const hasNonMapboxLayers = deck.props.layers.some(layer => !mapboxLayerIds.includes(layer.id));
153
147
 
154
- if (layers.length > 0) {
148
+ if (hasNonMapboxLayers) {
155
149
  deck._drawLayers('mapbox-repaint', {
156
150
  viewports: [getViewport(deck, map, false)],
157
- layers,
151
+ layerFilter: ({
152
+ layer
153
+ }) => !mapboxLayerIds.includes(layer.id),
158
154
  clearCanvas: false
159
155
  });
160
156
  }
@@ -172,25 +168,6 @@ function onMapMove(deck, map) {
172
168
  });
173
169
  }
174
170
 
175
- function getLayers(deck, layerFilter) {
176
- const layers = deck.layerManager.getLayers();
177
- return layers.filter(layerFilter);
178
- }
179
-
180
- function shouldDrawLayer(id, layer) {
181
- let layerInstance = layer;
182
-
183
- while (layerInstance) {
184
- if (layerInstance.id === id) {
185
- return true;
186
- }
187
-
188
- layerInstance = layerInstance.parent;
189
- }
190
-
191
- return false;
192
- }
193
-
194
171
  function updateLayers(deck) {
195
172
  if (deck.props.userData.isExternal) {
196
173
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/deck-utils.js"],"names":["Deck","WebMercatorViewport","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","triggerRepaint","parameters","depthMask","depthTest","blendFunc","blendEquation","userData","isExternal","mapboxLayers","Set","setProps","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layers","getLayers","deckLayer","shouldDrawLayer","id","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","major","minor","version","split","slice","Number","useMapboxProjection","x","y","repeat","nearZMultiplier","mapboxLayerIds","Array","from","length","needsRedraw","clearRedrawFlags","layerFilter","filter","layerInstance","parent","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport} 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 blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n blendEquation: gl.FUNC_ADD\n },\n userData: {\n isExternal: false,\n mapboxLayers: new Set()\n }\n };\n\n if (deck) {\n deck.setProps(deckProps);\n deck.props.userData.isExternal = true;\n } else {\n // Using external gl context - do not set css size\n Object.assign(deckProps, {\n gl,\n width: false,\n height: false,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n deck = new Deck(deckProps);\n\n // If deck is externally provided (React use case), we use deck's viewState to\n // 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 map.on('remove', () => {\n deck.finalize();\n map.__deck = null;\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 deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n // TODO - accept layerFilter in drawLayers' renderOptions\n layers: getLayers(deck, deckLayer => shouldDrawLayer(layer.id, deckLayer)),\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\n .split('.')\n .slice(0, 2)\n .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 x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n repeat: true\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 layers = getLayers(deck, deckLayer => {\n for (const id of mapboxLayerIds) {\n if (shouldDrawLayer(id, deckLayer)) {\n return false;\n }\n }\n return true;\n });\n if (layers.length > 0) {\n deck._drawLayers('mapbox-repaint', {\n viewports: [getViewport(deck, map, false)],\n layers,\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 getLayers(deck, layerFilter) {\n const layers = deck.layerManager.getLayers();\n return layers.filter(layerFilter);\n}\n\nfunction shouldDrawLayer(id, layer) {\n let layerInstance = layer;\n while (layerInstance) {\n if (layerInstance.id === id) {\n return true;\n }\n layerInstance = layerInstance.parent;\n }\n return false;\n}\n\nfunction updateLayers(deck) {\n if (deck.props.userData.isExternal) {\n return;\n }\n\n const layers = [];\n deck.props.userData.mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\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","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","deckProps","useDevicePixels","triggerRepaint","parameters","depthMask","depthTest","blendFunc","blendEquation","userData","isExternal","mapboxLayers","Set","setProps","Object","assign","width","height","touchAction","viewState","getViewState","on","onMapMove","finalize","mapboxVersion","getMapboxVersion","layerManager","afterRender","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","getViewport","_drawLayers","viewports","layerFilter","deckLayer","id","clearCanvas","lng","lat","getCenter","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","major","minor","version","split","slice","Number","useMapboxProjection","x","y","repeat","nearZMultiplier","mapboxLayerIds","Array","from","hasNonMapboxLayers","layers","some","includes","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport} 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 blendFunc: [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA],\n blendEquation: gl.FUNC_ADD\n },\n userData: {\n isExternal: false,\n mapboxLayers: new Set()\n }\n };\n\n if (deck) {\n deck.setProps(deckProps);\n deck.props.userData.isExternal = true;\n } else {\n // Using external gl context - do not set css size\n Object.assign(deckProps, {\n gl,\n width: false,\n height: false,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n deck = new Deck(deckProps);\n\n // If deck is externally provided (React use case), we use deck's viewState to\n // 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 map.on('remove', () => {\n deck.finalize();\n map.__deck = null;\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 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\n .split('.')\n .slice(0, 2)\n .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 x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n repeat: true\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 if (hasNonMapboxLayers) {\n deck._drawLayers('mapbox-repaint', {\n viewports: [getViewport(deck, map, false)],\n layerFilter: ({layer}) => !mapboxLayerIds.includes(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 deck.props.userData.mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.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=("undefined"==typeof window?global:window).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),c=t(0);function f(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(!e)return;if("string"==typeof e)return l(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l(e,r)}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw i}}}}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function p(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,blendFunc:[770,771,1,771],blendEquation:32774},userData:{isExternal:!1,mapboxLayers:new Set}};return n?(n.setProps(i),n.props.userData.isExternal=!0):(Object.assign(i,{gl:t,width:!1,height:!1,touchAction:"unset",viewState:d(r)}),n=new c.Deck(i),r.on("move",(function(){return function(e,r){e.setProps({viewState:d(r)}),e.needsRedraw({clearRedrawFlags:!0})}(n,r)})),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=v(e,(function(e){var r,t=f(o);try{for(t.s();!(r=t.n()).done;){if(h(r.value,e))return!1}}catch(e){t.e(e)}finally{t.f()}return!0}));i.length>0&&e._drawLayers("mapbox-repaint",{viewports:[y(e,r,!1)],layers:i,clearCanvas:!1})}e.props.userData.currentViewport=null}(n,r)})),n}function d(e){var r=e.getCenter();return{longitude:r.lng,latitude:r.lat,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch()}}function y(e,r){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.props.userData.mapboxVersion;return new c.WebMercatorViewport(Object.assign({x:0,y:0,width:e.width,height:e.height,repeat:!0},d(r),t?{nearZMultiplier:1===n.major&&n.minor>=3||n.major>=2?.02:1/(e.height||1)}:{nearZMultiplier:.1}))}function v(e,r){return e.layerManager.getLayers().filter(r)}function h(e,r){for(var t=r;t;){if(t.id===e)return!0;t=t.parent}return!1}function m(e){if(!e.props.userData.isExternal){var r=[];e.props.userData.mapboxLayers.forEach((function(e){var t=new(0,e.props.type)(e.props);r.push(t)})),e.setProps({layers:r})}}var b=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=p({map:e,gl:r,deck:this.props.deck}),t=this.deck,n=this,t.props.userData.mapboxLayers.add(n),m(t)}},{key:"onRemove",value:function(){var e,r;e=this.deck,r=this,e.props.userData.mapboxLayers.delete(r),m(e)}},{key:"setProps",value:function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&m(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=y(t,n,!0),t.props.userData.currentViewport=i),t.layerManager&&t._drawLayers("mapbox-repaint",{viewports:[i],layers:v(t,(function(e){return h(o.id,e)})),clearCanvas:!1})}}]),e}();t.d(r,"MapboxLayer",(function(){return b}))}])}));
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=("undefined"==typeof window?global:window).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),c=t(0);function p(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,blendFunc:[770,771,1,771],blendEquation:32774},userData:{isExternal:!1,mapboxLayers:new Set}};return n?(n.setProps(i),n.props.userData.isExternal=!0):(Object.assign(i,{gl:t,width:!1,height:!1,touchAction:"unset",viewState:l(r)}),n=new c.Deck(i),r.on("move",(function(){return function(e,r){e.setProps({viewState:l(r)}),e.needsRedraw({clearRedrawFlags:!0})}(n,r)})),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}));e.props.layers.some((function(e){return!o.includes(e.id)}))&&e._drawLayers("mapbox-repaint",{viewports:[d(e,r,!1)],layerFilter:function(e){var r=e.layer;return!o.includes(r.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 c.WebMercatorViewport(Object.assign({x:0,y:0,width:e.width,height:e.height,repeat:!0},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=[];e.props.userData.mapboxLayers.forEach((function(e){var t=new(0,e.props.type)(e.props);r.push(t)})),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=p({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}))}])}));
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.6.0-alpha.3",
5
+ "version": "8.6.1",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -31,5 +31,5 @@
31
31
  "peerDependencies": {
32
32
  "@deck.gl/core": "^8.0.0"
33
33
  },
34
- "gitHead": "b43ac51af23cb186e3cbb2ed9c69fddd16483745"
34
+ "gitHead": "9611fa7fc206cf2970ac4dfdb35a50677b0afa3c"
35
35
  }
package/src/deck-utils.js CHANGED
@@ -90,8 +90,7 @@ export function drawLayer(deck, map, layer) {
90
90
  }
91
91
  deck._drawLayers('mapbox-repaint', {
92
92
  viewports: [currentViewport],
93
- // TODO - accept layerFilter in drawLayers' renderOptions
94
- layers: getLayers(deck, deckLayer => shouldDrawLayer(layer.id, deckLayer)),
93
+ layerFilter: ({layer: deckLayer}) => layer.id === deckLayer.id,
95
94
  clearCanvas: false
96
95
  });
97
96
  }
@@ -157,18 +156,11 @@ function afterRender(deck, map) {
157
156
  if (isExternal) {
158
157
  // Draw non-Mapbox layers
159
158
  const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);
160
- const layers = getLayers(deck, deckLayer => {
161
- for (const id of mapboxLayerIds) {
162
- if (shouldDrawLayer(id, deckLayer)) {
163
- return false;
164
- }
165
- }
166
- return true;
167
- });
168
- if (layers.length > 0) {
159
+ const hasNonMapboxLayers = deck.props.layers.some(layer => !mapboxLayerIds.includes(layer.id));
160
+ if (hasNonMapboxLayers) {
169
161
  deck._drawLayers('mapbox-repaint', {
170
162
  viewports: [getViewport(deck, map, false)],
171
- layers,
163
+ layerFilter: ({layer}) => !mapboxLayerIds.includes(layer.id),
172
164
  clearCanvas: false
173
165
  });
174
166
  }
@@ -188,22 +180,6 @@ function onMapMove(deck, map) {
188
180
  deck.needsRedraw({clearRedrawFlags: true});
189
181
  }
190
182
 
191
- function getLayers(deck, layerFilter) {
192
- const layers = deck.layerManager.getLayers();
193
- return layers.filter(layerFilter);
194
- }
195
-
196
- function shouldDrawLayer(id, layer) {
197
- let layerInstance = layer;
198
- while (layerInstance) {
199
- if (layerInstance.id === id) {
200
- return true;
201
- }
202
- layerInstance = layerInstance.parent;
203
- }
204
- return false;
205
- }
206
-
207
183
  function updateLayers(deck) {
208
184
  if (deck.props.userData.isExternal) {
209
185
  return;