@loaders.gl/i3s 4.2.0-alpha.3 → 4.2.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) 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 -731
  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 +2 -2
  16. package/dist/i3s-content-worker-node.js.map +2 -2
  17. package/dist/i3s-content-worker.js +9 -7
  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 +77 -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 +73 -138
  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 +226 -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 +79 -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 +460 -394
  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 +132 -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 +13 -12
  64. package/dist/arcgis-webscene-loader.js.map +0 -1
  65. package/dist/i3s-attribute-loader.js.map +0 -1
  66. package/dist/i3s-building-scene-layer-loader.js.map +0 -1
  67. package/dist/i3s-content-loader.js.map +0 -1
  68. package/dist/i3s-loader.js.map +0 -1
  69. package/dist/i3s-node-page-loader.js.map +0 -1
  70. package/dist/i3s-slpk-loader.js.map +0 -1
  71. package/dist/index.js.map +0 -1
  72. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  73. package/dist/lib/parsers/constants.js.map +0 -1
  74. package/dist/lib/parsers/parse-arcgis-webscene.js.map +0 -1
  75. package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
  76. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  77. package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  78. package/dist/lib/parsers/parse-i3s.js.map +0 -1
  79. package/dist/lib/parsers/parse-slpk/parse-slpk.js.map +0 -1
  80. package/dist/lib/parsers/parse-slpk/slpk-archieve.js.map +0 -1
  81. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  82. package/dist/lib/utils/customize-colors.js.map +0 -1
  83. package/dist/lib/utils/url-utils.js.map +0 -1
  84. package/dist/types.js.map +0 -1
  85. package/dist/workers/i3s-content-worker-node.js.map +0 -1
  86. 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.3";
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,16 +4592,18 @@ 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 {
4579
- size = 0;
4580
- bigsize = 0n;
4581
- url = "";
4582
4603
  constructor(url, flags, mode) {
4604
+ this.size = 0;
4605
+ this.bigsize = 0n;
4606
+ this.url = "";
4583
4607
  if (globalThis.loaders?.NodeFile) {
4584
4608
  return new globalThis.loaders.NodeFile(url, flags, mode);
4585
4609
  }
@@ -4588,21 +4612,27 @@ var __exports__ = (() => {
4588
4612
  }
4589
4613
  throw new Error("Can't instantiate NodeFile. Make sure to import @loaders.gl/polyfills first.");
4590
4614
  }
4615
+ /** Read data */
4591
4616
  async read(start, end) {
4592
4617
  throw NOT_IMPLEMENTED;
4593
4618
  }
4619
+ /** Write to file. The number of bytes written will be returned */
4594
4620
  async write(arrayBuffer, offset, length4) {
4595
4621
  throw NOT_IMPLEMENTED;
4596
4622
  }
4623
+ /** Get information about file */
4597
4624
  async stat() {
4598
4625
  throw NOT_IMPLEMENTED;
4599
4626
  }
4627
+ /** Truncates the file descriptor. Only available on NodeFile. */
4600
4628
  async truncate(length4) {
4601
4629
  throw NOT_IMPLEMENTED;
4602
4630
  }
4631
+ /** Append data to a file. Only available on NodeFile. */
4603
4632
  async append(data) {
4604
4633
  throw NOT_IMPLEMENTED;
4605
4634
  }
4635
+ /** Close the file */
4606
4636
  async close() {
4607
4637
  }
4608
4638
  };
@@ -4614,18 +4644,32 @@ var __exports__ = (() => {
4614
4644
 
4615
4645
  // ../loader-utils/src/lib/file-provider/file-handle-file.ts
4616
4646
  var FileHandleFile = class {
4647
+ /** Create a new FileHandleFile */
4617
4648
  constructor(path, append = false) {
4618
4649
  this.file = new NodeFileFacade(path, append ? "a+" : "r");
4619
4650
  }
4651
+ /**
4652
+ * Truncates the file descriptor.
4653
+ * @param length desired file lenght
4654
+ */
4620
4655
  async truncate(length4) {
4621
4656
  await this.file.truncate(length4);
4622
4657
  }
4658
+ /**
4659
+ * Append data to a file.
4660
+ * @param buffer data to append
4661
+ */
4623
4662
  async append(buffer) {
4624
4663
  await this.file.append(buffer);
4625
4664
  }
4665
+ /** Close file */
4626
4666
  async destroy() {
4627
4667
  await this.file.close();
4628
4668
  }
4669
+ /**
4670
+ * Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
4671
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4672
+ */
4629
4673
  async getUint8(offset) {
4630
4674
  const arrayBuffer = await this.file.read(offset, 1);
4631
4675
  const val = new Uint8Array(arrayBuffer).at(0);
@@ -4634,6 +4678,10 @@ var __exports__ = (() => {
4634
4678
  }
4635
4679
  return val;
4636
4680
  }
4681
+ /**
4682
+ * Gets an unsigned 16-bit integer at the specified byte offset from the start of the file.
4683
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4684
+ */
4637
4685
  async getUint16(offset) {
4638
4686
  const arrayBuffer = await this.file.read(offset, 2);
4639
4687
  const val = new Uint16Array(arrayBuffer).at(0);
@@ -4642,6 +4690,10 @@ var __exports__ = (() => {
4642
4690
  }
4643
4691
  return val;
4644
4692
  }
4693
+ /**
4694
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4695
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4696
+ */
4645
4697
  async getUint32(offset) {
4646
4698
  const arrayBuffer = await this.file.read(offset, 4);
4647
4699
  const val = new Uint32Array(arrayBuffer).at(0);
@@ -4650,6 +4702,10 @@ var __exports__ = (() => {
4650
4702
  }
4651
4703
  return val;
4652
4704
  }
4705
+ /**
4706
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4707
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4708
+ */
4653
4709
  async getBigUint64(offset) {
4654
4710
  const arrayBuffer = await this.file.read(offset, 8);
4655
4711
  const val = new BigInt64Array(arrayBuffer).at(0);
@@ -4658,6 +4714,11 @@ var __exports__ = (() => {
4658
4714
  }
4659
4715
  return val;
4660
4716
  }
4717
+ /**
4718
+ * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
4719
+ * @param startOffset The offset, in byte, from the start of the file where to start reading the data.
4720
+ * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
4721
+ */
4661
4722
  async slice(startOffset, endOffset) {
4662
4723
  const bigLength = endOffset - startOffset;
4663
4724
  if (bigLength > Number.MAX_SAFE_INTEGER) {
@@ -4666,6 +4727,9 @@ var __exports__ = (() => {
4666
4727
  const length4 = Number(bigLength);
4667
4728
  return await this.file.read(startOffset, length4);
4668
4729
  }
4730
+ /**
4731
+ * the length (in bytes) of the data.
4732
+ */
4669
4733
  get length() {
4670
4734
  return this.file.bigsize;
4671
4735
  }
@@ -4684,21 +4748,43 @@ var __exports__ = (() => {
4684
4748
  }
4685
4749
  async destroy() {
4686
4750
  }
4751
+ /**
4752
+ * Gets an unsigned 8-bit integer at the specified byte offset from the start of the file.
4753
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4754
+ */
4687
4755
  async getUint8(offset) {
4688
4756
  return this.file.getUint8(toNumber(offset));
4689
4757
  }
4758
+ /**
4759
+ * Gets an unsigned 16-bit intege at the specified byte offset from the start of the file.
4760
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4761
+ */
4690
4762
  async getUint16(offset) {
4691
4763
  return this.file.getUint16(toNumber(offset), true);
4692
4764
  }
4765
+ /**
4766
+ * Gets an unsigned 32-bit integer at the specified byte offset from the start of the file.
4767
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4768
+ */
4693
4769
  async getUint32(offset) {
4694
4770
  return this.file.getUint32(toNumber(offset), true);
4695
4771
  }
4772
+ /**
4773
+ * Gets an unsigned 64-bit integer at the specified byte offset from the start of the file.
4774
+ * @param offset The offset, in bytes, from the start of the file where to read the data.
4775
+ */
4696
4776
  async getBigUint64(offset) {
4697
4777
  return this.file.getBigUint64(toNumber(offset), true);
4698
4778
  }
4779
+ /**
4780
+ * returns an ArrayBuffer whose contents are a copy of this file bytes from startOffset, inclusive, up to endOffset, exclusive.
4781
+ * @param startOffset The offset, in bytes, from the start of the file where to start reading the data.
4782
+ * @param endOffset The offset, in bytes, from the start of the file where to end reading the data.
4783
+ */
4699
4784
  async slice(startOffset, endOffset) {
4700
4785
  return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
4701
4786
  }
4787
+ /** the length (in bytes) of the data. */
4702
4788
  get length() {
4703
4789
  return BigInt(this.file.byteLength);
4704
4790
  }
@@ -8840,14 +8926,14 @@ var __exports__ = (() => {
8840
8926
  var OBJECT_ID_ATTRIBUTE_TYPE = "Oid32";
8841
8927
  var FLOAT_64_TYPE = "Float64";
8842
8928
  var INT_16_ATTRIBUTE_TYPE = "Int16";
8843
- var COORDINATE_SYSTEM = function(COORDINATE_SYSTEM2) {
8929
+ var COORDINATE_SYSTEM = /* @__PURE__ */ ((COORDINATE_SYSTEM2) => {
8844
8930
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["DEFAULT"] = -1] = "DEFAULT";
8845
8931
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT"] = 1] = "LNGLAT";
8846
8932
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["METER_OFFSETS"] = 2] = "METER_OFFSETS";
8847
8933
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["LNGLAT_OFFSETS"] = 3] = "LNGLAT_OFFSETS";
8848
8934
  COORDINATE_SYSTEM2[COORDINATE_SYSTEM2["CARTESIAN"] = 0] = "CARTESIAN";
8849
8935
  return COORDINATE_SYSTEM2;
8850
- }({});
8936
+ })(COORDINATE_SYSTEM || {});
8851
8937
 
8852
8938
  // src/i3s-loader.ts
8853
8939
  var import_core18 = __toESM(require_core(), 1);
@@ -9211,7 +9297,7 @@ var __exports__ = (() => {
9211
9297
  _defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
9212
9298
 
9213
9299
  // ../images/src/lib/utils/version.ts
9214
- var VERSION2 = true ? "4.2.0-alpha.3" : "latest";
9300
+ var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9215
9301
 
9216
9302
  // ../images/src/lib/category-api/image-type.ts
9217
9303
  var parseImageNode = globalThis.loaders?.parseImageNode;
@@ -9398,10 +9484,7 @@ var __exports__ = (() => {
9398
9484
  switch (brandMajor) {
9399
9485
  case "avif":
9400
9486
  case "avis":
9401
- return {
9402
- extension: "avif",
9403
- mimeType: "image/avif"
9404
- };
9487
+ return { extension: "avif", mimeType: "image/avif" };
9405
9488
  default:
9406
9489
  return null;
9407
9490
  }
@@ -9437,6 +9520,7 @@ var __exports__ = (() => {
9437
9520
  }
9438
9521
  return {
9439
9522
  mimeType: mediaType.mimeType,
9523
+ // TODO - decode width and height
9440
9524
  width: 0,
9441
9525
  height: 0
9442
9526
  };
@@ -9483,10 +9567,7 @@ var __exports__ = (() => {
9483
9567
  if (!isJpeg) {
9484
9568
  return null;
9485
9569
  }
9486
- const {
9487
- tableMarkers,
9488
- sofMarkers
9489
- } = getJpegMarkers();
9570
+ const { tableMarkers, sofMarkers } = getJpegMarkers();
9490
9571
  let i2 = 2;
9491
9572
  while (i2 + 9 < dataView.byteLength) {
9492
9573
  const marker = dataView.getUint16(i2, BIG_ENDIAN);
@@ -9494,7 +9575,9 @@ var __exports__ = (() => {
9494
9575
  return {
9495
9576
  mimeType: "image/jpeg",
9496
9577
  height: dataView.getUint16(i2 + 5, BIG_ENDIAN),
9578
+ // Number of lines
9497
9579
  width: dataView.getUint16(i2 + 7, BIG_ENDIAN)
9580
+ // Number of pixels per line
9498
9581
  };
9499
9582
  }
9500
9583
  if (!tableMarkers.has(marker)) {
@@ -9510,11 +9593,23 @@ var __exports__ = (() => {
9510
9593
  for (let i2 = 65504; i2 < 65520; ++i2) {
9511
9594
  tableMarkers.add(i2);
9512
9595
  }
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
- };
9596
+ const sofMarkers = /* @__PURE__ */ new Set([
9597
+ 65472,
9598
+ 65473,
9599
+ 65474,
9600
+ 65475,
9601
+ 65477,
9602
+ 65478,
9603
+ 65479,
9604
+ 65481,
9605
+ 65482,
9606
+ 65483,
9607
+ 65485,
9608
+ 65486,
9609
+ 65487,
9610
+ 65502
9611
+ ]);
9612
+ return { tableMarkers, sofMarkers };
9518
9613
  }
9519
9614
  function toDataView(data) {
9520
9615
  if (data instanceof DataView) {
@@ -9531,9 +9626,7 @@ var __exports__ = (() => {
9531
9626
 
9532
9627
  // ../images/src/lib/parsers/parse-to-node-image.ts
9533
9628
  async function parseToNodeImage(arrayBuffer, options) {
9534
- const {
9535
- mimeType
9536
- } = getBinaryImageMetadata(arrayBuffer) || {};
9629
+ const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
9537
9630
  const parseImageNode2 = globalThis.loaders?.parseImageNode;
9538
9631
  assert(parseImageNode2);
9539
9632
  return await parseImageNode2(arrayBuffer, mimeType);
@@ -9544,9 +9637,7 @@ var __exports__ = (() => {
9544
9637
  options = options || {};
9545
9638
  const imageOptions = options.image || {};
9546
9639
  const imageType = imageOptions.type || "auto";
9547
- const {
9548
- url
9549
- } = context || {};
9640
+ const { url } = context || {};
9550
9641
  const loadType = getLoadableImageType(imageType);
9551
9642
  let image;
9552
9643
  switch (loadType) {
@@ -9580,12 +9671,23 @@ var __exports__ = (() => {
9580
9671
 
9581
9672
  // ../images/src/image-loader.ts
9582
9673
  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"];
9674
+ var MIME_TYPES = [
9675
+ "image/png",
9676
+ "image/jpeg",
9677
+ "image/gif",
9678
+ "image/webp",
9679
+ "image/avif",
9680
+ "image/bmp",
9681
+ "image/vnd.microsoft.icon",
9682
+ "image/svg+xml"
9683
+ ];
9584
9684
  var DEFAULT_IMAGE_LOADER_OPTIONS = {
9585
9685
  image: {
9586
9686
  type: "auto",
9587
9687
  decode: true
9688
+ // if format is HTML
9588
9689
  }
9690
+ // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor
9589
9691
  };
9590
9692
  var ImageLoader = {
9591
9693
  id: "image",
@@ -9595,18 +9697,20 @@ var __exports__ = (() => {
9595
9697
  mimeTypes: MIME_TYPES,
9596
9698
  extensions: EXTENSIONS,
9597
9699
  parse: parseImage,
9700
+ // TODO: byteOffset, byteLength;
9598
9701
  tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],
9599
9702
  options: DEFAULT_IMAGE_LOADER_OPTIONS
9600
9703
  };
9601
9704
 
9602
9705
  // ../draco/src/lib/utils/version.ts
9603
- var VERSION3 = true ? "4.2.0-alpha.3" : "latest";
9706
+ var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9604
9707
 
9605
9708
  // ../draco/src/draco-loader.ts
9606
9709
  var DracoLoader = {
9607
9710
  name: "Draco",
9608
9711
  id: "draco",
9609
9712
  module: "draco",
9713
+ // shapes: ['mesh'],
9610
9714
  version: VERSION3,
9611
9715
  worker: true,
9612
9716
  extensions: ["drc"],
@@ -9616,6 +9720,7 @@ var __exports__ = (() => {
9616
9720
  options: {
9617
9721
  draco: {
9618
9722
  decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
9723
+ // 'js' for IE11
9619
9724
  libraryPath: "libs/",
9620
9725
  extraAttributes: {},
9621
9726
  attributeNameEntry: void 0
@@ -9669,7 +9774,10 @@ var __exports__ = (() => {
9669
9774
  maxY = y > maxY ? y : maxY;
9670
9775
  maxZ = z > maxZ ? z : maxZ;
9671
9776
  }
9672
- return [[minX, minY, minZ], [maxX, maxY, maxZ]];
9777
+ return [
9778
+ [minX, minY, minZ],
9779
+ [maxX, maxY, maxZ]
9780
+ ];
9673
9781
  }
9674
9782
 
9675
9783
  // ../schema/src/lib/mesh/deduce-mesh-schema.ts
@@ -9678,14 +9786,7 @@ var __exports__ = (() => {
9678
9786
  const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
9679
9787
  return {
9680
9788
  name,
9681
- type: {
9682
- type: "fixed-size-list",
9683
- listSize: attribute.size,
9684
- children: [{
9685
- name: "value",
9686
- type
9687
- }]
9688
- },
9789
+ type: { type: "fixed-size-list", listSize: attribute.size, children: [{ name: "value", type }] },
9689
9790
  nullable: false,
9690
9791
  metadata
9691
9792
  };
@@ -9711,17 +9812,18 @@ var __exports__ = (() => {
9711
9812
  const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
9712
9813
  for (const attributeName in attributes) {
9713
9814
  const attribute = attributes[attributeName];
9714
- const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
9815
+ const field = getArrowFieldFromAttribute(
9816
+ attributeName,
9817
+ attribute,
9818
+ namedLoaderDataAttributes[attributeName]
9819
+ );
9715
9820
  fields.push(field);
9716
9821
  }
9717
9822
  if (indices) {
9718
9823
  const indicesField = getArrowFieldFromAttribute("indices", indices);
9719
9824
  fields.push(indicesField);
9720
9825
  }
9721
- return {
9722
- fields,
9723
- metadata
9724
- };
9826
+ return { fields, metadata };
9725
9827
  }
9726
9828
  function transformAttributesLoaderData(loaderData) {
9727
9829
  const result = {};
@@ -9763,15 +9865,24 @@ var __exports__ = (() => {
9763
9865
  };
9764
9866
  var INDEX_ITEM_SIZE = 4;
9765
9867
  var DracoParser = class {
9868
+ // draco - the draco decoder, either import `draco3d` or load dynamically
9766
9869
  constructor(draco) {
9767
9870
  this.draco = draco;
9768
9871
  this.decoder = new this.draco.Decoder();
9769
9872
  this.metadataQuerier = new this.draco.MetadataQuerier();
9770
9873
  }
9874
+ /**
9875
+ * Destroy draco resources
9876
+ */
9771
9877
  destroy() {
9772
9878
  this.draco.destroy(this.decoder);
9773
9879
  this.draco.destroy(this.metadataQuerier);
9774
9880
  }
9881
+ /**
9882
+ * NOTE: caller must call `destroyGeometry` on the return value after using it
9883
+ * @param arrayBuffer
9884
+ * @param options
9885
+ */
9775
9886
  parseSync(arrayBuffer, options = {}) {
9776
9887
  const buffer = new this.draco.DecoderBuffer();
9777
9888
  buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
@@ -9816,6 +9927,14 @@ var __exports__ = (() => {
9816
9927
  }
9817
9928
  }
9818
9929
  }
9930
+ // Draco specific "loader data"
9931
+ /**
9932
+ * Extract
9933
+ * @param dracoGeometry
9934
+ * @param geometry_type
9935
+ * @param options
9936
+ * @returns
9937
+ */
9819
9938
  _getDracoLoaderData(dracoGeometry, geometry_type, options) {
9820
9939
  const metadata = this._getTopLevelMetadata(dracoGeometry);
9821
9940
  const attributes = this._getDracoAttributes(dracoGeometry, options);
@@ -9828,6 +9947,12 @@ var __exports__ = (() => {
9828
9947
  attributes
9829
9948
  };
9830
9949
  }
9950
+ /**
9951
+ * Extract all draco provided information and metadata for each attribute
9952
+ * @param dracoGeometry
9953
+ * @param options
9954
+ * @returns
9955
+ */
9831
9956
  _getDracoAttributes(dracoGeometry, options) {
9832
9957
  const dracoAttributes = {};
9833
9958
  for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
@@ -9855,6 +9980,12 @@ var __exports__ = (() => {
9855
9980
  }
9856
9981
  return dracoAttributes;
9857
9982
  }
9983
+ /**
9984
+ * Get standard loaders.gl mesh category data
9985
+ * Extracts the geometry from draco
9986
+ * @param dracoGeometry
9987
+ * @param options
9988
+ */
9858
9989
  _getMeshData(dracoGeometry, loaderData, options) {
9859
9990
  const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
9860
9991
  const positionAttribute = attributes.POSITION;
@@ -9867,6 +9998,7 @@ var __exports__ = (() => {
9867
9998
  return {
9868
9999
  topology: "triangle-strip",
9869
10000
  mode: 4,
10001
+ // GL.TRIANGLES
9870
10002
  attributes,
9871
10003
  indices: {
9872
10004
  value: this._getTriangleStripIndices(dracoGeometry),
@@ -9878,6 +10010,7 @@ var __exports__ = (() => {
9878
10010
  return {
9879
10011
  topology: "triangle-list",
9880
10012
  mode: 5,
10013
+ // GL.TRIANGLE_STRIP
9881
10014
  attributes,
9882
10015
  indices: {
9883
10016
  value: this._getTriangleListIndices(dracoGeometry),
@@ -9889,6 +10022,7 @@ var __exports__ = (() => {
9889
10022
  return {
9890
10023
  topology: "point-list",
9891
10024
  mode: 0,
10025
+ // GL.POINTS
9892
10026
  attributes
9893
10027
  };
9894
10028
  }
@@ -9897,10 +10031,7 @@ var __exports__ = (() => {
9897
10031
  for (const loaderAttribute of Object.values(loaderData.attributes)) {
9898
10032
  const attributeName = this._deduceAttributeName(loaderAttribute, options);
9899
10033
  loaderAttribute.name = attributeName;
9900
- const {
9901
- value,
9902
- size
9903
- } = this._getAttributeValues(dracoGeometry, loaderAttribute);
10034
+ const { value, size } = this._getAttributeValues(dracoGeometry, loaderAttribute);
9904
10035
  attributes[attributeName] = {
9905
10036
  value,
9906
10037
  size,
@@ -9911,6 +10042,11 @@ var __exports__ = (() => {
9911
10042
  }
9912
10043
  return attributes;
9913
10044
  }
10045
+ // MESH INDICES EXTRACTION
10046
+ /**
10047
+ * For meshes, we need indices to define the faces.
10048
+ * @param dracoGeometry
10049
+ */
9914
10050
  _getTriangleListIndices(dracoGeometry) {
9915
10051
  const numFaces = dracoGeometry.num_faces();
9916
10052
  const numIndices = numFaces * 3;
@@ -9923,6 +10059,10 @@ var __exports__ = (() => {
9923
10059
  this.draco._free(ptr);
9924
10060
  }
9925
10061
  }
10062
+ /**
10063
+ * For meshes, we need indices to define the faces.
10064
+ * @param dracoGeometry
10065
+ */
9926
10066
  _getTriangleStripIndices(dracoGeometry) {
9927
10067
  const dracoArray = new this.draco.DracoInt32Array();
9928
10068
  try {
@@ -9932,6 +10072,12 @@ var __exports__ = (() => {
9932
10072
  this.draco.destroy(dracoArray);
9933
10073
  }
9934
10074
  }
10075
+ /**
10076
+ *
10077
+ * @param dracoGeometry
10078
+ * @param dracoAttribute
10079
+ * @param attributeName
10080
+ */
9935
10081
  _getAttributeValues(dracoGeometry, attribute) {
9936
10082
  const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
9937
10083
  const numComponents = attribute.num_components;
@@ -9943,19 +10089,48 @@ var __exports__ = (() => {
9943
10089
  const ptr = this.draco._malloc(byteLength);
9944
10090
  try {
9945
10091
  const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);
9946
- this.decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, dracoAttribute, dataType, byteLength, ptr);
10092
+ this.decoder.GetAttributeDataArrayForAllPoints(
10093
+ dracoGeometry,
10094
+ dracoAttribute,
10095
+ dataType,
10096
+ byteLength,
10097
+ ptr
10098
+ );
9947
10099
  value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();
9948
10100
  } finally {
9949
10101
  this.draco._free(ptr);
9950
10102
  }
9951
- return {
9952
- value,
9953
- size: numComponents
9954
- };
9955
- }
10103
+ return { value, size: numComponents };
10104
+ }
10105
+ // Attribute names
10106
+ /**
10107
+ * DRACO does not store attribute names - We need to deduce an attribute name
10108
+ * for each attribute
10109
+ _getAttributeNames(
10110
+ dracoGeometry: Mesh | PointCloud,
10111
+ options: DracoParseOptions
10112
+ ): {[unique_id: number]: string} {
10113
+ const attributeNames: {[unique_id: number]: string} = {};
10114
+ for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
10115
+ const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
10116
+ const attributeName = this._deduceAttributeName(dracoAttribute, options);
10117
+ attributeNames[attributeName] = attributeName;
10118
+ }
10119
+ return attributeNames;
10120
+ }
10121
+ */
10122
+ /**
10123
+ * Deduce an attribute name.
10124
+ * @note DRACO does not save attribute names, just general type (POSITION, COLOR)
10125
+ * to help optimize compression. We generate GLTF compatible names for the Draco-recognized
10126
+ * types
10127
+ * @param attributeData
10128
+ */
9956
10129
  _deduceAttributeName(attribute, options) {
9957
10130
  const uniqueId = attribute.unique_id;
9958
- for (const [attributeName, attributeUniqueId] of Object.entries(options.extraAttributes || {})) {
10131
+ for (const [attributeName, attributeUniqueId] of Object.entries(
10132
+ options.extraAttributes || {}
10133
+ )) {
9959
10134
  if (attributeUniqueId === uniqueId) {
9960
10135
  return attributeName;
9961
10136
  }
@@ -9973,14 +10148,22 @@ var __exports__ = (() => {
9973
10148
  }
9974
10149
  return `CUSTOM_ATTRIBUTE_${uniqueId}`;
9975
10150
  }
10151
+ // METADATA EXTRACTION
10152
+ /** Get top level metadata */
9976
10153
  _getTopLevelMetadata(dracoGeometry) {
9977
10154
  const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
9978
10155
  return this._getDracoMetadata(dracoMetadata);
9979
10156
  }
10157
+ /** Get per attribute metadata */
9980
10158
  _getAttributeMetadata(dracoGeometry, attributeId) {
9981
10159
  const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
9982
10160
  return this._getDracoMetadata(dracoMetadata);
9983
10161
  }
10162
+ /**
10163
+ * Extract metadata field values
10164
+ * @param dracoMetadata
10165
+ * @returns
10166
+ */
9984
10167
  _getDracoMetadata(dracoMetadata) {
9985
10168
  if (!dracoMetadata || !dracoMetadata.ptr) {
9986
10169
  return {};
@@ -9993,6 +10176,11 @@ var __exports__ = (() => {
9993
10176
  }
9994
10177
  return result;
9995
10178
  }
10179
+ /**
10180
+ * Extracts possible values for one metadata entry by name
10181
+ * @param dracoMetadata
10182
+ * @param entryName
10183
+ */
9996
10184
  _getDracoMetadataField(dracoMetadata, entryName) {
9997
10185
  const dracoArray = new this.draco.DracoInt32Array();
9998
10186
  try {
@@ -10008,20 +10196,21 @@ var __exports__ = (() => {
10008
10196
  this.draco.destroy(dracoArray);
10009
10197
  }
10010
10198
  }
10199
+ // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)
10200
+ /** Skip transforms for specific attribute types */
10011
10201
  _disableAttributeTransforms(options) {
10012
- const {
10013
- quantizedAttributes = [],
10014
- octahedronAttributes = []
10015
- } = options;
10202
+ const { quantizedAttributes = [], octahedronAttributes = [] } = options;
10016
10203
  const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];
10017
10204
  for (const dracoAttributeName of skipAttributes) {
10018
10205
  this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);
10019
10206
  }
10020
10207
  }
10208
+ /**
10209
+ * Extract (and apply?) Position Transform
10210
+ * @todo not used
10211
+ */
10021
10212
  _getQuantizationTransform(dracoAttribute, options) {
10022
- const {
10023
- quantizedAttributes = []
10024
- } = options;
10213
+ const { quantizedAttributes = [] } = options;
10025
10214
  const attribute_type = dracoAttribute.attribute_type();
10026
10215
  const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);
10027
10216
  if (skip) {
@@ -10041,9 +10230,7 @@ var __exports__ = (() => {
10041
10230
  return null;
10042
10231
  }
10043
10232
  _getOctahedronTransform(dracoAttribute, options) {
10044
- const {
10045
- octahedronAttributes = []
10046
- } = options;
10233
+ const { octahedronAttributes = [] } = options;
10047
10234
  const attribute_type = dracoAttribute.attribute_type();
10048
10235
  const octahedron = octahedronAttributes.map((type) => this.decoder[type]).includes(attribute_type);
10049
10236
  if (octahedron) {
@@ -10060,6 +10247,7 @@ var __exports__ = (() => {
10060
10247
  }
10061
10248
  return null;
10062
10249
  }
10250
+ // HELPERS
10063
10251
  };
10064
10252
  function getDracoDataType(draco, attributeType) {
10065
10253
  switch (attributeType) {
@@ -10103,9 +10291,13 @@ var __exports__ = (() => {
10103
10291
  var DRACO_ENCODER_VERSION = "1.4.1";
10104
10292
  var STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
10105
10293
  var DRACO_EXTERNAL_LIBRARIES = {
10294
+ /** The primary Draco3D encoder, javascript wrapper part */
10106
10295
  DECODER: "draco_wasm_wrapper.js",
10296
+ /** The primary draco decoder, compiled web assembly part */
10107
10297
  DECODER_WASM: "draco_decoder.wasm",
10298
+ /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
10108
10299
  FALLBACK_DECODER: "draco_decoder.js",
10300
+ /** Draco encoder */
10109
10301
  ENCODER: "draco_encoder.js"
10110
10302
  };
10111
10303
  var DRACO_EXTERNAL_LIBRARY_URLS = {
@@ -10119,9 +10311,7 @@ var __exports__ = (() => {
10119
10311
  const modules = options.modules || {};
10120
10312
  if (modules.draco3d) {
10121
10313
  loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then((draco) => {
10122
- return {
10123
- draco
10124
- };
10314
+ return { draco };
10125
10315
  });
10126
10316
  } else {
10127
10317
  loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
@@ -10133,11 +10323,29 @@ var __exports__ = (() => {
10133
10323
  let wasmBinary;
10134
10324
  switch (options.draco && options.draco.decoderType) {
10135
10325
  case "js":
10136
- DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
10326
+ DracoDecoderModule = await loadLibrary(
10327
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],
10328
+ "draco",
10329
+ options,
10330
+ DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER
10331
+ );
10137
10332
  break;
10138
10333
  case "wasm":
10139
10334
  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)]);
10335
+ [DracoDecoderModule, wasmBinary] = await Promise.all([
10336
+ await loadLibrary(
10337
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],
10338
+ "draco",
10339
+ options,
10340
+ DRACO_EXTERNAL_LIBRARIES.DECODER
10341
+ ),
10342
+ await loadLibrary(
10343
+ DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],
10344
+ "draco",
10345
+ options,
10346
+ DRACO_EXTERNAL_LIBRARIES.DECODER_WASM
10347
+ )
10348
+ ]);
10141
10349
  }
10142
10350
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
10143
10351
  return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
@@ -10150,9 +10358,8 @@ var __exports__ = (() => {
10150
10358
  return new Promise((resolve) => {
10151
10359
  DracoDecoderModule({
10152
10360
  ...options,
10153
- onModuleLoaded: (draco) => resolve({
10154
- draco
10155
- })
10361
+ onModuleLoaded: (draco) => resolve({ draco })
10362
+ // Module is Promise-like. Wrap in object to avoid loop.
10156
10363
  });
10157
10364
  });
10158
10365
  }
@@ -10163,9 +10370,7 @@ var __exports__ = (() => {
10163
10370
  parse
10164
10371
  };
10165
10372
  async function parse(arrayBuffer, options) {
10166
- const {
10167
- draco
10168
- } = await loadDracoDecoderModule(options);
10373
+ const { draco } = await loadDracoDecoderModule(options);
10169
10374
  const dracoParser = new DracoParser(draco);
10170
10375
  try {
10171
10376
  return dracoParser.parseSync(arrayBuffer, options?.draco);
@@ -10175,13 +10380,17 @@ var __exports__ = (() => {
10175
10380
  }
10176
10381
 
10177
10382
  // ../textures/src/lib/utils/version.ts
10178
- var VERSION4 = true ? "4.2.0-alpha.3" : "latest";
10383
+ var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10179
10384
 
10180
10385
  // ../textures/src/lib/parsers/basis-module-loader.ts
10181
10386
  var BASIS_EXTERNAL_LIBRARIES = {
10387
+ /** Basis transcoder, javascript wrapper part */
10182
10388
  TRANSCODER: "basis_transcoder.js",
10389
+ /** Basis transcoder, compiled web assembly part */
10183
10390
  TRANSCODER_WASM: "basis_transcoder.wasm",
10391
+ /** Basis encoder, javascript wrapper part */
10184
10392
  ENCODER: "basis_encoder.js",
10393
+ /** Basis encoder, compiled web assembly part */
10185
10394
  ENCODER_WASM: "basis_encoder.wasm"
10186
10395
  };
10187
10396
  var loadBasisTranscoderPromise;
@@ -10196,7 +10405,10 @@ var __exports__ = (() => {
10196
10405
  async function loadBasisTranscoder(options) {
10197
10406
  let BASIS = null;
10198
10407
  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)]);
10408
+ [BASIS, wasmBinary] = await Promise.all([
10409
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
10410
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
10411
+ ]);
10200
10412
  BASIS = BASIS || globalThis.BASIS;
10201
10413
  return await initializeBasisTranscoderModule(BASIS, wasmBinary);
10202
10414
  }
@@ -10207,14 +10419,9 @@ var __exports__ = (() => {
10207
10419
  }
10208
10420
  return new Promise((resolve) => {
10209
10421
  BasisModule(options).then((module) => {
10210
- const {
10211
- BasisFile,
10212
- initializeBasis
10213
- } = module;
10422
+ const { BasisFile, initializeBasis } = module;
10214
10423
  initializeBasis();
10215
- resolve({
10216
- BasisFile
10217
- });
10424
+ resolve({ BasisFile });
10218
10425
  });
10219
10426
  });
10220
10427
  }
@@ -10230,7 +10437,10 @@ var __exports__ = (() => {
10230
10437
  async function loadBasisEncoder(options) {
10231
10438
  let BASIS_ENCODER = null;
10232
10439
  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)]);
10440
+ [BASIS_ENCODER, wasmBinary] = await Promise.all([
10441
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
10442
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
10443
+ ]);
10234
10444
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
10235
10445
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
10236
10446
  }
@@ -10241,28 +10451,21 @@ var __exports__ = (() => {
10241
10451
  }
10242
10452
  return new Promise((resolve) => {
10243
10453
  BasisEncoderModule(options).then((module) => {
10244
- const {
10245
- BasisFile,
10246
- KTX2File,
10247
- initializeBasis,
10248
- BasisEncoder
10249
- } = module;
10454
+ const { BasisFile, KTX2File, initializeBasis, BasisEncoder } = module;
10250
10455
  initializeBasis();
10251
- resolve({
10252
- BasisFile,
10253
- KTX2File,
10254
- BasisEncoder
10255
- });
10456
+ resolve({ BasisFile, KTX2File, BasisEncoder });
10256
10457
  });
10257
10458
  });
10258
10459
  }
10259
10460
 
10260
10461
  // ../textures/src/lib/gl-extensions.ts
10261
10462
  var GL_EXTENSIONS_CONSTANTS = {
10463
+ // WEBGL_compressed_texture_s3tc
10262
10464
  COMPRESSED_RGB_S3TC_DXT1_EXT: 33776,
10263
10465
  COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777,
10264
10466
  COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778,
10265
10467
  COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779,
10468
+ // WEBGL_compressed_texture_es3
10266
10469
  COMPRESSED_R11_EAC: 37488,
10267
10470
  COMPRESSED_SIGNED_R11_EAC: 37489,
10268
10471
  COMPRESSED_RG11_EAC: 37490,
@@ -10273,14 +10476,18 @@ var __exports__ = (() => {
10273
10476
  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37495,
10274
10477
  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
10275
10478
  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
10479
+ // WEBGL_compressed_texture_pvrtc
10276
10480
  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
10277
10481
  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
10278
10482
  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
10279
10483
  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
10484
+ // WEBGL_compressed_texture_etc1
10280
10485
  COMPRESSED_RGB_ETC1_WEBGL: 36196,
10486
+ // WEBGL_compressed_texture_atc
10281
10487
  COMPRESSED_RGB_ATC_WEBGL: 35986,
10282
10488
  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
10283
10489
  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
10490
+ // WEBGL_compressed_texture_astc
10284
10491
  COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
10285
10492
  COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
10286
10493
  COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
@@ -10309,10 +10516,12 @@ var __exports__ = (() => {
10309
10516
  COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
10310
10517
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
10311
10518
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
10519
+ // EXT_texture_compression_rgtc
10312
10520
  COMPRESSED_RED_RGTC1_EXT: 36283,
10313
10521
  COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
10314
10522
  COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
10315
10523
  COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
10524
+ // WEBGL_compressed_texture_s3tc_srgb
10316
10525
  COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
10317
10526
  COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
10318
10527
  COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
@@ -10322,6 +10531,7 @@ var __exports__ = (() => {
10322
10531
  // ../textures/src/lib/utils/texture-formats.ts
10323
10532
  var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
10324
10533
  var WEBGL_EXTENSIONS = {
10534
+ /* eslint-disable camelcase */
10325
10535
  WEBGL_compressed_texture_s3tc: "dxt",
10326
10536
  WEBGL_compressed_texture_s3tc_srgb: "dxt-srgb",
10327
10537
  WEBGL_compressed_texture_etc1: "etc1",
@@ -10330,6 +10540,7 @@ var __exports__ = (() => {
10330
10540
  WEBGL_compressed_texture_atc: "atc",
10331
10541
  WEBGL_compressed_texture_astc: "astc",
10332
10542
  EXT_texture_compression_rgtc: "rgtc"
10543
+ /* eslint-enable camelcase */
10333
10544
  };
10334
10545
  var formats = null;
10335
10546
  function getSupportedGPUTextureFormats(gl) {
@@ -10512,49 +10723,91 @@ var __exports__ = (() => {
10512
10723
  154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,
10513
10724
  155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,
10514
10725
  156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,
10726
+ // @ts-ignore
10515
10727
  157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
10728
+ // @ts-ignore
10516
10729
  158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
10730
+ // @ts-ignore
10517
10731
  159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
10732
+ // @ts-ignore
10518
10733
  160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,
10734
+ // @ts-ignore
10519
10735
  161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
10736
+ // @ts-ignore
10520
10737
  162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
10738
+ // @ts-ignore
10521
10739
  163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
10740
+ // @ts-ignore
10522
10741
  164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
10742
+ // @ts-ignore
10523
10743
  165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
10744
+ // @ts-ignore
10524
10745
  166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
10746
+ // @ts-ignore
10525
10747
  167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
10748
+ // @ts-ignore
10526
10749
  168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
10750
+ // @ts-ignore
10527
10751
  169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
10752
+ // @ts-ignore
10528
10753
  170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
10754
+ // @ts-ignore
10529
10755
  171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
10756
+ // @ts-ignore
10530
10757
  172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
10758
+ // @ts-ignore
10531
10759
  173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
10760
+ // @ts-ignore
10532
10761
  174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
10762
+ // @ts-ignore
10533
10763
  175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
10764
+ // @ts-ignore
10534
10765
  176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
10766
+ // @ts-ignore
10535
10767
  177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
10768
+ // @ts-ignore
10536
10769
  178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
10770
+ // @ts-ignore
10537
10771
  179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
10772
+ // @ts-ignore
10538
10773
  180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
10774
+ // @ts-ignore
10539
10775
  181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
10776
+ // @ts-ignore
10540
10777
  182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
10778
+ // @ts-ignore
10541
10779
  183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,
10780
+ // @ts-ignore
10542
10781
  184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,
10543
10782
  1000054e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
10544
10783
  1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
10784
+ // @ts-ignore
10545
10785
  1000066e3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,
10786
+ // @ts-ignore
10546
10787
  1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,
10788
+ // @ts-ignore
10547
10789
  1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,
10790
+ // @ts-ignore
10548
10791
  1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,
10792
+ // @ts-ignore
10549
10793
  1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,
10794
+ // @ts-ignore
10550
10795
  1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,
10796
+ // @ts-ignore
10551
10797
  1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,
10798
+ // @ts-ignore
10552
10799
  1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,
10800
+ // @ts-ignore
10553
10801
  1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,
10802
+ // @ts-ignore
10554
10803
  1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,
10804
+ // @ts-ignore
10555
10805
  1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,
10806
+ // @ts-ignore
10556
10807
  1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,
10808
+ // @ts-ignore
10557
10809
  1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,
10810
+ // @ts-ignore
10558
10811
  1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR
10559
10812
  };
10560
10813
  function mapVkFormatToWebGL(vkFormat) {
@@ -10562,10 +10815,35 @@ var __exports__ = (() => {
10562
10815
  }
10563
10816
 
10564
10817
  // ../textures/src/lib/parsers/parse-ktx.ts
10565
- var KTX2_ID = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
10818
+ var KTX2_ID = [
10819
+ // '´', 'K', 'T', 'X', '2', '0', 'ª', '\r', '\n', '\x1A', '\n'
10820
+ 171,
10821
+ 75,
10822
+ 84,
10823
+ 88,
10824
+ 32,
10825
+ 50,
10826
+ 48,
10827
+ 187,
10828
+ 13,
10829
+ 10,
10830
+ 26,
10831
+ 10
10832
+ ];
10566
10833
  function isKTX(data) {
10567
10834
  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];
10835
+ const notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || // '´'
10836
+ id[1] !== KTX2_ID[1] || // 'K'
10837
+ id[2] !== KTX2_ID[2] || // 'T'
10838
+ id[3] !== KTX2_ID[3] || // 'X'
10839
+ id[4] !== KTX2_ID[4] || // ' '
10840
+ id[5] !== KTX2_ID[5] || // '2'
10841
+ id[6] !== KTX2_ID[6] || // '0'
10842
+ id[7] !== KTX2_ID[7] || // 'ª'
10843
+ id[8] !== KTX2_ID[8] || // '\r'
10844
+ id[9] !== KTX2_ID[9] || // '\n'
10845
+ id[10] !== KTX2_ID[10] || // '\x1A'
10846
+ id[11] !== KTX2_ID[11];
10569
10847
  return !notKTX;
10570
10848
  }
10571
10849
  function parseKTX(arrayBuffer) {
@@ -10591,10 +10869,7 @@ var __exports__ = (() => {
10591
10869
  compressed: true,
10592
10870
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
10593
10871
  },
10594
- etc2: {
10595
- basisFormat: 1,
10596
- compressed: true
10597
- },
10872
+ etc2: { basisFormat: 1, compressed: true },
10598
10873
  bc1: {
10599
10874
  basisFormat: 2,
10600
10875
  compressed: true,
@@ -10605,22 +10880,10 @@ var __exports__ = (() => {
10605
10880
  compressed: true,
10606
10881
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
10607
10882
  },
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
- },
10883
+ bc4: { basisFormat: 4, compressed: true },
10884
+ bc5: { basisFormat: 5, compressed: true },
10885
+ "bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
10886
+ "bc7-m5": { basisFormat: 7, compressed: true },
10624
10887
  "pvrtc1-4-rgb": {
10625
10888
  basisFormat: 8,
10626
10889
  compressed: true,
@@ -10636,30 +10899,12 @@ var __exports__ = (() => {
10636
10899
  compressed: true,
10637
10900
  format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
10638
10901
  },
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
- }
10902
+ "atc-rgb": { basisFormat: 11, compressed: true },
10903
+ "atc-rgba-interpolated-alpha": { basisFormat: 12, compressed: true },
10904
+ rgba32: { basisFormat: 13, compressed: false },
10905
+ rgb565: { basisFormat: 14, compressed: false },
10906
+ bgr565: { basisFormat: 15, compressed: false },
10907
+ rgba4444: { basisFormat: 16, compressed: false }
10663
10908
  };
10664
10909
  async function parseBasis(data, options) {
10665
10910
  if (options.basis.containerFormat === "auto") {
@@ -10667,9 +10912,7 @@ var __exports__ = (() => {
10667
10912
  const fileConstructors = await loadBasisEncoderModule(options);
10668
10913
  return parseKTX2File(fileConstructors.KTX2File, data, options);
10669
10914
  }
10670
- const {
10671
- BasisFile
10672
- } = await loadBasisTranscoderModule(options);
10915
+ const { BasisFile } = await loadBasisTranscoderModule(options);
10673
10916
  return parseBasisFile(BasisFile, data, options);
10674
10917
  }
10675
10918
  switch (options.basis.module) {
@@ -10684,9 +10927,7 @@ var __exports__ = (() => {
10684
10927
  }
10685
10928
  case "transcoder":
10686
10929
  default:
10687
- const {
10688
- BasisFile
10689
- } = await loadBasisTranscoderModule(options);
10930
+ const { BasisFile } = await loadBasisTranscoderModule(options);
10690
10931
  return parseBasisFile(BasisFile, data, options);
10691
10932
  }
10692
10933
  }
@@ -10715,23 +10956,24 @@ var __exports__ = (() => {
10715
10956
  function transcodeImage(basisFile, imageIndex, levelIndex, options) {
10716
10957
  const width = basisFile.getImageWidth(imageIndex, levelIndex);
10717
10958
  const height = basisFile.getImageHeight(imageIndex, levelIndex);
10718
- const hasAlpha = basisFile.getHasAlpha();
10719
- const {
10720
- compressed,
10721
- format,
10722
- basisFormat
10723
- } = getBasisOptions(options, hasAlpha);
10959
+ const hasAlpha = basisFile.getHasAlpha(
10960
+ /* imageIndex, levelIndex */
10961
+ );
10962
+ const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
10724
10963
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
10725
10964
  const decodedData = new Uint8Array(decodedSize);
10726
10965
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
10727
10966
  throw new Error("failed to start Basis transcoding");
10728
10967
  }
10729
10968
  return {
10969
+ // standard loaders.gl image category payload
10730
10970
  width,
10731
10971
  height,
10732
10972
  data: decodedData,
10733
10973
  compressed,
10734
10974
  format,
10975
+ // Additional fields
10976
+ // Add levelSize field.
10735
10977
  hasAlpha
10736
10978
  };
10737
10979
  }
@@ -10754,26 +10996,35 @@ var __exports__ = (() => {
10754
10996
  }
10755
10997
  }
10756
10998
  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,
10999
+ const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
11000
+ const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
11001
+ const decodedSize = ktx2File.getImageTranscodedSizeInBytes(
11002
+ levelIndex,
11003
+ 0,
11004
+ 0,
10765
11005
  basisFormat
10766
- } = getBasisOptions(options, alphaFlag);
10767
- const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
11006
+ );
10768
11007
  const decodedData = new Uint8Array(decodedSize);
10769
- if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
11008
+ if (!ktx2File.transcodeImage(
11009
+ decodedData,
11010
+ levelIndex,
11011
+ 0,
11012
+ 0,
11013
+ basisFormat,
11014
+ 0,
11015
+ -1,
11016
+ -1
11017
+ /* channel1 */
11018
+ )) {
10770
11019
  throw new Error("Failed to transcode KTX2 image");
10771
11020
  }
10772
11021
  return {
11022
+ // standard loaders.gl image category payload
10773
11023
  width,
10774
11024
  height,
10775
11025
  data: decodedData,
10776
11026
  compressed,
11027
+ // Additional fields
10777
11028
  levelSize: decodedSize,
10778
11029
  hasAlpha: alphaFlag,
10779
11030
  format
@@ -10826,9 +11077,12 @@ var __exports__ = (() => {
10826
11077
  options: {
10827
11078
  basis: {
10828
11079
  format: "auto",
11080
+ // gl context doesn't exist on a worker thread
10829
11081
  libraryPath: "libs/",
10830
11082
  containerFormat: "auto",
11083
+ // 'basis' || 'ktx2' || 'auto'
10831
11084
  module: "transcoder"
11085
+ // 'transcoder' || 'encoder'
10832
11086
  }
10833
11087
  }
10834
11088
  };
@@ -10879,7 +11133,10 @@ var __exports__ = (() => {
10879
11133
  function parseDDS(data) {
10880
11134
  const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
10881
11135
  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");
11136
+ assert(
11137
+ Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC),
11138
+ "DDS: Unsupported format, must contain a FourCC code"
11139
+ );
10883
11140
  const fourCC = int32ToFourCC(pixelFormatNumber);
10884
11141
  const internalFormat = DDS_PIXEL_FORMATS[fourCC];
10885
11142
  const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
@@ -10907,7 +11164,12 @@ var __exports__ = (() => {
10907
11164
  return (width + 3 >> 2) * (height + 3 >> 2) * 16;
10908
11165
  }
10909
11166
  function int32ToFourCC(value) {
10910
- return String.fromCharCode(value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255);
11167
+ return String.fromCharCode(
11168
+ value & 255,
11169
+ value >> 8 & 255,
11170
+ value >> 16 & 255,
11171
+ value >> 24 & 255
11172
+ );
10911
11173
  }
10912
11174
 
10913
11175
  // ../textures/src/lib/parsers/parse-pvr.ts
@@ -10938,20 +11200,62 @@ var __exports__ = (() => {
10938
11200
  24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
10939
11201
  25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
10940
11202
  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]
11203
+ 27: [
11204
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
11205
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
11206
+ ],
11207
+ 28: [
11208
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
11209
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
11210
+ ],
11211
+ 29: [
11212
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
11213
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
11214
+ ],
11215
+ 30: [
11216
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
11217
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
11218
+ ],
11219
+ 31: [
11220
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
11221
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
11222
+ ],
11223
+ 32: [
11224
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
11225
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
11226
+ ],
11227
+ 33: [
11228
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
11229
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
11230
+ ],
11231
+ 34: [
11232
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
11233
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
11234
+ ],
11235
+ 35: [
11236
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
11237
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
11238
+ ],
11239
+ 36: [
11240
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
11241
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
11242
+ ],
11243
+ 37: [
11244
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
11245
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
11246
+ ],
11247
+ 38: [
11248
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
11249
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
11250
+ ],
11251
+ 39: [
11252
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
11253
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
11254
+ ],
11255
+ 40: [
11256
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
11257
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
11258
+ ]
10955
11259
  };
10956
11260
  var PVR_SIZE_FUNCTIONS = {
10957
11261
  0: pvrtc2bppSize,
@@ -11084,8 +11388,21 @@ var __exports__ = (() => {
11084
11388
  module: "textures",
11085
11389
  version: VERSION4,
11086
11390
  worker: true,
11087
- extensions: ["ktx", "ktx2", "dds", "pvr"],
11088
- mimeTypes: ["image/ktx2", "image/ktx", "image/vnd-ms.dds", "image/x-dds", "application/octet-stream"],
11391
+ extensions: [
11392
+ "ktx",
11393
+ "ktx2",
11394
+ "dds",
11395
+ // WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc
11396
+ "pvr"
11397
+ // WEBGL_compressed_texture_pvrtc
11398
+ ],
11399
+ mimeTypes: [
11400
+ "image/ktx2",
11401
+ "image/ktx",
11402
+ "image/vnd-ms.dds",
11403
+ "image/x-dds",
11404
+ "application/octet-stream"
11405
+ ],
11089
11406
  binary: true,
11090
11407
  options: {
11091
11408
  "compressed-texture": {
@@ -11103,6 +11420,7 @@ var __exports__ = (() => {
11103
11420
  alpha: "BC3",
11104
11421
  noAlpha: "BC1"
11105
11422
  },
11423
+ // @ts-expect-error TODO not allowed to modify inputs
11106
11424
  ...options.basis,
11107
11425
  containerFormat: "ktx2",
11108
11426
  module: "encoder"
@@ -11114,13 +11432,6 @@ var __exports__ = (() => {
11114
11432
  }
11115
11433
  };
11116
11434
 
11117
- // src/types.ts
11118
- var HeaderAttributeProperty = function(HeaderAttributeProperty2) {
11119
- HeaderAttributeProperty2["vertexCount"] = "vertexCount";
11120
- HeaderAttributeProperty2["featureCount"] = "featureCount";
11121
- return HeaderAttributeProperty2;
11122
- }({});
11123
-
11124
11435
  // src/lib/utils/url-utils.ts
11125
11436
  function getUrlWithoutParams(url) {
11126
11437
  let urlWithoutParams;
@@ -11135,9 +11446,7 @@ var __exports__ = (() => {
11135
11446
  return token ? `${url}?token=${token}` : url;
11136
11447
  }
11137
11448
  function generateTileAttributeUrls(url, tile) {
11138
- const {
11139
- attributeData = []
11140
- } = tile;
11449
+ const { attributeData = [] } = tile;
11141
11450
  const attributeUrls = [];
11142
11451
  for (let index = 0; index < attributeData.length; index++) {
11143
11452
  const attributeUrl = attributeData[index].href.replace("./", "");
@@ -11147,9 +11456,7 @@ var __exports__ = (() => {
11147
11456
  }
11148
11457
  function generateTilesetAttributeUrls(tileset, url, resource) {
11149
11458
  const attributeUrls = [];
11150
- const {
11151
- attributeStorageInfo = []
11152
- } = tileset;
11459
+ const { attributeStorageInfo = [] } = tileset;
11153
11460
  for (let index = 0; index < attributeStorageInfo.length; index++) {
11154
11461
  const fileName = attributeStorageInfo[index].key;
11155
11462
  attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
@@ -11185,19 +11492,18 @@ var __exports__ = (() => {
11185
11492
  texture: null
11186
11493
  };
11187
11494
  if (tileOptions.textureUrl) {
11188
- const url = getUrlWithToken(getInternalPathFromUrl(tileOptions.textureUrl), options?.i3s?.token);
11495
+ const url = getUrlWithToken(
11496
+ getInternalPathFromUrl(tileOptions.textureUrl),
11497
+ // @ts-expect-error options is not properly typed
11498
+ options?.i3s?.token
11499
+ );
11189
11500
  const loader = getLoaderForTextureFormat(tileOptions.textureFormat);
11190
11501
  const fetchFunc = context?.fetch || fetch;
11191
11502
  const response = await fetchFunc(url);
11192
11503
  const arrayBuffer2 = await response.arrayBuffer();
11193
11504
  if (options?.i3s.decodeTextures) {
11194
11505
  if (loader === ImageLoader) {
11195
- const options2 = {
11196
- ...tileOptions.textureLoaderOptions,
11197
- image: {
11198
- type: "data"
11199
- }
11200
- };
11506
+ const options2 = { ...tileOptions.textureLoaderOptions, image: { type: "data" } };
11201
11507
  try {
11202
11508
  const texture = await parseFromContext(arrayBuffer2, [], options2, context);
11203
11509
  content.texture = texture;
@@ -11287,30 +11593,40 @@ var __exports__ = (() => {
11287
11593
  byteOffset = headers.byteOffset;
11288
11594
  vertexCount = headers.vertexCount;
11289
11595
  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);
11596
+ const { attributes: normalizedVertexAttributes, byteOffset: offset } = normalizeAttributes(
11597
+ arrayBuffer,
11598
+ byteOffset,
11599
+ vertexAttributes,
11600
+ vertexCount,
11601
+ attributesOrder
11602
+ );
11603
+ const { attributes: normalizedFeatureAttributes } = normalizeAttributes(
11604
+ arrayBuffer,
11605
+ offset,
11606
+ featureAttributes,
11607
+ featureCount,
11608
+ featureAttributeOrder
11609
+ );
11297
11610
  flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes);
11298
11611
  attributes = concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes);
11299
11612
  }
11300
- if (!options?.i3s?.coordinateSystem || options.i3s.coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {
11613
+ if (!options?.i3s?.coordinateSystem || // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
11614
+ options.i3s.coordinateSystem === 2 /* METER_OFFSETS */) {
11301
11615
  const enuMatrix = parsePositions(attributes.position, tileOptions);
11302
11616
  content.modelMatrix = enuMatrix.invert();
11303
- content.coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS;
11617
+ content.coordinateSystem = 2 /* METER_OFFSETS */;
11304
11618
  } else {
11305
11619
  content.modelMatrix = getModelMatrix(attributes.position);
11306
- content.coordinateSystem = COORDINATE_SYSTEM.LNGLAT_OFFSETS;
11620
+ content.coordinateSystem = 3 /* LNGLAT_OFFSETS */;
11307
11621
  }
11308
11622
  content.attributes = {
11309
11623
  positions: attributes.position,
11310
11624
  normals: attributes.normal,
11311
11625
  colors: normalizeAttribute(attributes.color),
11626
+ // Normalize from UInt8
11312
11627
  texCoords: attributes.uv0,
11313
11628
  uvRegions: normalizeAttribute(attributes.uvRegion || attributes.region)
11629
+ // Normalize from UInt16
11314
11630
  };
11315
11631
  content.indices = indices || null;
11316
11632
  if (attributes.id && attributes.id.value) {
@@ -11341,10 +11657,7 @@ var __exports__ = (() => {
11341
11657
  }
11342
11658
  }
11343
11659
  function concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes) {
11344
- return {
11345
- ...normalizedVertexAttributes,
11346
- ...normalizedFeatureAttributes
11347
- };
11660
+ return { ...normalizedVertexAttributes, ...normalizedFeatureAttributes };
11348
11661
  }
11349
11662
  function normalizeAttribute(attribute) {
11350
11663
  if (!attribute) {
@@ -11357,17 +11670,14 @@ var __exports__ = (() => {
11357
11670
  let byteOffset = 0;
11358
11671
  let vertexCount = 0;
11359
11672
  let featureCount = 0;
11360
- for (const {
11361
- property,
11362
- type
11363
- } of options.store.defaultGeometrySchema.header) {
11673
+ for (const { property, type } of options.store.defaultGeometrySchema.header) {
11364
11674
  const TypedArrayTypeHeader = getConstructorForDataFormat(type);
11365
11675
  switch (property) {
11366
- case HeaderAttributeProperty.vertexCount:
11676
+ case "vertexCount" /* vertexCount */:
11367
11677
  vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
11368
11678
  byteOffset += sizeOf(type);
11369
11679
  break;
11370
- case HeaderAttributeProperty.featureCount:
11680
+ case "featureCount" /* featureCount */:
11371
11681
  featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
11372
11682
  byteOffset += sizeOf(type);
11373
11683
  break;
@@ -11385,10 +11695,7 @@ var __exports__ = (() => {
11385
11695
  const attributes = {};
11386
11696
  for (const attribute of attributesOrder) {
11387
11697
  if (vertexAttributes[attribute]) {
11388
- const {
11389
- valueType,
11390
- valuesPerElement
11391
- } = vertexAttributes[attribute];
11698
+ const { valueType, valuesPerElement } = vertexAttributes[attribute];
11392
11699
  if (byteOffset + attributeCount * valuesPerElement * sizeOf(valueType) <= arrayBuffer.byteLength) {
11393
11700
  const buffer = arrayBuffer.slice(byteOffset);
11394
11701
  let value;
@@ -11418,10 +11725,7 @@ var __exports__ = (() => {
11418
11725
  }
11419
11726
  }
11420
11727
  }
11421
- return {
11422
- attributes,
11423
- byteOffset
11424
- };
11728
+ return { attributes, byteOffset };
11425
11729
  }
11426
11730
  function parseUint64Values(buffer, elementsCount, attributeSize) {
11427
11731
  const values = [];
@@ -11479,20 +11783,14 @@ var __exports__ = (() => {
11479
11783
  if (materialDefinition) {
11480
11784
  pbrMaterial = {
11481
11785
  ...materialDefinition,
11482
- pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? {
11483
- ...materialDefinition.pbrMetallicRoughness
11484
- } : {
11485
- baseColorFactor: [255, 255, 255, 255]
11486
- }
11786
+ pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? { ...materialDefinition.pbrMetallicRoughness } : { baseColorFactor: [255, 255, 255, 255] }
11487
11787
  };
11488
11788
  } else {
11489
11789
  pbrMaterial = {
11490
11790
  pbrMetallicRoughness: {}
11491
11791
  };
11492
11792
  if (texture) {
11493
- pbrMaterial.pbrMetallicRoughness.baseColorTexture = {
11494
- texCoord: 0
11495
- };
11793
+ pbrMaterial.pbrMetallicRoughness.baseColorTexture = { texCoord: 0 };
11496
11794
  } else {
11497
11795
  pbrMaterial.pbrMetallicRoughness.baseColorFactor = [255, 255, 255, 255];
11498
11796
  }
@@ -11505,7 +11803,9 @@ var __exports__ = (() => {
11505
11803
  pbrMaterial.emissiveFactor = convertColorFormat(pbrMaterial.emissiveFactor);
11506
11804
  }
11507
11805
  if (pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorFactor) {
11508
- pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(pbrMaterial.pbrMetallicRoughness.baseColorFactor);
11806
+ pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(
11807
+ pbrMaterial.pbrMetallicRoughness.baseColorFactor
11808
+ );
11509
11809
  }
11510
11810
  if (texture) {
11511
11811
  setMaterialTexture(pbrMaterial, texture);
@@ -11520,43 +11820,27 @@ var __exports__ = (() => {
11520
11820
  return normalizedColor;
11521
11821
  }
11522
11822
  function setMaterialTexture(material, image) {
11523
- const texture = {
11524
- source: {
11525
- image
11526
- }
11527
- };
11823
+ const texture = { source: { image } };
11528
11824
  if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.baseColorTexture) {
11529
11825
  material.pbrMetallicRoughness.baseColorTexture = {
11530
11826
  ...material.pbrMetallicRoughness.baseColorTexture,
11531
11827
  texture
11532
11828
  };
11533
11829
  } else if (material.emissiveTexture) {
11534
- material.emissiveTexture = {
11535
- ...material.emissiveTexture,
11536
- texture
11537
- };
11830
+ material.emissiveTexture = { ...material.emissiveTexture, texture };
11538
11831
  } else if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.metallicRoughnessTexture) {
11539
11832
  material.pbrMetallicRoughness.metallicRoughnessTexture = {
11540
11833
  ...material.pbrMetallicRoughness.metallicRoughnessTexture,
11541
11834
  texture
11542
11835
  };
11543
11836
  } else if (material.normalTexture) {
11544
- material.normalTexture = {
11545
- ...material.normalTexture,
11546
- texture
11547
- };
11837
+ material.normalTexture = { ...material.normalTexture, texture };
11548
11838
  } else if (material.occlusionTexture) {
11549
- material.occlusionTexture = {
11550
- ...material.occlusionTexture,
11551
- texture
11552
- };
11839
+ material.occlusionTexture = { ...material.occlusionTexture, texture };
11553
11840
  }
11554
11841
  }
11555
11842
  function flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes) {
11556
- const {
11557
- id,
11558
- faceRange
11559
- } = normalizedFeatureAttributes;
11843
+ const { id, faceRange } = normalizedFeatureAttributes;
11560
11844
  if (!id || !faceRange) {
11561
11845
  return;
11562
11846
  }
@@ -11591,7 +11875,7 @@ var __exports__ = (() => {
11591
11875
  }
11592
11876
 
11593
11877
  // src/i3s-content-loader.ts
11594
- var VERSION5 = true ? "4.2.0-alpha.3" : "latest";
11878
+ var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
11595
11879
  var I3SContentLoader = {
11596
11880
  name: "I3S Content (Indexed Scene Layers)",
11597
11881
  id: "i3s-content",
@@ -11606,18 +11890,19 @@ var __exports__ = (() => {
11606
11890
  }
11607
11891
  };
11608
11892
  async function parse3(data, options, context) {
11609
- const {
11610
- tile,
11611
- _tileOptions,
11612
- tileset,
11613
- _tilesetOptions
11614
- } = options?.i3s || {};
11893
+ const { tile, _tileOptions, tileset, _tilesetOptions } = options?.i3s || {};
11615
11894
  const tileOptions = _tileOptions || tile;
11616
11895
  const tilesetOptions = _tilesetOptions || tileset;
11617
11896
  if (!tileOptions || !tilesetOptions) {
11618
11897
  return null;
11619
11898
  }
11620
- return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
11899
+ return await parseI3STileContent(
11900
+ data,
11901
+ tileOptions,
11902
+ tilesetOptions,
11903
+ options,
11904
+ context
11905
+ );
11621
11906
  }
11622
11907
 
11623
11908
  // ../../node_modules/@math.gl/culling/dist/constants.js
@@ -12073,35 +12358,11 @@ var __exports__ = (() => {
12073
12358
  // src/lib/parsers/parse-i3s.ts
12074
12359
  var import_core17 = __toESM(require_core(), 1);
12075
12360
 
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
12361
  // src/lib/helpers/i3s-nodepages-tiles.ts
12101
12362
  var import_core16 = __toESM(require_core(), 1);
12102
12363
 
12103
12364
  // src/i3s-node-page-loader.ts
12104
- var VERSION6 = true ? "4.2.0-alpha.3" : "latest";
12365
+ var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12105
12366
  var I3SNodePageLoader = {
12106
12367
  name: "I3S Node Page",
12107
12368
  id: "i3s-node-page",
@@ -12120,14 +12381,19 @@ var __exports__ = (() => {
12120
12381
 
12121
12382
  // src/lib/helpers/i3s-nodepages-tiles.ts
12122
12383
  var I3SNodePagesTiles = class {
12123
- nodePages = [];
12124
- pendingNodePages = [];
12125
- textureDefinitionsSelectedFormats = [];
12126
- textureLoaderOptions = {};
12384
+ /**
12385
+ * @constructs
12386
+ * Create a I3SNodePagesTiles instance.
12387
+ * @param tileset - i3s tileset header ('layers/0')
12388
+ * @param url - tileset url
12389
+ * @param options - i3s loader options
12390
+ */
12127
12391
  constructor(tileset, url = "", options) {
12128
- this.tileset = {
12129
- ...tileset
12130
- };
12392
+ this.nodePages = [];
12393
+ this.pendingNodePages = [];
12394
+ this.textureDefinitionsSelectedFormats = [];
12395
+ this.textureLoaderOptions = {};
12396
+ this.tileset = { ...tileset };
12131
12397
  this.url = url;
12132
12398
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
12133
12399
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
@@ -12135,10 +12401,18 @@ var __exports__ = (() => {
12135
12401
  this.nodesInNodePages = 0;
12136
12402
  this.initSelectedFormatsForTextureDefinitions(tileset);
12137
12403
  }
12404
+ /**
12405
+ * Loads some nodePage and return a particular node from it
12406
+ * @param id - id of node through all node pages
12407
+ */
12138
12408
  async getNodeById(id) {
12139
12409
  const pageIndex = Math.floor(id / this.nodesPerPage);
12140
12410
  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);
12411
+ const nodePageUrl = getUrlWithToken(
12412
+ this.url.indexOf(".slpk") !== -1 ? `nodepages/${pageIndex}` : `${this.url}/nodepages/${pageIndex}`,
12413
+ // @ts-expect-error this.options is not properly typed
12414
+ this.options.i3s?.token
12415
+ );
12142
12416
  this.pendingNodePages[pageIndex] = {
12143
12417
  status: "Pending",
12144
12418
  promise: (0, import_core16.load)(nodePageUrl, I3SNodePageLoader, this.options)
@@ -12153,6 +12427,11 @@ var __exports__ = (() => {
12153
12427
  const nodeIndex = id % this.nodesPerPage;
12154
12428
  return this.nodePages[pageIndex].nodes[nodeIndex];
12155
12429
  }
12430
+ /**
12431
+ * Forms tile header using node and tileset data
12432
+ * @param id - id of node through all node pages
12433
+ */
12434
+ // eslint-disable-next-line complexity, max-statements
12156
12435
  async formTileFromNodePages(id) {
12157
12436
  const node2 = await this.getNodeById(id);
12158
12437
  const children = [];
@@ -12174,25 +12453,21 @@ var __exports__ = (() => {
12174
12453
  let attributeUrls = [];
12175
12454
  let isDracoGeometry = false;
12176
12455
  if (node2 && node2.mesh) {
12177
- const {
12178
- url,
12179
- isDracoGeometry: isDracoGeometryResult
12180
- } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || {
12181
- isDracoGeometry: false
12182
- };
12456
+ const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { isDracoGeometry: false };
12183
12457
  contentUrl = url;
12184
12458
  isDracoGeometry = isDracoGeometryResult;
12185
- const {
12186
- textureData,
12187
- materialDefinition: nodeMaterialDefinition
12188
- } = this.getInformationFromMaterial(node2.mesh.material);
12459
+ const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node2.mesh.material);
12189
12460
  materialDefinition = nodeMaterialDefinition;
12190
12461
  textureFormat = textureData.format || textureFormat;
12191
12462
  if (textureData.name) {
12192
12463
  textureUrl = `${this.url}/nodes/${node2.mesh.material.resource}/textures/${textureData.name}`;
12193
12464
  }
12194
12465
  if (this.tileset.attributeStorageInfo) {
12195
- attributeUrls = generateTilesetAttributeUrls(this.tileset, this.url, node2.mesh.attribute.resource);
12466
+ attributeUrls = generateTilesetAttributeUrls(
12467
+ this.tileset,
12468
+ this.url,
12469
+ node2.mesh.attribute.resource
12470
+ );
12196
12471
  }
12197
12472
  }
12198
12473
  const lodSelection = this.getLodSelection(node2);
@@ -12210,18 +12485,31 @@ var __exports__ = (() => {
12210
12485
  isDracoGeometry
12211
12486
  });
12212
12487
  }
12488
+ /**
12489
+ * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset
12490
+ * @param - data about the node's mesh from the nodepage
12491
+ * @returns -
12492
+ * {string} url - url to the geometry resource
12493
+ * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry
12494
+ */
12213
12495
  getContentUrl(meshGeometryData) {
12214
12496
  let result = null;
12215
12497
  const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
12216
12498
  let geometryIndex = -1;
12217
12499
  if (this.options.i3s && this.options.i3s.useDracoGeometry) {
12218
- geometryIndex = geometryDefinition.geometryBuffers.findIndex((buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === "draco");
12500
+ geometryIndex = geometryDefinition.geometryBuffers.findIndex(
12501
+ (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === "draco"
12502
+ );
12219
12503
  }
12220
12504
  if (geometryIndex === -1) {
12221
- geometryIndex = geometryDefinition.geometryBuffers.findIndex((buffer) => !buffer.compressedAttributes);
12505
+ geometryIndex = geometryDefinition.geometryBuffers.findIndex(
12506
+ (buffer) => !buffer.compressedAttributes
12507
+ );
12222
12508
  }
12223
12509
  if (geometryIndex !== -1) {
12224
- const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
12510
+ const isDracoGeometry = Boolean(
12511
+ geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes
12512
+ );
12225
12513
  result = {
12226
12514
  url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
12227
12515
  isDracoGeometry
@@ -12229,26 +12517,37 @@ var __exports__ = (() => {
12229
12517
  }
12230
12518
  return result;
12231
12519
  }
12520
+ /**
12521
+ * Forms 1.6 compatible LOD selection object from a nodepage's node data
12522
+ * @param node - a node from nodepage
12523
+ * @returns- Array of LodSelection
12524
+ */
12232
12525
  getLodSelection(node2) {
12233
12526
  const lodSelection = [];
12234
12527
  if (this.lodSelectionMetricType === "maxScreenThresholdSQ") {
12235
12528
  lodSelection.push({
12236
12529
  metricType: "maxScreenThreshold",
12530
+ // @ts-ignore
12237
12531
  maxError: Math.sqrt(node2.lodThreshold / (Math.PI * 0.25))
12238
12532
  });
12239
12533
  }
12240
12534
  lodSelection.push({
12241
12535
  metricType: this.lodSelectionMetricType,
12536
+ // @ts-ignore
12242
12537
  maxError: node2.lodThreshold
12243
12538
  });
12244
12539
  return lodSelection;
12245
12540
  }
12541
+ /**
12542
+ * Returns information about texture and material from `materialDefinitions`
12543
+ * @param material - material data from nodepage
12544
+ * @returns - Couple {textureData, materialDefinition}
12545
+ * {string} textureData.name - path name of the texture
12546
+ * {string} textureData.format - format of the texture
12547
+ * materialDefinition - PBR-like material definition from `materialDefinitions`
12548
+ */
12246
12549
  getInformationFromMaterial(material) {
12247
- const informationFromMaterial = {
12248
- textureData: {
12249
- name: null
12250
- }
12251
- };
12550
+ const informationFromMaterial = { textureData: { name: null } };
12252
12551
  if (material) {
12253
12552
  const materialDefinition = this.tileset.materialDefinitions?.[material.definition];
12254
12553
  if (materialDefinition) {
@@ -12261,6 +12560,11 @@ var __exports__ = (() => {
12261
12560
  }
12262
12561
  return informationFromMaterial;
12263
12562
  }
12563
+ /**
12564
+ * Sets preferable and supported format for each textureDefinition of the tileset
12565
+ * @param tileset - I3S layer data
12566
+ * @returns
12567
+ */
12264
12568
  initSelectedFormatsForTextureDefinitions(tileset) {
12265
12569
  this.textureDefinitionsSelectedFormats = [];
12266
12570
  const possibleI3sFormats = this.getSupportedTextureFormats();
@@ -12285,6 +12589,10 @@ var __exports__ = (() => {
12285
12589
  this.textureDefinitionsSelectedFormats.push(selectedFormat);
12286
12590
  }
12287
12591
  }
12592
+ /**
12593
+ * Returns the array of supported texture format
12594
+ * @returns list of format strings
12595
+ */
12288
12596
  getSupportedTextureFormats() {
12289
12597
  const formats2 = [];
12290
12598
  if (!this.options.i3s || this.options.i3s.useCompressedTextures) {
@@ -12326,6 +12634,7 @@ var __exports__ = (() => {
12326
12634
  contentUrl,
12327
12635
  textureUrl,
12328
12636
  textureFormat: "jpg",
12637
+ // `jpg` format will cause `ImageLoader` usage that will be able to handle `png` as well
12329
12638
  attributeUrls,
12330
12639
  isDracoGeometry: false
12331
12640
  });
@@ -12335,27 +12644,35 @@ var __exports__ = (() => {
12335
12644
  let mbs = [0, 0, 0, 1];
12336
12645
  if (tile.mbs) {
12337
12646
  mbs = tile.mbs;
12338
- boundingVolume.sphere = [...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), tile.mbs[3]];
12647
+ boundingVolume.sphere = [
12648
+ ...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
12649
+ // cartesian center of sphere
12650
+ tile.mbs[3]
12651
+ // radius of sphere
12652
+ ];
12339
12653
  } 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);
12654
+ boundingVolume.box = [
12655
+ ...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
12656
+ // cartesian center of box
12657
+ ...tile.obb.halfSize,
12658
+ // halfSize
12659
+ ...tile.obb.quaternion
12660
+ // quaternion
12661
+ ];
12662
+ const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(
12663
+ boundingVolume.box.slice(0, 3),
12664
+ tile.obb.halfSize,
12665
+ tile.obb.quaternion
12666
+ );
12342
12667
  const boundingSphere = obb.getBoundingSphere();
12343
12668
  boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
12344
12669
  mbs = [...tile.obb.center, boundingSphere.radius];
12345
12670
  }
12346
12671
  const lodMetricType = tile.lodSelection?.[0].metricType;
12347
12672
  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
- };
12673
+ const type = "mesh" /* MESH */;
12674
+ const refine = 2 /* REPLACE */;
12675
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
12359
12676
  }
12360
12677
  async function normalizeTilesetData(tileset, options, context) {
12361
12678
  const url = getUrlWithoutParams(context.url || "");
@@ -12370,6 +12687,7 @@ var __exports__ = (() => {
12370
12687
  root = await (0, import_core17.load)(rootNodeUrl, I3SLoader, {
12371
12688
  ...options,
12372
12689
  i3s: {
12690
+ // @ts-expect-error options is not properly typed
12373
12691
  ...options.i3s,
12374
12692
  loadContent: false,
12375
12693
  isTileHeader: true,
@@ -12382,8 +12700,9 @@ var __exports__ = (() => {
12382
12700
  loader: I3SLoader,
12383
12701
  url,
12384
12702
  basePath: url,
12385
- type: TILESET_TYPE.I3S,
12703
+ type: "I3S" /* I3S */,
12386
12704
  nodePagesTile,
12705
+ // @ts-expect-error
12387
12706
  root,
12388
12707
  lodMetricType: root.lodMetricType,
12389
12708
  lodMetricValue: root.lodMetricValue
@@ -12391,7 +12710,7 @@ var __exports__ = (() => {
12391
12710
  }
12392
12711
 
12393
12712
  // src/i3s-loader.ts
12394
- var VERSION7 = true ? "4.2.0-alpha.3" : "latest";
12713
+ var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
12395
12714
  var TILESET_REGEX = /layers\/[0-9]+$/;
12396
12715
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
12397
12716
  var SLPK_HEX = "504b0304";
@@ -12416,7 +12735,7 @@ var __exports__ = (() => {
12416
12735
  useDracoGeometry: true,
12417
12736
  useCompressedTextures: true,
12418
12737
  decodeTextures: true,
12419
- coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS
12738
+ coordinateSystem: 2 /* METER_OFFSETS */
12420
12739
  }
12421
12740
  }
12422
12741
  };
@@ -12473,7 +12792,12 @@ var __exports__ = (() => {
12473
12792
 
12474
12793
  // ../zip/src/parse-zip/search-from-the-end.ts
12475
12794
  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];
12795
+ const searchWindow = [
12796
+ await file.getUint8(file.length - 1n),
12797
+ await file.getUint8(file.length - 2n),
12798
+ await file.getUint8(file.length - 3n),
12799
+ void 0
12800
+ ];
12477
12801
  let targetOffset = 0n;
12478
12802
  for (let i2 = file.length - 4n; i2 > -1; i2--) {
12479
12803
  searchWindow[3] = searchWindow[2];
@@ -12505,7 +12829,9 @@ var __exports__ = (() => {
12505
12829
  let zip64EoCDOffset = 0n;
12506
12830
  const magicBytes = await file.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n);
12507
12831
  if (compareArrayBuffers(magicBytes, zip64EoCDLocatorSignature)) {
12508
- zip64EoCDOffset = await file.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
12832
+ zip64EoCDOffset = await file.getBigUint64(
12833
+ zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET
12834
+ );
12509
12835
  const endOfCDMagicBytes = await file.slice(zip64EoCDOffset, zip64EoCDOffset + 4n);
12510
12836
  if (!compareArrayBuffers(endOfCDMagicBytes, zip64EoCDSignature.buffer)) {
12511
12837
  throw new Error("zip64 EoCD not found");
@@ -12525,97 +12851,144 @@ var __exports__ = (() => {
12525
12851
  }
12526
12852
  };
12527
12853
  };
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
- }];
12854
+ var EOCD_FIELDS = [
12855
+ // End of central directory signature = 0x06054b50
12856
+ {
12857
+ offset: 0,
12858
+ size: 4,
12859
+ default: new DataView(eoCDSignature.buffer).getUint32(0, true)
12860
+ },
12861
+ // Number of this disk (or 0xffff for ZIP64)
12862
+ {
12863
+ offset: 4,
12864
+ size: 2,
12865
+ default: 0
12866
+ },
12867
+ // Disk where central directory starts (or 0xffff for ZIP64)
12868
+ {
12869
+ offset: 6,
12870
+ size: 2,
12871
+ default: 0
12872
+ },
12873
+ // Number of central directory records on this disk (or 0xffff for ZIP64)
12874
+ {
12875
+ offset: 8,
12876
+ size: 2,
12877
+ name: "recordsNumber"
12878
+ },
12879
+ // Total number of central directory records (or 0xffff for ZIP64)
12880
+ {
12881
+ offset: 10,
12882
+ size: 2,
12883
+ name: "recordsNumber"
12884
+ },
12885
+ // Size of central directory (bytes) (or 0xffffffff for ZIP64)
12886
+ {
12887
+ offset: 12,
12888
+ size: 4,
12889
+ name: "cdSize"
12890
+ },
12891
+ // Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64)
12892
+ {
12893
+ offset: 16,
12894
+ size: 4,
12895
+ name: "cdOffset"
12896
+ },
12897
+ // Comment length (n)
12898
+ {
12899
+ offset: 20,
12900
+ size: 2,
12901
+ default: 0
12902
+ }
12903
+ ];
12904
+ var ZIP64_EOCD_LOCATOR_FIELDS = [
12905
+ // zip64 end of central dir locator signature
12906
+ {
12907
+ offset: 0,
12908
+ size: 4,
12909
+ default: new DataView(zip64EoCDLocatorSignature.buffer).getUint32(0, true)
12910
+ },
12911
+ // number of the disk with the start of the zip64 end of
12912
+ {
12913
+ offset: 4,
12914
+ size: 4,
12915
+ default: 0
12916
+ },
12917
+ // start of the zip64 end of central directory
12918
+ {
12919
+ offset: 8,
12920
+ size: 8,
12921
+ name: "eoCDStart"
12922
+ },
12923
+ // total number of disks
12924
+ {
12925
+ offset: 16,
12926
+ size: 4,
12927
+ default: 1
12928
+ }
12929
+ ];
12930
+ var ZIP64_EOCD_FIELDS = [
12931
+ // End of central directory signature = 0x06064b50
12932
+ {
12933
+ offset: 0,
12934
+ size: 4,
12935
+ default: new DataView(zip64EoCDSignature.buffer).getUint32(0, true)
12936
+ },
12937
+ // Size of the EOCD64 minus 12
12938
+ {
12939
+ offset: 4,
12940
+ size: 8,
12941
+ default: 44
12942
+ },
12943
+ // Version made by
12944
+ {
12945
+ offset: 12,
12946
+ size: 2,
12947
+ default: 45
12948
+ },
12949
+ // Version needed to extract (minimum)
12950
+ {
12951
+ offset: 14,
12952
+ size: 2,
12953
+ default: 45
12954
+ },
12955
+ // Number of this disk
12956
+ {
12957
+ offset: 16,
12958
+ size: 4,
12959
+ default: 0
12960
+ },
12961
+ // Disk where central directory starts
12962
+ {
12963
+ offset: 20,
12964
+ size: 4,
12965
+ default: 0
12966
+ },
12967
+ // Number of central directory records on this disk
12968
+ {
12969
+ offset: 24,
12970
+ size: 8,
12971
+ name: "recordsNumber"
12972
+ },
12973
+ // Total number of central directory records
12974
+ {
12975
+ offset: 32,
12976
+ size: 8,
12977
+ name: "recordsNumber"
12978
+ },
12979
+ // Size of central directory (bytes)
12980
+ {
12981
+ offset: 40,
12982
+ size: 8,
12983
+ name: "cdSize"
12984
+ },
12985
+ // Offset of start of central directory, relative to start of archive
12986
+ {
12987
+ offset: 48,
12988
+ size: 8,
12989
+ name: "cdOffset"
12990
+ }
12991
+ ];
12619
12992
 
12620
12993
  // ../zip/src/parse-zip/cd-file-header.ts
12621
12994
  var CD_COMPRESSED_SIZE_OFFSET = 20n;
@@ -12636,12 +13009,17 @@ var __exports__ = (() => {
12636
13009
  const extraFieldLength = await file.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
12637
13010
  const startDisk = BigInt(await file.getUint16(headerOffset + CD_START_DISK_OFFSET));
12638
13011
  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));
13012
+ const filenameBytes = await file.slice(
13013
+ headerOffset + CD_FILE_NAME_OFFSET,
13014
+ headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)
13015
+ );
12640
13016
  const fileName = new TextDecoder().decode(filenameBytes);
12641
13017
  const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
12642
13018
  const oldFormatOffset = await file.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
12643
13019
  const localHeaderOffset = BigInt(oldFormatOffset);
12644
- const extraField = new DataView(await file.slice(extraOffset, extraOffset + BigInt(extraFieldLength)));
13020
+ const extraField = new DataView(
13021
+ await file.slice(extraOffset, extraOffset + BigInt(extraFieldLength))
13022
+ );
12645
13023
  const zip64data = {
12646
13024
  uncompressedSize,
12647
13025
  compressedSize,
@@ -12659,13 +13037,14 @@ var __exports__ = (() => {
12659
13037
  };
12660
13038
  };
12661
13039
  async function* makeZipCDHeaderIterator(fileProvider) {
12662
- const {
12663
- cdStartOffset
12664
- } = await parseEoCDRecord(fileProvider);
13040
+ const { cdStartOffset } = await parseEoCDRecord(fileProvider);
12665
13041
  let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
12666
13042
  while (cdHeader) {
12667
13043
  yield cdHeader;
12668
- cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
13044
+ cdHeader = await parseZipCDFileHeader(
13045
+ cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength),
13046
+ fileProvider
13047
+ );
12669
13048
  }
12670
13049
  }
12671
13050
  var getUint16 = (...bytes) => {
@@ -12676,7 +13055,9 @@ var __exports__ = (() => {
12676
13055
  const zip64DataRes = {};
12677
13056
  if (zip64dataList.length > 0) {
12678
13057
  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);
13058
+ const offsetInExtraData = new Uint8Array(extraField.buffer).findIndex(
13059
+ (_val, i2, arr) => getUint16(arr[i2], arr[i2 + 1]) === 1 && getUint16(arr[i2 + 2], arr[i2 + 3]) === zip64chunkSize
13060
+ );
12680
13061
  let bytesRead = 0;
12681
13062
  for (const note of zip64dataList) {
12682
13063
  const offset = bytesRead;
@@ -12689,101 +13070,124 @@ var __exports__ = (() => {
12689
13070
  var findExpectedData = (zip64data) => {
12690
13071
  const zip64dataList = [];
12691
13072
  if (zip64data.uncompressedSize === BigInt(4294967295)) {
12692
- zip64dataList.push({
12693
- name: "uncompressedSize",
12694
- length: 8
12695
- });
13073
+ zip64dataList.push({ name: "uncompressedSize", length: 8 });
12696
13074
  }
12697
13075
  if (zip64data.compressedSize === BigInt(4294967295)) {
12698
- zip64dataList.push({
12699
- name: "compressedSize",
12700
- length: 8
12701
- });
13076
+ zip64dataList.push({ name: "compressedSize", length: 8 });
12702
13077
  }
12703
13078
  if (zip64data.localHeaderOffset === BigInt(4294967295)) {
12704
- zip64dataList.push({
12705
- name: "localHeaderOffset",
12706
- length: 8
12707
- });
13079
+ zip64dataList.push({ name: "localHeaderOffset", length: 8 });
12708
13080
  }
12709
13081
  if (zip64data.startDisk === BigInt(4294967295)) {
12710
- zip64dataList.push({
12711
- name: "startDisk",
12712
- length: 4
12713
- });
13082
+ zip64dataList.push({ name: "startDisk", length: 4 });
12714
13083
  }
12715
13084
  return zip64dataList;
12716
13085
  };
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
- }];
13086
+ var ZIP_HEADER_FIELDS = [
13087
+ // Central directory file header signature = 0x02014b50
13088
+ {
13089
+ offset: 0,
13090
+ size: 4,
13091
+ default: new DataView(signature.buffer).getUint32(0, true)
13092
+ },
13093
+ // Version made by
13094
+ {
13095
+ offset: 4,
13096
+ size: 2,
13097
+ default: 45
13098
+ },
13099
+ // Version needed to extract (minimum)
13100
+ {
13101
+ offset: 6,
13102
+ size: 2,
13103
+ default: 45
13104
+ },
13105
+ // General purpose bit flag
13106
+ {
13107
+ offset: 8,
13108
+ size: 2,
13109
+ default: 0
13110
+ },
13111
+ // Compression method
13112
+ {
13113
+ offset: 10,
13114
+ size: 2,
13115
+ default: 0
13116
+ },
13117
+ // File last modification time
13118
+ {
13119
+ offset: 12,
13120
+ size: 2,
13121
+ default: 0
13122
+ },
13123
+ // File last modification date
13124
+ {
13125
+ offset: 14,
13126
+ size: 2,
13127
+ default: 0
13128
+ },
13129
+ // CRC-32 of uncompressed data
13130
+ {
13131
+ offset: 16,
13132
+ size: 4,
13133
+ name: "crc32"
13134
+ },
13135
+ // Compressed size (or 0xffffffff for ZIP64)
13136
+ {
13137
+ offset: 20,
13138
+ size: 4,
13139
+ name: "length"
13140
+ },
13141
+ // Uncompressed size (or 0xffffffff for ZIP64)
13142
+ {
13143
+ offset: 24,
13144
+ size: 4,
13145
+ name: "length"
13146
+ },
13147
+ // File name length (n)
13148
+ {
13149
+ offset: 28,
13150
+ size: 2,
13151
+ name: "fnlength"
13152
+ },
13153
+ // Extra field length (m)
13154
+ {
13155
+ offset: 30,
13156
+ size: 2,
13157
+ default: 0,
13158
+ name: "extraLength"
13159
+ },
13160
+ // File comment length (k)
13161
+ {
13162
+ offset: 32,
13163
+ size: 2,
13164
+ default: 0
13165
+ },
13166
+ // Disk number where file starts (or 0xffff for ZIP64)
13167
+ {
13168
+ offset: 34,
13169
+ size: 2,
13170
+ default: 0
13171
+ },
13172
+ // Internal file attributes
13173
+ {
13174
+ offset: 36,
13175
+ size: 2,
13176
+ default: 0
13177
+ },
13178
+ // External file attributes
13179
+ {
13180
+ offset: 38,
13181
+ size: 4,
13182
+ default: 0
13183
+ },
13184
+ // Relative offset of local file header
13185
+ {
13186
+ offset: 42,
13187
+ size: 4,
13188
+ name: "offset"
13189
+ }
13190
+ ];
12787
13191
 
12788
13192
  // ../zip/src/parse-zip/local-file-header.ts
12789
13193
  var COMPRESSION_METHOD_OFFSET = 8n;
@@ -12799,7 +13203,12 @@ var __exports__ = (() => {
12799
13203
  return null;
12800
13204
  }
12801
13205
  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("/");
13206
+ const fileName = new TextDecoder().decode(
13207
+ await buffer.slice(
13208
+ headerOffset + FILE_NAME_OFFSET,
13209
+ headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength)
13210
+ )
13211
+ ).split("\\").join("/");
12803
13212
  const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
12804
13213
  let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
12805
13214
  const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
@@ -12827,52 +13236,75 @@ var __exports__ = (() => {
12827
13236
  compressionMethod
12828
13237
  };
12829
13238
  };
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
- }];
13239
+ var ZIP_HEADER_FIELDS2 = [
13240
+ // Local file header signature = 0x04034b50
13241
+ {
13242
+ offset: 0,
13243
+ size: 4,
13244
+ default: new DataView(signature2.buffer).getUint32(0, true)
13245
+ },
13246
+ // Version needed to extract (minimum)
13247
+ {
13248
+ offset: 4,
13249
+ size: 2,
13250
+ default: 45
13251
+ },
13252
+ // General purpose bit flag
13253
+ {
13254
+ offset: 6,
13255
+ size: 2,
13256
+ default: 0
13257
+ },
13258
+ // Compression method
13259
+ {
13260
+ offset: 8,
13261
+ size: 2,
13262
+ default: 0
13263
+ },
13264
+ // File last modification time
13265
+ {
13266
+ offset: 10,
13267
+ size: 2,
13268
+ default: 0
13269
+ },
13270
+ // File last modification date
13271
+ {
13272
+ offset: 12,
13273
+ size: 2,
13274
+ default: 0
13275
+ },
13276
+ // CRC-32 of uncompressed data
13277
+ {
13278
+ offset: 14,
13279
+ size: 4,
13280
+ name: "crc32"
13281
+ },
13282
+ // Compressed size (or 0xffffffff for ZIP64)
13283
+ {
13284
+ offset: 18,
13285
+ size: 4,
13286
+ name: "length"
13287
+ },
13288
+ // Uncompressed size (or 0xffffffff for ZIP64)
13289
+ {
13290
+ offset: 22,
13291
+ size: 4,
13292
+ name: "length"
13293
+ },
13294
+ // File name length (n)
13295
+ {
13296
+ offset: 26,
13297
+ size: 2,
13298
+ name: "fnlength"
13299
+ },
13300
+ // Extra field length (m)
13301
+ {
13302
+ offset: 28,
13303
+ size: 2,
13304
+ default: 0,
13305
+ name: "extraLength"
13306
+ }
13307
+ ];
12876
13308
 
12877
13309
  // ../crypto/src/lib/hash.ts
12878
13310
  var Hash = class {
@@ -12890,10 +13322,9 @@ var __exports__ = (() => {
12890
13322
  }
12891
13323
  const output = await this.concatenate(arrayBuffers);
12892
13324
  const hash = await this.hash(output, encoding);
12893
- this.options.crypto?.onEnd?.({
12894
- hash
12895
- });
13325
+ this.options.crypto?.onEnd?.({ hash });
12896
13326
  }
13327
+ // HELPERS
12897
13328
  async concatenate(asyncIterator) {
12898
13329
  return await concatenateArrayBuffersAsync(asyncIterator);
12899
13330
  }
@@ -12971,7 +13402,9 @@ var __exports__ = (() => {
12971
13402
 
12972
13403
  // ../crypto/src/lib/algorithms/md5-wasm.ts
12973
13404
  var atb = typeof atob === "function" ? atob : typeof Buffer === "function" ? nodeATOB : identity4;
12974
- var wasmB64 = atb("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");
13405
+ var wasmB64 = atb(
13406
+ "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"
13407
+ );
12975
13408
  var wasm = WebAssembly && atb !== identity4 ? str2AB(wasmB64).buffer : false;
12976
13409
  var crypt = makeCrypt();
12977
13410
  var biteSize = 240 * 16 * 16;
@@ -12980,7 +13413,9 @@ var __exports__ = (() => {
12980
13413
  var parmTypeErrStr = "Parameter must be Buffer, ArrayBuffer or Uint8Array";
12981
13414
  var tooBigErrStr = "Parameter exceeds max size of 255.9 Mbytes";
12982
13415
  if (!wasm) {
12983
- console.log("WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript");
13416
+ console.log(
13417
+ "WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript"
13418
+ );
12984
13419
  }
12985
13420
  function md5WASM(data) {
12986
13421
  var mem, memView, importObj, imports, len2, buff, thenFun, catchFun, result, endTime;
@@ -13019,13 +13454,8 @@ var __exports__ = (() => {
13019
13454
  initial: len2 > 32e6 ? len2 > 64e6 ? len2 > 128e6 ? 4096 : 2048 : 1024 : 512
13020
13455
  });
13021
13456
  memView = new Uint32Array(mem.buffer);
13022
- imports = {
13023
- mem,
13024
- log: console.log
13025
- };
13026
- importObj = {
13027
- imports
13028
- };
13457
+ imports = { mem, log: console.log };
13458
+ importObj = { imports };
13029
13459
  WebAssembly.instantiate(wasm, importObj).then(giterdone);
13030
13460
  }
13031
13461
  } else {
@@ -13380,13 +13810,22 @@ var __exports__ = (() => {
13380
13810
 
13381
13811
  // ../crypto/src/lib/md5-hash.ts
13382
13812
  var MD5Hash = class extends Hash {
13383
- name = "md5";
13384
13813
  constructor(options = {}) {
13385
13814
  super();
13815
+ this.name = "md5";
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
  }
@@ -13438,13 +13885,13 @@ var __exports__ = (() => {
13438
13885
  var import_pako = __toESM(require_pako(), 1);
13439
13886
  var import_zlib = __toESM(require_zlib(), 1);
13440
13887
  var DeflateCompression = class extends Compression {
13441
- name = "deflate";
13442
- extensions = [];
13443
- contentEncodings = ["deflate"];
13444
- isSupported = true;
13445
- _chunks = [];
13446
13888
  constructor(options = {}) {
13447
13889
  super(options);
13890
+ this.name = "deflate";
13891
+ this.extensions = [];
13892
+ this.contentEncodings = ["deflate"];
13893
+ this.isSupported = true;
13894
+ this._chunks = [];
13448
13895
  this.options = options;
13449
13896
  }
13450
13897
  async compress(input) {
@@ -13523,16 +13970,26 @@ var __exports__ = (() => {
13523
13970
  this._chunks = [];
13524
13971
  return chunks;
13525
13972
  }
13973
+ // TODO - For some reason we don't get the error message from pako in _onEnd?
13526
13974
  _getError(code = 0) {
13527
13975
  const MESSAGES = {
13976
+ /* Z_NEED_DICT 2 */
13528
13977
  2: "need dictionary",
13978
+ /* Z_STREAM_END 1 */
13529
13979
  1: "stream end",
13980
+ /* Z_OK 0 */
13530
13981
  0: "",
13982
+ /* Z_ERRNO (-1) */
13531
13983
  "-1": "file error",
13984
+ /* Z_STREAM_ERROR (-2) */
13532
13985
  "-2": "stream error",
13986
+ /* Z_DATA_ERROR (-3) */
13533
13987
  "-3": "data error",
13988
+ /* Z_MEM_ERROR (-4) */
13534
13989
  "-4": "insufficient memory",
13990
+ /* Z_BUF_ERROR (-5) */
13535
13991
  "-5": "buffer error",
13992
+ /* Z_VERSION_ERROR (-6) */
13536
13993
  "-6": "incompatible version"
13537
13994
  };
13538
13995
  return `${this.name}: ${MESSAGES[code]}`;
@@ -13541,36 +13998,35 @@ var __exports__ = (() => {
13541
13998
 
13542
13999
  // ../compression/src/lib/gzip-compression.ts
13543
14000
  var GZipCompression = class extends DeflateCompression {
13544
- name = "gzip";
13545
- extensions = ["gz", "gzip"];
13546
- contentEncodings = ["gzip", "x-gzip"];
13547
- isSupported = true;
13548
14001
  constructor(options) {
13549
- super({
13550
- ...options,
13551
- deflate: {
13552
- ...options?.gzip,
13553
- gzip: true
13554
- }
13555
- });
14002
+ super({ ...options, deflate: { ...options?.gzip, gzip: true } });
14003
+ this.name = "gzip";
14004
+ this.extensions = ["gz", "gzip"];
14005
+ this.contentEncodings = ["gzip", "x-gzip"];
14006
+ this.isSupported = true;
13556
14007
  }
13557
14008
  };
13558
14009
 
13559
14010
  // ../zip/src/filesystems/zip-filesystem.ts
13560
14011
  var ZIP_COMPRESSION_HANDLERS = {
14012
+ /** No compression */
13561
14013
  0: async (compressedFile) => compressedFile,
14014
+ /** Deflation */
13562
14015
  8: async (compressedFile) => {
13563
- const compression = new DeflateCompression({
13564
- raw: true
13565
- });
14016
+ const compression = new DeflateCompression({ raw: true });
13566
14017
  const decompressedData = await compression.decompress(compressedFile);
13567
14018
  return decompressedData;
13568
14019
  }
13569
14020
  };
13570
14021
  var ZipFileSystem = class {
13571
- fileProvider = null;
13572
- archive = null;
14022
+ /**
14023
+ * Constructor
14024
+ * @param file - instance of FileProvider or file path string
14025
+ */
13573
14026
  constructor(file) {
14027
+ /** FileProvider instance promise */
14028
+ this.fileProvider = null;
14029
+ this.archive = null;
13574
14030
  if (typeof file === "string") {
13575
14031
  this.fileName = file;
13576
14032
  if (!isBrowser) {
@@ -13586,11 +14042,16 @@ var __exports__ = (() => {
13586
14042
  this.fileProvider = file;
13587
14043
  }
13588
14044
  }
14045
+ /** Clean up resources */
13589
14046
  async destroy() {
13590
14047
  if (this.fileProvider) {
13591
14048
  await this.fileProvider.destroy();
13592
14049
  }
13593
14050
  }
14051
+ /**
14052
+ * Get file names list from zip archive
14053
+ * @returns array of file names
14054
+ */
13594
14055
  async readdir() {
13595
14056
  if (!this.fileProvider) {
13596
14057
  throw new Error("No data detected in the zip archive");
@@ -13602,13 +14063,20 @@ var __exports__ = (() => {
13602
14063
  }
13603
14064
  return fileNames;
13604
14065
  }
14066
+ /**
14067
+ * Get file metadata
14068
+ * @param filename - name of a file
14069
+ * @returns central directory data
14070
+ */
13605
14071
  async stat(filename) {
13606
14072
  const cdFileHeader = await this.getCDFileHeader(filename);
13607
- return {
13608
- ...cdFileHeader,
13609
- size: Number(cdFileHeader.uncompressedSize)
13610
- };
14073
+ return { ...cdFileHeader, size: Number(cdFileHeader.uncompressedSize) };
13611
14074
  }
14075
+ /**
14076
+ * Implementation of fetch against this file system
14077
+ * @param filename - name of a file
14078
+ * @returns - Response with file data
14079
+ */
13612
14080
  async fetch(filename) {
13613
14081
  let uncompressedFile;
13614
14082
  if (this.archive) {
@@ -13618,7 +14086,10 @@ var __exports__ = (() => {
13618
14086
  throw new Error("No data detected in the zip archive");
13619
14087
  }
13620
14088
  const cdFileHeader = await this.getCDFileHeader(filename);
13621
- const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, this.fileProvider);
14089
+ const localFileHeader = await parseZipLocalFileHeader(
14090
+ cdFileHeader.localHeaderOffset,
14091
+ this.fileProvider
14092
+ );
13622
14093
  if (!localFileHeader) {
13623
14094
  throw new Error("Local file header has not been found in the zip archive`");
13624
14095
  }
@@ -13626,7 +14097,10 @@ var __exports__ = (() => {
13626
14097
  if (!compressionHandler) {
13627
14098
  throw Error("Only Deflation compression is supported");
13628
14099
  }
13629
- const compressedFile = await this.fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
14100
+ const compressedFile = await this.fileProvider.slice(
14101
+ localFileHeader.fileDataOffset,
14102
+ localFileHeader.fileDataOffset + localFileHeader.compressedSize
14103
+ );
13630
14104
  uncompressedFile = await compressionHandler(compressedFile);
13631
14105
  }
13632
14106
  const response = new Response(uncompressedFile);
@@ -13635,6 +14109,11 @@ var __exports__ = (() => {
13635
14109
  });
13636
14110
  return response;
13637
14111
  }
14112
+ /**
14113
+ * Get central directory file header
14114
+ * @param filename - name of a file
14115
+ * @returns central directory file header
14116
+ */
13638
14117
  async getCDFileHeader(filename) {
13639
14118
  if (!this.fileProvider) {
13640
14119
  throw new Error("No data detected in the zip archive");
@@ -13656,10 +14135,21 @@ var __exports__ = (() => {
13656
14135
 
13657
14136
  // ../zip/src/filesystems/IndexedArchive.ts
13658
14137
  var IndexedArchive = class {
14138
+ /**
14139
+ * Constructor
14140
+ * @param fileProvider - instance of a binary data reader
14141
+ * @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
14142
+ * @param fileName - name of the archive. It is used to add to an URL of a loader context
14143
+ */
13659
14144
  constructor(fileProvider, hashTable, fileName) {
13660
14145
  this.fileProvider = fileProvider;
13661
14146
  this.fileName = fileName;
13662
14147
  }
14148
+ /**
14149
+ * Get file as from order ZIP arhive without using the hash file
14150
+ * @param filename - path to the internal file
14151
+ * @returns
14152
+ */
13663
14153
  async getFileWithoutHash(filename) {
13664
14154
  const zipFS = new ZipFileSystem(this.fileProvider);
13665
14155
  const response = await zipFS.fetch(filename);
@@ -13699,39 +14189,60 @@ var __exports__ = (() => {
13699
14189
  }
13700
14190
 
13701
14191
  // 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
- }];
14192
+ var PATH_DESCRIPTIONS = [
14193
+ {
14194
+ test: /^$/,
14195
+ extensions: ["3dSceneLayer.json.gz"]
14196
+ },
14197
+ {
14198
+ test: /^nodepages\/\d+$/,
14199
+ extensions: [".json.gz"]
14200
+ },
14201
+ {
14202
+ test: /^nodes\/(\d+|root)$/,
14203
+ extensions: ["/3dNodeIndexDocument.json.gz"]
14204
+ },
14205
+ {
14206
+ test: /^nodes\/\d+\/textures\/.+$/,
14207
+ extensions: [".jpg", ".png", ".bin.dds.gz", ".ktx"]
14208
+ },
14209
+ {
14210
+ test: /^nodes\/\d+\/geometries\/\d+$/,
14211
+ extensions: [".bin.gz", ".draco.gz"]
14212
+ },
14213
+ {
14214
+ test: /^nodes\/\d+\/attributes\/f_\d+\/\d+$/,
14215
+ extensions: [".bin.gz"]
14216
+ },
14217
+ {
14218
+ test: /^statistics\/f_\d+\/\d+$/,
14219
+ extensions: [".json.gz"]
14220
+ },
14221
+ {
14222
+ test: /^nodes\/\d+\/shared$/,
14223
+ extensions: ["/sharedResource.json.gz"]
14224
+ }
14225
+ ];
13727
14226
  var SLPKArchive = class extends IndexedArchive {
13728
- _textEncoder = new TextEncoder();
13729
- _textDecoder = new TextDecoder();
13730
- _md5Hash = new MD5Hash();
14227
+ /**
14228
+ * Constructor
14229
+ * @param fileProvider - instance of a binary data reader
14230
+ * @param hashTable - pre-loaded hashTable. If presented, getFile will skip reading the hash file
14231
+ * @param fileName - name of the archive. It is used to add to an URL of a loader context
14232
+ */
13731
14233
  constructor(fileProvider, hashTable, fileName) {
13732
14234
  super(fileProvider, hashTable, fileName);
14235
+ this._textEncoder = new TextEncoder();
14236
+ this._textDecoder = new TextDecoder();
14237
+ this._md5Hash = new MD5Hash();
13733
14238
  this.hashTable = hashTable;
13734
14239
  }
14240
+ /**
14241
+ * Returns file with the given path from slpk archive
14242
+ * @param path - path inside the slpk
14243
+ * @param mode - currently only raw mode supported
14244
+ * @returns buffer with ready to use file
14245
+ */
13735
14246
  async getFile(path, mode = "raw") {
13736
14247
  if (mode === "http") {
13737
14248
  const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;
@@ -13760,6 +14271,11 @@ var __exports__ = (() => {
13760
14271
  }
13761
14272
  throw new Error(`No such file in the archive: ${path}`);
13762
14273
  }
14274
+ /**
14275
+ * returning uncompressed data for paths that ends with .gz and raw data for all other paths
14276
+ * @param path - path inside the archive
14277
+ * @returns buffer with the file data
14278
+ */
13763
14279
  async getDataByPath(path) {
13764
14280
  let data = await this.getFileBytes(path.toLocaleLowerCase());
13765
14281
  if (!data) {
@@ -13775,6 +14291,11 @@ var __exports__ = (() => {
13775
14291
  }
13776
14292
  return data;
13777
14293
  }
14294
+ /**
14295
+ * Trying to get raw file data by address
14296
+ * @param path - path inside the archive
14297
+ * @returns buffer with the raw file data
14298
+ */
13778
14299
  async getFileBytes(path) {
13779
14300
  let compressedFile;
13780
14301
  if (this.hashTable) {
@@ -13788,7 +14309,10 @@ var __exports__ = (() => {
13788
14309
  if (!localFileHeader) {
13789
14310
  return void 0;
13790
14311
  }
13791
- compressedFile = await this.fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
14312
+ compressedFile = await this.fileProvider.slice(
14313
+ localFileHeader.fileDataOffset,
14314
+ localFileHeader.fileDataOffset + localFileHeader.compressedSize
14315
+ );
13792
14316
  } else {
13793
14317
  try {
13794
14318
  compressedFile = await this.getFileWithoutHash(path);
@@ -13807,21 +14331,29 @@ var __exports__ = (() => {
13807
14331
  let hashTable;
13808
14332
  if (cdFileHeader?.fileName !== "@specialIndexFileHASH128@") {
13809
14333
  hashTable = await makeHashTableFromZipHeaders(fileProvider);
13810
- cb?.("SLPK doesnt contain hash file, hash info has been composed according to zip archive headers");
14334
+ cb?.(
14335
+ "SLPK doesnt contain hash file, hash info has been composed according to zip archive headers"
14336
+ );
13811
14337
  } else {
13812
- const localFileHeader = await parseZipLocalFileHeader(cdFileHeader.localHeaderOffset, fileProvider);
14338
+ const localFileHeader = await parseZipLocalFileHeader(
14339
+ cdFileHeader.localHeaderOffset,
14340
+ fileProvider
14341
+ );
13813
14342
  if (!localFileHeader) {
13814
14343
  throw new Error("corrupted SLPK");
13815
14344
  }
13816
14345
  const fileDataOffset = localFileHeader.fileDataOffset;
13817
- const hashFile = await fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
14346
+ const hashFile = await fileProvider.slice(
14347
+ fileDataOffset,
14348
+ fileDataOffset + localFileHeader.compressedSize
14349
+ );
13818
14350
  hashTable = parseHashTable(hashFile);
13819
14351
  }
13820
14352
  return new SLPKArchive(fileProvider, hashTable, fileName);
13821
14353
  }
13822
14354
 
13823
14355
  // src/i3s-slpk-loader.ts
13824
- var VERSION8 = true ? "4.2.0-alpha.3" : "latest";
14356
+ var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
13825
14357
  var SLPKLoader = {
13826
14358
  name: "I3S SLPK (Scene Layer Package)",
13827
14359
  id: "slpk",
@@ -13841,10 +14373,7 @@ var __exports__ = (() => {
13841
14373
 
13842
14374
  // src/lib/parsers/parse-i3s-attribute.ts
13843
14375
  function parseI3STileAttribute(arrayBuffer, options) {
13844
- const {
13845
- attributeName,
13846
- attributeType
13847
- } = options;
14376
+ const { attributeName, attributeType } = options;
13848
14377
  if (!attributeName) {
13849
14378
  return {};
13850
14379
  }
@@ -13884,7 +14413,11 @@ var __exports__ = (() => {
13884
14413
  const bytesPerStringSize = 4;
13885
14414
  const stringsArray = [];
13886
14415
  try {
13887
- const stringsCount = new DataView(arrayBuffer, stringsCountOffset, bytesPerStringSize).getUint32(stringsCountOffset, true);
14416
+ const stringsCount = new DataView(
14417
+ arrayBuffer,
14418
+ stringsCountOffset,
14419
+ bytesPerStringSize
14420
+ ).getUint32(stringsCountOffset, true);
13888
14421
  const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);
13889
14422
  let stringOffset = dataOffset + stringsCount * bytesPerStringSize;
13890
14423
  for (const stringByteSize of stringSizes) {
@@ -13900,7 +14433,7 @@ var __exports__ = (() => {
13900
14433
  }
13901
14434
 
13902
14435
  // src/i3s-attribute-loader.ts
13903
- var VERSION9 = true ? "4.2.0-alpha.3" : "latest";
14436
+ var VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
13904
14437
  var EMPTY_VALUE = "";
13905
14438
  var REJECTED_STATUS = "rejected";
13906
14439
  var I3SAttributeLoader = {
@@ -13915,11 +14448,7 @@ var __exports__ = (() => {
13915
14448
  binary: true
13916
14449
  };
13917
14450
  async function loadFeatureAttributes(tile, featureId, options = {}) {
13918
- const {
13919
- attributeStorageInfo,
13920
- attributeUrls,
13921
- tilesetFields
13922
- } = getAttributesData(tile);
14451
+ const { attributeStorageInfo, attributeUrls, tilesetFields } = getAttributesData(tile);
13923
14452
  if (!attributeStorageInfo || !attributeUrls || featureId < 0) {
13924
14453
  return null;
13925
14454
  }
@@ -13929,11 +14458,7 @@ var __exports__ = (() => {
13929
14458
  const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);
13930
14459
  const attributeName = attributeStorageInfo[index].name;
13931
14460
  const attributeType = getAttributeValueType(attributeStorageInfo[index]);
13932
- const loadOptions = {
13933
- ...options,
13934
- attributeName,
13935
- attributeType
13936
- };
14461
+ const loadOptions = { ...options, attributeName, attributeType };
13937
14462
  const promise = (0, import_core19.load)(url, I3SAttributeLoader, loadOptions);
13938
14463
  attributeLoadPromises.push(promise);
13939
14464
  }
@@ -13950,11 +14475,7 @@ var __exports__ = (() => {
13950
14475
  const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;
13951
14476
  const attributeUrls = tile.header?.attributeUrls;
13952
14477
  const tilesetFields = tile.tileset?.tileset?.fields || [];
13953
- return {
13954
- attributeStorageInfo,
13955
- attributeUrls,
13956
- tilesetFields
13957
- };
14478
+ return { attributeStorageInfo, attributeUrls, tilesetFields };
13958
14479
  }
13959
14480
  function getAttributeValueType(attribute) {
13960
14481
  if (attribute.hasOwnProperty("objectIds")) {
@@ -14017,9 +14538,7 @@ var __exports__ = (() => {
14017
14538
  var OBJECT_3D_LAYER_TYPE = "3DObject";
14018
14539
  async function parseBuildingSceneLayer(data, url) {
14019
14540
  const layer0 = JSON.parse(new TextDecoder().decode(data));
14020
- const {
14021
- sublayers
14022
- } = layer0;
14541
+ const { sublayers } = layer0;
14023
14542
  return {
14024
14543
  header: layer0,
14025
14544
  sublayers: parseSublayersTree(sublayers, url)
@@ -14029,12 +14548,7 @@ var __exports__ = (() => {
14029
14548
  let layers = [];
14030
14549
  for (let index = 0; index < sublayers.length; index++) {
14031
14550
  const subLayer = sublayers[index];
14032
- const {
14033
- id,
14034
- layerType,
14035
- visibility = true,
14036
- ...rest
14037
- } = subLayer;
14551
+ const { id, layerType, visibility = true, ...rest } = subLayer;
14038
14552
  if (layerType === OBJECT_3D_LAYER_TYPE) {
14039
14553
  const sublayerUrl = `${url}/sublayers/${id}`;
14040
14554
  layers.push({
@@ -14053,7 +14567,7 @@ var __exports__ = (() => {
14053
14567
  }
14054
14568
 
14055
14569
  // src/i3s-building-scene-layer-loader.ts
14056
- var VERSION10 = true ? "4.2.0-alpha.3" : "latest";
14570
+ var VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
14057
14571
  var I3SBuildingSceneLayerLoader = {
14058
14572
  name: "I3S Building Scene Layer",
14059
14573
  id: "i3s-building-scene-layer",
@@ -14078,7 +14592,12 @@ var __exports__ = (() => {
14078
14592
  var BUILDING_SCENE_LAYER = "BuildingSceneLayer";
14079
14593
  var INTEGRATED_MESH_LAYER = "IntegratedMeshLayer";
14080
14594
  var GROUP_LAYER = "GroupLayer";
14081
- var SUPPORTED_LAYERS_TYPES = [ARCGIS_SCENE_SERVER_LAYER_TYPE, INTEGRATED_MESH_LAYER, BUILDING_SCENE_LAYER, GROUP_LAYER];
14595
+ var SUPPORTED_LAYERS_TYPES = [
14596
+ ARCGIS_SCENE_SERVER_LAYER_TYPE,
14597
+ INTEGRATED_MESH_LAYER,
14598
+ BUILDING_SCENE_LAYER,
14599
+ GROUP_LAYER
14600
+ ];
14082
14601
  var NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = "NO_AVAILABLE_SUPPORTED_LAYERS_ERROR";
14083
14602
  var NOT_SUPPORTED_CRS_ERROR = "NOT_SUPPORTED_CRS_ERROR";
14084
14603
  var LayerError = class extends Error {
@@ -14090,13 +14609,8 @@ var __exports__ = (() => {
14090
14609
  };
14091
14610
  async function parseWebscene(data) {
14092
14611
  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);
14612
+ const { operationalLayers } = layer0;
14613
+ const { layers, unsupportedLayers } = await parseOperationalLayers(operationalLayers, true);
14100
14614
  if (!layers.length) {
14101
14615
  throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
14102
14616
  }
@@ -14122,18 +14636,12 @@ var __exports__ = (() => {
14122
14636
  unsupportedLayers.push(layer);
14123
14637
  }
14124
14638
  if (layer.layers?.length) {
14125
- const {
14126
- layers: childLayers,
14127
- unsupportedLayers: childUnsupportedLayers
14128
- } = await parseOperationalLayers(layer.layers, needToCheckCRS);
14639
+ const { layers: childLayers, unsupportedLayers: childUnsupportedLayers } = await parseOperationalLayers(layer.layers, needToCheckCRS);
14129
14640
  layer.layers = childLayers;
14130
14641
  unsupportedLayers = [...unsupportedLayers, ...childUnsupportedLayers];
14131
14642
  }
14132
14643
  }
14133
- return {
14134
- layers,
14135
- unsupportedLayers
14136
- };
14644
+ return { layers, unsupportedLayers };
14137
14645
  }
14138
14646
  async function checkSupportedIndexCRS(layer) {
14139
14647
  try {
@@ -14148,7 +14656,7 @@ var __exports__ = (() => {
14148
14656
  }
14149
14657
 
14150
14658
  // src/arcgis-webscene-loader.ts
14151
- var VERSION11 = true ? "4.2.0-alpha.3" : "latest";
14659
+ var VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
14152
14660
  var ArcGISWebSceneLoader = {
14153
14661
  name: "ArcGIS Web Scene Loader",
14154
14662
  id: "arcgis-web-scene",
@@ -14173,29 +14681,41 @@ var __exports__ = (() => {
14173
14681
  ...colors,
14174
14682
  value: new Uint8Array(colors.value)
14175
14683
  };
14176
- const colorizeAttributeField = fields.find(({
14177
- name
14178
- }) => name === colorsByAttribute?.attributeName);
14179
- if (!colorizeAttributeField || !["esriFieldTypeDouble", "esriFieldTypeInteger", "esriFieldTypeSmallInteger"].includes(colorizeAttributeField.type)) {
14684
+ const colorizeAttributeField = fields.find(({ name }) => name === colorsByAttribute?.attributeName);
14685
+ if (!colorizeAttributeField || !["esriFieldTypeDouble", "esriFieldTypeInteger", "esriFieldTypeSmallInteger"].includes(
14686
+ colorizeAttributeField.type
14687
+ )) {
14180
14688
  return colors;
14181
14689
  }
14182
- const colorizeAttributeData = await loadFeatureAttributeData(colorizeAttributeField.name, attributeUrls, attributeStorageInfo, token);
14690
+ const colorizeAttributeData = await loadFeatureAttributeData(
14691
+ colorizeAttributeField.name,
14692
+ attributeUrls,
14693
+ attributeStorageInfo,
14694
+ token
14695
+ );
14183
14696
  if (!colorizeAttributeData) {
14184
14697
  return colors;
14185
14698
  }
14186
- const objectIdField = fields.find(({
14187
- type
14188
- }) => type === "esriFieldTypeOID");
14699
+ const objectIdField = fields.find(({ type }) => type === "esriFieldTypeOID");
14189
14700
  if (!objectIdField) {
14190
14701
  return colors;
14191
14702
  }
14192
- const objectIdAttributeData = await loadFeatureAttributeData(objectIdField.name, attributeUrls, attributeStorageInfo, token);
14703
+ const objectIdAttributeData = await loadFeatureAttributeData(
14704
+ objectIdField.name,
14705
+ attributeUrls,
14706
+ attributeStorageInfo,
14707
+ token
14708
+ );
14193
14709
  if (!objectIdAttributeData) {
14194
14710
  return colors;
14195
14711
  }
14196
14712
  const attributeValuesMap = {};
14197
14713
  for (let i2 = 0; i2 < objectIdAttributeData[objectIdField.name].length; i2++) {
14198
- attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(colorizeAttributeData[colorizeAttributeField.name][i2], colorsByAttribute);
14714
+ attributeValuesMap[objectIdAttributeData[objectIdField.name][i2]] = calculateColorForAttribute(
14715
+ // @ts-expect-error
14716
+ colorizeAttributeData[colorizeAttributeField.name][i2],
14717
+ colorsByAttribute
14718
+ );
14199
14719
  }
14200
14720
  for (let i2 = 0; i2 < featureIds.length; i2++) {
14201
14721
  const color = attributeValuesMap[featureIds[i2]];
@@ -14216,12 +14736,7 @@ var __exports__ = (() => {
14216
14736
  if (!colorsByAttribute) {
14217
14737
  return [255, 255, 255, 255];
14218
14738
  }
14219
- const {
14220
- minValue,
14221
- maxValue,
14222
- minColor,
14223
- maxColor
14224
- } = colorsByAttribute;
14739
+ const { minValue, maxValue, minColor, maxColor } = colorsByAttribute;
14225
14740
  const rate = (attributeValue - minValue) / (maxValue - minValue);
14226
14741
  const color = [255, 255, 255, 255];
14227
14742
  for (let i2 = 0; i2 < minColor.length; i2++) {
@@ -14230,9 +14745,7 @@ var __exports__ = (() => {
14230
14745
  return color;
14231
14746
  }
14232
14747
  async function loadFeatureAttributeData(attributeName, attributeUrls, attributeStorageInfo, token) {
14233
- const attributeIndex = attributeStorageInfo.findIndex(({
14234
- name
14235
- }) => attributeName === name);
14748
+ const attributeIndex = attributeStorageInfo.findIndex(({ name }) => attributeName === name);
14236
14749
  if (attributeIndex === -1) {
14237
14750
  return null;
14238
14751
  }
@@ -14244,7 +14757,7 @@ var __exports__ = (() => {
14244
14757
  });
14245
14758
  return objectIdAttributeData;
14246
14759
  }
14247
- return __toCommonJS(src_exports);
14760
+ return __toCommonJS(bundle_exports);
14248
14761
  })();
14249
14762
  return __exports__;
14250
14763
  });