@loaders.gl/tiles 3.4.0-alpha.2 → 3.4.0-alpha.3

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 (88) hide show
  1. package/dist/dist.min.js +271 -18
  2. package/dist/es5/constants.js +0 -2
  3. package/dist/es5/constants.js.map +1 -1
  4. package/dist/es5/index.js.map +1 -1
  5. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -2
  6. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  7. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js +3 -8
  8. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  9. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js +4 -14
  10. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -1
  11. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js +19 -25
  12. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -1
  13. package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -1
  14. package/dist/es5/tileset/helpers/bounding-volume.js +87 -6
  15. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  16. package/dist/es5/tileset/helpers/frame-state.js +4 -14
  17. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  18. package/dist/es5/tileset/helpers/i3s-lod.js +0 -5
  19. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  20. package/dist/es5/tileset/helpers/tiles-3d-lod.js +0 -7
  21. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  22. package/dist/es5/tileset/helpers/transform-utils.js +0 -7
  23. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  24. package/dist/es5/tileset/helpers/zoom.js +0 -4
  25. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  26. package/dist/es5/tileset/tile-3d.js +98 -166
  27. package/dist/es5/tileset/tile-3d.js.map +1 -1
  28. package/dist/es5/tileset/tileset-3d.js +86 -142
  29. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  30. package/dist/es5/tileset/tileset-cache.js +0 -3
  31. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  32. package/dist/es5/tileset/tileset-traverser.js +12 -51
  33. package/dist/es5/tileset/tileset-traverser.js.map +1 -1
  34. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  35. package/dist/es5/utils/doubly-linked-list.js +3 -11
  36. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  37. package/dist/es5/utils/managed-array.js +10 -30
  38. package/dist/es5/utils/managed-array.js.map +1 -1
  39. package/dist/esm/bundle.js +0 -1
  40. package/dist/esm/bundle.js.map +1 -1
  41. package/dist/esm/constants.js +0 -5
  42. package/dist/esm/constants.js.map +1 -1
  43. package/dist/esm/index.js +0 -2
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -4
  46. package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  47. package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js +0 -2
  48. package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  49. package/dist/esm/tileset/format-i3s/i3s-tile-manager.js +0 -6
  50. package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -1
  51. package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js +0 -3
  52. package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -1
  53. package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -1
  54. package/dist/esm/tileset/helpers/bounding-volume.js +81 -8
  55. package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -1
  56. package/dist/esm/tileset/helpers/frame-state.js +3 -13
  57. package/dist/esm/tileset/helpers/frame-state.js.map +1 -1
  58. package/dist/esm/tileset/helpers/i3s-lod.js +0 -6
  59. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  60. package/dist/esm/tileset/helpers/tiles-3d-lod.js +0 -8
  61. package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +1 -1
  62. package/dist/esm/tileset/helpers/transform-utils.js +0 -8
  63. package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
  64. package/dist/esm/tileset/helpers/zoom.js +0 -5
  65. package/dist/esm/tileset/helpers/zoom.js.map +1 -1
  66. package/dist/esm/tileset/tile-3d.js +8 -52
  67. package/dist/esm/tileset/tile-3d.js.map +1 -1
  68. package/dist/esm/tileset/tileset-3d.js +0 -38
  69. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  70. package/dist/esm/tileset/tileset-cache.js +0 -3
  71. package/dist/esm/tileset/tileset-cache.js.map +1 -1
  72. package/dist/esm/tileset/tileset-traverser.js +0 -27
  73. package/dist/esm/tileset/tileset-traverser.js.map +1 -1
  74. package/dist/esm/utils/doubly-linked-list-node.js +0 -1
  75. package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
  76. package/dist/esm/utils/doubly-linked-list.js +0 -7
  77. package/dist/esm/utils/doubly-linked-list.js.map +1 -1
  78. package/dist/esm/utils/managed-array.js +0 -12
  79. package/dist/esm/utils/managed-array.js.map +1 -1
  80. package/dist/tileset/helpers/bounding-volume.d.ts +10 -0
  81. package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -1
  82. package/dist/tileset/helpers/bounding-volume.js +117 -1
  83. package/dist/tileset/tile-3d.d.ts +7 -0
  84. package/dist/tileset/tile-3d.d.ts.map +1 -1
  85. package/dist/tileset/tile-3d.js +10 -0
  86. package/package.json +4 -4
  87. package/src/tileset/helpers/bounding-volume.ts +136 -0
  88. package/src/tileset/tile-3d.ts +18 -1
package/dist/dist.min.js CHANGED
@@ -2883,8 +2883,54 @@
2883
2883
  }
2884
2884
  });
2885
2885
 
2886
+ // ../../node_modules/@babel/runtime/helpers/esm/typeof.js
2887
+ function _typeof(obj) {
2888
+ "@babel/helpers - typeof";
2889
+ return _typeof = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(obj2) {
2890
+ return typeof obj2;
2891
+ } : function(obj2) {
2892
+ return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
2893
+ }, _typeof(obj);
2894
+ }
2895
+ var init_typeof = __esm({
2896
+ "../../node_modules/@babel/runtime/helpers/esm/typeof.js"() {
2897
+ }
2898
+ });
2899
+
2900
+ // ../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js
2901
+ function _toPrimitive(input, hint) {
2902
+ if (_typeof(input) !== "object" || input === null)
2903
+ return input;
2904
+ var prim = input[Symbol.toPrimitive];
2905
+ if (prim !== void 0) {
2906
+ var res = prim.call(input, hint || "default");
2907
+ if (_typeof(res) !== "object")
2908
+ return res;
2909
+ throw new TypeError("@@toPrimitive must return a primitive value.");
2910
+ }
2911
+ return (hint === "string" ? String : Number)(input);
2912
+ }
2913
+ var init_toPrimitive = __esm({
2914
+ "../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js"() {
2915
+ init_typeof();
2916
+ }
2917
+ });
2918
+
2919
+ // ../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
2920
+ function _toPropertyKey(arg) {
2921
+ var key = _toPrimitive(arg, "string");
2922
+ return _typeof(key) === "symbol" ? key : String(key);
2923
+ }
2924
+ var init_toPropertyKey = __esm({
2925
+ "../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"() {
2926
+ init_typeof();
2927
+ init_toPrimitive();
2928
+ }
2929
+ });
2930
+
2886
2931
  // ../../node_modules/@babel/runtime/helpers/esm/defineProperty.js
