@deck.gl/geo-layers 8.6.4 → 8.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/dist.dev.js +35 -15
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +321 -226
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +9 -9
  9. package/dist/es5/mesh-layer/mesh-layer.js +151 -125
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +45 -19
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +394 -279
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +43 -32
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +104 -69
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +27 -28
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +250 -208
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +382 -329
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +183 -119
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +178 -115
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +257 -214
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +435 -290
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +110 -61
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +81 -44
  38. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  39. package/dist/esm/mvt-layer/mvt-layer.js +26 -0
  40. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  41. package/dist/esm/terrain-layer/terrain-layer.js +8 -10
  42. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  43. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  44. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  45. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  46. package/dist/esm/tile-layer/tile-layer.js +6 -8
  47. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  48. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  49. package/dist.min.js +1 -1
  50. package/package.json +2 -2
  51. package/src/mvt-layer/mvt-layer.js +16 -0
  52. package/src/terrain-layer/terrain-layer.js +10 -9
  53. package/src/tile-layer/tile-layer.js +9 -6
@@ -2,11 +2,25 @@
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
4
 
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.default = void 0;
9
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
10
24
  var _core = require("@deck.gl/core");
11
25
 
12
26
  var _layers = require("@deck.gl/layers");
@@ -15,12 +29,22 @@ var _tileset2d = _interopRequireWildcard(require("./tileset-2d"));
15
29
 
16
30
  var _utils = require("./utils");
17
31
 
