@loaders.gl/i3s 4.2.0-alpha.4 → 4.2.0-alpha.6

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 (89) hide show
  1. package/dist/arcgis-webscene-loader.d.ts +1 -1
  2. package/dist/arcgis-webscene-loader.d.ts.map +1 -1
  3. package/dist/arcgis-webscene-loader.js +20 -11
  4. package/dist/dist.dev.js +1244 -722
  5. package/dist/dist.min.js +9 -0
  6. package/dist/i3s-attribute-loader.d.ts +2 -2
  7. package/dist/i3s-attribute-loader.d.ts.map +1 -1
  8. package/dist/i3s-attribute-loader.js +146 -95
  9. package/dist/i3s-building-scene-layer-loader.d.ts +2 -2
  10. package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -1
  11. package/dist/i3s-building-scene-layer-loader.js +18 -14
  12. package/dist/i3s-content-loader.d.ts +2 -2
  13. package/dist/i3s-content-loader.d.ts.map +1 -1
  14. package/dist/i3s-content-loader.js +24 -25
  15. package/dist/i3s-content-worker-node.js +46 -46
  16. package/dist/i3s-content-worker-node.js.map +4 -4
  17. package/dist/i3s-content-worker.js +15 -27
  18. package/dist/i3s-loader.d.ts +2 -2
  19. package/dist/i3s-loader.d.ts.map +1 -1
  20. package/dist/i3s-loader.js +78 -66
  21. package/dist/i3s-node-page-loader.d.ts +2 -2
  22. package/dist/i3s-node-page-loader.d.ts.map +1 -1
  23. package/dist/i3s-node-page-loader.js +17 -13
  24. package/dist/i3s-slpk-loader.js +19 -15
  25. package/dist/index.cjs +92 -163
  26. package/dist/index.cjs.map +7 -0
  27. package/dist/index.d.ts +14 -14
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -1
  30. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -1
  31. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  32. package/dist/lib/helpers/i3s-nodepages-tiles.js +230 -184
  33. package/dist/lib/parsers/constants.js +72 -45
  34. package/dist/lib/parsers/parse-arcgis-webscene.d.ts +1 -1
  35. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -1
  36. package/dist/lib/parsers/parse-arcgis-webscene.js +80 -59
  37. package/dist/lib/parsers/parse-i3s-attribute.js +83 -46
  38. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts +1 -1
  39. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -1
  40. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +36 -33
  41. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +1 -1
  42. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  43. package/dist/lib/parsers/parse-i3s-tile-content.js +433 -388
  44. package/dist/lib/parsers/parse-i3s.d.ts +1 -1
  45. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  46. package/dist/lib/parsers/parse-i3s.js +84 -81
  47. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
  48. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
  49. package/dist/lib/parsers/parse-slpk/parse-slpk.js +23 -16
  50. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +134 -97
  51. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +12 -5
  52. package/dist/lib/utils/customize-colors.d.ts +1 -1
  53. package/dist/lib/utils/customize-colors.d.ts.map +1 -1
  54. package/dist/lib/utils/customize-colors.js +95 -81
  55. package/dist/lib/utils/url-utils.d.ts +1 -1
  56. package/dist/lib/utils/url-utils.d.ts.map +1 -1
  57. package/dist/lib/utils/url-utils.js +48 -28
  58. package/dist/types.d.ts +1 -1
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js +5 -6
  61. package/dist/workers/i3s-content-worker-node.js +1 -1
  62. package/dist/workers/i3s-content-worker.js +0 -1
  63. package/package.json +15 -12
  64. package/src/i3s-loader.ts +2 -1
  65. package/src/lib/helpers/i3s-nodepages-tiles.ts +1 -3
  66. package/src/lib/parsers/parse-i3s-tile-content.ts +4 -26
  67. package/dist/arcgis-webscene-loader.js.map +0 -1
  68. package/dist/i3s-attribute-loader.js.map +0 -1
  69. package/dist/i3s-building-scene-layer-loader.js.map +0 -1
  70. package/dist/i3s-content-loader.js.map +0 -1
  71. package/dist/i3s-loader.js.map +0 -1
  72. package/dist/i3s-node-page-loader.js.map +0 -1
  73. package/dist/i3s-slpk-loader.js.map +0 -1
  74. package/dist/index.js.map +0 -1
  75. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  76. package/dist/lib/parsers/constants.js.map +0 -1
  77. package/dist/lib/parsers/parse-arcgis-webscene.js.map +0 -1
  78. package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
  79. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  80. package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  81. package/dist/lib/parsers/parse-i3s.js.map +0 -1
  82. package/dist/lib/parsers/parse-slpk/parse-slpk.js.map +0 -1
  83. package/dist/lib/parsers/parse-slpk/slpk-archieve.js.map +0 -1
  84. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  85. package/dist/lib/utils/customize-colors.js.map +0 -1
  86. package/dist/lib/utils/url-utils.js.map +0 -1
  87. package/dist/types.js.map +0 -1
  88. package/dist/workers/i3s-content-worker-node.js.map +0 -1
  89. package/dist/workers/i3s-content-worker.js.map +0 -1