2887
2932
  function _defineProperty(obj, key, value) {
2933
+ key = _toPropertyKey(key);
2888
2934
  if (key in obj) {
2889
2935
  Object.defineProperty(obj, key, {
2890
2936
  value,
@@ -2899,6 +2945,7 @@
2899
2945
  }
2900
2946
  var init_defineProperty = __esm({
2901
2947
  "../../node_modules/@babel/runtime/helpers/esm/defineProperty.js"() {
2948
+ init_toPropertyKey();
2902
2949
  }
2903
2950
  });
2904
2951
 
@@ -3655,8 +3702,8 @@
3655
3702
  };
3656
3703
  this.name = jobName;
3657
3704
  this.workerThread = workerThread;
3658
- this.result = new Promise((resolve, reject) => {
3659
- this._resolve = resolve;
3705
+ this.result = new Promise((resolve2, reject) => {
3706
+ this._resolve = resolve2;
3660
3707
  this._reject = reject;
3661
3708
  });
3662
3709
  }
@@ -4462,8 +4509,8 @@
4462
4509
  return this.requestMap.get(handle);
4463
4510
  }
4464
4511
  const request = { handle, priority: 0, getPriority };
4465
- const promise = new Promise((resolve) => {
4466
- request.resolve = resolve;
4512
+ const promise = new Promise((resolve2) => {
4513
+ request.resolve = resolve2;
4467
4514
  return request;
4468
4515
  });
4469
4516
  this.requestQueue.push(request);
@@ -4472,7 +4519,7 @@
4472
4519
  return promise;
4473
4520
  }
4474
4521
  _issueRequest(request) {
4475
- const { handle, resolve } = request;
4522
+ const { handle, resolve: resolve2 } = request;
4476
4523
  let isDone = false;
4477
4524
  const done = () => {
4478
4525
  if (!isDone) {
@@ -4483,7 +4530,7 @@
4483
4530
  }
4484
4531
  };
4485
4532
  this.activeRequestCount++;
4486
- return resolve ? resolve({ done }) : Promise.resolve({ done });
4533
+ return resolve2 ? resolve2({ done }) : Promise.resolve({ done });
4487
4534
  }
4488
4535
  _issueNewRequests() {
4489
4536
  if (!this.deferredUpdate) {
@@ -4591,19 +4638,33 @@
4591
4638
  }
4592
4639
  });
4593
4640
 
4641
+ // ../loader-utils/src/lib/path-utils/get-cwd.ts
4642
+ function getCWD() {
4643
+ if (typeof process !== "undefined" && typeof process.cwd !== "undefined") {
4644
+ return process.cwd();
4645
+ }
4646
+ const pathname = window.location?.pathname;
4647
+ return pathname?.slice(0, pathname.lastIndexOf("/") + 1) || "";
4648
+ }
4649
+ var init_get_cwd = __esm({
4650
+ "../loader-utils/src/lib/path-utils/get-cwd.ts"() {
4651
+ }
4652
+ });
4653
+
4594
4654
  // ../loader-utils/src/lib/path-utils/path.ts
4595
4655
  var path_exports = {};
4596
4656
  __export(path_exports, {
4597
4657
  dirname: () => dirname,
4598
4658
  filename: () => filename,
4599
- join: () => join
4659
+ join: () => join,
4660
+ resolve: () => resolve
4600
4661
  });
4601
4662
  function filename(url) {
4602
- const slashIndex = url && url.lastIndexOf("/");
4663
+ const slashIndex = url ? url.lastIndexOf("/") : -1;
4603
4664
  return slashIndex >= 0 ? url.substr(slashIndex + 1) : "";
4604
4665
  }
4605
4666
  function dirname(url) {
4606
- const slashIndex = url && url.lastIndexOf("/");
4667
+ const slashIndex = url ? url.lastIndexOf("/") : -1;
4607
4668
  return slashIndex >= 0 ? url.substr(0, slashIndex) : "";
4608
4669
  }
4609
4670
  function join(...parts) {
@@ -4619,8 +4680,112 @@
4619
4680
  });
4620
4681
  return parts.join(separator);
4621
4682
  }
4683
+ function resolve(...components) {
4684
+ const paths = [];
4685
+ for (let _i = 0; _i < components.length; _i++) {
4686
+ paths[_i] = components[_i];
4687
+ }
4688
+ let resolvedPath = "";
4689
+ let resolvedAbsolute = false;
4690
+ let cwd;
4691
+ for (let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--) {
4692
+ let path;
4693
+ if (i >= 0) {
4694
+ path = paths[i];
4695
+ } else {
4696
+ if (cwd === void 0) {
4697
+ cwd = getCWD();
4698
+ }
4699
+ path = cwd;
4700
+ }
4701
+ if (path.length === 0) {
4702
+ continue;
4703
+ }
4704
+ resolvedPath = `${path}/${resolvedPath}`;
4705
+ resolvedAbsolute = path.charCodeAt(0) === SLASH;
4706
+ }
4707
+ resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);
4708
+ if (resolvedAbsolute) {
4709
+ return `/${resolvedPath}`;
4710
+ } else if (resolvedPath.length > 0) {
4711
+ return resolvedPath;
4712
+ }
4713
+ return ".";
4714
+ }
4715
+ function normalizeStringPosix(path, allowAboveRoot) {
4716
+ let res = "";
4717
+ let lastSlash = -1;
4718
+ let dots = 0;
4719
+ let code;
4720
+ let isAboveRoot = false;
4721
+ for (let i = 0; i <= path.length; ++i) {
4722
+ if (i < path.length) {
4723
+ code = path.charCodeAt(i);
4724
+ } else if (code === SLASH) {
4725
+ break;
4726
+ } else {
4727
+ code = SLASH;
4728
+ }
4729
+ if (code === SLASH) {
4730
+ if (lastSlash === i - 1 || dots === 1) {
4731
+ } else if (lastSlash !== i - 1 && dots === 2) {
4732
+ if (res.length < 2 || !isAboveRoot || res.charCodeAt(res.length - 1) !== DOT || res.charCodeAt(res.length - 2) !== DOT) {
4733
+ if (res.length > 2) {
4734
+ const start = res.length - 1;
4735
+ let j = start;
4736
+ for (; j >= 0; --j) {
4737
+ if (res.charCodeAt(j) === SLASH) {
4738
+ break;
4739
+ }
4740
+ }
4741
+ if (j !== start) {
4742
+ res = j === -1 ? "" : res.slice(0, j);
4743
+ lastSlash = i;
4744
+ dots = 0;
4745
+ isAboveRoot = false;
4746
+ continue;
4747
+ }
4748
+ } else if (res.length === 2 || res.length === 1) {
4749
+ res = "";
4750
+ lastSlash = i;
4751
+ dots = 0;
4752
+ isAboveRoot = false;
4753
+ continue;
4754
+ }
4755
+ }
4756
+ if (allowAboveRoot) {
4757
+ if (res.length > 0) {
4758
+ res += "/..";
4759
+ } else {
4760
+ res = "..";
4761
+ }
4762
+ isAboveRoot = true;
4763
+ }
4764
+ } else {
4765
+ const slice = path.slice(lastSlash + 1, i);
4766
+ if (res.length > 0) {
4767
+ res += `/${slice}`;
4768
+ } else {
4769
+ res = slice;
4770
+ }
4771
+ isAboveRoot = false;
4772
+ }
4773
+ lastSlash = i;
4774
+ dots = 0;
4775
+ } else if (code === DOT && dots !== -1) {
4776
+ ++dots;
4777
+ } else {
4778
+ dots = -1;
4779
+ }
4780
+ }
4781
+ return res;
4782
+ }
4783
+ var SLASH, DOT;
4622
4784
  var init_path = __esm({
4623
4785
  "../loader-utils/src/lib/path-utils/path.ts"() {
4786
+ init_get_cwd();
4787
+ SLASH = 47;
4788
+ DOT = 46;
4624
4789
  }
4625
4790
  });