18
- const defaultProps = {
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
37
+
38
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
39
+
40
+ var defaultProps = {
19
41
  data: [],
20
42
  dataComparator: _utils.urlType.equals,
21
43
  renderSubLayers: {
22
44
  type: 'function',
23
- value: props => new _layers.GeoJsonLayer(props),
45
+ value: function value(props) {
46
+ return new _layers.GeoJsonLayer(props);
47
+ },
24
48
  compare: false
25
49
  },
26
50
  getTileData: {
@@ -37,17 +61,19 @@ const defaultProps = {
37
61
  },
38
62
  onTileLoad: {
39
63
  type: 'function',
40
- value: tile => {},
64
+ value: function value(tile) {},
41
65
  compare: false
42
66
  },
43
67
  onTileUnload: {
44
68
  type: 'function',
45
- value: tile => {},
69
+ value: function value(tile) {},
46
70
  compare: false
47
71
  },
48
72
  onTileError: {
49
73
  type: 'function',
50
- value: err => console.error(err),
74
+ value: function value(err) {
75
+ return console.error(err);
76
+ },
51
77
  compare: false
52
78
  },
53
79
  extent: {
@@ -67,238 +93,255 @@ const defaultProps = {
67
93
  zoomOffset: 0
68
94
  };
69
95
 
70
- class TileLayer extends _core.CompositeLayer {
71
- initializeState() {
72
- this.state = {
73
- tileset: null,
74
- isLoaded: false
75
- };
76
- }
96
+ var TileLayer = function (_CompositeLayer) {
97
+ (0, _inherits2.default)(TileLayer, _CompositeLayer);
77
98
 
78
- finalizeState() {
79
- var _this$state$tileset;
99
+ var _super = _createSuper(TileLayer);
80
100
 
81
- (_this$state$tileset = this.state.tileset) === null || _this$state$tileset === void 0 ? void 0 : _this$state$tileset.finalize();
101
+ function TileLayer() {
102
+ (0, _classCallCheck2.default)(this, TileLayer);
103
+ return _super.apply(this, arguments);
82
104
  }
83
105
 
84
- get isLoaded() {
85
- const {
86
- tileset
87
- } = this.state;
88
- return tileset.selectedTiles.every(tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded));
89
- }
90
-
91
- shouldUpdateState({
92
- changeFlags
93
- }) {
94
- return changeFlags.somethingChanged;
95
- }
106
+ (0, _createClass2.default)(TileLayer, [{
107
+ key: "initializeState",
108
+ value: function initializeState() {
109
+ this.state = {
110
+ tileset: null,
111
+ isLoaded: false
112
+ };
113
+ }
114
+ }, {
115
+ key: "finalizeState",
116
+ value: function finalizeState() {
117
+ var _this$state$tileset;
96
118
 
97
- updateState({
98
- props,
99
- changeFlags
100
- }) {
101
- let {
102
- tileset
103
- } = this.state;
104
- const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;
105
- const dataChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData);
106
-
107
- if (!tileset) {
108
- tileset = new _tileset2d.default(this._getTilesetOptions(props));
109
- this.setState({
110
- tileset
111
- });
112
- } else if (propsChanged) {
113
- tileset.setOptions(this._getTilesetOptions(props));
114
-
115
- if (dataChanged) {
116
- tileset.reloadAll();
117
- } else {
118
- this.state.tileset.tiles.forEach(tile => {
119
- tile.layers = null;
119
+ (_this$state$tileset = this.state.tileset) === null || _this$state$tileset === void 0 ? void 0 : _this$state$tileset.finalize();
120
+ }
121
+ }, {
122
+ key: "shouldUpdateState",
123
+ value: function shouldUpdateState(_ref) {
124
+ var changeFlags = _ref.changeFlags;
125
+ return changeFlags.somethingChanged;
126
+ }
127
+ }, {
128
+ key: "updateState",
129
+ value: function updateState(_ref2) {
130
+ var props = _ref2.props,
131
+ changeFlags = _ref2.changeFlags;
132
+ var tileset = this.state.tileset;
133
+ var propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;
134
+ var dataChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData);
135
+
136
+ if (!tileset) {
137
+ tileset = new _tileset2d.default(this._getTilesetOptions(props));
138
+ this.setState({
139
+ tileset: tileset
120
140
  });
141
+ } else if (propsChanged) {
142
+ tileset.setOptions(this._getTilesetOptions(props));
143
+
144
+ if (dataChanged) {
145
+ tileset.reloadAll();
146
+ } else {
147
+ this.state.tileset.tiles.forEach(function (tile) {
148
+ tile.layers = null;
149
+ });
150
+ }
121
151
  }
122
- }
123
-
124
- this._updateTileset();
125
- }
126
-
127
- _getTilesetOptions(props) {
128
- const {
129
- tileSize,
130
- maxCacheSize,
131
- maxCacheByteSize,
132
- refinementStrategy,
133
- extent,
134
- maxZoom,
135
- minZoom,
136
- maxRequests,
137
- zoomOffset
138
- } = props;
139
- return {
140
- maxCacheSize,
141
- maxCacheByteSize,
142
- maxZoom,
143
- minZoom,
144
- tileSize,
145
- refinementStrategy,
146
- extent,
147
- maxRequests,
148
- zoomOffset,
149
- getTileData: this.getTileData.bind(this),
150
- onTileLoad: this._onTileLoad.bind(this),
151
- onTileError: this._onTileError.bind(this),
152
- onTileUnload: this._onTileUnload.bind(this)
153
- };
154
- }
155
152
 
156
- _updateTileset() {
157
- const {
158
- tileset
159
- } = this.state;
160
- const {
161
- zRange,
162
- modelMatrix
163
- } = this.props;
164
- const frameNumber = tileset.update(this.context.viewport, {
165
- zRange,
166
- modelMatrix
167
- });
168
- const {
169
- isLoaded
170
- } = tileset;
171
- const loadingStateChanged = this.state.isLoaded !== isLoaded;
172
- const tilesetChanged = this.state.frameNumber !== frameNumber;
173
-
174
- if (isLoaded && (loadingStateChanged || tilesetChanged)) {
175
- this._onViewportLoad();
153
+ this._updateTileset();
176
154
  }
177
-
178
- if (tilesetChanged) {
179
- this.setState({
180
- frameNumber
181
- });
155
+ }, {
156
+ key: "_getTilesetOptions",
157
+ value: function _getTilesetOptions(props) {
158
+ var tileSize = props.tileSize,
159
+ maxCacheSize = props.maxCacheSize,
160
+ maxCacheByteSize = props.maxCacheByteSize,
161
+ refinementStrategy = props.refinementStrategy,
162
+ extent = props.extent,
163
+ maxZoom = props.maxZoom,
164
+ minZoom = props.minZoom,
165
+ maxRequests = props.maxRequests,
166
+ zoomOffset = props.zoomOffset;
167
+ return {
168
+ maxCacheSize: maxCacheSize,
169
+ maxCacheByteSize: maxCacheByteSize,
170
+ maxZoom: maxZoom,
171
+ minZoom: minZoom,
172
+ tileSize: tileSize,
173
+ refinementStrategy: refinementStrategy,
174
+ extent: extent,
175
+ maxRequests: maxRequests,
176
+ zoomOffset: zoomOffset,
177
+ getTileData: this.getTileData.bind(this),
178
+ onTileLoad: this._onTileLoad.bind(this),
179
+ onTileError: this._onTileError.bind(this),
180
+ onTileUnload: this._onTileUnload.bind(this)
181
+ };
182
182
  }
183
+ }, {
184
+ key: "_updateTileset",
185
+ value: function _updateTileset() {
186
+ var tileset = this.state.tileset;
187
+ var _this$props = this.props,
188
+ zRange = _this$props.zRange,
189
+ modelMatrix = _this$props.modelMatrix;
190
+ var frameNumber = tileset.update(this.context.viewport, {
191
+ zRange: zRange,
192
+ modelMatrix: modelMatrix
193
+ });
194
+ var isLoaded = tileset.isLoaded;
195
+ var loadingStateChanged = this.state.isLoaded !== isLoaded;
196
+ var tilesetChanged = this.state.frameNumber !== frameNumber;
183
197
 
184
- this.state.isLoaded = isLoaded;
185
- }
198
+ if (isLoaded && (loadingStateChanged || tilesetChanged)) {
199
+ this._onViewportLoad();
200
+ }
186
201
 
187
- _onViewportLoad() {
188
- const {
189
- tileset
190
- } = this.state;
191
- const {
192
- onViewportLoad
193
- } = this.props;
202
+ if (tilesetChanged) {
203
+ this.setState({
204
+ frameNumber: frameNumber
205
+ });
206
+ }
194
207
 
195
- if (onViewportLoad) {
196
- onViewportLoad(tileset.selectedTiles);
208
+ this.state.isLoaded = isLoaded;
197
209
  }
198
- }
199
-
200
- _onTileLoad(tile) {
201
- this.props.onTileLoad(tile);
202
- tile.layers = null;
203
-
204
- if (tile.isVisible) {
205
- this.setNeedsUpdate();
210
+ }, {
211
+ key: "_onViewportLoad",
212
+ value: function _onViewportLoad() {
213
+ var tileset = this.state.tileset;
214
+ var onViewportLoad = this.props.onViewportLoad;
215
+
216
+ if (onViewportLoad) {
217
+ onViewportLoad(tileset.selectedTiles);
218
+ }
206
219
  }
207
- }
208
-
209
- _onTileError(error, tile) {
210
- this.props.onTileError(error);
211
- tile.layers = null;
212
-
213
- if (tile.isVisible) {
214
- this.setNeedsUpdate();
220
+ }, {
221
+ key: "_onTileLoad",
222
+ value: function _onTileLoad(tile) {
223
+ this.props.onTileLoad(tile);
224
+ tile.layers = null;
225
+
226
+ if (tile.isVisible) {
227
+ this.setNeedsUpdate();
228
+ }
215
229
  }
216
- }
230
+ }, {
231
+ key: "_onTileError",
232
+ value: function _onTileError(error, tile) {
233
+ this.props.onTileError(error);
234
+ tile.layers = null;
235
+
236
+ if (tile.isVisible) {
237
+ this.setNeedsUpdate();
238
+ }
239
+ }
240
+ }, {
241
+ key: "_onTileUnload",
242
+ value: function _onTileUnload(tile) {
243
+ this.props.onTileUnload(tile);
244
+ }
245
+ }, {
246
+ key: "getTileData",
247
+ value: function getTileData(tile) {
248
+ var _this$props2 = this.props,
249
+ data = _this$props2.data,
250
+ getTileData = _this$props2.getTileData,
251
+ fetch = _this$props2.fetch;
252
+ var signal = tile.signal;
253
+ tile.url = (0, _utils.getURLFromTemplate)(data, tile);
254
+
255
+ if (getTileData) {
256
+ return getTileData(tile);
257
+ }
217
258
 
218
- _onTileUnload(tile) {
219
- this.props.onTileUnload(tile);
220
- }
259
+ if (tile.url) {
260
+ return fetch(tile.url, {
261
+ propName: 'data',
262
+ layer: this,
263
+ signal: signal
264
+ });
265
+ }
221
266
 
222
- getTileData(tile) {
223
- const {
224
- data,
225
- getTileData,
226
- fetch
227
- } = this.props;
228
- const {
229
- signal
230
- } = tile;
231
- tile.url = (0, _utils.getURLFromTemplate)(data, tile);
232
-
233
- if (getTileData) {
234
- return getTileData(tile);
267
+ return null;
235
268
  }
236
-
237
- if (tile.url) {
238
- return fetch(tile.url, {
239
- propName: 'data',
240
- layer: this,
241
- signal
269
+ }, {
270
+ key: "renderSubLayers",
271
+ value: function renderSubLayers(props) {
272
+ return this.props.renderSubLayers(props);
273
+ }
274
+ }, {
275
+ key: "getSubLayerPropsByTile",
276
+ value: function getSubLayerPropsByTile(tile) {
277
+ return null;
278
+ }
279
+ }, {
280
+ key: "getPickingInfo",
281
+ value: function getPickingInfo(_ref3) {
282
+ var info = _ref3.info,
283
+ sourceLayer = _ref3.sourceLayer;
284
+ info.tile = sourceLayer.props.tile;
285
+ return info;
286
+ }
287
+ }, {
288
+ key: "_updateAutoHighlight",
289
+ value: function _updateAutoHighlight(info) {
290
+ if (info.sourceLayer) {
291
+ info.sourceLayer.updateAutoHighlight(info);
292
+ }
293
+ }
294
+ }, {
295
+ key: "renderLayers",
296
+ value: function renderLayers() {
297
+ var _this = this;
298
+
299
+ return this.state.tileset.tiles.map(function (tile) {
300
+ var subLayerProps = _this.getSubLayerPropsByTile(tile);
301
+
302
+ if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
303
+ var layers = _this.renderSubLayers(_objectSpread(_objectSpread({}, _this.props), {}, {
304
+ id: "".concat(_this.id, "-").concat(tile.x, "-").concat(tile.y, "-").concat(tile.z),
305
+ data: tile.content,
306
+ _offset: 0,
307
+ tile: tile
308
+ }));
309
+
310
+ tile.layers = (0, _core._flatten)(layers, Boolean).map(function (layer) {
311
+ return layer.clone(_objectSpread({
312
+ tile: tile
313
+ }, subLayerProps));
314
+ });
315
+ } else if (subLayerProps && tile.layers[0] && Object.keys(subLayerProps).some(function (propName) {
316
+ return tile.layers[0].props[propName] !== subLayerProps[propName];
317
+ })) {
318
+ tile.layers = tile.layers.map(function (layer) {
319
+ return layer.clone(subLayerProps);
320
+ });
321
+ }
322
+
323
+ return tile.layers;
242
324
  });
243
325
  }
244
-
245
- return null;
246
- }
247
-
248
- renderSubLayers(props) {
249
- return this.props.renderSubLayers(props);
250
- }
251
-
252
- getHighlightedObjectIndex() {
253
- return -1;
254
- }
255
-
256
- getPickingInfo({
257
- info,
258
- sourceLayer
259
- }) {
260
- info.tile = sourceLayer.props.tile;
261
- return info;
262
- }
263
-
264
- _updateAutoHighlight(info) {
265
- if (info.sourceLayer) {
266
- info.sourceLayer.updateAutoHighlight(info);
326
+ }, {
327
+ key: "filterSubLayer",
328
+ value: function filterSubLayer(_ref4) {
329
+ var layer = _ref4.layer;
330
+ return layer.props.tile.isVisible;
267
331
  }
268
- }
269
-
270
- renderLayers() {
271
- return this.state.tileset.tiles.map(tile => {
272
- const highlightedObjectIndex = this.getHighlightedObjectIndex(tile);
273
-
274
- if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
275
- const layers = this.renderSubLayers({ ...this.props,
276
- id: "".concat(this.id, "-").concat(tile.x, "-").concat(tile.y, "-").concat(tile.z),
277
- data: tile.content,
278
- _offset: 0,
279
- tile
332
+ }, {
333
+ key: "isLoaded",
334
+ get: function get() {
335
+ var tileset = this.state.tileset;
336
+ return tileset.selectedTiles.every(function (tile) {
337
+ return tile.isLoaded && tile.layers && tile.layers.every(function (layer) {
338
+ return layer.isLoaded;
280
339
  });
281
- tile.layers = (0, _core._flatten)(layers, Boolean).map(layer => layer.clone({
282
- tile,
283
- highlightedObjectIndex
284
- }));
285
- } else if (tile.layers[0] && tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex) {
286
- tile.layers = tile.layers.map(layer => layer.clone({
287
- highlightedObjectIndex
288
- }));
289
- }
290
-
291
- return tile.layers;
292
- });
293
- }
294
-
295
- filterSubLayer({
296
- layer
297
- }) {
298
- return layer.props.tile.isVisible;
299
- }
300
-
301
- }
340
+ });
341
+ }
342
+ }]);
343
+ return TileLayer;
344
+ }(_core.CompositeLayer);
302
345
 
303
346
  exports.default = TileLayer;
304
347
  TileLayer.layerName = 'TileLayer';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["defaultProps","data","dataComparator","urlType","equals","renderSubLayers","type","value","props","GeoJsonLayer","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","CompositeLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","Tileset2D","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","isVisible","setNeedsUpdate","fetch","signal","url","propName","getHighlightedObjectIndex","getPickingInfo","info","sourceLayer","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","highlightedObjectIndex","content","id","x","y","z","_offset","Boolean","clone","filterSubLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getHighlightedObjectIndex() {\n return -1;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const highlightedObjectIndex = this.getHighlightedObjectIndex(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n highlightedObjectIndex\n })\n );\n } else if (\n tile.layers[0] &&\n tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex\n ) {\n tile.layers = tile.layers.map(layer => layer.clone({highlightedObjectIndex}));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["defaultProps","data","dataComparator","urlType","equals","renderSubLayers","type","value","props","GeoJsonLayer","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","tileset","isLoaded","finalize","changeFlags","somethingChanged","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","Tileset2D","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","layers","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","selectedTiles","isVisible","setNeedsUpdate","fetch","signal","url","propName","layer","info","sourceLayer","updateAutoHighlight","map","subLayerProps","getSubLayerPropsByTile","content","id","x","y","z","_offset","Boolean","clone","Object","keys","some","every","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile) {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers[0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}