@deck.gl/geo-layers 8.9.0-alpha.4 → 8.9.0-beta.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.
Files changed (134) hide show
  1. package/dist/dist.dev.js +25762 -66554
  2. package/dist/es5/h3-layers/h3-cluster-layer.js +2 -2
  3. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  4. package/dist/es5/index.js +4 -8
  5. package/dist/es5/index.js.map +1 -1
  6. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  7. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  8. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  9. package/dist/es5/mvt-layer/mvt-layer.js +9 -9
  10. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  11. package/dist/es5/terrain-layer/terrain-layer.js +5 -5
  12. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  13. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  14. package/dist/es5/tile-layer/tile-layer.js +9 -13
  15. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  16. package/dist/es5/tileset-2d/index.js +66 -0
  17. package/dist/es5/tileset-2d/index.js.map +1 -0
  18. package/dist/es5/tileset-2d/memoize.js +47 -0
  19. package/dist/es5/tileset-2d/memoize.js.map +1 -0
  20. package/dist/es5/{tile-layer → tileset-2d}/tile-2d-header.js +3 -5
  21. package/dist/es5/tileset-2d/tile-2d-header.js.map +1 -0
  22. package/dist/es5/{tile-layer → tileset-2d}/tile-2d-traversal.js +0 -0
  23. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -0
  24. package/dist/es5/{tile-layer → tileset-2d}/tileset-2d.js +166 -121
  25. package/dist/es5/tileset-2d/tileset-2d.js.map +1 -0
  26. package/dist/es5/{tile-layer → tileset-2d}/types.js +0 -0
  27. package/dist/es5/{tile-layer → tileset-2d}/types.js.map +0 -0
  28. package/dist/es5/{tile-layer → tileset-2d}/utils.js +15 -16
  29. package/dist/es5/tileset-2d/utils.js.map +1 -0
  30. package/dist/esm/h3-layers/h3-cluster-layer.js +1 -1
  31. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  32. package/dist/esm/index.js +3 -3
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
  35. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
  36. package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
  37. package/dist/esm/mvt-layer/mvt-layer.js +3 -3
  38. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  39. package/dist/esm/terrain-layer/terrain-layer.js +1 -1
  40. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  41. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  42. package/dist/esm/tile-layer/tile-layer.js +6 -3
  43. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  44. package/dist/esm/tileset-2d/index.js +4 -0
  45. package/dist/esm/tileset-2d/index.js.map +1 -0
  46. package/dist/esm/tileset-2d/memoize.js +40 -0
  47. package/dist/esm/tileset-2d/memoize.js.map +1 -0
  48. package/dist/esm/{tile-layer → tileset-2d}/tile-2d-header.js +2 -3
  49. package/dist/esm/tileset-2d/tile-2d-header.js.map +1 -0
  50. package/dist/esm/{tile-layer → tileset-2d}/tile-2d-traversal.js +0 -0
  51. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -0
  52. package/dist/esm/{tile-layer → tileset-2d}/tileset-2d.js +48 -16
  53. package/dist/esm/tileset-2d/tileset-2d.js.map +1 -0
  54. package/dist/esm/{tile-layer → tileset-2d}/types.js +0 -0
  55. package/dist/esm/{tile-layer → tileset-2d}/types.js.map +0 -0
  56. package/dist/esm/{tile-layer → tileset-2d}/utils.js +14 -18
  57. package/dist/esm/tileset-2d/utils.js.map +1 -0
  58. package/dist.min.js +187 -6
  59. package/package.json +11 -11
  60. package/src/h3-layers/h3-cluster-layer.ts +1 -1
  61. package/src/index.ts +9 -5
  62. package/src/mvt-layer/coordinate-transform.ts +1 -1
  63. package/src/mvt-layer/mvt-layer.ts +14 -7
  64. package/src/terrain-layer/terrain-layer.ts +2 -3
  65. package/src/tile-3d-layer/tile-3d-layer.ts +3 -0
  66. package/src/tile-layer/tile-layer.ts +13 -6
  67. package/src/tileset-2d/index.ts +24 -0
  68. package/src/tileset-2d/memoize.ts +45 -0
  69. package/src/{tile-layer → tileset-2d}/tile-2d-header.ts +4 -4
  70. package/src/{tile-layer → tileset-2d}/tile-2d-traversal.ts +3 -1
  71. package/src/{tile-layer → tileset-2d}/tileset-2d.ts +91 -39
  72. package/src/{tile-layer → tileset-2d}/types.ts +0 -0
  73. package/src/{tile-layer → tileset-2d}/utils.ts +20 -8
  74. package/typed/geo-cell-layer/GeoCellLayer.js +49 -0
  75. package/typed/great-circle-layer/great-circle-layer.js +29 -0
  76. package/typed/h3-layers/h3-cluster-layer.js +33 -0
  77. package/typed/h3-layers/h3-hexagon-layer.js +251 -0
  78. package/typed/index.d.ts +5 -5
  79. package/typed/index.d.ts.map +1 -1
  80. package/typed/index.js +33 -0
  81. package/typed/mesh-layer/mesh-layer-fragment.glsl.js +55 -0
  82. package/typed/mesh-layer/mesh-layer-vertex.glsl.js +80 -0
  83. package/typed/mesh-layer/mesh-layer.js +110 -0
  84. package/typed/mvt-layer/coordinate-transform.d.ts +1 -1
  85. package/typed/mvt-layer/coordinate-transform.d.ts.map +1 -1
  86. package/typed/mvt-layer/coordinate-transform.js +41 -0
  87. package/typed/mvt-layer/find-index-binary.js +96 -0
  88. package/typed/mvt-layer/mvt-layer.d.ts +2 -3
  89. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  90. package/typed/mvt-layer/mvt-layer.js +297 -0
  91. package/typed/quadkey-layer/quadkey-layer.js +18 -0
  92. package/typed/quadkey-layer/quadkey-utils.js +26 -0
  93. package/typed/s2-layer/s2-geometry.js +123 -0
  94. package/typed/s2-layer/s2-layer.js +37 -0
  95. package/typed/s2-layer/s2-utils.js +88 -0
  96. package/typed/terrain-layer/terrain-layer.d.ts +2 -2
  97. package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
  98. package/typed/terrain-layer/terrain-layer.js +226 -0
  99. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
  100. package/typed/tile-3d-layer/tile-3d-layer.js +294 -0
  101. package/typed/tile-layer/tile-2d-header.js +113 -0
  102. package/typed/tile-layer/tile-2d-traversal.js +181 -0
  103. package/typed/tile-layer/tile-layer.d.ts +3 -4
  104. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  105. package/typed/tile-layer/tile-layer.js +192 -0
  106. package/typed/tile-layer/tileset-2d.d.ts.map +1 -1
  107. package/typed/tile-layer/tileset-2d.js +399 -0
  108. package/typed/tile-layer/types.js +1 -0
  109. package/typed/tile-layer/utils.d.ts +1 -1
  110. package/typed/tile-layer/utils.d.ts.map +1 -1
  111. package/typed/tile-layer/utils.js +197 -0
  112. package/typed/tileset-2d/index.d.ts +6 -0
  113. package/typed/tileset-2d/index.d.ts.map +1 -0
  114. package/typed/tileset-2d/memoize.d.ts +7 -0
  115. package/typed/tileset-2d/memoize.d.ts.map +1 -0
  116. package/typed/tileset-2d/tile-2d-header.d.ts +39 -0
  117. package/typed/tileset-2d/tile-2d-header.d.ts.map +1 -0
  118. package/typed/tileset-2d/tile-2d-traversal.d.ts +4 -0
  119. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
  120. package/typed/tileset-2d/tileset-2d.d.ts +121 -0
  121. package/typed/tileset-2d/tileset-2d.d.ts.map +1 -0
  122. package/typed/tileset-2d/types.d.ts +30 -0
  123. package/typed/tileset-2d/types.d.ts.map +1 -0
  124. package/typed/tileset-2d/utils.d.ts +51 -0
  125. package/typed/tileset-2d/utils.d.ts.map +1 -0
  126. package/typed/trips-layer/trips-layer.js +92 -0
  127. package/dist/es5/tile-layer/tile-2d-header.js.map +0 -1
  128. package/dist/es5/tile-layer/tile-2d-traversal.js.map +0 -1
  129. package/dist/es5/tile-layer/tileset-2d.js.map +0 -1
  130. package/dist/es5/tile-layer/utils.js.map +0 -1
  131. package/dist/esm/tile-layer/tile-2d-header.js.map +0 -1
  132. package/dist/esm/tile-layer/tile-2d-traversal.js.map +0 -1
  133. package/dist/esm/tile-layer/tileset-2d.js.map +0 -1
  134. package/dist/esm/tile-layer/utils.js.map +0 -1
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.STRATEGY_DEFAULT = exports.STRATEGY_REPLACE = exports.STRATEGY_NEVER = void 0;
8
+ exports.Tileset2D = exports.DEFAULT_TILESET2D_PROPS = exports.STRATEGY_DEFAULT = exports.STRATEGY_REPLACE = exports.STRATEGY_NEVER = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
@@ -15,15 +15,15 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
15
15
 
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
 