4626
4791
 
@@ -4914,8 +5079,8 @@
4914
5079
  return this;
4915
5080
  }
4916
5081
  expand(point) {
4917
- const scratchPoint = scratchVector6.from(point);
4918
- const radius = scratchPoint.subtract(this.center).magnitude();
5082
+ const scratchPoint2 = scratchVector6.from(point);
5083
+ const radius = scratchPoint2.subtract(this.center).magnitude();
4919
5084
  if (radius > this.radius) {
4920
5085
  this.radius = radius;
4921
5086
  }
@@ -4932,8 +5097,8 @@
4932
5097
  return d * d;
4933
5098
  }
4934
5099
  distanceTo(point) {
4935
- const scratchPoint = scratchVector6.from(point);
4936
- const delta = scratchPoint.subtract(this.center);
5100
+ const scratchPoint2 = scratchVector6.from(point);
5101
+ const delta = scratchPoint2.subtract(this.center);
4937
5102
  return Math.max(0, delta.len() - this.radius);
4938
5103
  }
4939
5104
  intersectPlane(plane) {
@@ -5695,9 +5860,9 @@
5695
5860
  }
5696
5861
  if (resource instanceof Blob) {
5697
5862
  const blobSlice = resource.slice(0, 5);
5698
- return await new Promise((resolve) => {
5863
+ return await new Promise((resolve2) => {
5699
5864
  const reader = new FileReader();
5700
- reader.onload = (event) => resolve(event?.target?.result);
5865
+ reader.onload = (event) => resolve2(event?.target?.result);
5701
5866
  reader.readAsDataURL(blobSlice);
5702
5867
  });
5703
5868
  }
@@ -7186,6 +7351,22 @@
7186
7351
  }
7187
7352
  throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box");
7188
7353
  }
7354
+ function getCartographicBounds(boundingVolumeHeader, boundingVolume) {
7355
+ if (boundingVolumeHeader.box) {
7356
+ return orientedBoundingBoxToCartographicBounds(boundingVolume);
7357
+ }
7358
+ if (boundingVolumeHeader.region) {
7359
+ const [west, south, east, north, minHeight, maxHeight] = boundingVolumeHeader.region;
7360
+ return [
7361
+ [degrees(west), degrees(south), minHeight],
7362
+ [degrees(east), degrees(north), maxHeight]
7363
+ ];
7364
+ }
7365
+ if (boundingVolumeHeader.sphere) {
7366
+ return boundingSphereToCartographicBounds(boundingVolume);
7367
+ }
7368
+ throw new Error("Unkown boundingVolume type");
7369
+ }
7189
7370
  function createBox(box, transform, result) {
7190
7371
  const center = new Vector3(box[0], box[1], box[2]);
7191
7372
  transform.transform(center, center);
@@ -7241,13 +7422,79 @@
7241
7422
  }
7242
7423
  return new BoundingSphere(center, radius);
7243
7424
  }
