@deck.gl/geo-layers 8.6.4 → 8.7.0-alpha.11

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 (77) hide show
  1. package/dist/dist.dev.js +9751 -6413
  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 +326 -230
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +17 -9
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  11. package/dist/es5/mesh-layer/mesh-layer.js +153 -132
  12. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  13. package/dist/es5/mvt-layer/coordinate-transform.js +46 -20
  14. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  15. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  16. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  17. package/dist/es5/mvt-layer/mvt-layer.js +395 -280
  18. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-geometry.js +43 -32
  20. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-layer.js +104 -69
  22. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  23. package/dist/es5/s2-layer/s2-utils.js +27 -28
  24. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  25. package/dist/es5/terrain-layer/terrain-layer.js +250 -208
  26. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  27. package/dist/es5/tile-3d-layer/tile-3d-layer.js +384 -329
  28. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-header.js +182 -118
  30. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
  32. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  33. package/dist/es5/tile-layer/tile-layer.js +254 -213
  34. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  35. package/dist/es5/tile-layer/tileset-2d.js +519 -300
  36. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  37. package/dist/es5/tile-layer/utils.js +110 -61
  38. package/dist/es5/tile-layer/utils.js.map +1 -1
  39. package/dist/es5/trips-layer/trips-layer.js +81 -44
  40. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  41. package/dist/esm/h3-layers/h3-hexagon-layer.js +2 -1
  42. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  43. package/dist/esm/index.js +1 -0
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  46. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
  47. package/dist/esm/mesh-layer/mesh-layer.js +2 -8
  48. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  49. package/dist/esm/mvt-layer/coordinate-transform.js +1 -1
  50. package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
  51. package/dist/esm/mvt-layer/mvt-layer.js +27 -1
  52. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  53. package/dist/esm/s2-layer/s2-utils.js.map +1 -1
  54. package/dist/esm/terrain-layer/terrain-layer.js +8 -10
  55. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  56. package/dist/esm/tile-3d-layer/tile-3d-layer.js +2 -1
  57. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  58. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  59. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  60. package/dist/esm/tile-layer/tile-layer.js +8 -16
  61. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  62. package/dist/esm/tile-layer/tileset-2d.js +85 -79
  63. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  64. package/dist.min.js +2 -2
  65. package/package.json +12 -12
  66. package/src/h3-layers/h3-hexagon-layer.js +2 -1
  67. package/src/{index.js → index.ts} +2 -0
  68. package/src/mesh-layer/mesh-layer-vertex.glsl.js +24 -23
  69. package/src/mesh-layer/mesh-layer.js +5 -4
  70. package/src/mvt-layer/coordinate-transform.js +1 -1
  71. package/src/mvt-layer/mvt-layer.js +17 -1
  72. package/src/s2-layer/s2-utils.js +7 -1
  73. package/src/terrain-layer/terrain-layer.js +10 -9
  74. package/src/tile-3d-layer/tile-3d-layer.js +12 -9
  75. package/src/tile-layer/tile-2d-traversal.js +17 -3
  76. package/src/tile-layer/tile-layer.js +11 -12
  77. package/src/tile-layer/tileset-2d.js +103 -90
@@ -7,38 +7,55 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.STRATEGY_DEFAULT = exports.STRATEGY_REPLACE = exports.STRATEGY_NEVER = void 0;
9
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
10
18
  var _tile2dHeader = _interopRequireDefault(require("./tile-2d-header"));
11
19
 
12
20
  var _utils = require("./utils");
13
21
 
14
22
  var _loaderUtils = require("@loaders.gl/loader-utils");
15
23
 
16
- var _math = require("math.gl");
24
+ var _core = require("@math.gl/core");
25
+
26
+ var _STRATEGIES;
27
+
28
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { 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 = it.call(o); }, 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; } } }; }
29
+
30
+ 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); }
31
+
32
+ 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; }
17
33
 
18
- const TILE_STATE_UNKNOWN = 0;
19
- const TILE_STATE_VISIBLE = 1;
20
- const TILE_STATE_PLACEHOLDER = 3;
21
- const TILE_STATE_HIDDEN = 4;
22
- const TILE_STATE_SELECTED = 5;
23
- const STRATEGY_NEVER = 'never';
34
+ var TILE_STATE_VISITED = 1;
35
+ var TILE_STATE_VISIBLE = 2;
36
+ var STRATEGY_NEVER = 'never';
24
37
  exports.STRATEGY_NEVER = STRATEGY_NEVER;