18
- var _tile2dHeader = _interopRequireDefault(require("./tile-2d-header"));
19
-
20
- var _utils = require("./utils");
21
-
22
18
  var _loaderUtils = require("@loaders.gl/loader-utils");
23
19
 
24
20
  var _core = require("@math.gl/core");
25
21
 
26
- var _core2 = require("@deck.gl/core");
22
+ var _tile2dHeader = require("./tile-2d-header");
23
+
24
+ var _utils = require("./utils");
25
+
26
+ var _memoize = require("./memoize");
27
27
 
28
28
  var _STRATEGIES;
29
29
 
@@ -33,6 +33,10 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
33
33
 
34
34
  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; }
35
35
 
36
+ 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; }
37
+
38
+ 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; }
39
+
36
40
  var TILE_STATE_VISITED = 1;
37
41
  var TILE_STATE_VISIBLE = 2;
38
42
  var STRATEGY_NEVER = 'never';
@@ -43,6 +47,22 @@ var STRATEGY_DEFAULT = 'best-available';
43
47
  exports.STRATEGY_DEFAULT = STRATEGY_DEFAULT;
44
48
  var DEFAULT_CACHE_SCALE = 5;
45
49
  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);
50
+ var DEFAULT_TILESET2D_PROPS = {
51
+ extent: null,
52
+ tileSize: 512,
53
+ maxZoom: null,
54
+ minZoom: null,
55
+ maxCacheSize: null,
56
+ maxCacheByteSize: null,
57
+ refinementStrategy: 'best-available',
58
+ zRange: null,
59
+ maxRequests: 6,
60
+ zoomOffset: 0,
61
+ onTileLoad: function onTileLoad() {},
62
+ onTileUnload: function onTileUnload() {},
63
+ onTileError: function onTileError() {}
64
+ };
65
+ exports.DEFAULT_TILESET2D_PROPS = DEFAULT_TILESET2D_PROPS;
46
66
 