package/dist/dist.dev.js CHANGED
@@ -2,8 +2,8 @@
2
2
  if (typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
- else if (typeof exports === 'object') exports['loader'] = factory();
6
- else root['loader'] = factory();})(globalThis, function () {
5
+ else if (typeof exports === 'object') exports['loaders'] = factory();
6
+ else root['loaders'] = factory();})(globalThis, function () {
7
7
  "use strict";
8
8
  var __exports__ = (() => {
9
9
  var __create = Object.create;
@@ -27,6 +27,7 @@ var __exports__ = (() => {
27
27
  }
28
28
  return to;
29
29
  };
30
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
30
31
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
31
32
  // If the importer is in node compatibility mode or this is not an ESM
32
33
  // file that has been converted to a CommonJS file using a Babel-
@@ -37,13 +38,6 @@ var __exports__ = (() => {
37
38
  ));
38
39
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
39
40
 
40
- // (disabled):../worker-utils/src/lib/node/require-utils.node
41
- var require_require_utils = __commonJS({
42
- "(disabled):../worker-utils/src/lib/node/require-utils.node"() {
43
- "use strict";
44
- }
45
- });
46
-
47
41
  // external-global-plugin:@loaders.gl/core
48
42
  var require_core = __commonJS({
49
43
  "external-global-plugin:@loaders.gl/core"(exports, module) {
@@ -51,6 +45,13 @@ var __exports__ = (() => {
51
45
  }
52
46
  });
53
47
 
48
+ // (disabled):../worker-utils/src/lib/node/require-utils.node
49
+ var require_require_utils = __commonJS({
50
+ "(disabled):../worker-utils/src/lib/node/require-utils.node"() {
51
+ "use strict";
52
+ }
53
+ });
54
+
54
55
  // ../../node_modules/pako/lib/utils/common.js
55
56
  var require_common = __commonJS({
56
57
  "../../node_modules/pako/lib/utils/common.js"(exports) {
@@ -4259,9 +4260,9 @@ var __exports__ = (() => {
4259
4260
  }
4260
4261
  });
4261
4262
 
4262
- // src/index.ts
4263
- var src_exports = {};
4264
- __export(src_exports, {
4263
+ // bundle.ts
4264
+ var bundle_exports = {};
4265
+ __export(bundle_exports, {
4265
4266
  ArcGISWebSceneLoader: () => ArcGISWebSceneLoader,
4266
4267
  COORDINATE_SYSTEM: () => COORDINATE_SYSTEM,
4267
4268
  I3SAttributeLoader: () => I3SAttributeLoader,
@@ -4276,16 +4277,25 @@ var __exports__ = (() => {
4276
4277
  loadFeatureAttributes: () => loadFeatureAttributes,
4277
4278
  parseSLPKArchive: () => parseSLPKArchive
4278
4279
  });
4280
+ __reExport(bundle_exports, __toESM(require_core(), 1));
4279
4281
 
4280
4282
  // ../math/src/geometry/constants.ts
4281
4283
  var GL_PRIMITIVE_MODE = {
4282
4284
  POINTS: 0,
4285
+ // Points. single points.
4283
4286
  LINES: 1,
4287
+ // Lines. Each vertex connects to the one after it.
4284
4288
  LINE_LOOP: 2,
4289
+ // Lines. Each set of two vertices is treated as a separate line segment.
4285
4290
  LINE_STRIP: 3,
4291
+ // Lines/ a connected group of line segments from the first vertex to the last
4286
4292
  TRIANGLES: 4,
4293
+ // Triangles. Each set of three vertices creates a separate triangle.
4287
4294
  TRIANGLE_STRIP: 5,
4295
+ // Triangles. A connected group of triangles.
4288
4296
  TRIANGLE_FAN: 6
4297
+ // Triangles. A connected group of triangles.
4298
+ // Each vertex connects to the previous and the first vertex in the fan.
4289
4299
  };
4290
4300
  var GL_TYPE = {
4291
4301
  BYTE: 5120,
@@ -4325,19 +4335,25 @@ var __exports__ = (() => {
4325
4335
  var window_ = globals.window || globals.self || globals.global || {};
4326
4336
  var global_ = globals.global || globals.self || globals.window || {};
4327
4337
  var document_ = globals.document || {};
4328
- var isBrowser = Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser);
4338
+ var isBrowser = (
4339
+ // @ts-ignore process does not exist on browser
4340
+ Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
4341
+ );
4329
4342
  var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
4330
4343
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
4331
4344
 
4332
4345
  // ../worker-utils/src/lib/env-utils/version.ts
4346
+ var NPM_TAG = "latest";
4333
4347
  function getVersion() {
4334
4348
  if (!globalThis._loadersgl_?.version) {
4335
4349
  globalThis._loadersgl_ = globalThis._loadersgl_ || {};
4336
- if (false) {
4337
- console.warn("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
4350
+ if (typeof __VERSION__ === "undefined") {
4351
+ console.warn(
4352
+ "loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
4353
+ );
4338
4354
  globalThis._loadersgl_.version = NPM_TAG;
4339
4355
  } else {
4340
- globalThis._loadersgl_.version = "4.2.0-alpha.4";
4356
+ globalThis._loadersgl_.version = __VERSION__;
4341
4357
  }
4342
4358
  }
4343
4359
  return globalThis._loadersgl_.version;
@@ -4362,7 +4378,10 @@ var __exports__ = (() => {
4362
4378
  var window_2 = globals2.window || globals2.self || globals2.global || {};
4363
4379
  var global_2 = globals2.global || globals2.self || globals2.window || {};
4364
4380
  var document_2 = globals2.document || {};
4365
- var isBrowser2 = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
4381
+ var isBrowser2 = (
4382
+ // @ts-ignore process.browser
4383
+ typeof process !== "object" || String(process) !== "[object process]" || process.browser
4384
+ );
4366
4385
  var isWorker = typeof importScripts === "function";
4367
4386
  var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
4368
4387
  var matches2 = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
@@ -4375,7 +4394,8 @@ var __exports__ = (() => {
4375
4394
  if (moduleName) {
4376
4395
  libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
4377
4396
  }
4378
- loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
4397
+ loadLibraryPromises[libraryUrl] = // eslint-disable-next-line @typescript-eslint/no-misused-promises
4398
+ loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
4379
4399
  return await loadLibraryPromises[libraryUrl];
4380
4400
  }
4381
4401
  function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
@@ -4469,7 +4489,9 @@ var __exports__ = (() => {
4469
4489
  return concatenateArrayBuffersFromArray(sources);
4470
4490
  }
4471
4491
  function concatenateArrayBuffersFromArray(sources) {
4472
- const sourceArrays = sources.map((source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);
4492
+ const sourceArrays = sources.map(
4493
+ (source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2
4494
+ );
4473
4495
  const byteLength = sourceArrays.reduce((length4, typedArray) => length4 + typedArray.byteLength, 0);
4474
4496
  const result = new Uint8Array(byteLength);
4475
4497
  let offset = 0;
@@ -4570,12 +4592,15 @@ var __exports__ = (() => {
4570
4592
 
4571
4593
  // ../loader-utils/src/lib/node/promisify.ts
4572
4594
  function promisify1(fn) {
4573
- return (args) => new Promise((resolve, reject) => fn(args, (error, callbackArgs) => error ? reject(error) : resolve(callbackArgs)));
4595
+ return (args) => new Promise(
4596
+ (resolve, reject) => fn(args, (error, callbackArgs) => error ? reject(error) : resolve(callbackArgs))
4597
+ );
4574
4598
  }
4575
4599
 
4576
4600
  // ../loader-utils/src/lib/files/node-file-facade.ts
4577
4601
  var NOT_IMPLEMENTED = new Error("Not implemented");
4578
4602
  var NodeFileFacade = class {
4603
+ handle;
4579
4604
  size = 0;
4580
4605
  bigsize = 0n;
4581
4606
  url = "";
@@ -4588,21 +4613,27 @@ var __exports__ = (() => {
4588
4613
  }
4589
4614
  throw new Error("Can't instantiate NodeFile. Make sure to import @loaders.gl/polyfills first.");
4590
4615
  }
4616
+ /** Read data */
4591
4617
  async read(start, end) {
4592
4618
  throw NOT_IMPLEMENTED;
4593
4619
  }
4620
+ /** Write to file. The number of bytes written will be returned */
4594
4621
  async write(arrayBuffer, offset, length4) {
4595
4622
  throw NOT_IMPLEMENTED;
4596
4623
  }
4624
+ /** Get information about file */
4597
4625
  async stat() {
4598
4626
  throw NOT_IMPLEMENTED;
4599
4627
  }
4628
+ /** Truncates the file descriptor. Only available on NodeFile. */
4600
4629
  async truncate(length4) {
4601
4630
  throw NOT_IMPLEMENTED;
4602
4631
  }
4632
+ /** Append data to a file. Only available on NodeFile. */
4603
4633
  async append(data) {
4604
4634
  throw NOT_IMPLEMENTED;
4605
4635
  }
4636
+ /** Close the file */
4606
4637
  async close() {
4607
4638
  }
4608
4639
  };
@@ -4614,18 +4645,34 @@ var __exports__ = (() => {
4614
4645
 
4615
4646
  // ../loader-utils/src/lib/file-provider/file-handle-file.ts
4616
4647
  var FileHandleFile = class {
4648
+ /** The FileHandle from which data is provided */
4649
+ file;
4650
+ /** Create a new FileHandleFile */
4617
4651
  constructor(path, append = false) {
4618
4652
  this.file = new NodeFileFacade(path, append ? "a+" : "r");
4619
4653
  }
4654
+ /**
4655
+ * Truncates the file descriptor.
4656
+ * @param length desired file lenght
4657
+ */
4620
4658
  async truncate(length4) {
4621
4659
  await this.file.truncate(length4);
4622
4660
  }
4661
+ /**
4662
+ * Append data to a file.
4663
+ * @param buffer data to append
4664
+ */
4623
4665
  async append(buffer) {
4624
4666
  await this.file.append(buffer);
4625
4667
  }
4668
+ /** Close file */
4626
4669
  async destroy() {
4627
4670
  await this.file.close();
4628
4671
  }
4672
+ /**
4673
+ * Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
4674
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4675
+ */
4629
4676
  async getUint8(offset) {
4630
4677
  const arrayBuffer = await this.file.read(offset, 1);
4631
4678
  const val = new Uint8Array(arrayBuffer).at(0);
@@ -4634,6 +4681,10 @@ var __exports__ = (() => {
4634
4681
  }
4635
4682
  return val;
4636
4683
  }
4684
+ /**
4685
+ * Gets an unsigned 16-bit integer at the specified byte offset from the start of the file.
4686
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4687
+ */
4637
4688
  async getUint16(offset) {
4638
4689
  const arrayBuffer = await this.file.read(offset, 2);
4639
4690
  const val = new Uint16Array(arrayBuffer).at(0);
@@ -4642,6 +4693,10 @@ var __exports__ = (() => {
4642
4693
  }
4643
4694
  return val;
4644
4695
  }
4696
+ /**
4697
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4698
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4699
+ */
4645
4700
  async getUint32(offset) {
4646
4701
  const arrayBuffer = await this.file.read(offset, 4);
4647
4702
  const val = new Uint32Array(arrayBuffer).at(0);
@@ -4650,6 +4705,10 @@ var __exports__ = (() => {
4650
4705
  }
4651
4706
  return val;
4652
4707
  }
4708
+ /**
4709
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4710
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4711
+ */
4653
4712
  async getBigUint64(offset) {
4654
4713
  const arrayBuffer = await this.file.read(offset, 8);
4655
4714
  const val = new BigInt64Array(arrayBuffer).at(0);
@@ -4658,6 +4717,11 @@ var __exports__ = (() => {
4658
4717
  }
4659
4718
  return val;
4660
4719
  }
4720
+ /**
4721
+ * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
4722
+ * @param startOffset The offset, in byte, from the start of the file where to start reading the data.
4723
+ * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
4724
+ */
4661
4725
  async slice(startOffset, endOffset) {
4662
4726
  const bigLength = endOffset - startOffset;
4663
4727
  if (bigLength > Number.MAX_SAFE_INTEGER) {
@@ -4666,6 +4730,9 @@ var __exports__ = (() => {
4666
4730
  const length4 = Number(bigLength);
4667
4731
  return await this.file.read(startOffset, length4);
4668
4732
  }
4733
+ /**
4734
+ * the length (in bytes) of the data.
4735
+ */
4669
4736
  get length() {
4670
4737
  return this.file.bigsize;
4671
4738
  }
@@ -4679,26 +4746,50 @@ var __exports__ = (() => {
4679
4746
  return Number(bigint);
4680
4747
  };
4681
4748
  var DataViewFile = class {
4749
+ /** The DataView from which data is provided */
4750
+ file;
4682
4751
  constructor(file) {
4683
4752
  this.file = file;
4684
4753
  }
4685
4754
  async destroy() {
4686
4755
  }
4756
+ /**
4757
+ * Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
4758
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4759
+ */
4687
4760
  async getUint8(offset) {
4688
4761
  return this.file.getUint8(toNumber(offset));
4689
4762
  }
4763
+ /**
4764
+ * Gets an unsigned 16-bit intege at the specified byte offset from the start of the file.
4765
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4766
+ */
4690
4767
  async getUint16(offset) {
4691
4768
  return this.file.getUint16(toNumber(offset), true);
4692
4769
  }
4770
+ /**
4771
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4772
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4773
+ */
4693
4774
  async getUint32(offset) {
4694
4775
  return this.file.getUint32(toNumber(offset), true);
4695
4776
  }
4777
+ /**
4778
+ * Gets an unsigned 64-bit integer at the specified byte offset from the start of the file.
4779
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4780
+ */
4696
4781
  async getBigUint64(offset) {
4697
4782
  return this.file.getBigUint64(toNumber(offset), true);
4698
4783
  }
4784
+ /**
4785
+ * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
4786
+ * @param startOffset The offset, in bytes, from the start of the file where to start reading the data.
4787
+ * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
4788
+ */
4699
4789
  async slice(startOffset, endOffset) {
4700
4790
  return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
4701
4791
  }
4792
+ /** the length (in bytes) of the data. */
4702
4793
  get length() {
4703
4794
  return BigInt(this.file.byteLength);
4704
4795
  }
@@ -8840,14 +8931,14 @@ var __exports__ = (() => {
8840
8931
  var OBJECT_ID_ATTRIBUTE_TYPE = "Oid32";
8841
8932
  var FLOAT_64_TYPE = "Float64";
8842
8933
  var INT_16_ATTRIBUTE_TYPE = "Int16";
8843
- var COORDINATE_SYSTEM = function(COORDINATE_SYSTEM2) {
8934
+ var COORDINATE_SYSTEM = /* @__PURE__ */ ((COORDINATE_SYSTEM2) => {
8844
8935
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["DEFAULT"] = -1] = "DEFAULT";
8845
8936
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT"] = 1] = "LNGLAT";
8846
8937
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["METER_OFFSETS"] = 2] = "METER_OFFSETS";
8847
8938
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT_OFFSETS"] = 3] = "LNGLAT_OFFSETS";
8848
8939
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["CARTESIAN"] = 0] = "CARTESIAN";
8849
8940
  return COORDINATE_SYSTEM2;
8850
- }({});
8941
+ })(COORDINATE_SYSTEM || {});
8851
8942
 
8852
8943
  // src/i3s-loader.ts
8853
8944
  var import_core18 = __toESM(require_core(), 1);
@@ -9211,7 +9302,7 @@ var __exports__ = (() => {
9211
9302
  _defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
9212
9303
 
9213
9304
  // ../images/src/lib/utils/version.ts
9214
- var VERSION2 = true ? "4.2.0-alpha.4" : "latest";
9305
+ var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9215
9306
 
9216
9307
  // ../images/src/lib/category-api/image-type.ts
9217
9308
  var parseImageNode = globalThis.loaders?.parseImageNode;
@@ -9398,10 +9489,7 @@ var __exports__ = (() => {
9398
9489
  switch (brandMajor) {
9399
9490
  case "avif":
9400
9491
  case "avis":
9401
- return {
9402
- extension: "avif",
9403
- mimeType: "image/avif"
9404
- };
9492
+ return { extension: "avif", mimeType: "image/avif" };
9405
9493
  default:
9406
9494
  return null;
9407
9495
  }
@@ -9437,6 +9525,7 @@ var __exports__ = (() => {
9437
9525
  }
9438
9526
  return {
9439
9527
  mimeType: mediaType.mimeType,
9528
+ // TODO - decode width and height
9440
9529
  width: 0,
9441
9530
  height: 0
9442
9531
  };
@@ -9483,10 +9572,7 @@ var __exports__ = (() => {
9483
9572
  if (!isJpeg) {
9484
9573
  return null;
9485
9574
  }
9486
- const {
9487
- tableMarkers,
9488
- sofMarkers
9489
- } = getJpegMarkers();
9575
+ const { tableMarkers, sofMarkers } = getJpegMarkers();
9490
9576
  let i2 = 2;
9491
9577
  while (i2 + 9 < dataView.byteLength) {
9492
9578
  const marker = dataView.getUint16(i2, BIG_ENDIAN);
@@ -9494,7 +9580,9 @@ var __exports__ = (() => {
9494
9580
  return {
9495
9581
  mimeType: "image/jpeg",
9496
9582
  height: dataView.getUint16(i2 + 5, BIG_ENDIAN),
9583
+ // Number of lines
9497
9584
  width: dataView.getUint16(i2 + 7, BIG_ENDIAN)
9585
+ // Number of pixels per line
9498
9586
  };
9499
9587
  }
9500
9588
  if (!tableMarkers.has(marker)) {
@@ -9510,11 +9598,23 @@ var __exports__ = (() => {
9510
9598
  for (let i2 = 65504; i2 < 65520; ++i2) {
9511
9599
  tableMarkers.add(i2);
9512
9600
  }
9513
- const sofMarkers = /* @__PURE__ */ new Set([65472, 65473, 65474, 65475, 65477, 65478, 65479, 65481, 65482, 65483, 65485, 65486, 65487, 65502]);
9514
- return {
9515
- tableMarkers,
9516
- sofMarkers
9517
- };
9601
+ const sofMarkers = /* @__PURE__ */ new Set([
9602
+ 65472,
9603
+ 65473,
9604
+ 65474,
9605
+ 65475,
9606
+ 65477,
9607
+ 65478,
9608
+ 65479,
9609
+ 65481,
9610
+ 65482,
9611
+ 65483,
9612
+ 65485,
9613
+ 65486,
9614
+ 65487,
9615
+ 65502
9616
+ ]);
9617
+ return { tableMarkers, sofMarkers };
9518
9618
  }
9519
9619
  function toDataView(data) {
9520
9620
  if (data instanceof DataView) {
@@ -9531,9 +9631,7 @@ var __exports__ = (() => {
9531
9631
 
9532
9632
  // ../images/src/lib/parsers/parse-to-node-image.ts
9533
9633
  async function parseToNodeImage(arrayBuffer, options) {
9534
- const {
9535
- mimeType
9536
- } = getBinaryImageMetadata(arrayBuffer) || {};
9634
+ const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
9537
9635
  const parseImageNode2 = globalThis.loaders?.parseImageNode;
9538
9636
  assert(parseImageNode2);
9539
9637
  return await parseImageNode2(arrayBuffer, mimeType);
@@ -9544,9 +9642,7 @@ var __exports__ = (() => {
9544
9642
  options = options || {};
9545
9643
  const imageOptions = options.image || {};
9546
9644
  const imageType = imageOptions.type || "auto";
9547
- const {
9548
- url
9549
- } = context || {};
9645
+ const { url } = context || {};
9550
9646
  const loadType = getLoadableImageType(imageType);
9551
9647
  let image;
9552
9648
  switch (loadType) {
@@ -9580,12 +9676,23 @@ var __exports__ = (() => {
9580
9676
 
9581
9677
  // ../images/src/image-loader.ts
9582
9678
  var EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
9583
- var MIME_TYPES = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/avif", "image/bmp", "image/vnd.microsoft.icon", "image/svg+xml"];
9679
+ var MIME_TYPES = [
9680
+ "image/png",
9681
+ "image/jpeg",
9682
+ "image/gif",
9683
+ "image/webp",
9684
+ "image/avif",
9685
+ "image/bmp",
9686
+ "image/vnd.microsoft.icon",
9687
+ "image/svg+xml"
9688
+ ];
9584
9689
  var DEFAULT_IMAGE_LOADER_OPTIONS = {
9585
9690
  image: {
9586
9691
  type: "auto",
9587
9692
  decode: true
9693
+ // if format is HTML
9588
9694
  }
9695
+ // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
9589
9696
  };
9590
9697
  var ImageLoader = {
9591
9698
  id: "image",
@@ -9595,18 +9702,20 @@ var __exports__ = (() => {
9595
9702
  mimeTypes: MIME_TYPES,
9596
9703
  extensions: EXTENSIONS,
9597
9704
  parse: parseImage,
9705
+ // TODO: byteOffset, byteLength;
9598
9706
  tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
9599
9707
  options: DEFAULT_IMAGE_LOADER_OPTIONS
9600
9708
  };
9601
9709
 
9602
9710
  // ../draco/src/lib/utils/version.ts
9603
- var VERSION3 = true ? "4.2.0-alpha.4" : "latest";
9711
+ var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9604
9712
 
9605
9713
  // ../draco/src/draco-loader.ts
9606
9714
  var DracoLoader = {
9607
9715
  name: "Draco",
9608
9716
  id: "draco",
9609
9717
  module: "draco",
9718
+ // shapes: ['mesh'],
9610
9719
  version: VERSION3,
9611
9720
  worker: true,
9612
9721
  extensions: ["drc"],
@@ -9616,6 +9725,7 @@ var __exports__ = (() => {
9616
9725
  options: {
9617
9726
  draco: {
9618
9727
  decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
9728
+ // 'js' for IE11
9619
9729
  libraryPath: "libs/",
9620
9730
  extraAttributes: {},
9621
9731
  attributeNameEntry: void 0
@@ -9669,7 +9779,10 @@ var __exports__ = (() => {
9669
9779
  maxY = y > maxY ? y : maxY;
9670
9780
  maxZ = z > maxZ ? z : maxZ;
9671
9781
  }
9672
- return [[minX, minY, minZ], [maxX, maxY, maxZ]];
9782
+ return [
9783
+ [minX, minY, minZ],
9784
+ [maxX, maxY, maxZ]
9785
+ ];
9673
9786
  }
9674
9787
 
9675
9788
  // ../schema/src/lib/mesh/deduce-mesh-schema.ts
@@ -9678,14 +9791,7 @@ var __exports__ = (() => {
9678
9791
  const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
9679
9792
  return {
9680
9793
  name,
9681
- type: {
9682
- type: "fixed-size-list",
9683
- listSize: attribute.size,
9684
- children: [{
9685
- name: "value",
9686
- type
9687
- }]
9688
- },
9794
+ type: { type: "fixed-size-list", listSize: attribute.size, children: [{ name: "value", type }] },
9689
9795
  nullable: false,
9690
9796
  metadata
9691
9797
  };
@@ -9711,17 +9817,18 @@ var __exports__ = (() => {
9711
9817
  const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
9712
9818
  for (const attributeName in attributes) {
9713
9819
  const attribute = attributes[attributeName];
9714
- const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
9820
+ const field = getArrowFieldFromAttribute(
9821
+ attributeName,
9822
+ attribute,
9823
+ namedLoaderDataAttributes[attributeName]
9824
+ );
9715
9825
  fields.push(field);
9716
9826
  }
9717
9827
  if (indices) {
9718
9828
  const indicesField = getArrowFieldFromAttribute("indices", indices);
9719
9829
  fields.push(indicesField);
9720
9830
  }
9721
- return {
9722
- fields,
9723
- metadata
9724
- };
9831
+ return { fields, metadata };
9725
9832
  }
9726
9833
  function transformAttributesLoaderData(loaderData) {
9727
9834
  const result = {};
@@ -9763,15 +9870,27 @@ var __exports__ = (() => {
9763
9870
  };
9764
9871
  var INDEX_ITEM_SIZE = 4;
9765
9872
  var DracoParser = class {
9873
+ draco;
9874
+ decoder;
9875
+ metadataQuerier;
9876
+ // draco - the draco decoder, either import `draco3d` or load dynamically
9766
9877
  constructor(draco) {
9767
9878
  this.draco = draco;
9768
9879
  this.decoder = new this.draco.Decoder();
9769
9880
  this.metadataQuerier = new this.draco.MetadataQuerier();
9770
9881
  }
9882
+ /**
9883
+ * Destroy draco resources
9884
+ */
9771
9885
  destroy() {
9772
9886
  this.draco.destroy(this.decoder);
9773
9887
  this.draco.destroy(this.metadataQuerier);
9774
9888
  }
9889
+ /**
9890
+ * NOTE: caller must call `destroyGeometry` on the return value after using it
9891
+ * @param arrayBuffer
9892
+ * @param options
9893
+ */
9775
9894
  parseSync(arrayBuffer, options = {}) {
9776
9895
  const buffer = new this.draco.DecoderBuffer();
9777
9896
  buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
@@ -9816,6 +9935,14 @@ var __exports__ = (() => {
9816
9935
  }
9817
9936
  }
9818
9937
  }
9938
+ // Draco specific "loader data"
9939
+ /**
9940
+ * Extract
9941
+ * @param dracoGeometry
9942
+ * @param geometry_type
9943
+ * @param options
9944
+ * @returns
9945
+ */
9819
9946
  _getDracoLoaderData(dracoGeometry, geometry_type, options) {
9820
9947
  const metadata = this._getTopLevelMetadata(dracoGeometry);
9821
9948
  const attributes = this._getDracoAttributes(dracoGeometry, options);
@@ -9828,6 +9955,12 @@ var __exports__ = (() => {
9828
9955
  attributes
9829
9956
  };
9830
9957
  }
9958
+ /**
9959
+ * Extract all draco provided information and metadata for each attribute
9960
+ * @param dracoGeometry
9961
+ * @param options
9962
+ * @returns
9963
+ */
9831
9964
  _getDracoAttributes(dracoGeometry, options) {
9832
9965
  const dracoAttributes = {};
9833
9966
  for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
@@ -9855,6 +9988,12 @@ var __exports__ = (() => {
9855
9988
  }
9856
9989
  return dracoAttributes;
9857
9990
  }
9991
+ /**
9992
+ * Get standard loaders.gl mesh category data
9993
+ * Extracts the geometry from draco
9994
+ * @param dracoGeometry
9995
+ * @param options
9996
+ */
9858
9997
  _getMeshData(dracoGeometry, loaderData, options) {
9859
9998
  const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
9860
9999
  const positionAttribute = attributes.POSITION;
@@ -9867,6 +10006,7 @@ var __exports__ = (() => {
9867
10006
  return {
9868
10007
  topology: "triangle-strip",
9869
10008
  mode: 4,
10009
+ // GL.TRIANGLES
9870
10010
  attributes,
9871
10011
  indices: {
9872
10012
  value: this._getTriangleStripIndices(dracoGeometry),
@@ -9878,6 +10018,7 @@ var __exports__ = (() => {
9878
10018
  return {
9879
10019
  topology: "triangle-list",
9880
10020
  mode: 5,
10021
+ // GL.TRIANGLE_STRIP
9881
10022
  attributes,
9882
10023
  indices: {
9883
10024
  value: this._getTriangleListIndices(dracoGeometry),
@@ -9889,6 +10030,7 @@ var __exports__ = (() => {
9889
10030
  return {
9890
10031
  topology: "point-list",
9891
10032
  mode: 0,
10033
+ // GL.POINTS
9892
10034
  attributes
9893
10035
  };
9894
10036
  }
@@ -9897,10 +10039,7 @@ var __exports__ = (() => {
9897
10039
  for (const loaderAttribute of Object.values(loaderData.attributes)) {
9898
10040
  const attributeName = this._deduceAttributeName(loaderAttribute, options);
9899
10041
  loaderAttribute.name = attributeName;
9900
- const {
9901
- value,
9902
- size
9903
- } = this._getAttributeValues(dracoGeometry, loaderAttribute);
10042
+ const { value, size } = this._getAttributeValues(dracoGeometry, loaderAttribute);
9904
10043
  attributes[attributeName] = {
9905
10044
  value,
9906
10045
  size,
@@ -9911,6 +10050,11 @@ var __exports__ = (() => {
9911
10050
  }
9912
10051
  return attributes;
9913
10052
  }
10053
+ // MESH INDICES EXTRACTION
10054
+ /**
10055
+ * For meshes, we need indices to define the faces.
10056
+ * @param dracoGeometry
10057
+ */
9914
10058
  _getTriangleListIndices(dracoGeometry) {
9915
10059
  const numFaces = dracoGeometry.num_faces();
9916
10060
  const numIndices = numFaces * 3;
@@ -9923,6 +10067,10 @@ var __exports__ = (() => {
9923
10067
  this.draco._free(ptr);
9924
10068
  }
9925
10069
  }
10070
+ /**
10071
+ * For meshes, we need indices to define the faces.
10072
+ * @param dracoGeometry
10073
+ */
9926
10074
  _getTriangleStripIndices(dracoGeometry) {
9927
10075
  const dracoArray = new this.draco.DracoInt32Array();
9928
10076
  try {
@@ -9932,6 +10080,12 @@ var __exports__ = (() => {
9932
10080
  this.draco.destroy(dracoArray);
9933
10081
  }
9934
10082
  }
10083
+ /**
10084
+ *
10085
+ * @param dracoGeometry
10086
+ * @param dracoAttribute
10087
+ * @param attributeName
10088
+ */
9935
10089
  _getAttributeValues(dracoGeometry, attribute) {
9936
10090
  const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
9937
10091
  const numComponents = attribute.num_components;
@@ -9943,19 +10097,48 @@ var __exports__ = (() => {
9943
10097
  const ptr = this.draco._malloc(byteLength);
9944
10098
  try {
9945
10099
  const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);
9946
- this.decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, dracoAttribute, dataType, byteLength, ptr);
10100
+ this.decoder.GetAttributeDataArrayForAllPoints(
10101
+ dracoGeometry,
10102
+ dracoAttribute,
10103
+ dataType,
10104
+ byteLength,
10105
+ ptr
10106
+ );
9947
10107
  value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();
9948
10108
  } finally {
9949
10109
  this.draco._free(ptr);
9950
10110
  }
9951
- return {
9952
- value,
9953
- size: numComponents
9954
- };
9955
- }
10111
+ return { value, size: numComponents };
10112
+ }
10113
+ // Attribute names
10114
+ /**
10115
+ * DRACO does not store attribute names - We need to deduce an attribute name
10116
+ * for each attribute
10117
+ _getAttributeNames(
10118
+ dracoGeometry: Mesh | PointCloud,
10119
+ options: DracoParseOptions
10120
+ ): {[unique_id: number]: string} {
10121
+ const attributeNames: {[unique_id: number]: string} = {};
10122
+ for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
10123
+ const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
10124
+ const attributeName = this._deduceAttributeName(dracoAttribute, options);
10125
+ attributeNames[attributeName] = attributeName;
10126
+ }
10127
+ return attributeNames;
10128
+ }
10129
+ */
10130
+ /**
10131
+ * Deduce an attribute name.
10132
+ * @note DRACO does not save attribute names, just general type (POSITION, COLOR)
10133
+ * to help optimize compression. We generate GLTF compatible names for the Draco-recognized
10134
+ * types
10135
+ * @param attributeData
10136
+ */
9956
10137
  _deduceAttributeName(attribute, options) {
9957
10138
  const uniqueId = attribute.unique_id;
9958
- for (const [attributeName, attributeUniqueId] of Object.entries(options.extraAttributes || {})) {
10139
+ for (const [attributeName, attributeUniqueId] of Object.entries(
10140
+ options.extraAttributes || {}
10141
+ )) {
9959
10142
  if (attributeUniqueId === uniqueId) {
9960
10143
  return attributeName;
9961
10144
  }
@@ -9973,14 +10156,22 @@ var __exports__ = (() => {
9973
10156
  }
9974
10157
  return `CUSTOM_ATTRIBUTE_${uniqueId}`;
9975
10158
  }
10159
+ // METADATA EXTRACTION
10160
+ /** Get top level metadata */
9976
10161
  _getTopLevelMetadata(dracoGeometry) {
9977
10162
  const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
9978
10163
  return this._getDracoMetadata(dracoMetadata);
9979
10164
  }
10165
+ /** Get per attribute metadata */
9980
10166
  _getAttributeMetadata(dracoGeometry, attributeId) {
9981
10167
  const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
9982
10168
  return this._getDracoMetadata(dracoMetadata);
9983
10169
  }
10170
+ /**
10171
+ * Extract metadata field values
10172
+ * @param dracoMetadata
10173
+ * @returns
10174
+ */
9984
10175
  _getDracoMetadata(dracoMetadata) {
9985
10176
  if (!dracoMetadata || !dracoMetadata.ptr) {
9986
10177
  return {};
@@ -9993,6 +10184,11 @@ var __exports__ = (() => {
9993
10184
  }
9994
10185
  return result;
9995
10186
  }
10187
+ /**
10188
+ * Extracts possible values for one metadata entry by name
10189
+ * @param dracoMetadata
10190
+ * @param entryName
10191
+ */
9996
10192
  _getDracoMetadataField(dracoMetadata, entryName) {
9997
10193
  const dracoArray = new this.draco.DracoInt32Array();
9998
10194
  try {
@@ -10008,20 +10204,21 @@ var __exports__ = (() => {
10008
10204
  this.draco.destroy(dracoArray);
10009
10205
  }
10010
10206
  }
10207
+ // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)
10208
+ /** Skip transforms for specific attribute types */
10011
10209
  _disableAttributeTransforms(options) {
10012
- const {
10013
- quantizedAttributes = [],
10014
- octahedronAttributes = []
10015
- } = options;
10210
+ const { quantizedAttributes = [], octahedronAttributes = [] } = options;
10016
10211
  const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];
10017
10212
  for (const dracoAttributeName of skipAttributes) {
10018
10213
  this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);
10019
10214
  }
10020
10215
  }
10216
+ /**
10217
+ * Extract (and apply?) Position Transform
10218
+ * @todo not used
10219
+ */
10021
10220
  _getQuantizationTransform(dracoAttribute, options) {
10022
- const {
10023
- quantizedAttributes = []
10024
- } = options;
10221
+ const { quantizedAttributes = [] } = options;
10025
10222
  const attribute_type = dracoAttribute.attribute_type();
10026
10223
  const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);
10027
10224
  if (skip) {
@@ -10041,9 +10238,7 @@ var __exports__ = (() => {
10041
10238
  return null;
10042
10239
  }
10043
10240
  _getOctahedronTransform(dracoAttribute, options) {
10044
- const {
10045
- octahedronAttributes = []
10046
- } = options;
10241
+ const { octahedronAttributes = [] } = options;
10047
10242
  const attribute_type = dracoAttribute.attribute_type();
10048
10243
  const octahedron = octahedronAttributes.map((type) => this.decoder[type]).includes(attribute_type);
10049
10244
  if (octahedron) {
@@ -10060,6 +10255,7 @@ var __exports__ = (() => {
10060
10255
  }
10061
10256
  return null;
10062
10257
  }
10258
+ // HELPERS
10063
10259
  };
10064
10260
  function getDracoDataType(draco, attributeType) {
10065
10261
  switch (attributeType) {
@@ -10103,9 +10299,13 @@ var __exports__ = (() => {
10103
10299
  var DRACO_ENCODER_VERSION = "1.4.1";
10104
10300
  var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
10105
10301
  var DRACO_EXTERNAL_LIBRARIES = {
10302
+ /** The primary Draco3D encoder, javascript wrapper part */
10106
10303
  DECODER: "draco_wasm_wrapper.js",
10304
+ /** The primary draco decoder, compiled web assembly part */
10107
10305
  DECODER_WASM: "draco_decoder.wasm",
10306
+ /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
10108
10307
  FALLBACK_DECODER: "draco_decoder.js",
10308
+ /** Draco encoder */
10109
10309
  ENCODER: "draco_encoder.js"
10110
10310
  };
10111
10311
  var DRACO_EXTERNAL_LIBRARY_URLS = {
@@ -10119,9 +10319,7 @@ var __exports__ = (() => {
10119
10319
  const modules = options.modules || {};
10120
10320
  if (modules.draco3d) {
10121
10321
  loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then((draco) => {
10122
- return {
10123
- draco
10124
- };
10322
+ return { draco };
10125
10323
  });
10126
10324
  } else {
10127
10325
  loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
@@ -10133,11 +10331,29 @@ var __exports__ = (() => {
10133
10331
  let wasmBinary;
10134
10332
  switch (options.draco && options.draco.decoderType) {
10135
10333
  case "js":
10136
- DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
10334
+ DracoDecoderModule = await loadLibrary(
10335
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
10336
+ "draco",
10337
+ options,
10338
+ DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
10339
+ );
10137
10340
  break;
10138
10341
  case "wasm":
10139
10342
  default:
10140
- [DracoDecoderModule, wasmBinary] = await Promise.all([await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER), await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)]);
10343
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
10344
+ await loadLibrary(
10345
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
10346
+ "draco",
10347
+ options,
10348
+ DRACO_EXTERNAL_LIBRARIES.DECODER
10349
+ ),
10350
+ await loadLibrary(
10351
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
10352
+ "draco",
10353
+ options,
10354
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
10355
+ )
10356
+ ]);
10141
10357
  }
10142
10358
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
10143
10359
  return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
@@ -10150,9 +10366,8 @@ var __exports__ = (() => {
10150
10366
  return new Promise((resolve) => {
10151
10367
  DracoDecoderModule({
10152
10368
  ...options,
10153
- onModuleLoaded: (draco) => resolve({
10154
- draco
10155
- })
10369
+ onModuleLoaded: (draco) => resolve({ draco })
10370
+ // Module is Promise-like. Wrap in object to avoid loop.
10156
10371
  });
10157
10372
  });
10158
10373
  }
@@ -10163,9 +10378,7 @@ var __exports__ = (() => {
10163
10378
  parse
10164
10379
  };
10165
10380
  async function parse(arrayBuffer, options) {
10166
- const {
10167
- draco
10168
- } = await loadDracoDecoderModule(options);
10381
+ const { draco } = await loadDracoDecoderModule(options);
10169
10382
  const dracoParser = new DracoParser(draco);
10170
10383
  try {
10171
10384
  return dracoParser.parseSync(arrayBuffer, options?.draco);
@@ -10175,13 +10388,17 @@ var __exports__ = (() => {
10175
10388
  }
10176
10389
 
10177
10390
  // ../textures/src/lib/utils/version.ts
10178
- var VERSION4 = true ? "4.2.0-alpha.4" : "latest";
10391
+ var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10179
10392
 
10180
10393
  // ../textures/src/lib/parsers/basis-module-loader.ts
10181
10394
  var BASIS_EXTERNAL_LIBRARIES = {
10395
+ /** Basis transcoder, javascript wrapper part */
10182
10396
  TRANSCODER: "basis_transcoder.js",
10397
+ /** Basis transcoder, compiled web assembly part */
10183
10398
  TRANSCODER_WASM: "basis_transcoder.wasm",
10399
+ /** Basis encoder, javascript wrapper part */
10184
10400
  ENCODER: "basis_encoder.js",
10401
+ /** Basis encoder, compiled web assembly part */
10185
10402
  ENCODER_WASM: "basis_encoder.wasm"
10186
10403
  };
10187
10404
  var loadBasisTranscoderPromise;
@@ -10196,7 +10413,10 @@ var __exports__ = (() => {
10196
10413
  async function loadBasisTranscoder(options) {
10197
10414
  let BASIS = null;
10198
10415
  let wasmBinary = null;
10199
- [BASIS, wasmBinary] = await Promise.all([await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options), await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)]);
10416
+ [BASIS, wasmBinary] = await Promise.all([
10417
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
10418
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
10419
+ ]);
10200
10420
  BASIS = BASIS || globalThis.BASIS;
10201
10421
  return await initializeBasisTranscoderModule(BASIS, wasmBinary);
10202
10422
  }
@@ -10207,14 +10427,9 @@ var __exports__ = (() => {
10207
10427
  }
10208
10428
  return new Promise((resolve) => {
10209
10429
  BasisModule(options).then((module) => {
10210
- const {
10211
- BasisFile,
10212
- initializeBasis
10213
- } = module;
10430
+ const { BasisFile, initializeBasis } = module;
10214
10431
  initializeBasis();
10215
- resolve({
10216
- BasisFile
10217
- });
10432
+ resolve({ BasisFile });
10218
10433
  });
10219
10434
  });
10220
10435
  }
@@ -10230,7 +10445,10 @@ var __exports__ = (() => {
10230
10445
  async function loadBasisEncoder(options) {
10231
10446
  let BASIS_ENCODER = null;
10232
10447
  let wasmBinary = null;
10233
- [BASIS_ENCODER, wasmBinary] = await Promise.all([await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options), await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)]);
10448
+ [BASIS_ENCODER, wasmBinary] = await Promise.all([
10449
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
10450
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
10451
+ ]);
10234
10452
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
10235
10453
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
10236
10454
  }
@@ -10241,28 +10459,21 @@ var __exports__ = (() => {
10241
10459
  }
10242
10460
  return new Promise((resolve) => {
10243
10461
  BasisEncoderModule(options).then((module) => {
10244
- const {
10245
- BasisFile,
10246
- KTX2File,
10247
- initializeBasis,
10248
- BasisEncoder
10249
- } = module;
10462
+ const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module;
10250
10463
  initializeBasis();
10251
- resolve({
10252
- BasisFile,
10253
- KTX2File,
10254
- BasisEncoder
10255
- });
10464
+ resolve({ BasisFile, KTX2File, BasisEncoder });
10256
10465
  });
10257
10466
  });
10258
10467
  }
10259
10468
 
10260
10469
  // ../textures/src/lib/gl-extensions.ts
10261
10470
  var GL_EXTENSIONS_CONSTANTS = {
10471
+ // WEBGL_compressed_texture_s3tc
10262
10472
  COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
10263
10473
  COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
10264
10474
  COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
10265
10475
  COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
10476
+ // WEBGL_compressed_texture_es3
10266
10477
  COMPRESSED_R11_EAC: 37488,
10267
10478
  COMPRESSED_SIGNED_R11_EAC: 37489,
10268
10479
  COMPRESSED_RG11_EAC: 37490,
@@ -10273,14 +10484,18 @@ var __exports__ = (() => {
10273
10484
  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
10274
10485
  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
10275
10486
  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
10487
+ // WEBGL_compressed_texture_pvrtc
10276
10488
  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
10277
10489
  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
10278
10490
  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
10279
10491
  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
10492
+ // WEBGL_compressed_texture_etc1
10280
10493
  COMPRESSED_RGB_ETC1_WEBGL: 36196,
10494
+ // WEBGL_compressed_texture_atc
10281
10495
  COMPRESSED_RGB_ATC_WEBGL: 35986,
10282
10496
  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
10283
10497
  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
10498
+ // WEBGL_compressed_texture_astc
10284
10499
  COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
10285
10500
  COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
10286
10501
  COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
@@ -10309,10 +10524,12 @@ var __exports__ = (() => {
10309
10524
  COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
10310
10525
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
10311
10526
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
10527
+ // EXT_texture_compression_rgtc
10312
10528
  COMPRESSED_RED_RGTC1_EXT: 36283,
10313
10529
  COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
10314
10530
  COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
10315
10531
  COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
10532
+ // WEBGL_compressed_texture_s3tc_srgb
10316
10533
  COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
10317
10534
  COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
10318
10535
  COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
@@ -10322,6 +10539,7 @@ var __exports__ = (() => {
10322
10539
  // ../textures/src/lib/utils/texture-formats.ts
10323
10540
  var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
10324
10541
  var WEBGL_EXTENSIONS = {
10542
+ /* eslint-disable camelcase */
10325
10543
  WEBGL_compressed_texture_s3tc: "dxt",
10326
10544
  WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
10327
10545
  WEBGL_compressed_texture_etc1: "etc1",
@@ -10330,6 +10548,7 @@ var __exports__ = (() => {
10330
10548
  WEBGL_compressed_texture_atc: "atc",
10331
10549
  WEBGL_compressed_texture_astc: "astc",
10332
10550
  EXT_texture_compression_rgtc: "rgtc"
10551
+ /* eslint-enable camelcase */
10333
10552
  };
10334
10553
  var formats = null;
10335
10554
  function getSupportedGPUTextureFormats(gl) {
@@ -10512,49 +10731,91 @@ var __exports__ = (() => {
10512
10731
  154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
10513
10732
  155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
10514
10733
  156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
10734
+ // @ts-ignore
10515
10735
  157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
10736
+ // @ts-ignore
10516
10737
  158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
10738
+ // @ts-ignore
10517
10739
  159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
10740
+ // @ts-ignore
10518
10741
  160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
10742
+ // @ts-ignore
10519
10743
  161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
10744
+ // @ts-ignore
10520
10745
  162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
10746
+ // @ts-ignore
10521
10747
  163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
10748
+ // @ts-ignore
10522
10749
  164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
10750
+ // @ts-ignore
10523
10751
  165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
10752
+ // @ts-ignore
10524
10753
  166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
10754
+ // @ts-ignore
10525
10755
  167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
10756
+ // @ts-ignore
10526
10757
  168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
10758
+ // @ts-ignore
10527
10759
  169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
10760
+ // @ts-ignore
10528
10761
  170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
10762
+ // @ts-ignore
10529
10763
  171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
10764
+ // @ts-ignore
10530
10765
  172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
10766
+ // @ts-ignore
10531
10767
  173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
10768
+ // @ts-ignore
10532
10769
  174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
10770
+ // @ts-ignore
10533
10771
  175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
10772
+ // @ts-ignore
10534
10773
  176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
10774
+ // @ts-ignore
10535
10775
  177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
10776
+ // @ts-ignore
10536
10777
  178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
10778
+ // @ts-ignore
10537
10779
  179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
10780
+ // @ts-ignore
10538
10781
  180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
10782
+ // @ts-ignore
10539
10783
  181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
10784
+ // @ts-ignore
10540
10785
  182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
10786
+ // @ts-ignore
10541
10787
  183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
10788
+ // @ts-ignore
10542
10789
  184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
10543
10790
  1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
10544
10791
  1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
10792
+ // @ts-ignore
10545
10793
  1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
10794
+ // @ts-ignore
10546
10795
  1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
10796
+ // @ts-ignore
10547
10797
  1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
10798
+ // @ts-ignore
10548
10799
  1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
10800
+ // @ts-ignore
10549
10801
  1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
10802
+ // @ts-ignore
10550
10803
  1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
10804
+ // @ts-ignore
10551
10805
  1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
10806
+ // @ts-ignore
10552
10807
  1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
10808
+ // @ts-ignore
10553
10809
  1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
10810
+ // @ts-ignore
10554
10811
  1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
10812
+ // @ts-ignore
10555
10813
  1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
10814
+ // @ts-ignore
10556
10815
  1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
10816
+ // @ts-ignore
10557
10817
  1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
10818
+ // @ts-ignore
10558
10819
  1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
10559
10820
  };
10560
10821
  function mapVkFormatToWebGL(vkFormat) {
@@ -10562,10 +10823,35 @@ var __exports__ = (() => {
10562
10823
  }
10563
10824
 
10564
10825
  // ../textures/src/lib/parsers/parse-ktx.ts
10565
- var KTX2_ID = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
10826
+ var KTX2_ID = [
10827
+ // '´', 'K', 'T', 'X', '2', '0', 'ª', '\r', '\n', '\x1A', '\n'
10828
+ 171,
10829
+ 75,
10830
+ 84,
10831
+ 88,
10832
+ 32,
10833
+ 50,
10834
+ 48,
10835
+ 187,
10836
+ 13,
10837
+ 10,
10838
+ 26,
10839
+ 10
10840
+ ];
10566
10841
  function isKTX(data) {
10567
10842
  const id = new Uint8Array(data);
10568
- const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
10843
+ const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || // '´'
10844
+ id[1] !== KTX2_ID[1] || // 'K'
10845
+ id[2] !== KTX2_ID[2] || // 'T'
10846
+ id[3] !== KTX2_ID[3] || // 'X'
10847
+ id[4] !== KTX2_ID[4] || // ' '
10848
+ id[5] !== KTX2_ID[5] || // '2'
10849
+ id[6] !== KTX2_ID[6] || // '0'
10850
+ id[7] !== KTX2_ID[7] || // 'ª'
10851
+ id[8] !== KTX2_ID[8] || // '\r'
10852
+ id[9] !== KTX2_ID[9] || // '\n'
10853
+ id[10] !== KTX2_ID[10] || // '\x1A'
10854
+ id[11] !== KTX2_ID[11];
10569
10855
  return !notKTX;
10570
10856
  }
10571
10857
  function parseKTX(arrayBuffer) {
@@ -10591,10 +10877,7 @@ var __exports__ = (() => {
10591
10877
  compressed: true,
10592
10878
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
10593
10879
  },
10594
- etc2: {
10595
- basisFormat: 1,
10596
- compressed: true
10597
- },
10880
+ etc2: { basisFormat: 1, compressed: true },
10598
10881
  bc1: {
10599
10882
  basisFormat: 2,
10600
10883
  compressed: true,
@@ -10605,22 +10888,10 @@ var __exports__ = (() => {
10605
10888
  compressed: true,
10606
10889
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
10607
10890
  },
10608
- bc4: {
10609
- basisFormat: 4,
10610
- compressed: true
10611
- },
10612
- bc5: {
10613
- basisFormat: 5,
10614
- compressed: true
10615
- },
10616
- "bc7-m6-opaque-only": {
10617
- basisFormat: 6,
10618
- compressed: true
10619
- },
10620
- "bc7-m5": {
10621
- basisFormat: 7,
10622
- compressed: true
10623
- },
10891
+ bc4: { basisFormat: 4, compressed: true },
10892
+ bc5: { basisFormat: 5, compressed: true },
10893
+ "bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
10894
+ "bc7-m5": { basisFormat: 7, compressed: true },
10624
10895
  "pvrtc1-4-rgb": {
10625
10896
  basisFormat: 8,
10626
10897
  compressed: true,
@@ -10636,30 +10907,12 @@ var __exports__ = (() => {
10636
10907
  compressed: true,
10637
10908
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
10638
10909
  },
10639
- "atc-rgb": {
10640
- basisFormat: 11,
10641
- compressed: true
10642
- },
10643
- "atc-rgba-interpolated-alpha": {
10644
- basisFormat: 12,
10645
- compressed: true
10646
- },
10647
- rgba32: {
10648
- basisFormat: 13,
10649
- compressed: false
10650
- },
10651
- rgb565: {
10652
- basisFormat: 14,
10653
- compressed: false
10654
- },
10655
- bgr565: {
10656
- basisFormat: 15,
10657
- compressed: false
10658
- },
10659
- rgba4444: {
10660
- basisFormat: 16,
10661
- compressed: false
10662
- }
10910
+ "atc-rgb": { basisFormat: 11, compressed: true },
10911
+ "atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
10912
+ rgba32: { basisFormat: 13, compressed: false },
10913
+ rgb565: { basisFormat: 14, compressed: false },
10914
+ bgr565: { basisFormat: 15, compressed: false },
10915
+ rgba4444: { basisFormat: 16, compressed: false }
10663
10916
  };
10664
10917
  async function parseBasis(data, options) {
10665
10918
  if (options.basis.containerFormat === "auto") {
@@ -10667,9 +10920,7 @@ var __exports__ = (() => {
10667
10920
  const fileConstructors = await loadBasisEncoderModule(options);
10668
10921
  return parseKTX2File(fileConstructors.KTX2File, data, options);
10669
10922
  }
10670
- const {
10671
- BasisFile
10672
- } = await loadBasisTranscoderModule(options);
10923
+ const { BasisFile } = await loadBasisTranscoderModule(options);
10673
10924
  return parseBasisFile(BasisFile, data, options);
10674
10925
  }
10675
10926
  switch (options.basis.module) {
@@ -10684,9 +10935,7 @@ var __exports__ = (() => {
10684
10935
  }
10685
10936
  case "transcoder":
10686
10937
  default:
10687
- const {
10688
- BasisFile
10689
- } = await loadBasisTranscoderModule(options);
10938
+ const { BasisFile } = await loadBasisTranscoderModule(options);
10690
10939
  return parseBasisFile(BasisFile, data, options);
10691
10940
  }
10692
10941
  }
@@ -10715,23 +10964,24 @@ var __exports__ = (() => {
10715
10964
  function transcodeImage(basisFile, imageIndex, levelIndex, options) {
10716
10965
  const width = basisFile.getImageWidth(imageIndex, levelIndex);
10717
10966
  const height = basisFile.getImageHeight(imageIndex, levelIndex);
10718
- const hasAlpha = basisFile.getHasAlpha();
10719
- const {
10720
- compressed,
10721
- format,
10722
- basisFormat
10723
- } = getBasisOptions(options, hasAlpha);
10967
+ const hasAlpha = basisFile.getHasAlpha(
10968
+ /* imageIndex, levelIndex */
10969
+ );
10970
+ const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
10724
10971
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
10725
10972
  const decodedData = new Uint8Array(decodedSize);
10726
10973
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
10727
10974
  throw new Error("failed to start Basis transcoding");
10728
10975
  }
10729
10976
  return {
10977
+ // standard loaders.gl image category payload
10730
10978
  width,
10731
10979
  height,
10732
10980
  data: decodedData,
10733
10981
  compressed,
10734
10982
  format,
10983
+ // Additional fields
10984
+ // Add levelSize field.
10735
10985
  hasAlpha
10736
10986
  };
10737
10987
  }
@@ -10754,26 +11004,35 @@ var __exports__ = (() => {
10754
11004
  }
10755
11005
  }
10756
11006
  function transcodeKTX2Image(ktx2File, levelIndex, options) {
10757
- const {
10758
- alphaFlag,
10759
- height,
10760
- width
10761
- } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
10762
- const {
10763
- compressed,
10764
- format,
11007
+ const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
11008
+ const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
11009
+ const decodedSize = ktx2File.getImageTranscodedSizeInBytes(
11010
+ levelIndex,
11011
+ 0,
11012
+ 0,
10765
11013
  basisFormat
10766
- } = getBasisOptions(options, alphaFlag);
10767
- const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
11014
+ );
10768
11015
  const decodedData = new Uint8Array(decodedSize);
10769
- if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
11016
+ if (!ktx2File.transcodeImage(
11017
+ decodedData,
11018
+ levelIndex,
11019
+ 0,
11020
+ 0,
11021
+ basisFormat,
11022
+ 0,
11023
+ -1,
11024
+ -1
11025
+ /* channel1 */
11026
+ )) {
10770
11027
  throw new Error("Failed to transcode KTX2 image");
10771
11028
  }
10772
11029
  return {
11030
+ // standard loaders.gl image category payload
10773
11031
  width,
10774
11032
  height,
10775
11033
  data: decodedData,
10776
11034
  compressed,
11035
+ // Additional fields
10777
11036
  levelSize: decodedSize,
10778
11037
  hasAlpha: alphaFlag,
10779
11038
  format
@@ -10826,9 +11085,12 @@ var __exports__ = (() => {
10826
11085
  options: {
10827
11086
  basis: {
10828
11087
  format: "auto",
11088
+ // gl context doesn't exist on a worker thread
10829
11089
  libraryPath: "libs/",
10830
11090
  containerFormat: "auto",
11091
+ // 'basis' || 'ktx2' || 'auto'
10831
11092
  module: "transcoder"
11093
+ // 'transcoder' || 'encoder'
10832
11094
  }
10833
11095
  }
10834
11096
  };
@@ -10879,7 +11141,10 @@ var __exports__ = (() => {
10879
11141
  function parseDDS(data) {
10880
11142
  const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
10881
11143
  const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
10882
- assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), "DDS: Unsupported format, must contain a FourCC code");
11144
+ assert(
11145
+ Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC),
11146
+ "DDS: Unsupported format, must contain a FourCC code"
11147
+ );
10883
11148
  const fourCC = int32ToFourCC(pixelFormatNumber);
10884
11149
  const internalFormat = DDS_PIXEL_FORMATS[fourCC];
10885
11150
  const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
@@ -10907,7 +11172,12 @@ var __exports__ = (() => {
10907
11172
  return (width + 3 >> 2) * (height + 3 >> 2) * 16;
10908
11173
  }
10909
11174
  function int32ToFourCC(value) {
10910
- return String.fromCharCode(value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255);
11175
+ return String.fromCharCode(
11176
+ value & 255,
11177
+ value >> 8 & 255,
11178
+ value >> 16 & 255,
11179
+ value >> 24 & 255
11180
+ );
10911
11181
  }
10912
11182
 
10913
11183
  // ../textures/src/lib/parsers/parse-pvr.ts
@@ -10938,20 +11208,62 @@ var __exports__ = (() => {
10938
11208
  24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
10939
11209
  25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
10940
11210
  26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
10941
- 27: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
10942
- 28: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
10943
- 29: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
10944
- 30: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
10945
- 31: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
10946
- 32: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
10947
- 33: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
10948
- 34: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
10949
- 35: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
10950
- 36: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
10951
- 37: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
10952
- 38: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
10953
- 39: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
10954
- 40: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR, GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
11211
+ 27: [
11212
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
11213
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
11214
+ ],
11215
+ 28: [
11216
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
11217
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
11218
+ ],
11219
+ 29: [
11220
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
11221
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
11222
+ ],
11223
+ 30: [
11224
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
11225
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
11226
+ ],
11227
+ 31: [
11228
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
11229
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
11230
+ ],
11231
+ 32: [
11232
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
11233
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
11234
+ ],
11235
+ 33: [
11236
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
11237
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
11238
+ ],
11239
+ 34: [
11240
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
11241
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
11242
+ ],
11243
+ 35: [
11244
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
11245
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
11246
+ ],
11247
+ 36: [
11248
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
11249
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
11250
+ ],
11251
+ 37: [
11252
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
11253
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
11254
+ ],
11255
+ 38: [
11256
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
11257
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
11258
+ ],
11259
+ 39: [
11260
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
11261
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
11262
+ ],
11263
+ 40: [
11264
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
11265
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
11266
+ ]
10955
11267
  };
10956
11268
  var PVR_SIZE_FUNCTIONS = {
10957
11269
  0: pvrtc2bppSize,
@@ -11084,8 +11396,21 @@ var __exports__ = (() => {
11084
11396
  module: "textures",
11085
11397
  version: VERSION4,
11086
11398
  worker: true,
11087
- extensions: ["ktx", "ktx2", "dds", "pvr"],
11088
- mimeTypes: ["image/ktx2", "image/ktx", "image/vnd-ms.dds", "image/x-dds", "application/octet-stream"],
11399
+ extensions: [
11400
+ "ktx",
11401
+ "ktx2",
11402
+ "dds",
11403
+ // WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc
11404
+ "pvr"
11405
+ // WEBGL_compressed_texture_pvrtc
11406
+ ],
11407
+ mimeTypes: [
11408
+ "image/ktx2",
11409
+ "image/ktx",
11410
+ "image/vnd-ms.dds",
11411
+ "image/x-dds",
11412
+ "application/octet-stream"
11413
+ ],
11089
11414
  binary: true,
11090
11415
  options: {
11091
11416
  "compressed-texture": {
@@ -11103,6 +11428,7 @@ var __exports__ = (() => {
11103
11428
  alpha: "BC3",
11104
11429
  noAlpha: "BC1"
11105
11430
  },
11431
+ // @ts-expect-error TODO not allowed to modify inputs
11106
11432
  ...options.basis,
11107
11433
  containerFormat: "ktx2",
11108
11434
  module: "encoder"
@@ -11114,13 +11440,6 @@ var __exports__ = (() => {
11114
11440
  }
11115
11441
  };
11116
11442
 
11117
- // src/types.ts
11118
- var HeaderAttributeProperty = function(HeaderAttributeProperty2) {
11119
- HeaderAttributeProperty2["vertexCount"] = "vertexCount";
11120
- HeaderAttributeProperty2["featureCount"] = "featureCount";
11121
- return HeaderAttributeProperty2;
11122
- }({});
11123
-
11124
11443
  // src/lib/utils/url-utils.ts
11125
11444
  function getUrlWithoutParams(url) {
11126
11445
  let urlWithoutParams;
@@ -11135,9 +11454,7 @@ var __exports__ = (() => {
11135
11454
  return token ? `${url}?token=${token}` : url;
11136
11455
  }
11137
11456
  function generateTileAttributeUrls(url, tile) {
11138
- const {
11139
- attributeData = []
11140
- } = tile;
11457
+ const { attributeData = [] } = tile;
11141
11458
  const attributeUrls = [];
11142
11459
  for (let index = 0; index < attributeData.length; index++) {
11143
11460
  const attributeUrl = attributeData[index].href.replace("./", "");
@@ -11147,9 +11464,7 @@ var __exports__ = (() => {
11147
11464
  }
11148
11465
  function generateTilesetAttributeUrls(tileset, url, resource) {
11149
11466
  const attributeUrls = [];
11150
- const {
11151
- attributeStorageInfo = []
11152
- } = tileset;
11467
+ const { attributeStorageInfo = [] } = tileset;
11153
11468
  for (let index = 0; index < attributeStorageInfo.length; index++) {
11154
11469
  const fileName = attributeStorageInfo[index].key;
11155
11470
  attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
@@ -11185,19 +11500,14 @@ var __exports__ = (() => {
11185
11500
  texture: null
11186
11501
  };
11187
11502
  if (tileOptions.textureUrl) {
11188
- const url = getUrlWithToken(getInternalPathFromUrl(tileOptions.textureUrl), options?.i3s?.token);
11503
+ const url = getUrlWithToken(tileOptions.textureUrl, options?.i3s?.token);
11189
11504
  const loader = getLoaderForTextureFormat(tileOptions.textureFormat);
11190
11505
  const fetchFunc = context?.fetch || fetch;
11191
11506
  const response = await fetchFunc(url);
11192
11507
  const arrayBuffer2 = await response.arrayBuffer();
11193
11508
  if (options?.i3s.decodeTextures) {
11194
11509
  if (loader === ImageLoader) {
11195
- const options2 = {
11196
- ...tileOptions.textureLoaderOptions,
11197
- image: {
11198
- type: "data"
11199
- }
11200
- };
11510
+ const options2 = { ...tileOptions.textureLoaderOptions, image: { type: "data" } };
11201
11511
  try {
11202
11512
  const texture = await parseFromContext(arrayBuffer2, [], options2, context);
11203
11513
  content.texture = texture;
@@ -11228,18 +11538,6 @@ var __exports__ = (() => {
11228
11538
  }
11229
11539
  return await parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options);
11230
11540
  }
11231
- function getInternalPathFromUrl(url) {
11232
- const slpkUrlParts = url.split(".slpk");
11233
- let filename;
11234
- if (slpkUrlParts.length === 1) {
11235
- filename = url;
11236
- } else if (slpkUrlParts.length === 2) {
11237
- filename = slpkUrlParts[1].slice(1);
11238
- } else {
11239
- filename = url;
11240
- }
11241
- return filename;
11242
- }
11243
11541
  async function parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options) {
11244
11542
  const contentByteLength = arrayBuffer.byteLength;
11245
11543
  let attributes;
@@ -11287,30 +11585,40 @@ var __exports__ = (() => {
11287
11585
  byteOffset = headers.byteOffset;
11288
11586
  vertexCount = headers.vertexCount;
11289
11587
  featureCount = headers.featureCount;
11290
- const {
11291
- attributes: normalizedVertexAttributes,
11292
- byteOffset: offset
11293
- } = normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCount, attributesOrder);
11294
- const {
11295
- attributes: normalizedFeatureAttributes
11296
- } = normalizeAttributes(arrayBuffer, offset, featureAttributes, featureCount, featureAttributeOrder);
11588
+ const { attributes: normalizedVertexAttributes, byteOffset: offset } = normalizeAttributes(
11589
+ arrayBuffer,
11590
+ byteOffset,
11591
+ vertexAttributes,
11592
+ vertexCount,
11593
+ attributesOrder
11594
+ );
11595
+ const { attributes: normalizedFeatureAttributes } = normalizeAttributes(
11596
+ arrayBuffer,
11597
+ offset,
11598
+ featureAttributes,
11599
+ featureCount,
11600
+ featureAttributeOrder
11601
+ );
11297
11602
  flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes);
11298
11603
  attributes = concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes);
11299
11604
  }
11300
- if (!options?.i3s?.coordinateSystem || options.i3s.coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {
11605
+ if (!options?.i3s?.coordinateSystem || // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
11606
+ options.i3s.coordinateSystem === 2 /* METER_OFFSETS */) {
11301
11607
  const enuMatrix = parsePositions(attributes.position, tileOptions);
11302
11608
  content.modelMatrix = enuMatrix.invert();
11303
- content.coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS;
11609
+ content.coordinateSystem = 2 /* METER_OFFSETS */;
11304
11610
  } else {
11305
11611
  content.modelMatrix = getModelMatrix(attributes.position);
11306
- content.coordinateSystem = COORDINATE_SYSTEM.LNGLAT_OFFSETS;
11612
+ content.coordinateSystem = 3 /* LNGLAT_OFFSETS */;
11307
11613
  }
11308
11614
  content.attributes = {
11309
11615
  positions: attributes.position,
11310
11616
  normals: attributes.normal,
11311
11617
  colors: normalizeAttribute(attributes.color),
11618
+ // Normalize from UInt8
11312
11619
  texCoords: attributes.uv0,
11313
11620
  uvRegions: normalizeAttribute(attributes.uvRegion || attributes.region)
11621
+ // Normalize from UInt16
11314
11622
  };
11315
11623
  content.indices = indices || null;
11316
11624
  if (attributes.id && attributes.id.value) {
@@ -11341,10 +11649,7 @@ var __exports__ = (() => {
11341
11649
  }
11342
11650
  }
11343
11651
  function concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes) {
11344
- return {
11345
- ...normalizedVertexAttributes,
11346
- ...normalizedFeatureAttributes
11347
- };
11652
+ return { ...normalizedVertexAttributes, ...normalizedFeatureAttributes };
11348
11653
  }
11349
11654
  function normalizeAttribute(attribute) {
11350
11655
  if (!attribute) {
@@ -11357,17 +11662,14 @@ var __exports__ = (() => {
11357
11662
  let byteOffset = 0;
11358
11663
  let vertexCount = 0;
11359
11664
  let featureCount = 0;
11360
- for (const {
11361
- property,
11362
- type
11363
- } of options.store.defaultGeometrySchema.header) {
11665
+ for (const { property, type } of options.store.defaultGeometrySchema.header) {
11364
11666
  const TypedArrayTypeHeader = getConstructorForDataFormat(type);
11365
11667
  switch (property) {
11366
- case HeaderAttributeProperty.vertexCount:
11668
+ case "vertexCount" /* vertexCount */.toString():
11367
11669
  vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
11368
11670
  byteOffset += sizeOf(type);
11369
11671
  break;
11370
- case HeaderAttributeProperty.featureCount:
11672
+ case "featureCount" /* featureCount */.toString():
11371
11673
  featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
11372
11674
  byteOffset += sizeOf(type);
11373
11675
  break;
@@ -11385,10 +11687,7 @@ var __exports__ = (() => {
11385
11687
  const attributes = {};
11386
11688
  for (const attribute of attributesOrder) {
11387
11689
  if (vertexAttributes[attribute]) {
11388
- const {
11389
- valueType,
11390
- valuesPerElement
11391
- } = vertexAttributes[attribute];
11690
+ const { valueType, valuesPerElement } = vertexAttributes[attribute];
11392
11691
  if (byteOffset + attributeCount * valuesPerElement * sizeOf(valueType) <= arrayBuffer.byteLength) {
11393
11692
  const buffer = arrayBuffer.slice(byteOffset);
11394
11693
  let value;
@@ -11418,10 +11717,7 @@ var __exports__ = (() => {
11418
11717
  }
11419
11718
  }
11420
11719
  }
11421
- return {
11422
- attributes,
11423
- byteOffset
11424
- };
11720
+ return { attributes, byteOffset };
11425
11721
  }
11426
11722
  function parseUint64Values(buffer, elementsCount, attributeSize) {
11427
11723
  const values = [];
@@ -11479,20 +11775,14 @@ var __exports__ = (() => {
11479
11775
  if (materialDefinition) {
11480
11776
  pbrMaterial = {
11481
11777
  ...materialDefinition,
11482
- pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? {
11483
- ...materialDefinition.pbrMetallicRoughness
11484
- } : {
11485
- baseColorFactor: [255, 255, 255, 255]
11486
- }
11778
+ pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? { ...materialDefinition.pbrMetallicRoughness } : { baseColorFactor: [255, 255, 255, 255] }
11487
11779
  };
11488
11780
  } else {
11489
11781
  pbrMaterial = {
11490
11782
  pbrMetallicRoughness: {}
11491
11783
  };
11492
11784
  if (texture) {
11493
- pbrMaterial.pbrMetallicRoughness.baseColorTexture = {
11494
- texCoord: 0
11495
- };
11785
+ pbrMaterial.pbrMetallicRoughness.baseColorTexture = { texCoord: 0 };
11496
11786
  } else {
11497
11787
  pbrMaterial.pbrMetallicRoughness.baseColorFactor = [255, 255, 255, 255];
11498
11788
  }
@@ -11505,7 +11795,9 @@ var __exports__ = (() => {
11505
11795
  pbrMaterial.emissiveFactor = convertColorFormat(pbrMaterial.emissiveFactor);
11506
11796
  }
11507
11797
  if (pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorFactor) {
11508
- pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(pbrMaterial.pbrMetallicRoughness.baseColorFactor);
11798
+ pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(
11799
+ pbrMaterial.pbrMetallicRoughness.baseColorFactor
11800
+ );
11509
11801
  }
11510
11802
  if (texture) {
11511
11803
  setMaterialTexture(pbrMaterial, texture);
@@ -11520,43 +11812,27 @@ var __exports__ = (() => {
11520
11812
  return normalizedColor;
11521
11813
  }
11522
11814
  function setMaterialTexture(material, image) {
11523
- const texture = {
11524
- source: {
11525
- image
11526
- }
11527
- };
11815
+ const texture = { source: { image } };
11528
11816
  if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.baseColorTexture) {
11529
11817
  material.pbrMetallicRoughness.baseColorTexture = {
11530
11818
  ...material.pbrMetallicRoughness.baseColorTexture,
11531
11819
  texture
11532
11820
  };
11533
11821
  } else if (material.emissiveTexture) {
11534
- material.emissiveTexture = {
11535
- ...material.emissiveTexture,
11536
- texture
11537
- };
11822
+ material.emissiveTexture = { ...material.emissiveTexture, texture };
11538
11823
  } else if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.metallicRoughnessTexture) {
11539
11824
  material.pbrMetallicRoughness.metallicRoughnessTexture = {
11540
11825
  ...material.pbrMetallicRoughness.metallicRoughnessTexture,
11541
11826
  texture
11542
11827
  };
11543
11828
  } else if (material.normalTexture) {
11544
- material.normalTexture = {
11545
- ...material.normalTexture,
11546
- texture
11547
- };
11829
+ material.normalTexture = { ...material.normalTexture, texture };
11548
11830
  } else if (material.occlusionTexture) {
11549
- material.occlusionTexture = {
11550
- ...material.occlusionTexture,
11551
- texture
11552
- };
11831
+ material.occlusionTexture = { ...material.occlusionTexture, texture };
11553
11832
  }
11554
11833
  }
11555
11834
  function flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes) {
11556
- const {
11557
- id,
11558
- faceRange
11559
- } = normalizedFeatureAttributes;
11835
+ const { id, faceRange } = normalizedFeatureAttributes;
11560
11836
  if (!id || !faceRange) {
11561
11837
  return;
11562
11838
  }
@@ -11591,7 +11867,7 @@ var __exports__ = (() => {
11591
11867
  }
11592
11868
 
11593
11869
  // src/i3s-content-loader.ts
11594
- var VERSION5 = true ? "4.2.0-alpha.4" : "latest";
11870
+ var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
11595
11871
  var I3SContentLoader = {
11596
11872
  name: "I3S Content (Indexed Scene Layers)",
11597
11873
  id: "i3s-content",
@@ -11606,18 +11882,19 @@ var __exports__ = (() => {
11606
11882
  }
11607
11883
  };
11608
11884
  async function parse3(data, options, context) {
11609
- const {
11610
- tile,
11611
- _tileOptions,
11612
- tileset,
11613
- _tilesetOptions
11614
- } = options?.i3s || {};
11885
+ const { tile, _tileOptions, tileset, _tilesetOptions } = options?.i3s || {};
11615
11886
  const tileOptions = _tileOptions || tile;
11616
11887
  const tilesetOptions = _tilesetOptions || tileset;
11617
11888
  if (!tileOptions || !tilesetOptions) {
11618
11889
  return null;
11619
11890
  }
11620
- return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
11891
+ return await parseI3STileContent(
11892
+ data,
11893
+ tileOptions,
11894
+ tilesetOptions,
11895
+ options,
11896
+ context
11897
+ );
11621
11898
  }
11622
11899
 
11623
11900
  // ../../node_modules/@math.gl/culling/dist/constants.js
@@ -12073,35 +12350,11 @@ var __exports__ = (() => {
12073
12350
  // src/lib/parsers/parse-i3s.ts
12074
12351
  var import_core17 = __toESM(require_core(), 1);
12075
12352
 
12076
- // ../tiles/src/constants.ts
12077
- var TILE_REFINEMENT = function(TILE_REFINEMENT2) {
12078
- TILE_REFINEMENT2[TILE_REFINEMENT2["ADD"] = 1] = "ADD";
12079
- TILE_REFINEMENT2[TILE_REFINEMENT2["REPLACE"] = 2] = "REPLACE";
12080
- return TILE_REFINEMENT2;
12081
- }({});
12082
- var TILE_TYPE = function(TILE_TYPE2) {
12083
- TILE_TYPE2["EMPTY"] = "empty";
12084
- TILE_TYPE2["SCENEGRAPH"] = "scenegraph";
12085
- TILE_TYPE2["POINTCLOUD"] = "pointcloud";
12086
- TILE_TYPE2["MESH"] = "mesh";
12087
- return TILE_TYPE2;
12088
- }({});
12089
- var TILESET_TYPE = function(TILESET_TYPE2) {
12090
- TILESET_TYPE2["I3S"] = "I3S";
12091
- TILESET_TYPE2["TILES3D"] = "TILES3D";
12092
- return TILESET_TYPE2;
12093
- }({});
12094
- var LOD_METRIC_TYPE = function(LOD_METRIC_TYPE2) {
12095
- LOD_METRIC_TYPE2["GEOMETRIC_ERROR"] = "geometricError";
12096
- LOD_METRIC_TYPE2["MAX_SCREEN_THRESHOLD"] = "maxScreenThreshold";
12097
- return LOD_METRIC_TYPE2;
12098
- }({});
12099
-
12100
12353
  // src/lib/helpers/i3s-nodepages-tiles.ts
12101
12354
  var import_core16 = __toESM(require_core(), 1);
12102
12355
 
12103
12356
  // src/i3s-node-page-loader.ts
12104
- var VERSION6 = true ? "4.2.0-alpha.4" : "latest";
12357
+ var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12105
12358
  var I3SNodePageLoader = {
12106
12359
  name: "I3S Node Page",
12107
12360
  id: "i3s-node-page",
@@ -12120,14 +12373,25 @@ var __exports__ = (() => {
12120
12373
 
12121
12374
  // src/lib/helpers/i3s-nodepages-tiles.ts
12122
12375
  var I3SNodePagesTiles = class {
12376
+ tileset;
12123
12377
  nodePages = [];
12124
12378
  pendingNodePages = [];
12379
+ nodesPerPage;
12380
+ options;
12381
+ lodSelectionMetricType;
12125
12382
  textureDefinitionsSelectedFormats = [];
12383
+ nodesInNodePages;
12384
+ url;
12126
12385
  textureLoaderOptions = {};
12386
+ /**
12387
+ * @constructs
12388
+ * Create a I3SNodePagesTiles instance.
12389
+ * @param tileset - i3s tileset header ('layers/0')
12390
+ * @param url - tileset url
12391
+ * @param options - i3s loader options
12392
+ */
12127
12393
  constructor(tileset, url = "", options) {
12128
- this.tileset = {
12129
- ...tileset
12130
- };
12394
+ this.tileset = { ...tileset };
12131
12395
  this.url = url;
12132
12396
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
12133
12397
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
@@ -12135,10 +12399,18 @@ var __exports__ = (() => {
12135
12399
  this.nodesInNodePages = 0;
12136
12400
  this.initSelectedFormatsForTextureDefinitions(tileset);
12137
12401
  }
12402
+ /**
12403
+ * Loads some nodePage and return a particular node from it
12404
+ * @param id - id of node through all node pages
12405
+ */
12138
12406
  async getNodeById(id) {
12139
12407
  const pageIndex = Math.floor(id / this.nodesPerPage);
12140
12408
  if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
12141
- const nodePageUrl = getUrlWithToken(this.url.indexOf(".slpk") !== -1 ? `nodepages/${pageIndex}` : `${this.url}/nodepages/${pageIndex}`, this.options.i3s?.token);
12409
+ const nodePageUrl = getUrlWithToken(
12410
+ `${this.url}/nodepages/${pageIndex}`,
12411
+ // @ts-expect-error this.options is not properly typed
12412
+ this.options.i3s?.token
12413
+ );
12142
12414
  this.pendingNodePages[pageIndex] = {
12143
12415
  status: "Pending",
12144
12416
  promise: (0, import_core16.load)(nodePageUrl, I3SNodePageLoader, this.options)
@@ -12153,6 +12425,11 @@ var __exports__ = (() => {
12153
12425
  const nodeIndex = id % this.nodesPerPage;
12154
12426
  return this.nodePages[pageIndex].nodes[nodeIndex];
12155
12427
  }
12428
+ /**
12429
+ * Forms tile header using node and tileset data
12430
+ * @param id - id of node through all node pages
12431
+ */
12432
+ // eslint-disable-next-line complexity, max-statements
12156
12433
  async formTileFromNodePages(id) {
12157
12434
  const node2 = await this.getNodeById(id);
12158
12435
  const children = [];
@@ -12174,25 +12451,21 @@ var __exports__ = (() => {
12174
12451
  let attributeUrls = [];
12175
12452
  let isDracoGeometry = false;
12176
12453
  if (node2 && node2.mesh) {
12177
- const {
12178
- url,
12179
- isDracoGeometry: isDracoGeometryResult
12180
- } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || {
12181
- isDracoGeometry: false
12182
- };
12454
+ const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { isDracoGeometry: false };
12183
12455
  contentUrl = url;
12184
12456
  isDracoGeometry = isDracoGeometryResult;
12185
- const {
12186
- textureData,
12187
- materialDefinition: nodeMaterialDefinition
12188
- } = this.getInformationFromMaterial(node2.mesh.material);
12457
+ const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node2.mesh.material);
12189
12458
  materialDefinition = nodeMaterialDefinition;
12190
12459
  textureFormat = textureData.format || textureFormat;
12191
12460
  if (textureData.name) {
12192
12461
  textureUrl = `${this.url}/nodes/${node2.mesh.material.resource}/textures/${textureData.name}`;
12193
12462
  }
12194
12463
  if (this.tileset.attributeStorageInfo) {
12195
- attributeUrls = generateTilesetAttributeUrls(this.tileset, this.url, node2.mesh.attribute.resource);
12464
+ attributeUrls = generateTilesetAttributeUrls(
12465
+ this.tileset,
12466
+ this.url,
12467
+ node2.mesh.attribute.resource
12468
+ );
12196
12469
  }
12197
12470
  }
12198
12471
  const lodSelection = this.getLodSelection(node2);
@@ -12210,18 +12483,31 @@ var __exports__ = (() => {
12210
12483
  isDracoGeometry
12211
12484
  });
12212
12485
  }
12486
+ /**
12487
+ * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset
12488
+ * @param - data about the node's mesh from the nodepage
12489
+ * @returns -
12490
+ * {string} url - url to the geometry resource
12491
+ * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry
12492
+ */
12213
12493
  getContentUrl(meshGeometryData) {
12214
12494
  let result = null;
12215
12495
  const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
12216
12496
  let geometryIndex = -1;
12217
12497
  if (this.options.i3s && this.options.i3s.useDracoGeometry) {
12218
- geometryIndex = geometryDefinition.geometryBuffers.findIndex((buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === "draco");
12498
+ geometryIndex = geometryDefinition.geometryBuffers.findIndex(
12499
+ (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === "draco"
12500
+ );
12219
12501
  }
12220
12502
  if (geometryIndex === -1) {
12221
- geometryIndex = geometryDefinition.geometryBuffers.findIndex((buffer) => !buffer.compressedAttributes);
12503
+ geometryIndex = geometryDefinition.geometryBuffers.findIndex(
12504
+ (buffer) => !buffer.compressedAttributes
12505
+ );
12222
12506
  }
12223
12507
  if (geometryIndex !== -1) {
12224
- const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
12508
+ const isDracoGeometry = Boolean(
12509
+ geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes
12510
+ );
12225
12511
  result = {
12226
12512
  url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
12227
12513
  isDracoGeometry
@@ -12229,26 +12515,37 @@ var __exports__ = (() => {
12229
12515
  }
12230
12516
  return result;
12231
12517
  }
12518
+ /**
12519
+ * Forms 1.6 compatible LOD selection object from a nodepage's node data
12520
+ * @param node - a node from nodepage
12521
+ * @returns- Array of LodSelection
12522
+ */
12232
12523
  getLodSelection(node2) {
12233
12524
  const lodSelection = [];
12234
12525
  if (this.lodSelectionMetricType === "maxScreenThresholdSQ") {
12235
12526
  lodSelection.push({
12236
12527
  metricType: "maxScreenThreshold",
12528
+ // @ts-ignore
12237
12529
  maxError: Math.sqrt(node2.lodThreshold / (Math.PI * 0.25))
12238
12530
  });
12239
12531
  }
12240
12532
  lodSelection.push({
12241
12533
  metricType: this.lodSelectionMetricType,
12534
+ // @ts-ignore
12242
12535
  maxError: node2.lodThreshold
12243
12536
  });
12244
12537
  return lodSelection;
12245
12538
  }
12539
+ /**
12540
+ * Returns information about texture and material from `materialDefinitions`
12541
+ * @param material - material data from nodepage
12542
+ * @returns - Couple {textureData, materialDefinition}
12543
+ * {string} textureData.name - path name of the texture
12544
+ * {string} textureData.format - format of the texture
12545
+ * materialDefinition - PBR-like material definition from `materialDefinitions`
12546
+ */
12246
12547
  getInformationFromMaterial(material) {
12247
- const informationFromMaterial = {
12248
- textureData: {
12249
- name: null
12250
- }
12251
- };
12548
+ const informationFromMaterial = { textureData: { name: null } };
12252
12549
  if (material) {
12253
12550
  const materialDefinition = this.tileset.materialDefinitions?.[material.definition];
12254
12551
  if (materialDefinition) {
@@ -12261,6 +12558,11 @@ var __exports__ = (() => {
12261
12558
  }
12262
12559
  return informationFromMaterial;
12263
12560
  }
12561
+ /**
12562
+ * Sets preferable and supported format for each textureDefinition of the tileset
12563
+ * @param tileset - I3S layer data
12564
+ * @returns
12565
+ */
12264
12566
  initSelectedFormatsForTextureDefinitions(tileset) {
12265
12567
  this.textureDefinitionsSelectedFormats = [];
12266
12568
  const possibleI3sFormats = this.getSupportedTextureFormats();
@@ -12285,6 +12587,10 @@ var __exports__ = (() => {
12285
12587
  this.textureDefinitionsSelectedFormats.push(selectedFormat);
12286
12588
  }
12287
12589
  }
12590
+ /**
12591
+ * Returns the array of supported texture format
12592
+ * @returns list of format strings
12593
+ */
12288
12594
  getSupportedTextureFormats() {
12289
12595
  const formats2 = [];
12290
12596
  if (!this.options.i3s || this.options.i3s.useCompressedTextures) {
@@ -12326,6 +12632,7 @@ var __exports__ = (() => {
12326
12632
  contentUrl,
12327
12633
  textureUrl,
12328
12634
  textureFormat: "jpg",
12635
+ // `jpg` format will cause `ImageLoader` usage that will be able to handle `png` as well
12329
12636
  attributeUrls,
12330
12637
  isDracoGeometry: false
12331
12638
  });
@@ -12335,27 +12642,35 @@ var __exports__ = (() => {
12335
12642
  let mbs = [0, 0, 0, 1];
12336
12643
  if (tile.mbs) {
12337
12644
  mbs = tile.mbs;
12338
- boundingVolume.sphere = [...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), tile.mbs[3]];
12645
+ boundingVolume.sphere = [
12646
+ ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
12647
+ // cartesian center of sphere
12648
+ tile.mbs[3]
12649
+ // radius of sphere
12650
+ ];
12339
12651
  } else if (tile.obb) {
12340
- boundingVolume.box = [...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center), ...tile.obb.halfSize, ...tile.obb.quaternion];
12341
- const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(boundingVolume.box.slice(0, 3), tile.obb.halfSize, tile.obb.quaternion);
12652
+ boundingVolume.box = [
12653
+ ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
12654
+ // cartesian center of box
12655
+ ...tile.obb.halfSize,
12656
+ // halfSize
12657
+ ...tile.obb.quaternion
12658
+ // quaternion
12659
+ ];
12660
+ const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(
12661
+ boundingVolume.box.slice(0, 3),
12662
+ tile.obb.halfSize,
12663
+ tile.obb.quaternion
12664
+ );
12342
12665
  const boundingSphere = obb.getBoundingSphere();
12343
12666
  boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
12344
12667
  mbs = [...tile.obb.center, boundingSphere.radius];
12345
12668
  }
12346
12669
  const lodMetricType = tile.lodSelection?.[0].metricType;
12347
12670
  const lodMetricValue = tile.lodSelection?.[0].maxError;
12348
- const type = TILE_TYPE.MESH;
12349
- const refine = TILE_REFINEMENT.REPLACE;
12350
- return {
12351
- ...tile,
12352
- mbs,
12353
- boundingVolume,
12354
- lodMetricType,
12355
- lodMetricValue,
12356
- type,
12357
- refine
12358
- };
12671
+ const type = "mesh" /* MESH */;
12672
+ const refine = 2 /* REPLACE */;
12673
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
12359
12674
  }
12360
12675
  async function normalizeTilesetData(tileset, options, context) {
12361
12676
  const url = getUrlWithoutParams(context.url || "");
@@ -12370,6 +12685,7 @@ var __exports__ = (() => {
12370
12685
  root = await (0, import_core17.load)(rootNodeUrl, I3SLoader, {
12371
12686
  ...options,
12372
12687
  i3s: {
12688
+ // @ts-expect-error options is not properly typed
12373
12689
  ...options.i3s,
12374
12690
  loadContent: false,
12375
12691
  isTileHeader: true,
@@ -12382,8 +12698,9 @@ var __exports__ = (() => {
12382
12698
  loader: I3SLoader,
12383
12699
  url,
12384
12700
  basePath: url,
12385
- type: TILESET_TYPE.I3S,
12701
+ type: "I3S" /* I3S */,
12386
12702
  nodePagesTile,
12703
+ // @ts-expect-error
12387
12704
  root,
12388
12705
  lodMetricType: root.lodMetricType,
12389
12706
  lodMetricValue: root.lodMetricValue
@@ -12391,8 +12708,9 @@ var __exports__ = (() => {
12391
12708
  }
12392
12709
 
12393
12710
  // src/i3s-loader.ts
12394
- var VERSION7 = true ? "4.2.0-alpha.4" : "latest";
12711
+ var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12395
12712
  var TILESET_REGEX = /layers\/[0-9]+$/;
12713
+ var LOCAL_SLPK_REGEX = /\.slpk$/;
12396
12714
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
12397
12715
  var SLPK_HEX = "504b0304";
12398
12716
  var POINT_CLOUD = "PointCloud";
@@ -12416,7 +12734,7 @@ var __exports__ = (() => {
12416
12734
  useDracoGeometry: true,
12417
12735
  useCompressedTextures: true,
12418
12736
  decodeTextures: true,
12419
- coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS
12737
+ coordinateSystem: 2 /* METER_OFFSETS */
12420
12738
  }
12421
12739
  }
12422
12740
  };
@@ -12430,7 +12748,7 @@ var __exports__ = (() => {
12430
12748
  const urlWithoutParams = getUrlWithoutParams(url);
12431
12749
  let isTileset;
12432
12750
  if (options.i3s.isTileset === "auto") {
12433
- isTileset = TILESET_REGEX.test(urlWithoutParams);
12751
+ isTileset = TILESET_REGEX.test(urlWithoutParams) || LOCAL_SLPK_REGEX.test(urlWithoutParams);
12434
12752
  } else {
12435
12753
  isTileset = options.i3s.isTileset;
12436
12754
  }
@@ -12473,7 +12791,12 @@ var __exports__ = (() => {
12473
12791
 
12474
12792
  // ../zip/src/parse-zip/search-from-the-end.ts
12475
12793
  var searchFromTheEnd = async (file, target) => {
12476
- const searchWindow = [await file.getUint8(file.length - 1n), await file.getUint8(file.length - 2n), await file.getUint8(file.length - 3n), void 0];
12794
+ const searchWindow = [
12795
+ await file.getUint8(file.length - 1n),
12796
+ await file.getUint8(file.length - 2n),
12797
+ await file.getUint8(file.length - 3n),
12798
+ void 0
12799
+ ];
12477
12800
  let targetOffset = 0n;
12478
12801
  for (let i2 = file.length - 4n; i2 > -1; i2--) {
12479
12802
  searchWindow[3] = searchWindow[2];
@@ -12505,7 +12828,9 @@ var __exports__ = (() => {
12505
12828
  let zip64EoCDOffset = 0n;
12506
12829
  const magicBytes = await file.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n);
12507
12830
  if (compareArrayBuffers(magicBytes, zip64EoCDLocatorSignature)) {
12508
- zip64EoCDOffset = await file.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
12831
+ zip64EoCDOffset = await file.getBigUint64(
12832
+ zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET
12833
+ );
12509
12834
  const endOfCDMagicBytes = await file.slice(zip64EoCDOffset, zip64EoCDOffset + 4n);
12510
12835
  if (!compareArrayBuffers(endOfCDMagicBytes, zip64EoCDSignature.buffer)) {
12511
12836
  throw new Error("zip64 EoCD not found");
@@ -12525,97 +12850,144 @@ var __exports__ = (() => {
12525
12850
  }
12526
12851
  };
12527
12852
  };
12528
- var EOCD_FIELDS = [{
12529
- offset: 0,
12530
- size: 4,
12531
- default: new DataView(eoCDSignature.buffer).getUint32(0, true)
12532
- }, {
12533
- offset: 4,
12534
- size: 2,
12535
- default: 0
12536
- }, {
12537
- offset: 6,
12538
- size: 2,
12539
- default: 0
12540
- }, {
12541
- offset: 8,
12542
- size: 2,
12543
- name: "recordsNumber"
12544
- }, {
12545
- offset: 10,
12546
- size: 2,
12547
- name: "recordsNumber"
12548
- }, {
12549
- offset: 12,
12550
- size: 4,
12551
- name: "cdSize"
12552
- }, {
12553
- offset: 16,
12554
- size: 4,
12555
- name: "cdOffset"
12556
- }, {
12557
- offset: 20,
12558
- size: 2,
12559
- default: 0
12560
- }];
12561
- var ZIP64_EOCD_LOCATOR_FIELDS = [{
12562
- offset: 0,
12563
- size: 4,
12564
- default: new DataView(zip64EoCDLocatorSignature.buffer).getUint32(0, true)
12565
- }, {
12566
- offset: 4,
12567
- size: 4,
12568
- default: 0
12569
- }, {
12570
- offset: 8,
12571
- size: 8,
12572
- name: "eoCDStart"
12573
- }, {
12574
- offset: 16,
12575
- size: 4,
12576
- default: 1
12577
- }];
12578
- var ZIP64_EOCD_FIELDS = [{
12579
- offset: 0,
12580
- size: 4,
12581
- default: new DataView(zip64EoCDSignature.buffer).getUint32(0, true)
12582
- }, {
12583
- offset: 4,
12584
- size: 8,
12585
- default: 44
12586
- }, {
12587
- offset: 12,
12588
- size: 2,
12589
- default: 45
12590
- }, {
12591
- offset: 14,
12592
- size: 2,
12593
- default: 45
12594
- }, {
12595
- offset: 16,
12596
- size: 4,
12597
- default: 0
12598
- }, {
12599
- offset: 20,
12600
- size: 4,
12601
- default: 0
12602
- }, {
12603
- offset: 24,
12604
- size: 8,
12605
- name: "recordsNumber"
12606
- }, {
12607
- offset: 32,
12608
- size: 8,
12609
- name: "recordsNumber"
12610
- }, {
12611
- offset: 40,
12612
- size: 8,
12613
- name: "cdSize"
12614
- }, {
12615
- offset: 48,
12616
- size: 8,
12617
- name: "cdOffset"
12618
- }];
12853
+ var EOCD_FIELDS = [
12854
+ // End of central directory signature = 0x06054b50
12855
+ {
12856
+ offset: 0,
12857
+ size: 4,
12858
+ default: new DataView(eoCDSignature.buffer).getUint32(0, true)
12859
+ },
12860
+ // Number of this disk (or 0xffff for ZIP64)
12861
+ {
12862
+ offset: 4,
12863
+ size: 2,
12864
+ default: 0
12865
+ },
12866
+ // Disk where central directory starts (or 0xffff for ZIP64)
12867
+ {
12868
+ offset: 6,
12869
+ size: 2,
12870
+ default: 0
12871
+ },
12872
+ // Number of central directory records on this disk (or 0xffff for ZIP64)
12873
+ {
12874
+ offset: 8,
12875
+ size: 2,
12876
+ name: "recordsNumber"
12877
+ },
12878
+ // Total number of central directory records (or 0xffff for ZIP64)
12879
+ {
12880
+ offset: 10,
12881
+ size: 2,
12882
+ name: "recordsNumber"
12883
+ },
12884
+ // Size of central directory (bytes) (or 0xffffffff for ZIP64)
12885
+ {
12886
+ offset: 12,
12887
+ size: 4,
12888
+ name: "cdSize"
12889
+ },
12890
+ // Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64)
12891
+ {
12892
+ offset: 16,
12893
+ size: 4,
12894
+ name: "cdOffset"
12895
+ },
12896
+ // Comment length (n)
12897
+ {
12898
+ offset: 20,
12899
+ size: 2,
12900
+ default: 0
12901
+ }
12902
+ ];
12903
+ var ZIP64_EOCD_LOCATOR_FIELDS = [
12904
+ // zip64 end of central dir locator signature
12905
+ {
12906
+ offset: 0,
12907
+ size: 4,
12908
+ default: new DataView(zip64EoCDLocatorSignature.buffer).getUint32(0, true)
12909
+ },
12910
+ // number of the disk with the start of the zip64 end of
12911
+ {
12912
+ offset: 4,
12913
+ size: 4,
12914
+ default: 0
12915
+ },
12916
+ // start of the zip64 end of central directory
12917
+ {
12918
+ offset: 8,
12919
+ size: 8,
12920
+ name: "eoCDStart"
12921
+ },
12922
+ // total number of disks
12923
+ {
12924
+ offset: 16,
12925
+ size: 4,
12926
+ default: 1
12927
+ }
12928
+ ];
12929
+ var ZIP64_EOCD_FIELDS = [
12930
+ // End of central directory signature = 0x06064b50
12931
+ {
12932
+ offset: 0,
12933
+ size: 4,
12934
+ default: new DataView(zip64EoCDSignature.buffer).getUint32(0, true)
12935
+ },
12936
+ // Size of the EOCD64 minus 12
12937
+ {
12938
+ offset: 4,
12939
+ size: 8,
12940
+ default: 44
12941
+ },
12942
+ // Version made by
12943
+ {
12944
+ offset: 12,
12945
+ size: 2,
12946
+ default: 45
12947
+ },
12948
+ // Version needed to extract (minimum)
12949
+ {
12950
+ offset: 14,
12951
+ size: 2,
12952
+ default: 45
12953
+ },
12954
+ // Number of this disk
12955
+ {
12956
+ offset: 16,
12957
+ size: 4,
12958
+ default: 0
12959
+ },
12960
+ // Disk where central directory starts
12961
+ {
12962
+ offset: 20,
12963
+ size: 4,
12964
+ default: 0
12965
+ },
12966
+ // Number of central directory records on this disk
12967
+ {
12968
+ offset: 24,
12969
+ size: 8,
12970
+ name: "recordsNumber"
12971
+ },
12972
+ // Total number of central directory records
12973
+ {
12974
+ offset: 32,
12975
+ size: 8,
12976
+ name: "recordsNumber"
12977
+ },
12978
+ // Size of central directory (bytes)
12979
+ {
12980
+ offset: 40,
12981
+ size: 8,
12982
+ name: "cdSize"
12983
+ },
12984
+ // Offset of start of central directory, relative to start of archive
12985
+ {
12986
+ offset: 48,
12987
+ size: 8,
12988
+ name: "cdOffset"
12989
+ }
12990
+ ];
12619
12991
 
12620
12992
  // ../zip/src/parse-zip/cd-file-header.ts
12621
12993
  var CD_COMPRESSED_SIZE_OFFSET = 20n;
@@ -12636,12 +13008,17 @@ var __exports__ = (() => {
12636
13008
  const extraFieldLength = await file.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
12637
13009
  const startDisk = BigInt(await file.getUint16(headerOffset + CD_START_DISK_OFFSET));
12638
13010
  const fileNameLength = await file.getUint16(headerOffset + CD_FILE_NAME_LENGTH_OFFSET);
12639
- const filenameBytes = await file.slice(headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength));
13011
+ const filenameBytes = await file.slice(
13012
+ headerOffset + CD_FILE_NAME_OFFSET,
13013
+ headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)
13014
+ );
12640
13015
  const fileName = new TextDecoder().decode(filenameBytes);
12641
13016
  const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
12642
13017
  const oldFormatOffset = await file.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
12643
13018
  const localHeaderOffset = BigInt(oldFormatOffset);
12644
- const extraField = new DataView(await file.slice(extraOffset, extraOffset + BigInt(extraFieldLength)));
13019
+ const extraField = new DataView(
13020
+ await file.slice(extraOffset, extraOffset + BigInt(extraFieldLength))
13021
+ );
12645
13022
  const zip64data = {
12646
13023
  uncompressedSize,
12647
13024
  compressedSize,
@@ -12659,13 +13036,14 @@ var __exports__ = (() => {
12659
13036
  };
12660
13037
  };
12661
13038
  async function* makeZipCDHeaderIterator(fileProvider) {
12662
- const {
12663
- cdStartOffset
12664
- } = await parseEoCDRecord(fileProvider);
13039
+ const { cdStartOffset } = await parseEoCDRecord(fileProvider);
12665
13040
  let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
12666
13041
  while (cdHeader) {
12667
13042
  yield cdHeader;
12668
- cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
13043
+ cdHeader = await parseZipCDFileHeader(
13044
+ cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),
13045
+ fileProvider
13046
+ );
12669
13047
  }
12670
13048
  }
12671
13049
  var getUint16 = (...bytes) => {
@@ -12676,7 +13054,9 @@ var __exports__ = (() => {
12676
13054
  const zip64DataRes = {};
12677
13055
  if (zip64dataList.length > 0) {
12678
13056
  const zip64chunkSize = zip64dataList.reduce((sum, curr) => sum + curr.length, 0);
12679
- const offsetInExtraData = new Uint8Array(extraField.buffer).findIndex((_val, i2, arr) => getUint16(arr[i2], arr[i2 + 1]) === 1 && getUint16(arr[i2 + 2], arr[i2 + 3]) === zip64chunkSize);
13057
+ const offsetInExtraData = new Uint8Array(extraField.buffer).findIndex(
13058
+ (_val, i2, arr) => getUint16(arr[i2], arr[i2 + 1]) === 1 && getUint16(arr[i2 + 2], arr[i2 + 3]) === zip64chunkSize
13059
+ );
12680
13060
  let bytesRead = 0;
12681
13061
  for (const note of zip64dataList) {
12682
13062
  const offset = bytesRead;
@@ -12689,101 +13069,124 @@ var __exports__ = (() => {
12689
13069
  var findExpectedData = (zip64data) => {
12690
13070
  const zip64dataList = [];
12691
13071
  if (zip64data.uncompressedSize === BigInt(4294967295)) {
12692
- zip64dataList.push({
12693
- name: "uncompressedSize",
12694
- length: 8
12695
- });
13072
+ zip64dataList.push({ name: "uncompressedSize", length: 8 });
12696
13073
  }
12697
13074
  if (zip64data.compressedSize === BigInt(4294967295)) {
12698
- zip64dataList.push({
12699
- name: "compressedSize",
12700
- length: 8
12701
- });
13075
+ zip64dataList.push({ name: "compressedSize", length: 8 });
12702
13076
  }
12703
13077
  if (zip64data.localHeaderOffset === BigInt(4294967295)) {
12704
- zip64dataList.push({
12705
- name: "localHeaderOffset",
12706
- length: 8
12707
- });
13078
+ zip64dataList.push({ name: "localHeaderOffset", length: 8 });
12708
13079
  }
12709
13080
  if (zip64data.startDisk === BigInt(4294967295)) {
12710
- zip64dataList.push({
12711
- name: "startDisk",
12712
- length: 4
12713
- });
13081
+ zip64dataList.push({ name: "startDisk", length: 4 });
12714
13082
  }
12715
13083
  return zip64dataList;
12716
13084
  };
12717
- var ZIP_HEADER_FIELDS = [{
12718
- offset: 0,
12719
- size: 4,
12720
- default: new DataView(signature.buffer).getUint32(0, true)
12721
- }, {
12722
- offset: 4,
12723
- size: 2,
12724
- default: 45
12725
- }, {
12726
- offset: 6,
12727
- size: 2,
12728
- default: 45
12729
- }, {
12730
- offset: 8,
12731
- size: 2,
12732
- default: 0
12733
- }, {
12734
- offset: 10,
12735
- size: 2,
12736
- default: 0
12737
- }, {
12738
- offset: 12,
12739
- size: 2,
12740
- default: 0
12741
- }, {
12742
- offset: 14,
12743
- size: 2,
12744
- default: 0
12745
- }, {
12746
- offset: 16,
12747
- size: 4,
12748
- name: "crc32"
12749
- }, {
12750
- offset: 20,
12751
- size: 4,
12752
- name: "length"
12753
- }, {
12754
- offset: 24,
12755
- size: 4,
12756
- name: "length"
12757
- }, {
12758
- offset: 28,
12759
- size: 2,
12760
- name: "fnlength"
12761
- }, {
12762
- offset: 30,
12763
- size: 2,
12764
- default: 0,
12765
- name: "extraLength"
12766
- }, {
12767
- offset: 32,
12768
- size: 2,
12769
- default: 0
12770
- }, {
12771
- offset: 34,
12772
- size: 2,
12773
- default: 0
12774
- }, {
12775
- offset: 36,
12776
- size: 2,
12777
- default: 0
12778
- }, {
12779
- offset: 38,
12780
- size: 4,
12781
- default: 0
12782
- }, {
12783
- offset: 42,
12784
- size: 4,
12785
- name: "offset"
12786
- }];
13085
+ var ZIP_HEADER_FIELDS = [
13086
+ // Central directory file header signature = 0x02014b50
13087
+ {
13088
+ offset: 0,
13089
+ size: 4,
13090
+ default: new DataView(signature.buffer).getUint32(0, true)
13091
+ },
13092
+ // Version made by
13093
+ {
13094
+ offset: 4,
13095
+ size: 2,
13096
+ default: 45
13097
+ },
13098
+ // Version needed to extract (minimum)
13099
+ {
13100
+ offset: 6,
13101
+ size: 2,
13102
+ default: 45
13103
+ },
13104
+ // General purpose bit flag
13105
+ {
13106
+ offset: 8,
13107
+ size: 2,
13108
+ default: 0
13109
+ },
13110
+ // Compression method
13111
+ {
13112
+ offset: 10,
13113
+ size: 2,
13114
+ default: 0
13115
+ },
13116
+ // File last modification time
13117
+ {
13118
+ offset: 12,
13119
+ size: 2,
13120
+ default: 0
13121
+ },
13122
+ // File last modification date
13123
+ {
13124
+ offset: 14,
13125
+ size: 2,
13126
+ default: 0
13127
+ },
13128
+ // CRC-32 of uncompressed data
13129
+ {
13130
+ offset: 16,
13131
+ size: 4,
13132
+ name: "crc32"
13133
+ },
13134
+ // Compressed size (or 0xffffffff for ZIP64)
13135
+ {
13136
+ offset: 20,
13137
+ size: 4,
13138
+ name: "length"
13139
+ },
13140
+ // Uncompressed size (or 0xffffffff for ZIP64)
13141
+ {
13142
+ offset: 24,
13143
+ size: 4,
13144
+ name: "length"
13145
+ },
13146
+ // File name length (n)
13147
+ {
13148
+ offset: 28,
13149
+ size: 2,
13150
+ name: "fnlength"
13151
+ },
13152
+ // Extra field length (m)
13153
+ {
13154
+ offset: 30,
13155
+ size: 2,
13156
+ default: 0,
13157
+ name: "extraLength"
13158
+ },
13159
+ // File comment length (k)
13160
+ {
13161
+ offset: 32,
13162
+ size: 2,
13163
+ default: 0
13164
+ },
13165
+ // Disk number where file starts (or 0xffff for ZIP64)
13166
+ {
13167
+ offset: 34,
13168
+ size: 2,
13169
+ default: 0
13170
+ },
13171
+ // Internal file attributes
13172
+ {
13173
+ offset: 36,
13174
+ size: 2,
13175
+ default: 0
13176
+ },
13177
+ // External file attributes
13178
+ {
13179
+ offset: 38,
13180
+ size: 4,
13181
+ default: 0
13182
+ },
13183
+ // Relative offset of local file header
13184
+ {
13185
+ offset: 42,
13186
+ size: 4,
13187
+ name: "offset"
13188
+ }
13189
+ ];
12787
13190
 
12788
13191
  // ../zip/src/parse-zip/local-file-header.ts
12789
13192
  var COMPRESSION_METHOD_OFFSET = 8n;
@@ -12799,7 +13202,12 @@ var __exports__ = (() => {
12799
13202
  return null;
12800
13203
  }
12801
13204
  const fileNameLength = await buffer.getUint16(headerOffset + FILE_NAME_LENGTH_OFFSET);
12802
- const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
13205
+ const fileName = new TextDecoder().decode(
13206
+ await buffer.slice(
13207
+ headerOffset + FILE_NAME_OFFSET,
13208
+ headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength)
13209
+ )
13210
+ ).split("\\").join("/");
12803
13211
  const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
12804
13212
  let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
12805
13213
  const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
@@ -12827,52 +13235,75 @@ var __exports__ = (() => {
12827
13235
  compressionMethod
12828
13236
  };
12829
13237
  };
12830
- var ZIP_HEADER_FIELDS2 = [{
12831
- offset: 0,
12832
- size: 4,
12833
- default: new DataView(signature2.buffer).getUint32(0, true)
12834
- }, {
12835
- offset: 4,
12836
- size: 2,
12837
- default: 45
12838
- }, {
12839
- offset: 6,
12840
- size: 2,
12841
- default: 0
12842
- }, {
12843
- offset: 8,
12844
- size: 2,
12845
- default: 0
12846
- }, {
12847
- offset: 10,
12848
- size: 2,
12849
- default: 0
12850
- }, {
12851
- offset: 12,
12852
- size: 2,
12853
- default: 0
12854
- }, {
12855
- offset: 14,
12856
- size: 4,
12857
- name: "crc32"
12858
- }, {
12859
- offset: 18,
12860
- size: 4,
12861
- name: "length"
12862
- }, {
12863
- offset: 22,
12864
- size: 4,
12865
- name: "length"
12866
- }, {
12867
- offset: 26,
12868
- size: 2,
12869
- name: "fnlength"
12870
- }, {
12871
- offset: 28,
12872
- size: 2,
12873
- default: 0,
12874
- name: "extraLength"
12875
- }];
13238
+ var ZIP_HEADER_FIELDS2 = [
13239
+ // Local file header signature = 0x04034b50
13240
+ {
13241
+ offset: 0,
13242
+ size: 4,
13243
+ default: new DataView(signature2.buffer).getUint32(0, true)
13244
+ },
13245
+ // Version needed to extract (minimum)
13246
+ {
13247
+ offset: 4,
13248
+ size: 2,
13249
+ default: 45
13250
+ },
13251
+ // General purpose bit flag
13252
+ {
13253
+ offset: 6,
13254
+ size: 2,
13255
+ default: 0
13256
+ },
13257
+ // Compression method
13258
+ {
13259
+ offset: 8,
13260
+ size: 2,
13261
+ default: 0
13262
+ },
13263
+ // File last modification time
13264
+ {
13265
+ offset: 10,
13266
+ size: 2,
13267
+ default: 0
13268
+ },
13269
+ // File last modification date
13270
+ {
13271
+ offset: 12,
13272
+ size: 2,
13273
+ default: 0
13274
+ },
13275
+ // CRC-32 of uncompressed data
13276
+ {
13277
+ offset: 14,
13278
+ size: 4,
13279
+ name: "crc32"
13280
+ },
13281
+ // Compressed size (or 0xffffffff for ZIP64)
13282
+ {
13283
+ offset: 18,
13284
+ size: 4,
13285
+ name: "length"
13286
+ },
13287
+ // Uncompressed size (or 0xffffffff for ZIP64)
13288
+ {
13289
+ offset: 22,
13290
+ size: 4,
13291
+ name: "length"
13292
+ },
13293
+ // File name length (n)
13294
+ {
13295
+ offset: 26,
13296
+ size: 2,
13297
+ name: "fnlength"
13298
+ },
13299
+ // Extra field length (m)
13300
+ {
13301
+ offset: 28,
13302
+ size: 2,
13303
+ default: 0,
13304
+ name: "extraLength"
13305
+ }
13306
+ ];
12876
13307
 
12877
13308
  // ../crypto/src/lib/hash.ts
12878
13309
  var Hash = class {
@@ -12890,10 +13321,9 @@ var __exports__ = (() => {
12890
13321
  }
12891
13322
  const output = await this.concatenate(arrayBuffers);
12892
13323
  const hash = await this.hash(output, encoding);
12893
- this.options.crypto?.onEnd?.({
12894
- hash
12895
- });
13324
+ this.options.crypto?.onEnd?.({ hash });
12896
13325
  }
13326
+ // HELPERS
12897
13327
  async concatenate(asyncIterator) {
12898
13328
  return await concatenateArrayBuffersAsync(asyncIterator);
12899
13329
  }
@@ -12971,7 +13401,9 @@ var __exports__ = (() => {
12971
13401
 
12972
13402
  // ../crypto/src/lib/algorithms/md5-wasm.ts
12973
13403
  var atb = typeof atob === "function" ? atob : typeof Buffer === "function" ? nodeATOB : identity4;
12974
- var wasmB64 = atb("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");
13404
+ var wasmB64 = atb(
13405
+ "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"
13406
+ );
12975
13407
  var wasm = WebAssembly && atb !== identity4 ? str2AB(wasmB64).buffer : false;
12976
13408
  var crypt = makeCrypt();
12977
13409
  var biteSize = 240 * 16 * 16;
@@ -12980,7 +13412,9 @@ var __exports__ = (() => {
12980
13412
  var parmTypeErrStr = "Parameter must be Buffer, ArrayBuffer or Uint8Array";
12981
13413
  var tooBigErrStr = "Parameter exceeds max size of 255.9 Mbytes";
12982
13414
  if (!wasm) {
12983
- console.log("WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript");
13415
+ console.log(
13416
+ "WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript"
13417
+ );
12984
13418
  }
12985
13419
  function md5WASM(data) {
12986
13420
  var mem, memView, importObj, imports, len2, buff, thenFun, catchFun, result, endTime;
@@ -13019,13 +13453,8 @@ var __exports__ = (() => {
13019
13453
  initial: len2 > 32e6 ? len2 > 64e6 ? len2 > 128e6 ? 4096 : 2048 : 1024 : 512
13020
13454
  });
13021
13455
  memView = new Uint32Array(mem.buffer);
13022
- imports = {
13023
- mem,
13024
- log: console.log
13025
- };
13026
- importObj = {
13027
- imports
13028
- };
13456
+ imports = { mem, log: console.log };
13457
+ importObj = { imports };
13029
13458
  WebAssembly.instantiate(wasm, importObj).then(giterdone);
13030
13459
  }
13031
13460
  } else {
@@ -13381,12 +13810,22 @@ var __exports__ = (() => {
13381
13810
  // ../crypto/src/lib/md5-hash.ts
13382
13811
  var MD5Hash = class extends Hash {
13383
13812
  name = "md5";
13813
+ options;
13384
13814
  constructor(options = {}) {
13385
13815
  super();
13386
13816
  this.options = options;
13387
13817
  }
13818
+ /**
13819
+ * Atomic hash calculation
13820
+ * @returns base64 encoded hash
13821
+ */
13388
13822
  async hash(input, encoding) {
13389
- const md5Promise = new Promise((resolve, reject) => md5WASM(input).then(resolve).catch(reject));
13823
+ const md5Promise = new Promise(
13824
+ (resolve, reject) => (
13825
+ // @ts-expect-error
13826
+ md5WASM(input).then(resolve).catch(reject)
13827
+ )
13828
+ );
13390
13829
  const hex = await md5Promise;
13391
13830
  return encodeHex(hex, encoding);
13392
13831
  }
@@ -13398,31 +13837,39 @@ var __exports__ = (() => {
13398
13837
  this.compressBatches = this.compressBatches.bind(this);
13399
13838
  this.decompressBatches = this.decompressBatches.bind(this);
13400
13839
  }
13840
+ /** Preloads any dynamic libraries. May enable sync functions */
13401
13841
  async preload() {
13402
13842
  return;
13403
13843
  }
13844
+ /** Asynchronously compress data */
13404
13845
  async compress(input) {
13405
13846
  await this.preload();
13406
13847
  return this.compressSync(input);
13407
13848
  }
13849
+ /** Asynchronously decompress data */
13408
13850
  async decompress(input, size) {
13409
13851
  await this.preload();
13410
13852
  return this.decompressSync(input, size);
13411
13853
  }
13854
+ /** Synchronously compress data */
13412
13855
  compressSync(input) {
13413
13856
  throw new Error(`${this.name}: sync compression not supported`);
13414
13857
  }
13858
+ /** Synchronously compress data */
13415
13859
  decompressSync(input, size) {
13416
13860
  throw new Error(`${this.name}: sync decompression not supported`);
13417
13861
  }
13862
+ /** Compress batches */
13418
13863
  async *compressBatches(asyncIterator) {
13419
13864
  const input = await this.concatenate(asyncIterator);
13420
13865
  yield this.compress(input);
13421
13866
  }
13867
+ /** Decompress batches */
13422
13868
  async *decompressBatches(asyncIterator) {
13423
13869
  const input = await this.concatenate(asyncIterator);
13424
13870
  yield this.decompress(input);
13425
13871
  }
13872
+ // HELPERS
13426
13873
  concatenate(asyncIterator) {
13427
13874
  return concatenateArrayBuffersAsync(asyncIterator);
13428
13875
  }
@@ -13442,6 +13889,7 @@ var __exports__ = (() => {
13442
13889
  extensions = [];
13443
13890
  contentEncodings = ["deflate"];
13444
13891
  isSupported = true;
13892
+ options;
13445
13893
  _chunks = [];
13446
13894
  constructor(options = {}) {
13447
13895
  super(options);
@@ -13523,16 +13971,26 @@ var __exports__ = (() => {
13523
13971
  this._chunks = [];
13524
13972
  return chunks;
13525
13973
  }
13974
+ // TODO - For some reason we don't get the error message from pako in _onEnd?
13526
13975
  _getError(code = 0) {
13527
13976
  const MESSAGES = {
13977
+ /* Z_NEED_DICT 2 */
13528
13978
  2: "need dictionary",
13979
+ /* Z_STREAM_END 1 */
13529
13980
  1: "stream end",
13981
+ /* Z_OK 0 */
13530
13982
  0: "",
13983
+ /* Z_ERRNO (-1) */
13531
13984
  "-1": "file error",
13985
+ /* Z_STREAM_ERROR (-2) */
13532
13986
  "-2": "stream error",
13987
+ /* Z_DATA_ERROR (-3) */
13533
13988
  "-3": "data error",
13989
+ /* Z_MEM_ERROR (-4) */
13534
13990
  "-4": "insufficient memory",
13991
+ /* Z_BUF_ERROR (-5) */
13535
13992
  "-5": "buffer error",
13993
+ /* Z_VERSION_ERROR (-6) */
13536
13994
  "-6": "incompatible version"
13537
13995
  };
13538
13996
  return `${this.name}: ${MESSAGES[code]}`;
@@ -13546,30 +14004,30 @@ var __exports__ = (() => {
13546
14004
  contentEncodings = ["gzip", "x-gzip"];
13547
14005
  isSupported = true;
13548
14006
  constructor(options) {
13549
- super({
13550
- ...options,
13551
- deflate: {
13552
- ...options?.gzip,
13553
- gzip: true
13554
- }
13555
- });
14007
+ super({ ...options, deflate: { ...options?.gzip, gzip: true } });
13556
14008
  }
13557
14009
  };
13558
14010
 
13559
14011
  // ../zip/src/filesystems/zip-filesystem.ts
13560
14012
  var ZIP_COMPRESSION_HANDLERS = {
14013
+ /** No compression */
13561
14014
  0: async (compressedFile) => compressedFile,
14015
+ /** Deflation */
13562
14016
  8: async (compressedFile) => {
13563
- const compression = new DeflateCompression({
13564
- raw: true
13565
- });
14017
+ const compression = new DeflateCompression({ raw: true });
13566
14018
  const decompressedData = await compression.decompress(compressedFile);
13567
14019
  return decompressedData;
13568
14020
  }
13569
14021
  };
13570
14022
  var ZipFileSystem = class {
14023
+ /** FileProvider instance promise */
13571
14024
  fileProvider = null;
14025
+ fileName;
13572
14026
  archive = null;
14027
+ /**
14028
+ * Constructor
14029
+ * @param file - instance of FileProvider or file path string
14030
+ */
13573
14031
  constructor(file) {
13574
14032
  if (typeof file === "string") {
13575
14033
  this.fileName = file;
@@ -13586,11 +14044,16 @@ var __exports__ = (() => {
13586
14044
  this.fileProvider = file;
13587
14045
  }
13588
14046
  }
14047
+ /** Clean up resources */
13589
14048
  async destroy() {
13590
14049
  if (this.fileProvider) {
13591
14050
  await this.fileProvider.destroy();
13592
14051
  }
13593
14052
  }
14053
+ /**
14054
+ * Get file names list from zip archive
14055
+ * @returns array of file names
14056
+ */
13594
14057
  async readdir() {
13595
14058
  if (!this.fileProvider) {
13596
14059
  throw new Error("No data detected in the zip archive");
@@ -13602,14 +14065,24 @@ var __exports__ = (() => {
13602
14065
  }
13603
14066
  return fileNames;
13604
14067
  }
14068
+ /**
14069
+ * Get file metadata
14070
+ * @param filename - name of a file
14071
+ * @returns central directory data
14072
+ */
13605
14073
  async stat(filename) {
13606
14074
  const cdFileHeader = await this.getCDFileHeader(filename);
13607
- return {
13608
- ...cdFileHeader,
13609
- size: Number(cdFileHeader.uncompressedSize)
13610
- };
14075
+ return { ...cdFileHeader, size: Number(cdFileHeader.uncompressedSize) };
13611
14076
  }
14077
+ /**
14078
+ * Implementation of fetch against this file system
14079
+ * @param filename - name of a file
14080
+ * @returns - Response with file data
14081
+ */
13612
14082
  async fetch(filename) {
14083
+ if (this.fileName && filename.indexOf(this.fileName) === 0) {
14084
+ filename = filename.substring(this.fileName.length + 1);
14085
+ }
13613
14086
  let uncompressedFile;
13614
14087
  if (this.archive) {
13615
14088
  uncompressedFile = await this.archive.getFile(filename, "http");
@@ -13618,7 +14091,10 @@ var __exports__ = (() => {
13618
14091
  throw new Error("No data detected in the zip archive");
13619
14092
  }
13620
14093
  const cdFileHeader = await this.getCDFileHeader(filename);
13621
- const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, this.fileProvider);
14094
+ const localFileHeader = await parseZipLocalFileHeader(
14095
+ cdFileHeader.localHeaderOffset,
14096
+ this.fileProvider
14097
+ );
13622
14098
  if (!localFileHeader) {
13623
14099
  throw new Error("Local file header has not been found in the zip archive`");
13624
14100
  }
@@ -13626,7 +14102,10 @@ var __exports__ = (() => {
13626
14102
  if (!compressionHandler) {
13627
14103
  throw Error("Only Deflation compression is supported");
13628
14104
  }
13629
- const compressedFile = await this.fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
14105
+ const compressedFile = await this.fileProvider.slice(
14106
+ localFileHeader.fileDataOffset,
14107
+ localFileHeader.fileDataOffset + localFileHeader.compressedSize
14108
+ );
13630
14109
  uncompressedFile = await compressionHandler(compressedFile);
13631
14110
  }
13632
14111
  const response = new Response(uncompressedFile);
@@ -13635,6 +14114,11 @@ var __exports__ = (() => {
13635
14114
  });
13636
14115
  return response;
13637
14116
  }
14117
+ /**
14118
+ * Get central directory file header
14119
+ * @param filename - name of a file
14120
+ * @returns central directory file header
14121
+ */
13638
14122
  async getCDFileHeader(filename) {
13639
14123
  if (!this.fileProvider) {
13640
14124
  throw new Error("No data detected in the zip archive");
@@ -13656,10 +14140,23 @@ var __exports__ = (() => {
13656
14140
 
13657
14141
  // ../zip/src/filesystems/IndexedArchive.ts
13658
14142
  var IndexedArchive = class {
14143
+ fileProvider;
14144
+ fileName;
14145
+ /**
14146
+ * Constructor
14147
+ * @param fileProvider - instance of a binary data reader
14148
+ * @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
14149
+ * @param fileName - name of the archive. It is used to add to an URL of a loader context
14150
+ */
13659
14151
  constructor(fileProvider, hashTable, fileName) {
13660
14152
  this.fileProvider = fileProvider;
13661
14153
  this.fileName = fileName;
13662
14154
  }
14155
+ /**
14156
+ * Get file as from order ZIP arhive without using the hash file
14157
+ * @param filename - path to the internal file
14158
+ * @returns
14159
+ */
13663
14160
  async getFileWithoutHash(filename) {
13664
14161
  const zipFS = new ZipFileSystem(this.fileProvider);
13665
14162
  const response = await zipFS.fetch(filename);
@@ -13699,39 +14196,62 @@ var __exports__ = (() => {
13699
14196
  }
13700
14197
 
13701
14198
  // src/lib/parsers/parse-slpk/slpk-archieve.ts
13702
- var PATH_DESCRIPTIONS = [{
13703
- test: /^$/,
13704
- extensions: ["3dSceneLayer.json.gz"]
13705
- }, {
13706
- test: /^nodepages\/\d+$/,
13707
- extensions: [".json.gz"]
13708
- }, {
13709
- test: /^nodes\/(\d+|root)$/,
13710
- extensions: ["/3dNodeIndexDocument.json.gz"]
13711
- }, {
13712
- test: /^nodes\/\d+\/textures\/.+$/,
13713
- extensions: [".jpg", ".png", ".bin.dds.gz", ".ktx"]
13714
- }, {
13715
- test: /^nodes\/\d+\/geometries\/\d+$/,
13716
- extensions: [".bin.gz", ".draco.gz"]
13717
- }, {
13718
- test: /^nodes\/\d+\/attributes\/f_\d+\/\d+$/,
13719
- extensions: [".bin.gz"]
13720
- }, {
13721
- test: /^statistics\/f_\d+\/\d+$/,
13722
- extensions: [".json.gz"]
13723
- }, {
13724
- test: /^nodes\/\d+\/shared$/,
13725
- extensions: ["/sharedResource.json.gz"]
13726
- }];
14199
+ var PATH_DESCRIPTIONS = [
14200
+ {
14201
+ test: /^$/,
14202
+ extensions: ["3dSceneLayer.json.gz"]
14203
+ },
14204
+ {
14205
+ test: /^nodepages\/\d+$/,
14206
+ extensions: [".json.gz"]
14207
+ },
14208
+ {
14209
+ test: /^nodes\/(\d+|root)$/,
14210
+ extensions: ["/3dNodeIndexDocument.json.gz"]
14211
+ },
14212
+ {
14213
+ test: /^nodes\/\d+\/textures\/.+$/,
14214
+ extensions: [".jpg", ".png", ".bin.dds.gz", ".ktx"]
14215
+ },
14216
+ {
14217
+ test: /^nodes\/\d+\/geometries\/\d+$/,
14218
+ extensions: [".bin.gz", ".draco.gz"]
14219
+ },
14220
+ {
14221
+ test: /^nodes\/\d+\/attributes\/f_\d+\/\d+$/,
14222
+ extensions: [".bin.gz"]
14223
+ },
14224
+ {
14225
+ test: /^statistics\/f_\d+\/\d+$/,
14226
+ extensions: [".json.gz"]
14227
+ },
14228
+ {
14229
+ test: /^nodes\/\d+\/shared$/,
14230
+ extensions: ["/sharedResource.json.gz"]
14231
+ }
14232
+ ];
13727
14233
  var SLPKArchive = class extends IndexedArchive {
14234
+ // Maps hex-encoded md5 filename hashes to bigint offsets into the archive
14235
+ hashTable;
13728
14236
  _textEncoder = new TextEncoder();
13729
14237
  _textDecoder = new TextDecoder();
13730
14238
  _md5Hash = new MD5Hash();
14239
+ /**
14240
+ * Constructor
14241
+ * @param fileProvider - instance of a binary data reader
14242
+ * @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
14243
+ * @param fileName - name of the archive. It is used to add to an URL of a loader context
14244
+ */
13731
14245
  constructor(fileProvider, hashTable, fileName) {
13732
14246
  super(fileProvider, hashTable, fileName);
13733
14247
  this.hashTable = hashTable;
13734
14248
  }
14249
+ /**
14250
+ * Returns file with the given path from slpk archive
14251
+ * @param path - path inside the slpk
14252
+ * @param mode - currently only raw mode supported
14253
+ * @returns buffer with ready to use file
14254
+ */
13735
14255
  async getFile(path, mode = "raw") {
13736
14256
  if (mode === "http") {
13737
14257
  const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;
@@ -13760,6 +14280,11 @@ var __exports__ = (() => {
13760
14280
  }
13761
14281
  throw new Error(`No such file in the archive: ${path}`);
13762
14282
  }
14283
+ /**
14284
+ * returning uncompressed data for paths that ends with .gz and raw data for all other paths
14285
+ * @param path - path inside the archive
14286
+ * @returns buffer with the file data
14287
+ */
13763
14288
  async getDataByPath(path) {
13764
14289
  let data = await this.getFileBytes(path.toLocaleLowerCase());
13765
14290
  if (!data) {
@@ -13775,6 +14300,11 @@ var __exports__ = (() => {
13775
14300
  }
13776
14301
  return data;
13777
14302
  }
14303
+ /**
14304
+ * Trying to get raw file data by address
14305
+ * @param path - path inside the archive
14306
+ * @returns buffer with the raw file data
14307
+ */
13778
14308
  async getFileBytes(path) {
13779
14309
  let compressedFile;
13780
14310
  if (this.hashTable) {
@@ -13788,7 +14318,10 @@ var __exports__ = (() => {
13788
14318
  if (!localFileHeader) {
13789
14319
  return void 0;
13790
14320
  }
13791
- compressedFile = await this.fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
14321
+ compressedFile = await this.fileProvider.slice(
14322
+ localFileHeader.fileDataOffset,
14323
+ localFileHeader.fileDataOffset + localFileHeader.compressedSize
14324
+ );
13792
14325
  } else {
13793
14326
  try {
13794
14327
  compressedFile = await this.getFileWithoutHash(path);
@@ -13807,21 +14340,29 @@ var __exports__ = (() => {
13807
14340
  let hashTable;
13808
14341
  if (cdFileHeader?.fileName !== "@specialIndexFileHASH128@") {
13809
14342
  hashTable = await makeHashTableFromZipHeaders(fileProvider);
13810
- cb?.("SLPK doesnt contain hash file, hash info has been composed according to zip archive headers");
14343
+ cb?.(
14344
+ "SLPK doesnt contain hash file, hash info has been composed according to zip archive headers"
14345
+ );
13811
14346
  } else {
13812
- const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, fileProvider);
14347
+ const localFileHeader = await parseZipLocalFileHeader(
14348
+ cdFileHeader.localHeaderOffset,
14349
+ fileProvider
14350
+ );
13813
14351
  if (!localFileHeader) {
13814
14352
  throw new Error("corrupted SLPK");
13815
14353
  }
13816
14354
  const fileDataOffset = localFileHeader.fileDataOffset;
13817
- const hashFile = await fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
14355
+ const hashFile = await fileProvider.slice(
14356
+ fileDataOffset,
14357
+ fileDataOffset + localFileHeader.compressedSize
14358
+ );
13818
14359
  hashTable = parseHashTable(hashFile);
13819
14360
  }
13820
14361
  return new SLPKArchive(fileProvider, hashTable, fileName);
13821
14362
  }
13822
14363
 
13823
14364
  // src/i3s-slpk-loader.ts
13824
- var VERSION8 = true ? "4.2.0-alpha.4" : "latest";
14365
+ var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
13825
14366
  var SLPKLoader = {
13826
14367
  name: "I3S SLPK (Scene Layer Package)",
13827
14368
  id: "slpk",
@@ -13841,10 +14382,7 @@ var __exports__ = (() => {
13841
14382
 
13842
14383
  // src/lib/parsers/parse-i3s-attribute.ts
13843
14384
  function parseI3STileAttribute(arrayBuffer, options) {
13844
- const {
13845
- attributeName,
13846
- attributeType
13847
- } = options;
14385
+ const { attributeName, attributeType } = options;
13848
14386
  if (!attributeName) {
13849
14387
  return {};
13850
14388
  }
@@ -13884,7 +14422,11 @@ var __exports__ = (() => {
13884
14422
  const bytesPerStringSize = 4;
13885
14423
  const stringsArray = [];
13886
14424
  try {
13887
- const stringsCount = new DataView(arrayBuffer, stringsCountOffset, bytesPerStringSize).getUint32(stringsCountOffset, true);
14425
+ const stringsCount = new DataView(
14426
+ arrayBuffer,
14427
+ stringsCountOffset,
14428
+ bytesPerStringSize
14429
+ ).getUint32(stringsCountOffset, true);
13888
14430
  const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);
13889
14431
  let stringOffset = dataOffset + stringsCount * bytesPerStringSize;
13890
14432
  for (const stringByteSize of stringSizes) {
@@ -13900,7 +14442,7 @@ var __exports__ = (() => {
13900
14442
  }
13901
14443
 
13902
14444
  // src/i3s-attribute-loader.ts
13903
- var VERSION9 = true ? "4.2.0-alpha.4" : "latest";
14445
+ var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
13904
14446
  var EMPTY_VALUE = "";
13905
14447
  var REJECTED_STATUS = "rejected";
13906
14448
  var I3SAttributeLoader = {
@@ -13915,11 +14457,7 @@ var __exports__ = (() => {
13915
14457
  binary: true
13916
14458
  };
13917
14459
  async function loadFeatureAttributes(tile, featureId, options = {}) {
13918
- const {
13919
- attributeStorageInfo,
13920
- attributeUrls,
13921
- tilesetFields
13922
- } = getAttributesData(tile);
14460
+ const { attributeStorageInfo, attributeUrls, tilesetFields } = getAttributesData(tile);
13923
14461
  if (!attributeStorageInfo || !attributeUrls || featureId < 0) {
13924
14462
  return null;
13925
14463
  }
@@ -13929,11 +14467,7 @@ var __exports__ = (() => {
13929
14467
  const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);
13930
14468
  const attributeName = attributeStorageInfo[index].name;
13931
14469
  const attributeType = getAttributeValueType(attributeStorageInfo[index]);
13932
- const loadOptions = {
13933
- ...options,
13934
- attributeName,
13935
- attributeType
13936
- };
14470
+ const loadOptions = { ...options, attributeName, attributeType };
13937
14471
  const promise = (0, import_core19.load)(url, I3SAttributeLoader, loadOptions);
13938
14472
  attributeLoadPromises.push(promise);
13939
14473
  }
@@ -13950,11 +14484,7 @@ var __exports__ = (() => {
13950
14484
  const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;
13951
14485
  const attributeUrls = tile.header?.attributeUrls;
13952
14486
  const tilesetFields = tile.tileset?.tileset?.fields || [];
13953
- return {
13954
- attributeStorageInfo,
13955
- attributeUrls,
13956
- tilesetFields
13957
- };
14487
+ return { attributeStorageInfo, attributeUrls, tilesetFields };
13958
14488
  }
13959
14489
  function getAttributeValueType(attribute) {
13960
14490
  if (attribute.hasOwnProperty("objectIds")) {
@@ -14017,9 +14547,7 @@ var __exports__ = (() => {
14017
14547
  var OBJECT_3D_LAYER_TYPE = "3DObject";
14018
14548
  async function parseBuildingSceneLayer(data, url) {
14019
14549
  const layer0 = JSON.parse(new TextDecoder().decode(data));
14020
- const {
14021
- sublayers
14022
- } = layer0;
14550
+ const { sublayers } = layer0;
14023
14551
  return {
14024
14552
  header: layer0,
14025
14553
  sublayers: parseSublayersTree(sublayers, url)
@@ -14029,12 +14557,7 @@ var __exports__ = (() => {
14029
14557
  let layers = [];
14030
14558
  for (let index = 0; index < sublayers.length; index++) {
14031
14559
  const subLayer = sublayers[index];
14032
- const {
14033
- id,
14034
- layerType,
14035
- visibility = true,
14036
- ...rest
14037
- } = subLayer;
14560
+ const { id, layerType, visibility = true, ...rest } = subLayer;
14038
14561
  if (layerType === OBJECT_3D_LAYER_TYPE) {
14039
14562
  const sublayerUrl = `${url}/sublayers/${id}`;
14040
14563
  layers.push({
@@ -14053,7 +14576,7 @@ var __exports__ = (() => {
14053
14576
  }
14054
14577
 
14055
14578
  // src/i3s-building-scene-layer-loader.ts
14056
- var VERSION10 = true ? "4.2.0-alpha.4" : "latest";
14579
+ var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
14057
14580
  var I3SBuildingSceneLayerLoader = {
14058
14581
  name: "I3S Building Scene Layer",
14059
14582
  id: "i3s-building-scene-layer",
@@ -14078,7 +14601,12 @@ var __exports__ = (() => {
14078
14601
  var BUILDING_SCENE_LAYER = "BuildingSceneLayer";
14079
14602
  var INTEGRATED_MESH_LAYER = "IntegratedMeshLayer";
14080
14603
  var GROUP_LAYER = "GroupLayer";
14081
- var SUPPORTED_LAYERS_TYPES = [ARCGIS_SCENE_SERVER_LAYER_TYPE, INTEGRATED_MESH_LAYER, BUILDING_SCENE_LAYER, GROUP_LAYER];
14604
+ var SUPPORTED_LAYERS_TYPES = [
14605
+ ARCGIS_SCENE_SERVER_LAYER_TYPE,
14606
+ INTEGRATED_MESH_LAYER,
14607
+ BUILDING_SCENE_LAYER,
14608
+ GROUP_LAYER
14609
+ ];
14082
14610
  var NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = "NO_AVAILABLE_SUPPORTED_LAYERS_ERROR";
14083
14611
  var NOT_SUPPORTED_CRS_ERROR = "NOT_SUPPORTED_CRS_ERROR";
14084
14612
  var LayerError = class extends Error {
@@ -14090,13 +14618,8 @@ var __exports__ = (() => {
14090
14618
  };
14091
14619
  async function parseWebscene(data) {
14092
14620
  const layer0 = JSON.parse(new TextDecoder().decode(data));
14093
- const {
14094
- operationalLayers
14095
- } = layer0;
14096
- const {
14097
- layers,
14098
- unsupportedLayers
14099
- } = await parseOperationalLayers(operationalLayers, true);
14621
+ const { operationalLayers } = layer0;
14622
+ const { layers, unsupportedLayers } = await parseOperationalLayers(operationalLayers, true);
14100
14623
  if (!layers.length) {
14101
14624
  throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
14102
14625
  }
@@ -14122,18 +14645,12 @@ var __exports__ = (() => {
14122
14645
  unsupportedLayers.push(layer);
14123
14646
  }
14124
14647
  if (layer.layers?.length) {
14125
- const {
14126
- layers: childLayers,
14127
- unsupportedLayers: childUnsupportedLayers
14128
- } = await parseOperationalLayers(layer.layers, needToCheckCRS);
14648
+ const { layers: childLayers, unsupportedLayers: childUnsupportedLayers } = await parseOperationalLayers(layer.layers, needToCheckCRS);
14129
14649
  layer.layers = childLayers;
14130
14650
  unsupportedLayers = [...unsupportedLayers, ...childUnsupportedLayers];
14131
14651
  }
14132
14652
  }
14133
- return {
14134
- layers,
14135
- unsupportedLayers
14136
- };
14653
+ return { layers, unsupportedLayers };
14137
14654
  }
14138
14655
  async function checkSupportedIndexCRS(layer) {
14139
14656
  try {
@@ -14148,7 +14665,7 @@ var __exports__ = (() => {
14148
14665
  }
14149
14666
 
14150
14667
  // src/arcgis-webscene-loader.ts
14151
- var VERSION11 = true ? "4.2.0-alpha.4" : "latest";
14668
+ var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
14152
14669
  var ArcGISWebSceneLoader = {
14153
14670
  name: "ArcGIS Web Scene Loader",
14154
14671
  id: "arcgis-web-scene",
@@ -14173,29 +14690,41 @@ var __exports__ = (() => {
14173
14690
  ...colors,
14174
14691
  value: new Uint8Array(colors.value)
14175
14692
  };
14176
- const colorizeAttributeField = fields.find(({
14177
- name
14178
- }) => name === colorsByAttribute?.attributeName);
14179
- if (!colorizeAttributeField || !["esriFieldTypeDouble", "esriFieldTypeInteger", "esriFieldTypeSmallInteger"].includes(colorizeAttributeField.type)) {
14693
+ const colorizeAttributeField = fields.find(({ name }) => name === colorsByAttribute?.attributeName);
14694
+ if (!colorizeAttributeField || !["esriFieldTypeDouble", "esriFieldTypeInteger", "esriFieldTypeSmallInteger"].includes(
14695
+ colorizeAttributeField.type
14696
+ )) {
14180
14697
  return colors;
14181
14698
  }
14182
- const colorizeAttributeData = await loadFeatureAttributeData(colorizeAttributeField.name, attributeUrls, attributeStorageInfo, token);
14699
+ const colorizeAttributeData = await loadFeatureAttributeData(
14700
+ colorizeAttributeField.name,
14701
+ attributeUrls,
14702
+ attributeStorageInfo,
14703
+ token
14704
+ );
14183
14705
  if (!colorizeAttributeData) {
14184
14706
  return colors;
14185
14707
  }
14186
- const objectIdField = fields.find(({
14187
- type
14188
- }) => type === "esriFieldTypeOID");
14708
+ const objectIdField = fields.find(({ type }) => type === "esriFieldTypeOID");
14189
14709
  if (!objectIdField) {
14190
14710
  return colors;
14191
14711
  }
14192
- const objectIdAttributeData = await loadFeatureAttributeData(objectIdField.name, attributeUrls, attributeStorageInfo, token);
14712
+ const objectIdAttributeData = await loadFeatureAttributeData(
14713
+ objectIdField.name,
14714
+ attributeUrls,
14715
+ attributeStorageInfo,
14716
+ token
14717
+ );
14193
14718
  if (!objectIdAttributeData) {
14194
14719
  return colors;
14195
14720
  }
14196
14721
  const attributeValuesMap = {};
14197
14722
  for (let i2 = 0; i2 < objectIdAttributeData[objectIdField.name].length; i2++) {
14198
- attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(colorizeAttributeData[colorizeAttributeField.name][i2], colorsByAttribute);
14723
+ attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(
14724
+ // @ts-expect-error
14725
+ colorizeAttributeData[colorizeAttributeField.name][i2],
14726
+ colorsByAttribute
14727
+ );
14199
14728
  }
14200
14729
  for (let i2 = 0; i2 < featureIds.length; i2++) {
14201
14730
  const color = attributeValuesMap[featureIds[i2]];
@@ -14216,12 +14745,7 @@ var __exports__ = (() => {
14216
14745
  if (!colorsByAttribute) {
14217
14746
  return [255, 255, 255, 255];
14218
14747
  }
14219
- const {
14220
- minValue,
14221
- maxValue,
14222
- minColor,
14223
- maxColor
14224
- } = colorsByAttribute;
14748
+ const { minValue, maxValue, minColor, maxColor } = colorsByAttribute;
14225
14749
  const rate = (attributeValue - minValue) / (maxValue - minValue);
14226
14750
  const color = [255, 255, 255, 255];
14227
14751
  for (let i2 = 0; i2 < minColor.length; i2++) {
@@ -14230,9 +14754,7 @@ var __exports__ = (() => {
14230
14754
  return color;
14231
14755
  }
14232
14756
  async function loadFeatureAttributeData(attributeName, attributeUrls, attributeStorageInfo, token) {
14233
- const attributeIndex = attributeStorageInfo.findIndex(({
14234
- name
14235
- }) => attributeName === name);
14757
+ const attributeIndex = attributeStorageInfo.findIndex(({ name }) => attributeName === name);
14236
14758
  if (attributeIndex === -1) {
14237
14759
  return null;
14238
14760
  }
@@ -14244,7 +14766,7 @@ var __exports__ = (() => {
14244
14766
  });
14245
14767
  return objectIdAttributeData;
14246
14768
  }
14247
- return __toCommonJS(src_exports);
14769
+ return __toCommonJS(bundle_exports);
14248
14770
  })();
14249
14771
  return __exports__;
14250
14772
  });