25
- const STRATEGY_REPLACE = 'no-overlap';
38
+ var STRATEGY_REPLACE = 'no-overlap';
26
39
  exports.STRATEGY_REPLACE = STRATEGY_REPLACE;
27
- const STRATEGY_DEFAULT = 'best-available';
40
+ var STRATEGY_DEFAULT = 'best-available';
28
41
  exports.STRATEGY_DEFAULT = STRATEGY_DEFAULT;
29
- const DEFAULT_CACHE_SCALE = 5;
42
+ var DEFAULT_CACHE_SCALE = 5;
43
+ var STRATEGIES = (_STRATEGIES = {}, (0, _defineProperty2.default)(_STRATEGIES, STRATEGY_DEFAULT, updateTileStateDefault), (0, _defineProperty2.default)(_STRATEGIES, STRATEGY_REPLACE, updateTileStateReplace), (0, _defineProperty2.default)(_STRATEGIES, STRATEGY_NEVER, function () {}), _STRATEGIES);
30
44
 
31
- class Tileset2D {
32
- constructor(opts) {
45
+ var Tileset2D = function () {
46
+ function Tileset2D(opts) {
47
+ var _this = this;
48
+
49
+ (0, _classCallCheck2.default)(this, Tileset2D);
33
50
  this.opts = opts;
34
51
 
35
- this.onTileLoad = tile => {
36
- this.opts.onTileLoad(tile);
52
+ this.onTileLoad = function (tile) {
53
+ _this.opts.onTileLoad(tile);
37
54
 
38
- if (this.opts.maxCacheByteSize) {
39
- this._cacheByteSize += tile.byteLength;
55
+ if (_this.opts.maxCacheByteSize) {
56
+ _this._cacheByteSize += tile.byteLength;
40
57
 
41
- this._resizeCache();
58
+ _this._resizeCache();
42
59
  }
43
60
  };
44
61
 
@@ -56,377 +73,579 @@ class Tileset2D {
56
73
  this.setOptions(opts);
57
74
  }
58
75
 
59
- get tiles() {
60
- return this._tiles;
61
- }
62
-
63
- get selectedTiles() {
64
- return this._selectedTiles;
65
- }
66
-
67
- get isLoaded() {
68
- return this._selectedTiles.every(tile => tile.isLoaded);
69
- }
70
-
71
- setOptions(opts) {
72
- Object.assign(this.opts, opts);
73
-
74
- if (Number.isFinite(opts.maxZoom)) {
75
- this._maxZoom = Math.floor(opts.maxZoom);
76
+ (0, _createClass2.default)(Tileset2D, [{
77
+ key: "tiles",
78
+ get: function get() {
79
+ return this._tiles;
76
80
  }
77
-
78
- if (Number.isFinite(opts.minZoom)) {
79
- this._minZoom = Math.ceil(opts.minZoom);
81
+ }, {
82
+ key: "selectedTiles",
83
+ get: function get() {
84
+ return this._selectedTiles;
80
85
  }
81
- }
82
-
83
- finalize() {
84
- for (const tile of this._cache.values()) {
85
- if (tile.isLoading) {
86
- tile.abort();
87
- }
86
+ }, {
87
+ key: "isLoaded",
88
+ get: function get() {
89
+ return this._selectedTiles.every(function (tile) {
90
+ return tile.isLoaded;
91
+ });
88
92
  }
93
+ }, {
94
+ key: "setOptions",
95
+ value: function setOptions(opts) {
96
+ Object.assign(this.opts, opts);
89
97
 
90
- this._cache.clear();
98
+ if (Number.isFinite(opts.maxZoom)) {
99
+ this._maxZoom = Math.floor(opts.maxZoom);
100
+ }
91
101
 
92
- this._tiles = [];
93
- this._selectedTiles = null;
94
- }
102
+ if (Number.isFinite(opts.minZoom)) {
103
+ this._minZoom = Math.ceil(opts.minZoom);
104
+ }
105
+ }
106
+ }, {
107
+ key: "finalize",
108
+ value: function finalize() {
109
+ var _iterator = _createForOfIteratorHelper(this._cache.values()),
110
+ _step;
111
+
112
+ try {
113
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
114
+ var tile = _step.value;
115
+
116
+ if (tile.isLoading) {
117
+ tile.abort();
118
+ }
119
+ }
120
+ } catch (err) {
121
+ _iterator.e(err);
122
+ } finally {
123
+ _iterator.f();
124
+ }
95
125
 
96
- reloadAll() {
97
- for (const tileId of this._cache.keys()) {
98
- const tile = this._cache.get(tileId);
126
+ this._cache.clear();
99
127
 
100
- if (!this._selectedTiles.includes(tile)) {
101
- this._cache.delete(tileId);
102
- } else {
103
- tile.setNeedsReload();
128
+ this._tiles = [];
129
+ this._selectedTiles = null;
130
+ }
131
+ }, {
132
+ key: "reloadAll",
133
+ value: function reloadAll() {
134
+ var _iterator2 = _createForOfIteratorHelper(this._cache.keys()),
135
+ _step2;
136
+
137
+ try {
138
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
139
+ var tileId = _step2.value;
140
+
141
+ var tile = this._cache.get(tileId);
142
+
143
+ if (!this._selectedTiles.includes(tile)) {
144
+ this._cache.delete(tileId);
145
+ } else {
146
+ tile.setNeedsReload();
147
+ }
148
+ }
149
+ } catch (err) {
150
+ _iterator2.e(err);
151
+ } finally {
152
+ _iterator2.f();
104
153
  }
105
154
  }
106
- }
155
+ }, {
156
+ key: "update",
157
+ value: function update(viewport) {
158
+ var _this2 = this;
159
+
160
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
161
+ zRange = _ref.zRange,
162
+ modelMatrix = _ref.modelMatrix;
163
+
164
+ var modelMatrixAsMatrix4 = new _core.Matrix4(modelMatrix);
165
+ var isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
166
+
167
+ if (!viewport.equals(this._viewport) || isModelMatrixNew) {
168
+ if (isModelMatrixNew) {
169
+ this._modelMatrixInverse = modelMatrix && modelMatrixAsMatrix4.clone().invert();
170
+ this._modelMatrix = modelMatrix && modelMatrixAsMatrix4;
171
+ }
107
172
 
108
- update(viewport, {
109
- zRange,
110
- modelMatrix
111
- } = {}) {
112
- const modelMatrixAsMatrix4 = new _math.Matrix4(modelMatrix);
113
- const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);
114
-
115
- if (!viewport.equals(this._viewport) || isModelMatrixNew) {
116
- if (isModelMatrixNew) {
117
- this._modelMatrixInverse = modelMatrix && modelMatrixAsMatrix4.clone().invert();
118
- this._modelMatrix = modelMatrix && modelMatrixAsMatrix4;
173
+ this._viewport = viewport;
174
+ var tileIndices = this.getTileIndices({
175
+ viewport: viewport,
176
+ maxZoom: this._maxZoom,
177
+ minZoom: this._minZoom,
178
+ zRange: zRange,
179
+ modelMatrix: this._modelMatrix,
180
+ modelMatrixInverse: this._modelMatrixInverse
181
+ });
182
+ this._selectedTiles = tileIndices.map(function (index) {
183
+ return _this2._getTile(index, true);
184
+ });
185
+
186
+ if (this._dirty) {
187
+ this._rebuildTree();
188
+ }
119
189
  }
120
190
 
121
- this._viewport = viewport;
122
- const tileIndices = this.getTileIndices({
123
- viewport,
124
- maxZoom: this._maxZoom,
125
- minZoom: this._minZoom,
126
- zRange,
127
- modelMatrix: this._modelMatrix,
128
- modelMatrixInverse: this._modelMatrixInverse
129
- });
130
- this._selectedTiles = tileIndices.map(index => this._getTile(index, true));
191
+ var changed = this.updateTileStates();
192
+
193
+ this._pruneRequests();
131
194
 
132
195
  if (this._dirty) {
133
- this._rebuildTree();
196
+ this._resizeCache();
134
197
  }
135
- }
136
198
 
137
- const changed = this.updateTileStates();
199
+ if (changed) {
200
+ this._frameNumber++;
201
+ }
138
202
 
139
- if (this._dirty) {
140
- this._resizeCache();
203
+ return this._frameNumber;
141
204
  }
142
-
143
- if (changed) {
144
- this._frameNumber++;
205
+ }, {
206
+ key: "getTileIndices",
207
+ value: function getTileIndices(_ref2) {
208
+ var viewport = _ref2.viewport,
209
+ maxZoom = _ref2.maxZoom,
210
+ minZoom = _ref2.minZoom,
211
+ zRange = _ref2.zRange,
212
+ modelMatrix = _ref2.modelMatrix,
213
+ modelMatrixInverse = _ref2.modelMatrixInverse;
214
+ var _this$opts = this.opts,
215
+ tileSize = _this$opts.tileSize,
216
+ extent = _this$opts.extent,
217
+ zoomOffset = _this$opts.zoomOffset;
218
+ return (0, _utils.getTileIndices)({
219
+ viewport: viewport,
220
+ maxZoom: maxZoom,
221
+ minZoom: minZoom,
222
+ zRange: zRange,
223
+ tileSize: tileSize,
224
+ extent: extent,
225
+ modelMatrix: modelMatrix,
226
+ modelMatrixInverse: modelMatrixInverse,
227
+ zoomOffset: zoomOffset
228
+ });
145
229
  }
230
+ }, {
231
+ key: "getTileMetadata",
232
+ value: function getTileMetadata(_ref3) {
233
+ var x = _ref3.x,
234
+ y = _ref3.y,
235
+ z = _ref3.z;
236
+ var tileSize = this.opts.tileSize;
237
+ return {
238
+ bbox: (0, _utils.tileToBoundingBox)(this._viewport, x, y, z, tileSize)
239
+ };
240
+ }
241
+ }, {
242
+ key: "getParentIndex",
243
+ value: function getParentIndex(tileIndex) {
244
+ tileIndex.x = Math.floor(tileIndex.x / 2);
245
+ tileIndex.y = Math.floor(tileIndex.y / 2);
246
+ tileIndex.z -= 1;
247
+ return tileIndex;
248
+ }
249
+ }, {
250
+ key: "updateTileStates",
251
+ value: function updateTileStates() {
252
+ var refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;
253
+ var visibilities = new Array(this._cache.size);
254
+ var i = 0;
255
+
256
+ var _iterator3 = _createForOfIteratorHelper(this._cache.values()),
257
+ _step3;
258
+
259
+ try {
260
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
261
+ var tile = _step3.value;
262
+ visibilities[i++] = tile.isVisible;
263
+ tile.isSelected = false;
264
+ tile.isVisible = false;
265
+ }
266
+ } catch (err) {
267
+ _iterator3.e(err);
268
+ } finally {
269
+ _iterator3.f();
270
+ }
146
271
 
147
- return this._frameNumber;
148
- }
149
-
150
- getTileIndices({
151
- viewport,
152
- maxZoom,
153
- minZoom,
154
- zRange,
155
- modelMatrix,
156
- modelMatrixInverse
157
- }) {
158
- const {
159
- tileSize,
160
- extent,
161
- zoomOffset
162
- } = this.opts;
163
- return (0, _utils.getTileIndices)({
164
- viewport,
165
- maxZoom,
166
- minZoom,
167
- zRange,
168
- tileSize,
169
- extent,
170
- modelMatrix,
171
- modelMatrixInverse,
172
- zoomOffset
173
- });
174
- }
272
+ var _iterator4 = _createForOfIteratorHelper(this._selectedTiles),
273
+ _step4;
175
274
 
176
- getTileMetadata({
177
- x,
178
- y,
179
- z
180
- }) {
181
- const {
182
- tileSize
183
- } = this.opts;
184
- return {
185
- bbox: (0, _utils.tileToBoundingBox)(this._viewport, x, y, z, tileSize)
186
- };
187
- }
188
-
189
- getParentIndex(tileIndex) {
190
- tileIndex.x = Math.floor(tileIndex.x / 2);
191
- tileIndex.y = Math.floor(tileIndex.y / 2);
192
- tileIndex.z -= 1;
193
- return tileIndex;
194
- }
275
+ try {
276
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
277
+ var _tile = _step4.value;
278
+ _tile.isSelected = true;
279
+ _tile.isVisible = true;
280
+ }
281
+ } catch (err) {
282
+ _iterator4.e(err);
283
+ } finally {
284
+ _iterator4.f();
285
+ }
195
286
 
196
- updateTileStates() {
197
- this._updateTileStates(this.selectedTiles);
287
+ (typeof refinementStrategy === 'function' ? refinementStrategy : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));
288
+ i = 0;
198
289
 
199
- const {
200
- maxRequests
201
- } = this.opts;
202
- const abortCandidates = [];
203
- let ongoingRequestCount = 0;
204
- let changed = false;
290
+ var _iterator5 = _createForOfIteratorHelper(this._cache.values()),
291
+ _step5;
205
292
 
206
- for (const tile of this._cache.values()) {
207
- const isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);
293
+ try {
294
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
295
+ var _tile2 = _step5.value;
208
296
 
209
- if (tile.isVisible !== isVisible) {
210
- changed = true;
211
- tile.isVisible = isVisible;
297
+ if (visibilities[i++] !== _tile2.isVisible) {
298
+ return true;
299
+ }
300
+ }
301
+ } catch (err) {
302
+ _iterator5.e(err);
303
+ } finally {
304
+ _iterator5.f();
212
305
  }
213
306
 
214
- tile.isSelected = tile.state === TILE_STATE_SELECTED;
215
-
216
- if (tile.isLoading) {
217
- ongoingRequestCount++;
218
-
219
- if (!tile.isSelected) {
220
- abortCandidates.push(tile);
307
+ return false;
308
+ }
309
+ }, {
310
+ key: "_pruneRequests",
311
+ value: function _pruneRequests() {
312
+ var maxRequests = this.opts.maxRequests;
313
+ var abortCandidates = [];
314
+ var ongoingRequestCount = 0;
315
+
316
+ var _iterator6 = _createForOfIteratorHelper(this._cache.values()),
317
+ _step6;
318
+
319
+ try {
320
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
321
+ var _tile3 = _step6.value;
322
+
323
+ if (_tile3.isLoading) {
324
+ ongoingRequestCount++;
325
+
326
+ if (!_tile3.isSelected && !_tile3.isVisible) {
327
+ abortCandidates.push(_tile3);
328
+ }
329
+ }
221
330
  }
331
+ } catch (err) {
332
+ _iterator6.e(err);
333
+ } finally {
334
+ _iterator6.f();
222
335
  }
223
- }
224
336
 
225
- if (maxRequests > 0) {
226
- while (ongoingRequestCount > maxRequests && abortCandidates.length > 0) {
227
- const tile = abortCandidates.shift();
337
+ while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {
338
+ var tile = abortCandidates.shift();
228
339
  tile.abort();
229
340
  ongoingRequestCount--;
230
341
  }
231
342
  }
343
+ }, {
344
+ key: "_rebuildTree",
345
+ value: function _rebuildTree() {
346
+ var _cache = this._cache;
347
+
348
+ var _iterator7 = _createForOfIteratorHelper(_cache.values()),
349
+ _step7;
350
+
351
+ try {
352
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
353
+ var tile = _step7.value;
354
+ tile.parent = null;
355
+ tile.children.length = 0;
356
+ }
357
+ } catch (err) {
358
+ _iterator7.e(err);
359
+ } finally {
360
+ _iterator7.f();
361
+ }
232
362
 
233
- return changed;
234
- }
235
-
236
- _rebuildTree() {
237
- const {
238
- _cache
239
- } = this;
363
+ var _iterator8 = _createForOfIteratorHelper(_cache.values()),
364
+ _step8;
240
365
 
241
- for (const tile of _cache.values()) {
242
- tile.parent = null;
243
- tile.children.length = 0;
244
- }
366
+ try {
367
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
368
+ var _tile4 = _step8.value;
245
369
 
246
- for (const tile of _cache.values()) {
247
- const parent = this._getNearestAncestor(tile.x, tile.y, tile.z);
370
+ var parent = this._getNearestAncestor(_tile4.x, _tile4.y, _tile4.z);
248
371
 
249
- tile.parent = parent;
372
+ _tile4.parent = parent;
250
373
 
251
- if (parent) {
252
- parent.children.push(tile);
374
+ if (parent) {
375
+ parent.children.push(_tile4);
376
+ }
377
+ }
378
+ } catch (err) {
379
+ _iterator8.e(err);
380
+ } finally {
381
+ _iterator8.f();
253
382
  }
254
383
  }
255
- }
256
-
257
- _updateTileStates(selectedTiles) {
258
- const {
259
- _cache
260
- } = this;
261
- const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;
262
-
263
- for (const tile of _cache.values()) {
264
- tile.state = TILE_STATE_UNKNOWN;
265
- }
384
+ }, {
385
+ key: "_resizeCache",
386
+ value: function _resizeCache() {
387
+ var _cache = this._cache,
388
+ opts = this.opts;
389
+ var maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);
390
+ var maxCacheByteSize = opts.maxCacheByteSize || Infinity;
391
+ var overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;
392
+
393
+ if (overflown) {
394
+ var _iterator9 = _createForOfIteratorHelper(_cache),
395
+ _step9;
396
+
397
+ try {
398
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
399
+ var _step9$value = (0, _slicedToArray2.default)(_step9.value, 2),
400
+ tileId = _step9$value[0],
401
+ tile = _step9$value[1];
402
+
403
+ if (!tile.isVisible) {
404
+ this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;
405
+
406
+ _cache.delete(tileId);
407
+
408
+ this.opts.onTileUnload(tile);
409
+ }
410
+
411
+ if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {
412
+ break;
413
+ }
414
+ }
415
+ } catch (err) {
416
+ _iterator9.e(err);
417
+ } finally {
418
+ _iterator9.f();
419
+ }
266
420
 
267
- for (const tile of selectedTiles) {
268
- tile.state = TILE_STATE_SELECTED;
269
- }
421
+ this._rebuildTree();
270
422
 
271
- if (refinementStrategy === STRATEGY_NEVER) {
272
- return;
273
- }
423
+ this._dirty = true;
424
+ }
274
425
 
275
- for (const tile of selectedTiles) {
276
- getPlaceholderInAncestors(tile, refinementStrategy);
426
+ if (this._dirty) {
427
+ this._tiles = Array.from(this._cache.values()).sort(function (t1, t2) {
428
+ return t1.z - t2.z;
429
+ });
430
+ this._dirty = false;
431
+ }
277
432
  }
433
+ }, {
434
+ key: "_getTile",
435
+ value: function _getTile(_ref4, create) {
436
+ var x = _ref4.x,
437
+ y = _ref4.y,
438
+ z = _ref4.z;
439
+ var tileId = "".concat(x, ",").concat(y, ",").concat(z);
440
+
441
+ var tile = this._cache.get(tileId);
442
+
443
+ var needsReload = false;
444
+
445
+ if (!tile && create) {
446
+ tile = new _tile2dHeader.default({
447
+ x: x,
448
+ y: y,
449
+ z: z
450
+ });
451
+ Object.assign(tile, this.getTileMetadata(tile));
452
+ needsReload = true;
453
+
454
+ this._cache.set(tileId, tile);
455
+
456
+ this._dirty = true;
457
+ } else if (tile && tile.needsReload) {
458
+ needsReload = true;
459
+ }
278
460
 
279
- for (const tile of selectedTiles) {
280
- if (needsPlaceholder(tile)) {
281
- getPlaceholderInChildren(tile);
461
+ if (needsReload) {
462
+ tile.loadData({
463
+ getData: this.opts.getTileData,
464
+ requestScheduler: this._requestScheduler,
465
+ onLoad: this.onTileLoad,
466
+ onError: this.opts.onTileError
467
+ });
282
468
  }
469
+
470
+ return tile;
283
471
  }
284
- }
472
+ }, {
473
+ key: "_getNearestAncestor",
474
+ value: function _getNearestAncestor(x, y, z) {
475
+ var _this$_minZoom = this._minZoom,
476
+ _minZoom = _this$_minZoom === void 0 ? 0 : _this$_minZoom;
285
477
 
286
- _resizeCache() {
287
- const {
288
- _cache,
289
- opts
290
- } = this;
291
- const maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);
292
- const maxCacheByteSize = opts.maxCacheByteSize || Infinity;
293
- const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;
478
+ var index = {
479
+ x: x,
480
+ y: y,
481
+ z: z
482
+ };
294
483
 
295
- if (overflown) {
296
- for (const [tileId, tile] of _cache) {
297
- if (!tile.isVisible) {
298
- this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;
484
+ while (index.z > _minZoom) {
485
+ index = this.getParentIndex(index);
299
486
 
300
- _cache.delete(tileId);
487
+ var parent = this._getTile(index);
301
488
 
302
- this.opts.onTileUnload(tile);
303
- }
304
-
305
- if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {
306
- break;
489
+ if (parent) {
490
+ return parent;
307
491
  }
308
492
  }
309
493
 
310
- this._rebuildTree();
311
-
312
- this._dirty = true;
494
+ return null;
313
495
  }
496
+ }]);
497
+ return Tileset2D;
498
+ }();
499
+
500
+ exports.default = Tileset2D;
314
501
 
315
- if (this._dirty) {
316
- this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.z - t2.z);
317
- this._dirty = false;
502
+ function updateTileStateDefault(allTiles) {
503
+ var _iterator10 = _createForOfIteratorHelper(allTiles),
504
+ _step10;
505
+
506
+ try {
507
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
508
+ var tile = _step10.value;
509
+ tile.state = 0;
318
510
  }
511
+ } catch (err) {
512
+ _iterator10.e(err);
513
+ } finally {
514
+ _iterator10.f();
319
515
  }
320
516
 
321
- _getTile({
322
- x,
323
- y,
324
- z
325
- }, create) {
326
- const tileId = "".concat(x, ",").concat(y, ",").concat(z);
327
-
328
- let tile = this._cache.get(tileId);
517
+ var _iterator11 = _createForOfIteratorHelper(allTiles),
518
+ _step11;
329
519
 
330
- let needsReload = false;
520
+ try {
521
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
522
+ var _tile5 = _step11.value;
331
523
 
332
- if (!tile && create) {
333
- tile = new _tile2dHeader.default({
334
- x,
335
- y,
336
- z
337
- });
338
- Object.assign(tile, this.getTileMetadata(tile));
339
- needsReload = true;
524
+ if (_tile5.isSelected && !getPlaceholderInAncestors(_tile5)) {
525
+ getPlaceholderInChildren(_tile5);
526
+ }
527
+ }
528
+ } catch (err) {
529
+ _iterator11.e(err);
530
+ } finally {
531
+ _iterator11.f();
532
+ }
340
533
 
341
- this._cache.set(tileId, tile);
534
+ var _iterator12 = _createForOfIteratorHelper(allTiles),
535
+ _step12;
342
536
 
343
- this._dirty = true;
344
- } else if (tile && tile.needsReload) {
345
- needsReload = true;
537
+ try {
538
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
539
+ var _tile6 = _step12.value;
540
+ _tile6.isVisible = Boolean(_tile6.state & TILE_STATE_VISIBLE);
346
541
  }
542
+ } catch (err) {
543
+ _iterator12.e(err);
544
+ } finally {
545
+ _iterator12.f();
546
+ }
547
+ }
347
548
 
348
- if (needsReload) {
349
- tile.loadData({
350
- getData: this.opts.getTileData,
351
- requestScheduler: this._requestScheduler,
352
- onLoad: this.onTileLoad,
353
- onError: this.opts.onTileError
354
- });
355
- }
549
+ function updateTileStateReplace(allTiles) {
550
+ var _iterator13 = _createForOfIteratorHelper(allTiles),
551
+ _step13;
356
552
 
357
- return tile;
553
+ try {
554
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
555
+ var tile = _step13.value;
556
+ tile.state = 0;
557
+ }
558
+ } catch (err) {
559
+ _iterator13.e(err);
560
+ } finally {
561
+ _iterator13.f();
358
562
  }
359
563
 
360
- _getNearestAncestor(x, y, z) {
361
- const {
362
- _minZoom = 0
363
- } = this;
364
- let index = {
365
- x,
366
- y,
367
- z
368
- };
369
-
370
- while (index.z > _minZoom) {
371
- index = this.getParentIndex(index);
564
+ var _iterator14 = _createForOfIteratorHelper(allTiles),
565
+ _step14;
372
566
 
373
- const parent = this._getTile(index);
567
+ try {
568
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
569
+ var _tile7 = _step14.value;
374
570
 
375
- if (parent) {
376
- return parent;
571
+ if (_tile7.isSelected) {
572
+ getPlaceholderInAncestors(_tile7);
377
573
  }
378
574
  }
379
-
380
- return null;
575
+ } catch (err) {
576
+ _iterator14.e(err);
577
+ } finally {
578
+ _iterator14.f();
381
579
  }
382
580
 
581
+ var sortedTiles = Array.from(allTiles).sort(function (t1, t2) {
582
+ return t1.z - t2.z;
583
+ });
584
+
585
+ var _iterator15 = _createForOfIteratorHelper(sortedTiles),
586
+ _step15;
587
+
588
+ try {
589
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
590
+ var _tile8 = _step15.value;
591
+ _tile8.isVisible = Boolean(_tile8.state & TILE_STATE_VISIBLE);
592
+
593
+ if (_tile8.isVisible || _tile8.state & TILE_STATE_VISITED) {
594
+ var _iterator16 = _createForOfIteratorHelper(_tile8.children),
595
+ _step16;
596
+
597
+ try {
598
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
599
+ var child = _step16.value;
600
+ child.state = TILE_STATE_VISITED;
601
+ }
602
+ } catch (err) {
603
+ _iterator16.e(err);
604
+ } finally {
605
+ _iterator16.f();
606
+ }
607
+ } else if (_tile8.isSelected) {
608
+ getPlaceholderInChildren(_tile8);
609
+ }
610
+ }
611
+ } catch (err) {
612
+ _iterator15.e(err);
613
+ } finally {
614
+ _iterator15.f();
615
+ }
383
616
  }
384
617
 
385
- exports.default = Tileset2D;
386
-
387
- function needsPlaceholder(tile) {
388
- let t = tile;
389
-
390
- while (t) {
391
- if (t.state & TILE_STATE_VISIBLE === 0) {
618
+ function getPlaceholderInAncestors(tile) {
619
+ while (tile) {
620
+ if (tile.isLoaded || tile.content) {
621
+ tile.state |= TILE_STATE_VISIBLE;
392
622
  return true;
393
623
  }
394
624
 
395
- if (t.isLoaded) {
396
- return false;
397
- }
398
-
399
- t = t.parent;
625
+ tile = tile.parent;
400
626
  }
401
627
 
402
- return true;
628
+ return false;
403
629
  }
404
630
 
405
- function getPlaceholderInAncestors(tile, refinementStrategy) {
406
- let parent;
407
- let state = TILE_STATE_PLACEHOLDER;
631
+ function getPlaceholderInChildren(tile) {
632
+ var _iterator17 = _createForOfIteratorHelper(tile.children),
633
+ _step17;
408
634
 
409
- while (parent = tile.parent) {
410
- if (tile.isLoaded) {
411
- state = TILE_STATE_HIDDEN;
635
+ try {
636
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
637
+ var child = _step17.value;
412
638
 
413
- if (refinementStrategy === STRATEGY_DEFAULT) {
414
- return;
639
+ if (child.isLoaded || child.content) {
640
+ child.state |= TILE_STATE_VISIBLE;
641
+ } else {
642
+ getPlaceholderInChildren(child);
415
643
  }
416
644
  }
417
-
418
- parent.state = Math.max(parent.state, state);
419
- tile = parent;
420
- }
421
- }
422
-
423
- function getPlaceholderInChildren(tile) {
424
- for (const child of tile.children) {
425
- child.state = Math.max(child.state, TILE_STATE_PLACEHOLDER);
426
-
427
- if (!child.isLoaded) {
428
- getPlaceholderInChildren(child);
429
- }
645
+ } catch (err) {
646
+ _iterator17.e(err);
647
+ } finally {
648
+ _iterator17.f();
430
649
  }
431
650
  }
432
651
  //# sourceMappingURL=tileset-2d.js.map