47
67
  var Tileset2D = function () {
48
68
  function Tileset2D(opts) {
@@ -64,11 +84,13 @@ var Tileset2D = function () {
64
84
  (0, _defineProperty2.default)(this, "_maxZoom", void 0);
65
85
  (0, _defineProperty2.default)(this, "_minZoom", void 0);
66
86
  (0, _defineProperty2.default)(this, "onTileLoad", void 0);
67
- (0, _defineProperty2.default)(this, "_getCullBounds", (0, _core2._memoize)(_utils.getCullBounds));
68
- this.opts = opts;
87
+ (0, _defineProperty2.default)(this, "_getCullBounds", (0, _memoize.memoize)(_utils.getCullBounds));
88
+ this.opts = _objectSpread(_objectSpread({}, DEFAULT_TILESET2D_PROPS), opts);
69
89
 
70
90
  this.onTileLoad = function (tile) {
71
- _this.opts.onTileLoad(tile);
91
+ var _this$opts$onTileLoad, _this$opts;
92
+
93
+ (_this$opts$onTileLoad = (_this$opts = _this.opts).onTileLoad) === null || _this$opts$onTileLoad === void 0 ? void 0 : _this$opts$onTileLoad.call(_this$opts, tile);
72
94
 
73
95
  if (_this.opts.maxCacheByteSize) {
74
96
  _this._cacheByteSize += tile.byteLength;
@@ -79,7 +101,7 @@ var Tileset2D = function () {
79
101
 
80
102
  this._requestScheduler = new _loaderUtils.RequestScheduler({
81
103
  maxRequests: opts.maxRequests,
82
- throttleRequests: opts.maxRequests > 0
104
+ throttleRequests: Boolean(opts.maxRequests && opts.maxRequests > 0)
83
105
  });
84
106
  this._cache = new Map();
85
107
  this._tiles = [];
@@ -242,26 +264,46 @@ var Tileset2D = function () {
242
264
  }
243
265
 
244
266
  if (cullRect && this._viewport) {
245
- var _getCullBounds = (0, _utils.getCullBounds)({
267
+ var boundsArr = this._getCullBounds({
246
268
  viewport: this._viewport,
247
269
  z: this._zRange,
248
270
  cullRect: cullRect
249
- }),
250
- _getCullBounds2 = (0, _slicedToArray2.default)(_getCullBounds, 4),
251
- minX = _getCullBounds2[0],
252
- minY = _getCullBounds2[1],
253
- maxX = _getCullBounds2[2],
254
- maxY = _getCullBounds2[3];
271
+ });
255
272
 
256
273
  var bbox = tile.bbox;
257
274
 
258
- if ('west' in bbox) {
259
- return bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;
275
+ var _iterator3 = _createForOfIteratorHelper(boundsArr),
276
+ _step3;
277
+
278
+ try {
279
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
280
+ var _step3$value = (0, _slicedToArray2.default)(_step3.value, 4),
281
+ minX = _step3$value[0],
282
+ minY = _step3$value[1],
283
+ maxX = _step3$value[2],
284
+ maxY = _step3$value[3];
285
+
286
+ var overlaps = void 0;
287
+
288
+ if ('west' in bbox) {
289
+ overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;
290
+ } else {
291
+ var y0 = Math.min(bbox.top, bbox.bottom);
292
+ var y1 = Math.max(bbox.top, bbox.bottom);
293
+ overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;
294
+ }
295
+
296
+ if (overlaps) {
297
+ return true;
298
+ }
299
+ }
300
+ } catch (err) {
301
+ _iterator3.e(err);
302
+ } finally {
303
+ _iterator3.f();
260
304
  }
261
305
 
262
- var y0 = Math.min(bbox.top, bbox.bottom);
263
- var y1 = Math.max(bbox.top, bbox.bottom);
264
- return bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;
306
+ return false;
265
307
  }
266
308
 
267
309
  return true;
@@ -275,10 +317,10 @@ var Tileset2D = function () {
275
317
  zRange = _ref2.zRange,
276
318
  modelMatrix = _ref2.modelMatrix,
277
319
  modelMatrixInverse = _ref2.modelMatrixInverse;
278
- var _this$opts = this.opts,
279
- tileSize = _this$opts.tileSize,
280
- extent = _this$opts.extent,
281
- zoomOffset = _this$opts.zoomOffset;
320
+ var _this$opts2 = this.opts,
321
+ tileSize = _this$opts2.tileSize,
322
+ extent = _this$opts2.extent,
323
+ zoomOffset = _this$opts2.zoomOffset;
282
324
  return (0, _utils.getTileIndices)({
283
325
  viewport: viewport,
284
326
  maxZoom: maxZoom,
@@ -328,55 +370,55 @@ var Tileset2D = function () {
328
370
  var visibilities = new Array(this._cache.size);
329
371
  var i = 0;
330
372
 
331
- var _iterator3 = _createForOfIteratorHelper(this._cache.values()),
332
- _step3;
373
+ var _iterator4 = _createForOfIteratorHelper(this._cache.values()),
374
+ _step4;
333
375
 
334
376
  try {
335
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
336
- var _tile3 = _step3.value;
377
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
378
+ var _tile3 = _step4.value;
337
379
  visibilities[i++] = _tile3.isVisible;
338
380
  _tile3.isSelected = false;
339
381
  _tile3.isVisible = false;
340
382
  }
341
383
  } catch (err) {
342
- _iterator3.e(err);
384
+ _iterator4.e(err);
343
385
  } finally {
344
- _iterator3.f();
386
+ _iterator4.f();
345
387
  }
346
388
 
347
- var _iterator4 = _createForOfIteratorHelper(this._selectedTiles),
348
- _step4;
389
+ var _iterator5 = _createForOfIteratorHelper(this._selectedTiles),
390
+ _step5;
349
391
 
350
392
  try {
351
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
352
- var _tile4 = _step4.value;
393
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
394
+ var _tile4 = _step5.value;
353
395
  _tile4.isSelected = true;
354
396
  _tile4.isVisible = true;
355
397
  }
356
398
  } catch (err) {
357
- _iterator4.e(err);
399
+ _iterator5.e(err);
358
400
  } finally {
359
- _iterator4.f();
401
+ _iterator5.f();
360
402
  }
361
403
 
362
404
  (typeof refinementStrategy === 'function' ? refinementStrategy : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));
363
405
  i = 0;
364
406
 
365
- var _iterator5 = _createForOfIteratorHelper(this._cache.values()),
366
- _step5;
407
+ var _iterator6 = _createForOfIteratorHelper(this._cache.values()),
408
+ _step6;
367
409
 
368
410
  try {
369
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
370
- var _tile5 = _step5.value;
411
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
412
+ var _tile5 = _step6.value;
371
413
 
372
414
  if (visibilities[i++] !== _tile5.isVisible) {
373
415
  return true;
374
416
  }
375
417
  }
376
418
  } catch (err) {
377
- _iterator5.e(err);
419
+ _iterator6.e(err);
378
420
  } finally {
379
- _iterator5.f();
421
+ _iterator6.f();
380
422
  }
381
423
 
382
424
  return false;
@@ -384,16 +426,17 @@ var Tileset2D = function () {
384
426
  }, {
385
427
  key: "_pruneRequests",
386
428
  value: function _pruneRequests() {
387
- var maxRequests = this.opts.maxRequests;
429
+ var _this$opts$maxRequest = this.opts.maxRequests,
430
+ maxRequests = _this$opts$maxRequest === void 0 ? 0 : _this$opts$maxRequest;
388
431
  var abortCandidates = [];
389
432
  var ongoingRequestCount = 0;
390
433
 
391
- var _iterator6 = _createForOfIteratorHelper(this._cache.values()),
392
- _step6;
434
+ var _iterator7 = _createForOfIteratorHelper(this._cache.values()),
435
+ _step7;
393
436
 
394
437
  try {
395
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
396
- var _tile7 = _step6.value;
438
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
439
+ var _tile7 = _step7.value;
397
440
 
398
441
  if (_tile7.isLoading) {
399
442
  ongoingRequestCount++;
@@ -404,9 +447,9 @@ var Tileset2D = function () {
404
447
  }
405
448
  }
406
449
  } catch (err) {
407
- _iterator6.e(err);
450
+ _iterator7.e(err);
408
451
  } finally {
409
- _iterator6.f();
452
+ _iterator7.f();
410
453
  }
411
454
 
412
455
  while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {
@@ -422,12 +465,12 @@ var Tileset2D = function () {
422
465
  value: function _rebuildTree() {
423
466
  var _cache = this._cache;
424
467
 
425
- var _iterator7 = _createForOfIteratorHelper(_cache.values()),
426
- _step7;
468
+ var _iterator8 = _createForOfIteratorHelper(_cache.values()),
469
+ _step8;
427
470
 
428
471
  try {
429
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
430
- var _tile8 = _step7.value;
472
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
473
+ var _tile8 = _step8.value;
431
474
  _tile8.parent = null;
432
475
 
433
476
  if (_tile8.children) {
@@ -435,17 +478,17 @@ var Tileset2D = function () {
435
478
  }
436
479
  }
437
480
  } catch (err) {
438
- _iterator7.e(err);
481
+ _iterator8.e(err);
439
482
  } finally {
440
- _iterator7.f();
483
+ _iterator8.f();
441
484
  }
442
485
 
443
- var _iterator8 = _createForOfIteratorHelper(_cache.values()),
444
- _step8;
486
+ var _iterator9 = _createForOfIteratorHelper(_cache.values()),
487
+ _step9;
445
488
 
446
489
  try {
447
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
448
- var _tile9 = _step8.value;
490
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
491
+ var _tile9 = _step9.value;
449
492
 
450
493
  var parent = this._getNearestAncestor(_tile9);
451
494
 
@@ -456,9 +499,9 @@ var Tileset2D = function () {
456
499
  }
457
500
  }
458
501
  } catch (err) {
459
- _iterator8.e(err);
502
+ _iterator9.e(err);
460
503
  } finally {
461
- _iterator8.f();
504
+ _iterator9.f();
462
505
  }
463
506
  }
464
507
  }, {
@@ -471,21 +514,23 @@ var Tileset2D = function () {
471
514
  var overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;
472
515
 
473
516
  if (overflown) {
474
- var _iterator9 = _createForOfIteratorHelper(_cache),
475
- _step9;
517
+ var _iterator10 = _createForOfIteratorHelper(_cache),
518
+ _step10;
476
519
 
477
520
  try {
478
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
479
- var _step9$value = (0, _slicedToArray2.default)(_step9.value, 2),
480
- id = _step9$value[0],
481
- _tile10 = _step9$value[1];
521
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
522
+ var _step10$value = (0, _slicedToArray2.default)(_step10.value, 2),
523
+ id = _step10$value[0],
524
+ _tile10 = _step10$value[1];
525
+
526
+ if (!_tile10.isVisible && !_tile10.isSelected) {
527
+ var _this$opts$onTileUnlo, _this$opts3;
482
528
 
483
- if (!_tile10.isVisible) {
484
529
  this._cacheByteSize -= opts.maxCacheByteSize ? _tile10.byteLength : 0;
485
530
 
486
531
  _cache.delete(id);
487
532
 
488
- this.opts.onTileUnload(_tile10);
533
+ (_this$opts$onTileUnlo = (_this$opts3 = this.opts).onTileUnload) === null || _this$opts$onTileUnlo === void 0 ? void 0 : _this$opts$onTileUnlo.call(_this$opts3, _tile10);
489
534
  }
490
535
 
491
536
  if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {
@@ -493,9 +538,9 @@ var Tileset2D = function () {
493
538
  }
494
539
  }
495
540
  } catch (err) {
496
- _iterator9.e(err);
541
+ _iterator10.e(err);
497
542
  } finally {
498
- _iterator9.f();
543
+ _iterator10.f();
499
544
  }
500
545
 
501
546
  this._rebuildTree();
@@ -520,7 +565,7 @@ var Tileset2D = function () {
520
565
  var needsReload = false;
521
566
 
522
567
  if (!tile && create) {
523
- tile = new _tile2dHeader.default(index);
568
+ tile = new _tile2dHeader.Tile2DHeader(index);
524
569
  Object.assign(tile, this.getTileMetadata(tile.index));
525
570
  Object.assign(tile, {
526
571
  id: id,
@@ -570,33 +615,16 @@ var Tileset2D = function () {
570
615
  return Tileset2D;
571
616
  }();
572
617
 
573
- exports.default = Tileset2D;
618
+ exports.Tileset2D = Tileset2D;
574
619
 
575
620
  function updateTileStateDefault(allTiles) {
576
- var _iterator10 = _createForOfIteratorHelper(allTiles),
577
- _step10;
578
-
579
- try {
580
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
581
- var _tile11 = _step10.value;
582
- _tile11.state = 0;
583
- }
584
- } catch (err) {
585
- _iterator10.e(err);
586
- } finally {
587
- _iterator10.f();
588
- }
589
-
590
621
  var _iterator11 = _createForOfIteratorHelper(allTiles),
591
622
  _step11;
592
623
 
593
624
  try {
594
625
  for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
595
- var _tile12 = _step11.value;
596
-
597
- if (_tile12.isSelected && !getPlaceholderInAncestors(_tile12)) {
598
- getPlaceholderInChildren(_tile12);
599
- }
626
+ var _tile11 = _step11.value;
627
+ _tile11.state = 0;
600
628
  }
601
629
  } catch (err) {
602
630
  _iterator11.e(err);
@@ -609,82 +637,99 @@ function updateTileStateDefault(allTiles) {
609
637
 
610
638
  try {
611
639
  for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
612
- var _tile13 = _step12.value;
613
- _tile13.isVisible = Boolean(_tile13.state & TILE_STATE_VISIBLE);
640
+ var _tile12 = _step12.value;
641
+
642
+ if (_tile12.isSelected && !getPlaceholderInAncestors(_tile12)) {
643
+ getPlaceholderInChildren(_tile12);
644
+ }
614
645
  }
615
646
  } catch (err) {
616
647
  _iterator12.e(err);
617
648
  } finally {
618
649
  _iterator12.f();
619
650
  }
620
- }
621
651
 
622
- function updateTileStateReplace(allTiles) {
623
652
  var _iterator13 = _createForOfIteratorHelper(allTiles),
624
653
  _step13;
625
654
 
626
655
  try {
627
656
  for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
628
- var _tile14 = _step13.value;
629
- _tile14.state = 0;
657
+ var _tile13 = _step13.value;
658
+ _tile13.isVisible = Boolean(_tile13.state & TILE_STATE_VISIBLE);
630
659
  }
631
660
  } catch (err) {
632
661
  _iterator13.e(err);
633
662
  } finally {
634
663
  _iterator13.f();
635
664
  }
665
+ }
636
666
 
667
+ function updateTileStateReplace(allTiles) {
637
668
  var _iterator14 = _createForOfIteratorHelper(allTiles),
638
669
  _step14;
639
670
 
640
671
  try {
641
672
  for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
642
- var _tile15 = _step14.value;
673
+ var _tile14 = _step14.value;
674
+ _tile14.state = 0;
675
+ }
676
+ } catch (err) {
677
+ _iterator14.e(err);
678
+ } finally {
679
+ _iterator14.f();
680
+ }
681
+
682
+ var _iterator15 = _createForOfIteratorHelper(allTiles),
683
+ _step15;
684
+
685
+ try {
686
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
687
+ var _tile15 = _step15.value;
643
688
 
644
689
  if (_tile15.isSelected) {
645
690
  getPlaceholderInAncestors(_tile15);
646
691
  }
647
692
  }
648
693
  } catch (err) {
649
- _iterator14.e(err);
694
+ _iterator15.e(err);
650
695
  } finally {
651
- _iterator14.f();
696
+ _iterator15.f();
652
697
  }
653
698
 
654
699
  var sortedTiles = Array.from(allTiles).sort(function (t1, t2) {
655
700
  return t1.zoom - t2.zoom;
656
701
  });
657
702
 
658
- var _iterator15 = _createForOfIteratorHelper(sortedTiles),
659
- _step15;
703
+ var _iterator16 = _createForOfIteratorHelper(sortedTiles),
704
+ _step16;
660
705
 
661
706
  try {
662
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
663
- var _tile16 = _step15.value;
707
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
708
+ var _tile16 = _step16.value;
664
709
  _tile16.isVisible = Boolean(_tile16.state & TILE_STATE_VISIBLE);
665
710
 
666
711
  if (_tile16.children && (_tile16.isVisible || _tile16.state & TILE_STATE_VISITED)) {
667
- var _iterator16 = _createForOfIteratorHelper(_tile16.children),
668
- _step16;
712
+ var _iterator17 = _createForOfIteratorHelper(_tile16.children),
713
+ _step17;
669
714
 
670
715
  try {
671
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
672
- var child = _step16.value;
716
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
717
+ var child = _step17.value;
673
718
  child.state = TILE_STATE_VISITED;
674
719
  }
675
720
  } catch (err) {
676
- _iterator16.e(err);
721
+ _iterator17.e(err);
677
722
  } finally {
678
- _iterator16.f();
723
+ _iterator17.f();
679
724
  }
680
725
  } else if (_tile16.isSelected) {
681
726
  getPlaceholderInChildren(_tile16);
682
727
  }
683
728
  }
684
729
  } catch (err) {
685
- _iterator15.e(err);
730
+ _iterator16.e(err);
686
731
  } finally {
687
- _iterator15.f();
732
+ _iterator16.f();
688
733
  }
689
734
  }
690
735
 
@@ -704,12 +749,12 @@ function getPlaceholderInAncestors(startTile) {
704
749
  }
705
750
 
706
751
  function getPlaceholderInChildren(tile) {
707
- var _iterator17 = _createForOfIteratorHelper(tile.children),
708
- _step17;
752
+ var _iterator18 = _createForOfIteratorHelper(tile.children),
753
+ _step18;
709
754
 
710
755
  try {
711
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
712
- var child = _step17.value;
756
+ for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
757
+ var child = _step18.value;
713
758
 
714
759
  if (child.isLoaded || child.content) {
715
760
  child.state |= TILE_STATE_VISIBLE;
@@ -718,9 +763,9 @@ function getPlaceholderInChildren(tile) {
718
763
  }
719
764
  }
720
765
  } catch (err) {
721
- _iterator17.e(err);
766
+ _iterator18.e(err);
722
767
  } finally {
723
- _iterator17.f();
768
+ _iterator18.f();
724
769
  }
725
770
  }
726
771
  //# sourceMappingURL=tileset-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/tileset-2d/tileset-2d.ts"],"names":["TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","DEFAULT_TILESET2D_PROPS","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","onTileLoad","onTileUnload","onTileError","Tileset2D","opts","getCullBounds","tile","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","throttleRequests","Boolean","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","Matrix4","_modelMatrixInverse","setOptions","every","isLoaded","some","needsReload","Object","assign","Number","isFinite","_maxZoom","Math","floor","_minZoom","ceil","values","isLoading","abort","clear","keys","id","get","includes","delete","setNeedsReload","viewport","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","_zRange","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","cullRect","isVisible","boundsArr","_getCullBounds","z","bbox","minX","minY","maxX","maxY","overlaps","west","east","south","north","y0","min","top","bottom","y1","max","left","right","x","y","visibilities","Array","size","i","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","Infinity","selectedTiles","overflown","sort","t1","t2","zoom","create","getTileId","Tile2DHeader","getTileMetadata","getTileZoom","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","getParentIndex","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","sortedTiles","child","startTile","content"],"mappings":"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","sourcesContent":["import {Viewport} from '@deck.gl/core';\n\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4, equals} from '@math.gl/core';\n\nimport {Tile2DHeader} from './tile-2d-header';\n\nimport {getTileIndices, tileToBoundingBox, getCullBounds} from './utils';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLoadProps} from './types';\nimport {memoize} from './memoize';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | 'never'\n | 'no-overlap'\n | 'best-available'\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps<DataT = any> = {\n /** `getTileData` is called to retrieve the data of each tile. */\n getTileData: (props: TileLoadProps) => Promise<DataT> | DataT;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n /** The max zoom level of the layer's data. @default null */\n maxZoom?: number | null;\n /** The min zoom level of the layer's data. @default 0 */\n minZoom?: number | null;\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n /** The maximum memory used for caching tiles. @default null */\n maxCacheByteSize?: number | null;\n /** How the tile layer refines the visibility of tiles. @default 'best-available' */\n refinementStrategy?: RefinementStrategy;\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n /** The maximum number of concurrent getTileData calls. @default 6 */\n maxRequests?: number;\n /** Changes the zoom level at which the tiles are fetched. Needs to be an integer. @default 0 */\n zoomOffset?: number;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile: Tile2DHeader<DataT>) => void;\n\n // onTileLoad: (tile: Tile2DHeader) => void;\n // onTileUnload: (tile: Tile2DHeader) => void;\n // onTileError: (error: any, tile: Tile2DHeader) => void;\n /** Called when all tiles in the current viewport are loaded. */\n // sonViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n};\n\nexport const DEFAULT_TILESET2D_PROPS: Omit<Required<Tileset2DProps>, 'getTileData'> = {\n extent: null,\n tileSize: 512,\n\n maxZoom: null,\n minZoom: null,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: 'best-available',\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0,\n\n // onTileLoad: (tile: Tile2DHeader) => void, // onTileUnload: (tile: Tile2DHeader) => void, // onTileError: (error: any, tile: Tile2DHeader) => void, /** Called when all tiles in the current viewport are loaded. */\n // onViewportLoad: ((tiles: Tile2DHeader<DataT>[]) => void) | null,\n onTileLoad: () => {},\n onTileUnload: () => {},\n onTileError: () => {}\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport class Tileset2D {\n private opts: Required<Tileset2DProps>;\n private _requestScheduler: RequestScheduler;\n private _cache: Map<string, Tile2DHeader>;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _zRange?: ZRange;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = {...DEFAULT_TILESET2D_PROPS, ...opts};\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad?.(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: Boolean(opts.maxRequests && opts.maxRequests > 0)\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom as number);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom as number);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange; modelMatrix?: Matrix4} = {}\n ): number {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (\n !this._viewport ||\n !viewport.equals(this._viewport) ||\n !equals(this._zRange, zRange) ||\n isModelMatrixNew\n ) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n this._zRange = zRange;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index, true));\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n isTileVisible(\n tile: Tile2DHeader,\n cullRect?: {x: number; y: number; width: number; height: number}\n ): boolean {\n if (!tile.isVisible) {\n return false;\n }\n\n if (cullRect && this._viewport) {\n const boundsArr = this._getCullBounds({\n viewport: this._viewport,\n z: this._zRange,\n cullRect\n });\n const {bbox} = tile;\n for (const [minX, minY, maxX, maxY] of boundsArr) {\n let overlaps;\n if ('west' in bbox) {\n overlaps = bbox.west < maxX && bbox.east > minX && bbox.south < maxY && bbox.north > minY;\n } else {\n // top/bottom could be swapped depending on the indexing system\n const y0 = Math.min(bbox.top, bbox.bottom);\n const y1 = Math.max(bbox.top, bbox.bottom);\n overlaps = bbox.left < maxX && bbox.right > minX && y0 < maxY && y1 > minY;\n }\n if (overlaps) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex): Record<string, any> {\n const {tileSize} = this.opts;\n // @ts-expect-error\n return {bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n private updateTileStates() {\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n // @ts-expect-error called only when _selectedTiles is already defined\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n private _getCullBounds = memoize(getCullBounds);\n\n private _pruneRequests(): void {\n const {maxRequests = 0} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n private _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n private _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n // @ts-expect-error called only when selectedTiles is initialized\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible && !tile.isSelected) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload?.(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n private _getTile(index: TileIndex, create: true): Tile2DHeader;\n private _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n private _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
File without changes
File without changes