7244
- var scratchScale, scratchNorthWest, scratchSouthEast;
7425
+ function orientedBoundingBoxToCartographicBounds(boundingVolume) {
7426
+ const result = emptyCartographicBounds();
7427
+ const { halfAxes } = boundingVolume;
7428
+ const xAxis = new Vector3(halfAxes.getColumn(0));
7429
+ const yAxis = new Vector3(halfAxes.getColumn(1));
7430
+ const zAxis = new Vector3(halfAxes.getColumn(2));
7431
+ for (let x = 0; x < 2; x++) {
7432
+ for (let y = 0; y < 2; y++) {
7433
+ for (let z = 0; z < 2; z++) {
7434
+ scratchPoint.copy(boundingVolume.center);
7435
+ scratchPoint.add(xAxis);
7436
+ scratchPoint.add(yAxis);
7437
+ scratchPoint.add(zAxis);
7438
+ addToCartographicBounds(result, scratchPoint);
7439
+ zAxis.negate();
7440
+ }
7441
+ yAxis.negate();
7442
+ }
7443
+ xAxis.negate();
7444
+ }
7445
+ return result;
7446
+ }
7447
+ function boundingSphereToCartographicBounds(boundingVolume) {
7448
+ const result = emptyCartographicBounds();
7449
+ const { center, radius } = boundingVolume;
7450
+ const point = Ellipsoid.WGS84.scaleToGeodeticSurface(center, scratchPoint);
7451
+ let zAxis;
7452
+ if (point) {
7453
+ zAxis = Ellipsoid.WGS84.geodeticSurfaceNormal(point);
7454
+ } else {
7455
+ zAxis = new Vector3(0, 0, 1);
7456
+ }
7457
+ let xAxis = new Vector3(zAxis[2], -zAxis[1], 0);
7458
+ if (xAxis.len() > 0) {
7459
+ xAxis.normalize();
7460
+ } else {
7461
+ xAxis = new Vector3(0, 1, 0);
7462
+ }
7463
+ const yAxis = xAxis.clone().cross(zAxis);
7464
+ for (const axis of [xAxis, yAxis, zAxis]) {
7465
+ scratchScale.copy(axis).scale(radius);
7466
+ for (let dir = 0; dir < 2; dir++) {
7467
+ scratchPoint.copy(center);
7468
+ scratchPoint.add(scratchScale);
7469
+ addToCartographicBounds(result, scratchPoint);
7470
+ scratchScale.negate();
7471
+ }
7472
+ }
7473
+ return result;
7474
+ }
7475
+ function emptyCartographicBounds() {
7476
+ return [
7477
+ [Infinity, Infinity, Infinity],
7478
+ [-Infinity, -Infinity, -Infinity]
7479
+ ];
7480
+ }
7481
+ function addToCartographicBounds(target, cartesian) {
7482
+ Ellipsoid.WGS84.cartesianToCartographic(cartesian, scratchPoint);
7483
+ target[0][0] = Math.min(target[0][0], scratchPoint[0]);
7484
+ target[0][1] = Math.min(target[0][1], scratchPoint[1]);
7485
+ target[0][2] = Math.min(target[0][2], scratchPoint[2]);
7486
+ target[1][0] = Math.max(target[1][0], scratchPoint[0]);
7487
+ target[1][1] = Math.max(target[1][1], scratchPoint[1]);
7488
+ target[1][2] = Math.max(target[1][2], scratchPoint[2]);
7489
+ }
7490
+ var scratchPoint, scratchScale, scratchNorthWest, scratchSouthEast;
7245
7491
  var init_bounding_volume = __esm({
7246
7492
  "src/tileset/helpers/bounding-volume.ts"() {
7247
7493
  init_esm();
7248
7494
  init_esm3();
7249
7495
  init_esm2();
7250
7496
  init_src2();
7497
+ scratchPoint = new Vector3();
7251
7498
  scratchScale = new Vector3();
7252
7499
  scratchNorthWest = new Vector3();
7253
7500
  scratchSouthEast = new Vector3();
@@ -7798,6 +8045,12 @@
7798
8045
  get screenSpaceError() {
7799
8046
  return this._screenSpaceError;
7800
8047
  }
8048
+ get boundingBox() {
8049
+ if (!this._boundingBox) {
8050
+ this._boundingBox = getCartographicBounds(this.header.boundingVolume, this.boundingVolume);
8051
+ }
8052
+ return this._boundingBox;
8053
+ }
7801
8054
  getScreenSpaceError(frameState, useParentLodMetric) {
7802
8055
  switch (this.tileset.type) {
7803
8056
  case TILESET_TYPE.I3S:
@@ -8451,12 +8704,12 @@
8451
8704
  this.lastUpdatedVieports = viewports;
8452
8705
  }
8453
8706
  if (!this.updatePromise) {
8454
- this.updatePromise = new Promise((resolve) => {
8707
+ this.updatePromise = new Promise((resolve2) => {
8455
8708
  setTimeout(() => {
8456
8709
  if (this.lastUpdatedVieports) {
8457
8710
  this.doUpdate(this.lastUpdatedVieports);
8458
8711
  }
8459
- resolve(this._frameNumber);
8712
+ resolve2(this._frameNumber);
8460
8713
  this.updatePromise = null;
8461
8714
  }, this.options.debounceTime);
8462
8715
  });
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TILE_TYPE = exports.TILE_REFINEMENT = exports.TILE_CONTENT_STATE = exports.TILESET_TYPE = exports.TILE3D_OPTIMIZATION_HINT = exports.LOD_METRIC_TYPE = void 0;
7
-
8
7
  var TILE_CONTENT_STATE = {
9
8
  UNLOADED: 0,
10
9
  LOADING: 1,
@@ -35,7 +34,6 @@ var LOD_METRIC_TYPE = {
35
34
  GEOMETRIC_ERROR: 'geometricError',
36
35
  MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'
37
36
  };
38
-
39
37
  exports.LOD_METRIC_TYPE = LOD_METRIC_TYPE;
40
38
  var TILE3D_OPTIMIZATION_HINT = {
41
39
  NOT_COMPUTED: -1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","TILE_REFINEMENT","ADD","REPLACE","TILE_TYPE","EMPTY","SCENEGRAPH","POINTCLOUD","MESH","TILESET_TYPE","I3S","TILES3D","LOD_METRIC_TYPE","GEOMETRIC_ERROR","MAX_SCREEN_THRESHOLD","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../src/constants.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport const TILE_CONTENT_STATE = {\n UNLOADED: 0, // Has never been requested\n LOADING: 1, // Is waiting on a pending request\n PROCESSING: 2, // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n READY: 3, // Ready to render.\n EXPIRED: 4, // Is expired and will be unloaded once new content is loaded.\n FAILED: 5 // Request failed.\n};\n\nexport const TILE_REFINEMENT = {\n ADD: 1, // Render tile and, if screen space error exceeded, also refine to its children.\n REPLACE: 2 // Render tile or, if screen space error exceeded, refine to its descendants instead.\n};\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;;AAEO,IAAMA,kBAAkB,GAAG;EAChCC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAAC;AAEK,IAAMC,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAAC;AAEK,IAAMC,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;;AAAC;AAGK,IAAMC,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAC"}
1
+ {"version":3,"file":"constants.js","names":["TILE_CONTENT_STATE","UNLOADED","LOADING","PROCESSING","READY","EXPIRED","FAILED","exports","TILE_REFINEMENT","ADD","REPLACE","TILE_TYPE","EMPTY","SCENEGRAPH","POINTCLOUD","MESH","TILESET_TYPE","I3S","TILES3D","LOD_METRIC_TYPE","GEOMETRIC_ERROR","MAX_SCREEN_THRESHOLD","TILE3D_OPTIMIZATION_HINT","NOT_COMPUTED","USE_OPTIMIZATION","SKIP_OPTIMIZATION"],"sources":["../../src/constants.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport const TILE_CONTENT_STATE = {\n UNLOADED: 0, // Has never been requested\n LOADING: 1, // Is waiting on a pending request\n PROCESSING: 2, // Request received. Contents are being processed for rendering. Depending on the content, it might make its own requests for external data.\n READY: 3, // Ready to render.\n EXPIRED: 4, // Is expired and will be unloaded once new content is loaded.\n FAILED: 5 // Request failed.\n};\n\nexport const TILE_REFINEMENT = {\n ADD: 1, // Render tile and, if screen space error exceeded, also refine to its children.\n REPLACE: 2 // Render tile or, if screen space error exceeded, refine to its descendants instead.\n};\n\nexport const TILE_TYPE = {\n EMPTY: 'empty',\n SCENEGRAPH: 'scenegraph',\n POINTCLOUD: 'pointcloud',\n MESH: 'mesh'\n};\n\nexport const TILESET_TYPE = {\n I3S: 'I3S',\n TILES3D: 'TILES3D'\n};\n\nexport const LOD_METRIC_TYPE = {\n GEOMETRIC_ERROR: 'geometricError',\n MAX_SCREEN_THRESHOLD: 'maxScreenThreshold'\n};\n\n// Cesium 3D Tiles Specific\nexport const TILE3D_OPTIMIZATION_HINT = {\n NOT_COMPUTED: -1,\n USE_OPTIMIZATION: 1,\n SKIP_OPTIMIZATION: 0\n};\n"],"mappings":";;;;;;AAEO,IAAMA,kBAAkB,GAAG;EAChCC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC;AAACC,OAAA,CAAAP,kBAAA,GAAAA,kBAAA;AAEK,IAAMQ,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE;AACX,CAAC;AAACH,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,IAAMG,SAAS,GAAG;EACvBC,KAAK,EAAE,OAAO;EACdC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAE,YAAY;EACxBC,IAAI,EAAE;AACR,CAAC;AAACR,OAAA,CAAAI,SAAA,GAAAA,SAAA;AAEK,IAAMK,YAAY,GAAG;EAC1BC,GAAG,EAAE,KAAK;EACVC,OAAO,EAAE;AACX,CAAC;AAACX,OAAA,CAAAS,YAAA,GAAAA,YAAA;AAEK,IAAMG,eAAe,GAAG;EAC7BC,eAAe,EAAE,gBAAgB;EACjCC,oBAAoB,EAAE;AACxB,CAAC;AAACd,OAAA,CAAAY,eAAA,GAAAA,eAAA;AAGK,IAAMG,wBAAwB,GAAG;EACtCC,YAAY,EAAE,CAAC,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,iBAAiB,EAAE;AACrB,CAAC;AAAClB,OAAA,CAAAe,wBAAA,GAAAA,wBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {Tileset3DProps} from './tileset/tileset-3d';\nexport {Tileset3D} from './tileset/tileset-3d';\nexport {Tile3D} from './tileset/tile-3d';\n\nexport {TilesetTraverser} from './tileset/tileset-traverser';\nexport {TilesetCache} from './tileset/tileset-cache';\n\nexport {createBoundingVolume} from './tileset/helpers/bounding-volume';\nexport {calculateTransformProps} from './tileset/helpers/transform-utils';\n\nexport {getFrameState} from './tileset/helpers/frame-state';\nexport {getLodStatus} from './tileset/helpers/i3s-lod';\n\nexport {\n TILE_CONTENT_STATE,\n TILE_REFINEMENT,\n TILE_TYPE,\n TILESET_TYPE,\n LOD_METRIC_TYPE\n} from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA"}
1
+ {"version":3,"file":"index.js","names":["_tileset3d","require","_tile3d","_tilesetTraverser","_tilesetCache","_boundingVolume","_transformUtils","_frameState","_i3sLod","_constants"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {Tileset3DProps} from './tileset/tileset-3d';\nexport {Tileset3D} from './tileset/tileset-3d';\nexport {Tile3D} from './tileset/tile-3d';\n\nexport {TilesetTraverser} from './tileset/tileset-traverser';\nexport {TilesetCache} from './tileset/tileset-cache';\n\nexport {createBoundingVolume} from './tileset/helpers/bounding-volume';\nexport {calculateTransformProps} from './tileset/helpers/transform-utils';\n\nexport {getFrameState} from './tileset/helpers/frame-state';\nexport {getLodStatus} from './tileset/helpers/i3s-lod';\n\nexport {\n TILE_CONTENT_STATE,\n TILE_REFINEMENT,\n TILE_TYPE,\n TILESET_TYPE,\n LOD_METRIC_TYPE\n} from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AAEA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAEA,IAAAQ,UAAA,GAAAR,OAAA"}
@@ -31,7 +31,6 @@ var Tileset3DTraverser = function (_TilesetTraverser) {
31
31
  key: "updateTileVisibility",
32
32
  value: function updateTileVisibility(tile, frameState) {
33
33
  (0, _get2.default)((0, _getPrototypeOf2.default)(Tileset3DTraverser.prototype), "updateTileVisibility", this).call(this, tile, frameState);
34
-
35
34
  if (!tile.isVisibleAndInRequestVolume) {
36
35
  return;
37
36
  }
@@ -62,7 +61,6 @@ var Tileset3DTraverser = function (_TilesetTraverser) {
62
61
  if (!parent || parent.hasTilesetContent || parent.refine !== _constants.TILE_REFINEMENT.ADD) {
63
62
  return false;
64
63
  }
65
-
66
64
  return !this.shouldRefine(tile, frameState, true);
67
65
  }
68
66
  }]);
@@ -1 +1 @@
1
- {"version":3,"file":"tileset-3d-traverser.js","names":["Tileset3DTraverser","a","b","_distanceToCamera","_centerZDepth","tile","frameState","isVisibleAndInRequestVolume","hasChildren","children","length","hasTilesetContent","firstChild","updateTileVisibility","_visible","meetsScreenSpaceErrorEarly","replace","refine","TILE_REFINEMENT","REPLACE","useOptimization","_optimChildrenWithinParent","TILE3D_OPTIMIZATION_HINT","USE_OPTIMIZATION","anyChildrenVisible","parent","ADD","shouldRefine","TilesetTraverser"],"sources":["../../../../src/tileset/format-3d-tiles/tileset-3d-traverser.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';\nimport {TilesetTraverser} from '../tileset-traverser';\n\nexport class Tileset3DTraverser extends TilesetTraverser {\n compareDistanceToCamera(a, b) {\n // Sort by farthest child first since this is going on a stack\n return b._distanceToCamera === 0 && a._distanceToCamera === 0\n ? b._centerZDepth - a._centerZDepth\n : b._distanceToCamera - a._distanceToCamera;\n }\n\n updateTileVisibility(tile, frameState) {\n super.updateTileVisibility(tile, frameState);\n\n // Optimization - if none of the tile's children are visible then this tile isn't visible\n if (!tile.isVisibleAndInRequestVolume) {\n return;\n }\n\n const hasChildren = tile.children.length > 0;\n if (tile.hasTilesetContent && hasChildren) {\n // Use the root tile's visibility instead of this tile's visibility.\n // The root tile may be culled by the children bounds optimization in which\n // case this tile should also be culled.\n const firstChild = tile.children[0];\n this.updateTileVisibility(firstChild, frameState);\n tile._visible = firstChild._visible;\n return;\n }\n\n if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {\n tile._visible = false;\n return;\n }\n\n const replace = tile.refine === TILE_REFINEMENT.REPLACE;\n const useOptimization =\n tile._optimChildrenWithinParent === TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;\n if (replace && useOptimization && hasChildren) {\n if (!this.anyChildrenVisible(tile, frameState)) {\n tile._visible = false;\n return;\n }\n }\n }\n\n meetsScreenSpaceErrorEarly(tile, frameState) {\n const {parent} = tile;\n if (!parent || parent.hasTilesetContent || parent.refine !== TILE_REFINEMENT.ADD) {\n return false;\n }\n\n // Use parent's geometric error with child's box to see if the tile already meet the SSE\n return !this.shouldRefine(tile, frameState, true);\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAKA;AACA;AAAsD;AAAA;AAAA,IAEzCA,kBAAkB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA,OAC7B,iCAAwBC,CAAC,EAAEC,CAAC,EAAE;MAE5B,OAAOA,CAAC,CAACC,iBAAiB,KAAK,CAAC,IAAIF,CAAC,CAACE,iBAAiB,KAAK,CAAC,GACzDD,CAAC,CAACE,aAAa,GAAGH,CAAC,CAACG,aAAa,GACjCF,CAAC,CAACC,iBAAiB,GAAGF,CAAC,CAACE,iBAAiB;IAC/C;EAAC;IAAA;IAAA,OAED,8BAAqBE,IAAI,EAAEC,UAAU,EAAE;MACrC,yHAA2BD,IAAI,EAAEC,UAAU;;MAG3C,IAAI,CAACD,IAAI,CAACE,2BAA2B,EAAE;QACrC;MACF;MAEA,IAAMC,WAAW,GAAGH,IAAI,CAACI,QAAQ,CAACC,MAAM,GAAG,CAAC;MAC5C,IAAIL,IAAI,CAACM,iBAAiB,IAAIH,WAAW,EAAE;QAIzC,IAAMI,UAAU,GAAGP,IAAI,CAACI,QAAQ,CAAC,CAAC,CAAC;QACnC,IAAI,CAACI,oBAAoB,CAACD,UAAU,EAAEN,UAAU,CAAC;QACjDD,IAAI,CAACS,QAAQ,GAAGF,UAAU,CAACE,QAAQ;QACnC;MACF;MAEA,IAAI,IAAI,CAACC,0BAA0B,CAACV,IAAI,EAAEC,UAAU,CAAC,EAAE;QACrDD,IAAI,CAACS,QAAQ,GAAG,KAAK;QACrB;MACF;MAEA,IAAME,OAAO,GAAGX,IAAI,CAACY,MAAM,KAAKC,0BAAe,CAACC,OAAO;MACvD,IAAMC,eAAe,GACnBf,IAAI,CAACgB,0BAA0B,KAAKC,mCAAwB,CAACC,gBAAgB;MAC/E,IAAIP,OAAO,IAAII,eAAe,IAAIZ,WAAW,EAAE;QAC7C,IAAI,CAAC,IAAI,CAACgB,kBAAkB,CAACnB,IAAI,EAAEC,UAAU,CAAC,EAAE;UAC9CD,IAAI,CAACS,QAAQ,GAAG,KAAK;UACrB;QACF;MACF;IACF;EAAC;IAAA;IAAA,OAED,oCAA2BT,IAAI,EAAEC,UAAU,EAAE;MAC3C,IAAOmB,MAAM,GAAIpB,IAAI,CAAdoB,MAAM;MACb,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACd,iBAAiB,IAAIc,MAAM,CAACR,MAAM,KAAKC,0BAAe,CAACQ,GAAG,EAAE;QAChF,OAAO,KAAK;MACd;;MAGA,OAAO,CAAC,IAAI,CAACC,YAAY,CAACtB,IAAI,EAAEC,UAAU,EAAE,IAAI,CAAC;IACnD;EAAC;EAAA;AAAA,EAnDqCsB,kCAAgB;AAAA"}
1
+ {"version":3,"file":"tileset-3d-traverser.js","names":["_constants","require","_tilesetTraverser","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","Tileset3DTraverser","_TilesetTraverser","_inherits2","_super","_classCallCheck2","_createClass2","key","value","compareDistanceToCamera","a","b","_distanceToCamera","_centerZDepth","updateTileVisibility","tile","frameState","_get2","isVisibleAndInRequestVolume","hasChildren","children","length","hasTilesetContent","firstChild","_visible","meetsScreenSpaceErrorEarly","replace","refine","TILE_REFINEMENT","REPLACE","useOptimization","_optimChildrenWithinParent","TILE3D_OPTIMIZATION_HINT","USE_OPTIMIZATION","anyChildrenVisible","parent","ADD","shouldRefine","TilesetTraverser","exports"],"sources":["../../../../src/tileset/format-3d-tiles/tileset-3d-traverser.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';\nimport {TilesetTraverser} from '../tileset-traverser';\n\nexport class Tileset3DTraverser extends TilesetTraverser {\n compareDistanceToCamera(a, b) {\n // Sort by farthest child first since this is going on a stack\n return b._distanceToCamera === 0 && a._distanceToCamera === 0\n ? b._centerZDepth - a._centerZDepth\n : b._distanceToCamera - a._distanceToCamera;\n }\n\n updateTileVisibility(tile, frameState) {\n super.updateTileVisibility(tile, frameState);\n\n // Optimization - if none of the tile's children are visible then this tile isn't visible\n if (!tile.isVisibleAndInRequestVolume) {\n return;\n }\n\n const hasChildren = tile.children.length > 0;\n if (tile.hasTilesetContent && hasChildren) {\n // Use the root tile's visibility instead of this tile's visibility.\n // The root tile may be culled by the children bounds optimization in which\n // case this tile should also be culled.\n const firstChild = tile.children[0];\n this.updateTileVisibility(firstChild, frameState);\n tile._visible = firstChild._visible;\n return;\n }\n\n if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {\n tile._visible = false;\n return;\n }\n\n const replace = tile.refine === TILE_REFINEMENT.REPLACE;\n const useOptimization =\n tile._optimChildrenWithinParent === TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;\n if (replace && useOptimization && hasChildren) {\n if (!this.anyChildrenVisible(tile, frameState)) {\n tile._visible = false;\n return;\n }\n }\n }\n\n meetsScreenSpaceErrorEarly(tile, frameState) {\n const {parent} = tile;\n if (!parent || parent.hasTilesetContent || parent.refine !== TILE_REFINEMENT.ADD) {\n return false;\n }\n\n // Use parent's geometric error with child's box to see if the tile already meet the SSE\n return !this.shouldRefine(tile, frameState, true);\n }\n}\n"],"mappings":"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"}
@@ -15,18 +15,15 @@ var I3SPendingTilesRegister = function () {
15
15
  }
16
16
  (0, _createClass2.default)(I3SPendingTilesRegister, [{
17
17
  key: "register",
18
- value:
19
- function register(viewportId, frameNumber) {
18
+ value: function register(viewportId, frameNumber) {
20
19
  var viewportMap = this.frameNumberMap.get(viewportId) || new Map();
21
20
  var oldCount = viewportMap.get(frameNumber) || 0;
22
21
  viewportMap.set(frameNumber, oldCount + 1);
23
22
  this.frameNumberMap.set(viewportId, viewportMap);
24
23
  }
25
-
26
24
  }, {
27
25
  key: "deregister",
28
- value:
29
- function deregister(viewportId, frameNumber) {
26
+ value: function deregister(viewportId, frameNumber) {
30
27
  var viewportMap = this.frameNumberMap.get(viewportId);
31
28
  if (!viewportMap) {
32
29
  return;
@@ -34,11 +31,9 @@ var I3SPendingTilesRegister = function () {
34
31
  var oldCount = viewportMap.get(frameNumber) || 1;
35
32
  viewportMap.set(frameNumber, oldCount - 1);
36
33
  }
37
-
38
34
  }, {
39
35
  key: "isZero",
40
- value:
41
- function isZero(viewportId, frameNumber) {
36
+ value: function isZero(viewportId, frameNumber) {
42
37
  var _this$frameNumberMap$;
43
38
  var count = ((_this$frameNumberMap$ = this.frameNumberMap.get(viewportId)) === null || _this$frameNumberMap$ === void 0 ? void 0 : _this$frameNumberMap$.get(frameNumber)) || 0;
44
39
  return count === 0;
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-pending-tiles-register.js","names":["I3SPendingTilesRegister","Map","viewportId","frameNumber","viewportMap","frameNumberMap","get","oldCount","set","count"],"sources":["../../../../src/tileset/format-i3s/i3s-pending-tiles-register.ts"],"sourcesContent":["/**\n * Counter to register pending tile headers for the particular frameNumber\n * Until all tiles are loaded we won't call `onTraversalEnd` callback\n */\nexport class I3SPendingTilesRegister {\n private frameNumberMap: Map<string, Map<number, number>> = new Map();\n\n /**\n * Register a new pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n register(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId) || new Map();\n const oldCount = viewportMap.get(frameNumber) || 0;\n viewportMap.set(frameNumber, oldCount + 1);\n this.frameNumberMap.set(viewportId, viewportMap);\n }\n\n /**\n * Deregister a pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n deregister(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId);\n if (!viewportMap) {\n return;\n }\n const oldCount = viewportMap.get(frameNumber) || 1;\n viewportMap.set(frameNumber, oldCount - 1);\n }\n\n /**\n * Check is there are no pending tile headers registered for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n isZero(viewportId: string, frameNumber: number) {\n const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;\n return count === 0;\n }\n}\n"],"mappings":";;;;;;;;;;IAIaA,uBAAuB;EAAA;IAAA;IAAA,sDACyB,IAAIC,GAAG,EAAE;EAAA;EAAA;IAAA;IAAA;IAOpE,kBAASC,UAAkB,EAAEC,WAAmB,EAAE;MAChD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,IAAI,IAAID,GAAG,EAAE;MACpE,IAAMM,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;MAC1C,IAAI,CAACF,cAAc,CAACG,GAAG,CAACN,UAAU,EAAEE,WAAW,CAAC;IAClD;;EAAC;IAAA;IAAA;IAOD,oBAAWF,UAAkB,EAAEC,WAAmB,EAAE;MAClD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC;MACvD,IAAI,CAACE,WAAW,EAAE;QAChB;MACF;MACA,IAAMG,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;IAC5C;;EAAC;IAAA;IAAA;IAQD,gBAAOL,UAAkB,EAAEC,WAAmB,EAAE;MAAA;MAC9C,IAAMM,KAAK,GAAG,8BAAI,CAACJ,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,0DAAnC,sBAAqCI,GAAG,CAACH,WAAW,CAAC,KAAI,CAAC;MACxE,OAAOM,KAAK,KAAK,CAAC;IACpB;EAAC;EAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"i3s-pending-tiles-register.js","names":["I3SPendingTilesRegister","_classCallCheck2","default","_defineProperty2","Map","_createClass2","key","value","register","viewportId","frameNumber","viewportMap","frameNumberMap","get","oldCount","set","deregister","isZero","_this$frameNumberMap$","count","exports"],"sources":["../../../../src/tileset/format-i3s/i3s-pending-tiles-register.ts"],"sourcesContent":["/**\n * Counter to register pending tile headers for the particular frameNumber\n * Until all tiles are loaded we won't call `onTraversalEnd` callback\n */\nexport class I3SPendingTilesRegister {\n private frameNumberMap: Map<string, Map<number, number>> = new Map();\n\n /**\n * Register a new pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n register(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId) || new Map();\n const oldCount = viewportMap.get(frameNumber) || 0;\n viewportMap.set(frameNumber, oldCount + 1);\n this.frameNumberMap.set(viewportId, viewportMap);\n }\n\n /**\n * Deregister a pending tile header for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n */\n deregister(viewportId: string, frameNumber: number) {\n const viewportMap = this.frameNumberMap.get(viewportId);\n if (!viewportMap) {\n return;\n }\n const oldCount = viewportMap.get(frameNumber) || 1;\n viewportMap.set(frameNumber, oldCount - 1);\n }\n\n /**\n * Check is there are no pending tile headers registered for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n isZero(viewportId: string, frameNumber: number) {\n const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;\n return count === 0;\n }\n}\n"],"mappings":";;;;;;;;;;IAIaA,uBAAuB;EAAA,SAAAA,wBAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAF,uBAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA,0BACyB,IAAIE,GAAG,EAAE;EAAA;EAAA,IAAAC,aAAA,CAAAH,OAAA,EAAAF,uBAAA;IAAAM,GAAA;IAAAC,KAAA,EAOpE,SAAAC,SAASC,UAAkB,EAAEC,WAAmB,EAAE;MAChD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,IAAI,IAAIL,GAAG,EAAE;MACpE,IAAMU,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;MAC1C,IAAI,CAACF,cAAc,CAACG,GAAG,CAACN,UAAU,EAAEE,WAAW,CAAC;IAClD;EAAC;IAAAL,GAAA;IAAAC,KAAA,EAOD,SAAAS,WAAWP,UAAkB,EAAEC,WAAmB,EAAE;MAClD,IAAMC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC;MACvD,IAAI,CAACE,WAAW,EAAE;QAChB;MACF;MACA,IAAMG,QAAQ,GAAGH,WAAW,CAACE,GAAG,CAACH,WAAW,CAAC,IAAI,CAAC;MAClDC,WAAW,CAACI,GAAG,CAACL,WAAW,EAAEI,QAAQ,GAAG,CAAC,CAAC;IAC5C;EAAC;IAAAR,GAAA;IAAAC,KAAA,EAQD,SAAAU,OAAOR,UAAkB,EAAEC,WAAmB,EAAE;MAAA,IAAAQ,qBAAA;MAC9C,IAAMC,KAAK,GAAG,EAAAD,qBAAA,OAAI,CAACN,cAAc,CAACC,GAAG,CAACJ,UAAU,CAAC,cAAAS,qBAAA,uBAAnCA,qBAAA,CAAqCL,GAAG,CAACH,WAAW,CAAC,KAAI,CAAC;MACxE,OAAOS,KAAK,KAAK,CAAC;IACpB;EAAC;EAAA,OAAAnB,uBAAA;AAAA;AAAAoB,OAAA,CAAApB,uBAAA,GAAAA,uBAAA"}
@@ -14,7 +14,6 @@ var STATUS = {
14
14
  COMPLETED: 'COMPLETED',
15
15
  ERROR: 'ERROR'
16
16
  };
17
-
18
17
  var I3STileManager = function () {
19
18
  function I3STileManager() {
20
19
  (0, _classCallCheck2.default)(this, I3STileManager);
@@ -22,11 +21,9 @@ var I3STileManager = function () {
22
21
  (0, _defineProperty2.default)(this, "pendingTilesRegister", new _i3sPendingTilesRegister.I3SPendingTilesRegister());
23
22
  this._statusMap = {};
24
23
  }
25
-
26
24
  (0, _createClass2.default)(I3STileManager, [{
27
25
  key: "add",
28
- value:
29
- function add(request, key, callback, frameState) {
26
+ value: function add(request, key, callback, frameState) {
30
27
  var _this = this;
31
28
  if (!this._statusMap[key]) {
32
29
  var frameNumber = frameState.frameNumber,
@@ -56,35 +53,28 @@ var I3STileManager = function () {
56
53
  });
57
54
  }
58
55
  }
59
-
60
56
  }, {
61
57
  key: "update",
62
- value:
63
- function update(key, frameState) {
58
+ value: function update(key, frameState) {
64
59
  if (this._statusMap[key]) {
65
60
  var _this$_statusMap$key$3 = this._statusMap[key].frameState,
66
61
  frameNumber = _this$_statusMap$key$3.frameNumber,
67
62
  id = _this$_statusMap$key$3.viewport.id;
68
63
  this.pendingTilesRegister.deregister(id, frameNumber);
69
-
70
64
  var newFrameNumber = frameState.frameNumber,
71
65
  newViewportId = frameState.viewport.id;
72
66
  this.pendingTilesRegister.register(newViewportId, newFrameNumber);
73
67
  this._statusMap[key].frameState = frameState;
74
68
  }
75
69
  }
76
-
77
70
  }, {
78
71
  key: "find",
79
- value:
80
- function find(key) {
72
+ value: function find(key) {
81
73
  return this._statusMap[key];
82
74
  }
83
-
84
75
  }, {
85
76
  key: "hasPendingTiles",
86
- value:
87
- function hasPendingTiles(viewportId, frameNumber) {
77
+ value: function hasPendingTiles(viewportId, frameNumber) {
88
78
  return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
89
79
  }
90
80
  }]);
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-tile-manager.js","names":["STATUS","REQUESTED","COMPLETED","ERROR","I3STileManager","I3SPendingTilesRegister","_statusMap","request","key","callback","frameState","frameNumber","id","viewport","status","pendingTilesRegister","register","then","data","actualFrameNumber","deregister","catch","error","newFrameNumber","newViewportId","viewportId","isZero"],"sources":["../../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"sourcesContent":["import {FrameState} from '../helpers/frame-state';\nimport {I3SPendingTilesRegister} from './i3s-pending-tiles-register';\n\nconst STATUS = {\n REQUESTED: 'REQUESTED',\n COMPLETED: 'COMPLETED',\n ERROR: 'ERROR'\n};\n\n// A helper class to manage tile metadata fetching\nexport class I3STileManager {\n private _statusMap: object;\n private pendingTilesRegister = new I3SPendingTilesRegister();\n\n constructor() {\n this._statusMap = {};\n }\n\n /**\n * Add request to map\n * @param request - node metadata request\n * @param key - unique key\n * @param callback - callback after request completed\n * @param frameState - frameState data\n */\n add(request, key, callback, frameState: FrameState) {\n if (!this._statusMap[key]) {\n const {\n frameNumber,\n viewport: {id}\n } = frameState;\n this._statusMap[key] = {request, callback, key, frameState, status: STATUS.REQUESTED};\n // Register pending request for the frameNumber\n this.pendingTilesRegister.register(id, frameNumber);\n request()\n .then((data) => {\n this._statusMap[key].status = STATUS.COMPLETED;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n this._statusMap[key].callback(data, frameState);\n })\n .catch((error) => {\n this._statusMap[key].status = STATUS.ERROR;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n callback(error);\n });\n }\n }\n\n /**\n * Update request if it is still actual for the new frameState\n * @param key - unique key\n * @param frameState - frameState data\n */\n update(key, frameState: FrameState) {\n if (this._statusMap[key]) {\n // Deregister pending request for the old frameNumber\n const {\n frameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n this.pendingTilesRegister.deregister(id, frameNumber);\n\n // Register pending request for the new frameNumber\n const {\n frameNumber: newFrameNumber,\n viewport: {id: newViewportId}\n } = frameState;\n this.pendingTilesRegister.register(newViewportId, newFrameNumber);\n this._statusMap[key].frameState = frameState;\n }\n }\n\n /**\n * Find request in the map\n * @param key - unique key\n * @returns\n */\n find(key) {\n return this._statusMap[key];\n }\n\n /**\n * Check it there are pending tile headers for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n hasPendingTiles(viewportId: string, frameNumber: number): boolean {\n return !this.pendingTilesRegister.isZero(viewportId, frameNumber);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"i3s-tile-manager.js","names":["_i3sPendingTilesRegister","require","STATUS","REQUESTED","COMPLETED","ERROR","I3STileManager","_classCallCheck2","default","_defineProperty2","I3SPendingTilesRegister","_statusMap","_createClass2","key","value","add","request","callback","frameState","_this","frameNumber","id","viewport","status","pendingTilesRegister","register","then","data","_this$_statusMap$key$","actualFrameNumber","deregister","catch","error","_this$_statusMap$key$2","update","_this$_statusMap$key$3","newFrameNumber","newViewportId","find","hasPendingTiles","viewportId","isZero","exports"],"sources":["../../../../src/tileset/format-i3s/i3s-tile-manager.ts"],"sourcesContent":["import {FrameState} from '../helpers/frame-state';\nimport {I3SPendingTilesRegister} from './i3s-pending-tiles-register';\n\nconst STATUS = {\n REQUESTED: 'REQUESTED',\n COMPLETED: 'COMPLETED',\n ERROR: 'ERROR'\n};\n\n// A helper class to manage tile metadata fetching\nexport class I3STileManager {\n private _statusMap: object;\n private pendingTilesRegister = new I3SPendingTilesRegister();\n\n constructor() {\n this._statusMap = {};\n }\n\n /**\n * Add request to map\n * @param request - node metadata request\n * @param key - unique key\n * @param callback - callback after request completed\n * @param frameState - frameState data\n */\n add(request, key, callback, frameState: FrameState) {\n if (!this._statusMap[key]) {\n const {\n frameNumber,\n viewport: {id}\n } = frameState;\n this._statusMap[key] = {request, callback, key, frameState, status: STATUS.REQUESTED};\n // Register pending request for the frameNumber\n this.pendingTilesRegister.register(id, frameNumber);\n request()\n .then((data) => {\n this._statusMap[key].status = STATUS.COMPLETED;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n this._statusMap[key].callback(data, frameState);\n })\n .catch((error) => {\n this._statusMap[key].status = STATUS.ERROR;\n const {\n frameNumber: actualFrameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n // Deregister pending request for the frameNumber\n this.pendingTilesRegister.deregister(id, actualFrameNumber);\n callback(error);\n });\n }\n }\n\n /**\n * Update request if it is still actual for the new frameState\n * @param key - unique key\n * @param frameState - frameState data\n */\n update(key, frameState: FrameState) {\n if (this._statusMap[key]) {\n // Deregister pending request for the old frameNumber\n const {\n frameNumber,\n viewport: {id}\n } = this._statusMap[key].frameState;\n this.pendingTilesRegister.deregister(id, frameNumber);\n\n // Register pending request for the new frameNumber\n const {\n frameNumber: newFrameNumber,\n viewport: {id: newViewportId}\n } = frameState;\n this.pendingTilesRegister.register(newViewportId, newFrameNumber);\n this._statusMap[key].frameState = frameState;\n }\n }\n\n /**\n * Find request in the map\n * @param key - unique key\n * @returns\n */\n find(key) {\n return this._statusMap[key];\n }\n\n /**\n * Check it there are pending tile headers for the particular frameNumber\n * @param viewportId\n * @param frameNumber\n * @returns\n */\n hasPendingTiles(viewportId: string, frameNumber: number): boolean {\n return !this.pendingTilesRegister.isZero(viewportId, frameNumber);\n }\n}\n"],"mappings":"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"}