@loaders.gl/i3s 4.0.0-alpha.17 → 4.0.0-alpha.19

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 (57) hide show
  1. package/dist/dist.min.js +155 -98
  2. package/dist/es5/arcgis-webscene-loader.js +1 -1
  3. package/dist/es5/i3s-attribute-loader.js +1 -1
  4. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  5. package/dist/es5/i3s-content-loader.js +1 -1
  6. package/dist/es5/i3s-loader.js +6 -6
  7. package/dist/es5/i3s-loader.js.map +1 -1
  8. package/dist/es5/i3s-node-page-loader.js +1 -1
  9. package/dist/es5/i3s-slpk-loader.js +1 -1
  10. package/dist/es5/index.js.map +1 -1
  11. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +9 -5
  12. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  13. package/dist/es5/lib/parsers/parse-i3s.js +30 -19
  14. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  15. package/dist/es5/lib/utils/url-utils.js +3 -3
  16. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  17. package/dist/es5/types.js.map +1 -1
  18. package/dist/esm/arcgis-webscene-loader.js +1 -1
  19. package/dist/esm/i3s-attribute-loader.js +1 -1
  20. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  21. package/dist/esm/i3s-content-loader.js +1 -1
  22. package/dist/esm/i3s-loader.js +3 -4
  23. package/dist/esm/i3s-loader.js.map +1 -1
  24. package/dist/esm/i3s-node-page-loader.js +1 -1
  25. package/dist/esm/i3s-slpk-loader.js +1 -1
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +9 -5
  28. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  29. package/dist/esm/lib/parsers/parse-i3s.js +21 -10
  30. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  31. package/dist/esm/lib/utils/url-utils.js +2 -3
  32. package/dist/esm/lib/utils/url-utils.js.map +1 -1
  33. package/dist/esm/types.js.map +1 -1
  34. package/dist/i3s-content-worker-node.js +47 -47
  35. package/dist/i3s-content-worker-node.js.map +3 -3
  36. package/dist/i3s-content-worker.js +88 -44
  37. package/dist/i3s-loader.js +2 -4
  38. package/dist/index.d.ts +2 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +5 -3
  41. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  42. package/dist/lib/helpers/i3s-nodepages-tiles.js +7 -5
  43. package/dist/lib/parsers/parse-i3s.d.ts +2 -2
  44. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  45. package/dist/lib/parsers/parse-i3s.js +22 -12
  46. package/dist/lib/utils/url-utils.d.ts +5 -4
  47. package/dist/lib/utils/url-utils.d.ts.map +1 -1
  48. package/dist/lib/utils/url-utils.js +5 -4
  49. package/dist/types.d.ts +105 -34
  50. package/dist/types.d.ts.map +1 -1
  51. package/package.json +9 -9
  52. package/src/i3s-loader.ts +2 -4
  53. package/src/index.ts +4 -0
  54. package/src/lib/helpers/i3s-nodepages-tiles.ts +16 -9
  55. package/src/lib/parsers/parse-i3s.ts +26 -16
  56. package/src/lib/utils/url-utils.ts +6 -5
  57. package/src/types.ts +102 -35
package/dist/dist.min.js CHANGED
@@ -1250,37 +1250,37 @@
1250
1250
  });
1251
1251
 
1252
1252
  // ../worker-utils/src/lib/library-utils/library-utils.ts
1253
- async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
1253
+ async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
1254
1254
  if (moduleName) {
1255
- libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
1255
+ libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
1256
1256
  }
1257
1257
  loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
1258
1258
  return await loadLibraryPromises[libraryUrl];
1259
1259
  }
1260
- function getLibraryUrl(library, moduleName, options) {
1261
- if (library.startsWith("http")) {
1260
+ function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
1261
+ if (!options.useLocalLibraries && library.startsWith("http")) {
1262
1262
  return library;
1263
1263
  }
1264
+ libraryName = libraryName || library;
1264
1265
  const modules = options.modules || {};
1265
- if (modules[library]) {
1266
- return modules[library];
1266
+ if (modules[libraryName]) {
1267
+ return modules[libraryName];
1267
1268
  }
1268
1269
  if (!isBrowser2) {
1269
- return `modules/${moduleName}/dist/libs/${library}`;
1270
+ return `modules/${moduleName}/dist/libs/${libraryName}`;
1270
1271
  }
1271
1272
  if (options.CDN) {
1272
1273
  assert2(options.CDN.startsWith("http"));
1273
- return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${library}`;
1274
+ return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
1274
1275
  }
1275
1276
  if (isWorker) {
1276
- return `../src/libs/${library}`;
1277
+ return `../src/libs/${libraryName}`;
1277
1278
  }
1278
- return `modules/${moduleName}/src/libs/${library}`;
1279
+ return `modules/${moduleName}/src/libs/${libraryName}`;
1279
1280
  }
1280
1281
  async function loadLibraryFromFile(libraryUrl) {
1281
1282
  if (libraryUrl.endsWith("wasm")) {
1282
- const response2 = await fetch(libraryUrl);
1283
- return await response2.arrayBuffer();
1283
+ return await loadAsArrayBuffer(libraryUrl);
1284
1284
  }
1285
1285
  if (!isBrowser2) {
1286
1286
  try {
@@ -1292,8 +1292,7 @@
1292
1292
  if (isWorker) {
1293
1293
  return importScripts(libraryUrl);
1294
1294
  }
1295
- const response = await fetch(libraryUrl);
1296
- const scriptSource = await response.text();
1295
+ const scriptSource = await loadAsText(libraryUrl);
1297
1296
  return loadLibraryFromString(scriptSource, libraryUrl);
1298
1297
  }
1299
1298
  function loadLibraryFromString(scriptSource, id) {
@@ -1314,6 +1313,20 @@
1314
1313
  document.body.appendChild(script);
1315
1314
  return null;
1316
1315
  }
1316
+ async function loadAsArrayBuffer(url) {
1317
+ if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
1318
+ const response = await fetch(url);
1319
+ return await response.arrayBuffer();
1320
+ }
1321
+ return await node.readFileAsArrayBuffer(url);
1322
+ }
1323
+ async function loadAsText(url) {
1324
+ if (!node.readFileAsText || url.startsWith("http")) {
1325
+ const response = await fetch(url);
1326
+ return await response.text();
1327
+ }
1328
+ return await node.readFileAsText(url);
1329
+ }
1317
1330
  var node, LATEST, VERSION2, loadLibraryPromises;
1318
1331
  var init_library_utils = __esm({
1319
1332
  "../worker-utils/src/lib/library-utils/library-utils.ts"() {
@@ -1965,18 +1978,38 @@
1965
1978
  }
1966
1979
  });
1967
1980
 
1981
+ // (disabled):../core/src/lib/fetch/fetch-file.node
1982
+ var require_fetch_file = __commonJS({
1983
+ "(disabled):../core/src/lib/fetch/fetch-file.node"() {
1984
+ }
1985
+ });
1986
+
1968
1987
  // ../core/src/lib/fetch/fetch-file.ts
1988
+ function isNodePath(url) {
1989
+ return !isRequestURL(url) && !isDataURL(url);
1990
+ }
1991
+ function isRequestURL(url) {
1992
+ return url.startsWith("http:") || url.startsWith("https:");
1993
+ }
1994
+ function isDataURL(url) {
1995
+ return url.startsWith("data:");
1996
+ }
1969
1997
  async function fetchFile(urlOrData, fetchOptions) {
1970
1998
  if (typeof urlOrData === "string") {
1971
1999
  const url = resolvePath(urlOrData);
2000
+ if (isNodePath(url) && node3?.fetchFileNode) {
2001
+ return node3.fetchFileNode(url, fetchOptions);
2002
+ }
1972
2003
  return await fetch(url, fetchOptions);
1973
2004
  }
1974
2005
  return await makeResponse(urlOrData);
1975
2006
  }
2007
+ var node3;
1976
2008
  var init_fetch_file = __esm({
1977
2009
  "../core/src/lib/fetch/fetch-file.ts"() {
1978
2010
  init_src2();
1979
2011
  init_response_utils();
2012
+ node3 = __toModule(require_fetch_file());
1980
2013
  }
1981
2014
  });
1982
2015
 
@@ -2640,6 +2673,7 @@
2640
2673
  mimeType: void 0,
2641
2674
  nothrow: false,
2642
2675
  log: new ConsoleLog(),
2676
+ useLocalLibraries: false,
2643
2677
  CDN: "https://unpkg.com/@loaders.gl",
2644
2678
  worker: true,
2645
2679
  maxConcurrency: 3,
@@ -7709,13 +7743,13 @@
7709
7743
  let wasmBinary;
7710
7744
  switch (options.draco && options.draco.decoderType) {
7711
7745
  case "js":
7712
- DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, "draco", options);
7746
+ DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
7713
7747
  break;
7714
7748
  case "wasm":
7715
7749
  default:
7716
7750
  [DracoDecoderModule, wasmBinary] = await Promise.all([
7717
- await loadLibrary(DRACO_WASM_WRAPPER_URL, "draco", options),
7718
- await loadLibrary(DRACO_WASM_DECODER_URL, "draco", options)
7751
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER),
7752
+ await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], "draco", options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)
7719
7753
  ]);
7720
7754
  }
7721
7755
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
@@ -7733,17 +7767,25 @@
7733
7767
  });
7734
7768
  });
7735
7769
  }
7736
- var DRACO_DECODER_VERSION, DRACO_ENCODER_VERSION, STATIC_DECODER_URL, DRACO_JS_DECODER_URL, DRACO_WASM_WRAPPER_URL, DRACO_WASM_DECODER_URL, DRACO_ENCODER_URL, loadDecoderPromise;
7770
+ var DRACO_DECODER_VERSION, DRACO_ENCODER_VERSION, STATIC_DECODER_URL, DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS, loadDecoderPromise;
7737
7771
  var init_draco_module_loader = __esm({
7738
7772
  "../draco/src/lib/draco-module-loader.ts"() {
7739
7773
  init_src();
7740
7774
  DRACO_DECODER_VERSION = "1.5.5";
7741
7775
  DRACO_ENCODER_VERSION = "1.4.1";
7742
7776
  STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
7743
- DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;
7744
- DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;
7745
- DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;
7746
- DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;
7777
+ DRACO_EXTERNAL_LIBRARIES = {
7778
+ DECODER: "draco_wasm_wrapper.js",
7779
+ DECODER_WASM: "draco_decoder.wasm",
7780
+ FALLBACK_DECODER: "draco_decoder.js",
7781
+ ENCODER: "draco_encoder.js"
7782
+ };
7783
+ DRACO_EXTERNAL_LIBRARY_URLS = {
7784
+ [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
7785
+ [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
7786
+ [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
7787
+ [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
7788
+ };
7747
7789
  }
7748
7790
  });
7749
7791
 
@@ -7779,25 +7821,25 @@
7779
7821
  });
7780
7822
 
7781
7823
  // ../textures/src/lib/parsers/basis-module-loader.ts
7782
- async function loadBasisTrascoderModule(options) {
7824
+ async function loadBasisTranscoderModule(options) {
7783
7825
  const modules = options.modules || {};
7784
7826
  if (modules.basis) {
7785
7827
  return modules.basis;
7786
7828
  }
7787
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
7829
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
7788
7830
  return await loadBasisTranscoderPromise;
7789
7831
  }
7790
- async function loadBasisTrascoder(options) {
7832
+ async function loadBasisTranscoder(options) {
7791
7833
  let BASIS = null;
7792
7834
  let wasmBinary = null;
7793
7835
  [BASIS, wasmBinary] = await Promise.all([
7794
- await loadLibrary("basis_transcoder.js", "textures", options),
7795
- await loadLibrary("basis_transcoder.wasm", "textures", options)
7836
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, "textures", options),
7837
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, "textures", options)
7796
7838
  ]);
7797
7839
  BASIS = BASIS || globalThis.BASIS;
7798
- return await initializeBasisTrascoderModule(BASIS, wasmBinary);
7840
+ return await initializeBasisTranscoderModule(BASIS, wasmBinary);
7799
7841
  }
7800
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
7842
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
7801
7843
  const options = {};
7802
7844
  if (wasmBinary) {
7803
7845
  options.wasmBinary = wasmBinary;
@@ -7822,8 +7864,8 @@
7822
7864
  let BASIS_ENCODER = null;
7823
7865
  let wasmBinary = null;
7824
7866
  [BASIS_ENCODER, wasmBinary] = await Promise.all([
7825
- await loadLibrary(BASIS_CDN_ENCODER_JS, "textures", options),
7826
- await loadLibrary(BASIS_CDN_ENCODER_WASM, "textures", options)
7867
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
7868
+ await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
7827
7869
  ]);
7828
7870
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
7829
7871
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
@@ -7841,13 +7883,16 @@
7841
7883
  });
7842
7884
  });
7843
7885
  }
7844
- var VERSION8, BASIS_CDN_ENCODER_WASM, BASIS_CDN_ENCODER_JS, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7886
+ var BASIS_EXTERNAL_LIBRARIES, loadBasisTranscoderPromise, loadBasisEncoderPromise;
7845
7887
  var init_basis_module_loader = __esm({
7846
7888
  "../textures/src/lib/parsers/basis-module-loader.ts"() {
7847
7889
  init_src();
7848
- VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
7849
- BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.wasm`;
7850
- BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION8}/dist/libs/basis_encoder.js`;
7890
+ BASIS_EXTERNAL_LIBRARIES = {
7891
+ TRANSCODER: "basis_transcoder.js",
7892
+ TRANSCODER_WASM: "basis_transcoder.wasm",
7893
+ ENCODER: "basis_encoder.js",
7894
+ ENCODER_WASM: "basis_encoder.wasm"
7895
+ };
7851
7896
  }
7852
7897
  });
7853
7898
 
@@ -8223,7 +8268,7 @@
8223
8268
  const fileConstructors = await loadBasisEncoderModule(options);
8224
8269
  return parseKTX2File(fileConstructors.KTX2File, data, options);
8225
8270
  }
8226
- const { BasisFile } = await loadBasisTrascoderModule(options);
8271
+ const { BasisFile } = await loadBasisTranscoderModule(options);
8227
8272
  return parseBasisFile(BasisFile, data, options);
8228
8273
  }
8229
8274
  switch (options.basis.module) {
@@ -8238,7 +8283,7 @@
8238
8283
  }
8239
8284
  case "transcoder":
8240
8285
  default:
8241
- const { BasisFile } = await loadBasisTrascoderModule(options);
8286
+ const { BasisFile } = await loadBasisTranscoderModule(options);
8242
8287
  return parseBasisFile(BasisFile, data, options);
8243
8288
  }
8244
8289
  }
@@ -8830,9 +8875,9 @@
8830
8875
  }
8831
8876
  return attributeUrls;
8832
8877
  }
8833
- function generateTilesetAttributeUrls(tileset, resource) {
8878
+ function generateTilesetAttributeUrls(tileset, url, resource) {
8834
8879
  const attributeUrls = [];
8835
- const { attributeStorageInfo, url } = tileset;
8880
+ const { attributeStorageInfo = [] } = tileset;
8836
8881
  for (let index = 0; index < attributeStorageInfo.length; index++) {
8837
8882
  const fileName = attributeStorageInfo[index].key;
8838
8883
  attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
@@ -8993,20 +9038,20 @@
8993
9038
  }
8994
9039
  return value;
8995
9040
  }
8996
- var VERSION9, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
9041
+ var VERSION8, EMPTY_VALUE, REJECTED_STATUS, I3SAttributeLoader;
8997
9042
  var init_i3s_attribute_loader = __esm({
8998
9043
  "src/i3s-attribute-loader.ts"() {
8999
9044
  init_src3();
9000
9045
  init_parse_i3s_attribute();
9001
9046
  init_url_utils2();
9002
- VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9047
+ VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
9003
9048
  EMPTY_VALUE = "";
9004
9049
  REJECTED_STATUS = "rejected";
9005
9050
  I3SAttributeLoader = {
9006
9051
  name: "I3S Attribute",
9007
9052
  id: "i3s-attribute",
9008
9053
  module: "i3s",
9009
- version: VERSION9,
9054
+ version: VERSION8,
9010
9055
  mimeTypes: ["application/binary"],
9011
9056
  parse: async (arrayBuffer, options) => parseI3STileAttribute(arrayBuffer, options),
9012
9057
  extensions: ["bin"],
@@ -9489,17 +9534,17 @@
9489
9534
  }
9490
9535
  return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
9491
9536
  }
9492
- var VERSION10, I3SContentLoader;
9537
+ var VERSION9, I3SContentLoader;
9493
9538
  var init_i3s_content_loader = __esm({
9494
9539
  "src/i3s-content-loader.ts"() {
9495
9540
  init_parse_i3s_tile_content();
9496
- VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
9541
+ VERSION9 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
9497
9542
  I3SContentLoader = {
9498
9543
  name: "I3S Content (Indexed Scene Layers)",
9499
9544
  id: "i3s-content",
9500
9545
  module: "i3s",
9501
9546
  worker: true,
9502
- version: VERSION10,
9547
+ version: VERSION9,
9503
9548
  mimeTypes: ["application/octet-stream"],
9504
9549
  parse: parse3,
9505
9550
  extensions: ["bin"],
@@ -10103,15 +10148,15 @@
10103
10148
  async function parseNodePage(data, options) {
10104
10149
  return JSON.parse(new TextDecoder().decode(data));
10105
10150
  }
10106
- var VERSION11, I3SNodePageLoader;
10151
+ var VERSION10, I3SNodePageLoader;
10107
10152
  var init_i3s_node_page_loader = __esm({
10108
10153
  "src/i3s-node-page-loader.ts"() {
10109
- VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10154
+ VERSION10 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10110
10155
  I3SNodePageLoader = {
10111
10156
  name: "I3S Node Page",
10112
10157
  id: "i3s-node-page",
10113
10158
  module: "i3s",
10114
- version: VERSION11,
10159
+ version: VERSION10,
10115
10160
  mimeTypes: ["application/json"],
10116
10161
  parse: parseNodePage,
10117
10162
  extensions: ["json"],
@@ -10130,12 +10175,13 @@
10130
10175
  init_parse_i3s();
10131
10176
  init_url_utils2();
10132
10177
  I3SNodePagesTiles = class {
10133
- constructor(tileset, options) {
10178
+ constructor(tileset, url = "", options) {
10134
10179
  this.nodePages = [];
10135
10180
  this.pendingNodePages = [];
10136
10181
  this.textureDefinitionsSelectedFormats = [];
10137
10182
  this.textureLoaderOptions = {};
10138
10183
  this.tileset = { ...tileset };
10184
+ this.url = url;
10139
10185
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
10140
10186
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
10141
10187
  this.options = options;
@@ -10145,7 +10191,7 @@
10145
10191
  async getNodeById(id) {
10146
10192
  const pageIndex = Math.floor(id / this.nodesPerPage);
10147
10193
  if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
10148
- const nodePageUrl = getUrlWithToken(`${this.tileset.url}/nodepages/${pageIndex}`, this.options.i3s?.token);
10194
+ const nodePageUrl = getUrlWithToken(`${this.url}/nodepages/${pageIndex}`, this.options.i3s?.token);
10149
10195
  this.pendingNodePages[pageIndex] = {
10150
10196
  status: "Pending",
10151
10197
  promise: load(nodePageUrl, I3SNodePageLoader, this.options)
@@ -10161,10 +10207,10 @@
10161
10207
  return this.nodePages[pageIndex].nodes[nodeIndex];
10162
10208
  }
10163
10209
  async formTileFromNodePages(id) {
10164
- const node3 = await this.getNodeById(id);
10210
+ const node4 = await this.getNodeById(id);
10165
10211
  const children = [];
10166
10212
  const childNodesPromises = [];
10167
- for (const child of node3.children || []) {
10213
+ for (const child of node4.children || []) {
10168
10214
  childNodesPromises.push(this.getNodeById(child));
10169
10215
  }
10170
10216
  const childNodes = await Promise.all(childNodesPromises);
@@ -10180,25 +10226,25 @@
10180
10226
  let textureFormat = "jpg";
10181
10227
  let attributeUrls = [];
10182
10228
  let isDracoGeometry = false;
10183
- if (node3 && node3.mesh) {
10184
- const { url, isDracoGeometry: isDracoGeometryResult } = node3.mesh.geometry && this.getContentUrl(node3.mesh.geometry) || { isDracoGeometry: false };
10229
+ if (node4 && node4.mesh) {
10230
+ const { url, isDracoGeometry: isDracoGeometryResult } = node4.mesh.geometry && this.getContentUrl(node4.mesh.geometry) || { isDracoGeometry: false };
10185
10231
  contentUrl = url;
10186
10232
  isDracoGeometry = isDracoGeometryResult;
10187
- const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node3.mesh.material);
10233
+ const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node4.mesh.material);
10188
10234
  materialDefinition = nodeMaterialDefinition;
10189
10235
  textureFormat = textureData.format || textureFormat;
10190
10236
  if (textureData.name) {
10191
- textureUrl = `${this.tileset.url}/nodes/${node3.mesh.material.resource}/textures/${textureData.name}`;
10237
+ textureUrl = `${this.url}/nodes/${node4.mesh.material.resource}/textures/${textureData.name}`;
10192
10238
  }
10193
10239
  if (this.tileset.attributeStorageInfo) {
10194
- attributeUrls = generateTilesetAttributeUrls(this.tileset, node3.mesh.attribute.resource);
10240
+ attributeUrls = generateTilesetAttributeUrls(this.tileset, this.url, node4.mesh.attribute.resource);
10195
10241
  }
10196
10242
  }
10197
- const lodSelection = this.getLodSelection(node3);
10243
+ const lodSelection = this.getLodSelection(node4);
10198
10244
  return normalizeTileNonUrlData({
10199
10245
  id: id.toString(),
10200
10246
  lodSelection,
10201
- obb: node3.obb,
10247
+ obb: node4.obb,
10202
10248
  contentUrl,
10203
10249
  textureUrl,
10204
10250
  attributeUrls,
@@ -10222,23 +10268,23 @@
10222
10268
  if (geometryIndex !== -1) {
10223
10269
  const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
10224
10270
  result = {
10225
- url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
10271
+ url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
10226
10272
  isDracoGeometry
10227
10273
  };
10228
10274
  }
10229
10275
  return result;
10230
10276
  }
10231
- getLodSelection(node3) {
10277
+ getLodSelection(node4) {
10232
10278
  const lodSelection = [];
10233
10279
  if (this.lodSelectionMetricType === "maxScreenThresholdSQ") {
10234
10280
  lodSelection.push({
10235
10281
  metricType: "maxScreenThreshold",
10236
- maxError: Math.sqrt(node3.lodThreshold / (Math.PI * 0.25))
10282
+ maxError: Math.sqrt(node4.lodThreshold / (Math.PI * 0.25))
10237
10283
  });
10238
10284
  }
10239
10285
  lodSelection.push({
10240
10286
  metricType: this.lodSelectionMetricType,
10241
- maxError: node3.lodThreshold
10287
+ maxError: node4.lodThreshold
10242
10288
  });
10243
10289
  return lodSelection;
10244
10290
  }
@@ -10315,11 +10361,14 @@
10315
10361
  if (tile.attributeData) {
10316
10362
  attributeUrls = generateTileAttributeUrls(url, tile);
10317
10363
  }
10364
+ const children = tile.children || [];
10318
10365
  return normalizeTileNonUrlData({
10319
10366
  ...tile,
10367
+ children,
10320
10368
  url,
10321
10369
  contentUrl,
10322
10370
  textureUrl,
10371
+ textureFormat: "jpg",
10323
10372
  attributeUrls,
10324
10373
  isDracoGeometry: false
10325
10374
  });
@@ -10346,19 +10395,20 @@
10346
10395
  }
10347
10396
  const lodMetricType = tile.lodSelection?.[0].metricType;
10348
10397
  const lodMetricValue = tile.lodSelection?.[0].maxError;
10349
- const transformMatrix = tile.transform;
10350
10398
  const type = TILE_TYPE.MESH;
10351
10399
  const refine = TILE_REFINEMENT.REPLACE;
10352
- return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, transformMatrix, type, refine };
10400
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
10353
10401
  }
10354
10402
  async function normalizeTilesetData(tileset, options, context) {
10355
- tileset.url = context.url;
10403
+ const url = context.url;
10404
+ let nodePagesTile;
10405
+ let root;
10356
10406
  if (tileset.nodePages) {
10357
- tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);
10358
- tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
10407
+ nodePagesTile = new I3SNodePagesTiles(tileset, url, options);
10408
+ root = await nodePagesTile.formTileFromNodePages(0);
10359
10409
  } else {
10360
10410
  const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);
10361
- tileset.root = await load(rootNodeUrl, tileset.loader, {
10411
+ root = await load(rootNodeUrl, I3SLoader, {
10362
10412
  ...options,
10363
10413
  i3s: {
10364
10414
  ...options.i3s,
@@ -10368,10 +10418,17 @@
10368
10418
  }
10369
10419
  });
10370
10420
  }
10371
- tileset.basePath = tileset.url;
10372
- tileset.type = TILESET_TYPE.I3S;
10373
- tileset.lodMetricType = tileset.root.lodMetricType;
10374
- tileset.lodMetricValue = tileset.root.lodMetricValue;
10421
+ return {
10422
+ ...tileset,
10423
+ loader: I3SLoader,
10424
+ url,
10425
+ basePath: url,
10426
+ type: TILESET_TYPE.I3S,
10427
+ nodePagesTile,
10428
+ root,
10429
+ lodMetricType: root.lodMetricType,
10430
+ lodMetricValue: root.lodMetricValue
10431
+ };
10375
10432
  }
10376
10433
  var init_parse_i3s = __esm({
10377
10434
  "src/lib/parsers/parse-i3s.ts"() {
@@ -10381,6 +10438,7 @@
10381
10438
  init_src8();
10382
10439
  init_i3s_nodepages_tiles();
10383
10440
  init_url_utils2();
10441
+ init_i3s_loader();
10384
10442
  }
10385
10443
  });
10386
10444
 
@@ -10421,9 +10479,8 @@
10421
10479
  if (tilesetJson?.layerType === POINT_CLOUD) {
10422
10480
  throw new Error("Point Cloud layers currently are not supported by I3SLoader");
10423
10481
  }
10424
- tilesetJson.loader = I3SLoader;
10425
- await normalizeTilesetData(tilesetJson, options, context);
10426
- return tilesetJson;
10482
+ const tilesetPostprocessed = await normalizeTilesetData(tilesetJson, options, context);
10483
+ return tilesetPostprocessed;
10427
10484
  }
10428
10485
  async function parseTile(data, context) {
10429
10486
  data = JSON.parse(new TextDecoder().decode(data));
@@ -10435,14 +10492,14 @@
10435
10492
  }
10436
10493
  return null;
10437
10494
  }
10438
- var VERSION12, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10495
+ var VERSION11, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10439
10496
  var init_i3s_loader = __esm({
10440
10497
  "src/i3s-loader.ts"() {
10441
10498
  init_src3();
10442
10499
  init_i3s_content_loader();
10443
10500
  init_parse_i3s();
10444
10501
  init_constants();
10445
- VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10502
+ VERSION11 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
10446
10503
  TILESET_REGEX = /layers\/[0-9]+$/;
10447
10504
  TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
10448
10505
  SLPK_HEX = "504b0304";
@@ -10451,7 +10508,7 @@
10451
10508
  name: "I3S (Indexed Scene Layers)",
10452
10509
  id: "i3s",
10453
10510
  module: "i3s",
10454
- version: VERSION12,
10511
+ version: VERSION11,
10455
10512
  mimeTypes: ["application/octet-stream"],
10456
10513
  parse: parseI3S,
10457
10514
  extensions: ["bin"],
@@ -11361,7 +11418,7 @@
11361
11418
  var elems = desc.stat_desc.elems;
11362
11419
  var n2, m;
11363
11420
  var max_code = -1;
11364
- var node3;
11421
+ var node4;
11365
11422
  s2.heap_len = 0;
11366
11423
  s2.heap_max = HEAP_SIZE;
11367
11424
  for (n2 = 0; n2 < elems; n2++) {
@@ -11373,19 +11430,19 @@
11373
11430
  }
11374
11431
  }
11375
11432
  while (s2.heap_len < 2) {
11376
- node3 = s2.heap[++s2.heap_len] = max_code < 2 ? ++max_code : 0;
11377
- tree[node3 * 2] = 1;
11378
- s2.depth[node3] = 0;
11433
+ node4 = s2.heap[++s2.heap_len] = max_code < 2 ? ++max_code : 0;
11434
+ tree[node4 * 2] = 1;
11435
+ s2.depth[node4] = 0;
11379
11436
  s2.opt_len--;
11380
11437
  if (has_stree) {
11381
- s2.static_len -= stree[node3 * 2 + 1];
11438
+ s2.static_len -= stree[node4 * 2 + 1];
11382
11439
  }
11383
11440
  }
11384
11441
  desc.max_code = max_code;
11385
11442
  for (n2 = s2.heap_len >> 1; n2 >= 1; n2--) {
11386
11443
  pqdownheap(s2, tree, n2);
11387
11444
  }
11388
- node3 = elems;
11445
+ node4 = elems;
11389
11446
  do {
11390
11447
  n2 = s2.heap[1];
11391
11448
  s2.heap[1] = s2.heap[s2.heap_len--];
@@ -11393,10 +11450,10 @@
11393
11450
  m = s2.heap[1];
11394
11451
  s2.heap[--s2.heap_max] = n2;
11395
11452
  s2.heap[--s2.heap_max] = m;
11396
- tree[node3 * 2] = tree[n2 * 2] + tree[m * 2];
11397
- s2.depth[node3] = (s2.depth[n2] >= s2.depth[m] ? s2.depth[n2] : s2.depth[m]) + 1;
11398
- tree[n2 * 2 + 1] = tree[m * 2 + 1] = node3;
11399
- s2.heap[1] = node3++;
11453
+ tree[node4 * 2] = tree[n2 * 2] + tree[m * 2];
11454
+ s2.depth[node4] = (s2.depth[n2] >= s2.depth[m] ? s2.depth[n2] : s2.depth[m]) + 1;
11455
+ tree[n2 * 2 + 1] = tree[m * 2 + 1] = node4;
11456
+ s2.heap[1] = node4++;
11400
11457
  pqdownheap(s2, tree, 1);
11401
11458
  } while (s2.heap_len >= 2);
11402
11459
  s2.heap[--s2.heap_max] = s2.heap[1];
@@ -15396,17 +15453,17 @@
15396
15453
  async function parseSLPK2(data, options = {}) {
15397
15454
  return (await parseSLPK(new DataViewFileProvider(new DataView(data)))).getFile(options.slpk?.path ?? "", options.slpk?.pathMode);
15398
15455
  }
15399
- var VERSION13, SLPKLoader;
15456
+ var VERSION12, SLPKLoader;
15400
15457
  var init_i3s_slpk_loader = __esm({
15401
15458
  "src/i3s-slpk-loader.ts"() {
15402
15459
  init_parse_slpk();
15403
15460
  init_data_view_file_provider();
15404
- VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
15461
+ VERSION12 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
15405
15462
  SLPKLoader = {
15406
15463
  name: "I3S SLPK (Scene Layer Package)",
15407
15464
  id: "slpk",
15408
15465
  module: "i3s",
15409
- version: VERSION13,
15466
+ version: VERSION12,
15410
15467
  mimeTypes: ["application/octet-stream"],
15411
15468
  parse: parseSLPK2,
15412
15469
  extensions: ["slpk"],
@@ -15459,16 +15516,16 @@
15459
15516
  }
15460
15517
  return parseBuildingSceneLayer(data, context.url);
15461
15518
  }
15462
- var VERSION14, I3SBuildingSceneLayerLoader;
15519
+ var VERSION13, I3SBuildingSceneLayerLoader;
15463
15520
  var init_i3s_building_scene_layer_loader = __esm({
15464
15521
  "src/i3s-building-scene-layer-loader.ts"() {
15465
15522
  init_parse_i3s_building_scene_layer();
15466
- VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
15523
+ VERSION13 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
15467
15524
  I3SBuildingSceneLayerLoader = {
15468
15525
  name: "I3S Building Scene Layer",
15469
15526
  id: "i3s-building-scene-layer",
15470
15527
  module: "i3s",
15471
- version: VERSION14,
15528
+ version: VERSION13,
15472
15529
  mimeTypes: ["application/json"],
15473
15530
  parse: parse4,
15474
15531
  extensions: ["json"],
@@ -15549,16 +15606,16 @@
15549
15606
  async function parse5(data) {
15550
15607
  return parseWebscene(data);
15551
15608
  }
15552
- var VERSION15, ArcGisWebSceneLoader;
15609
+ var VERSION14, ArcGisWebSceneLoader;
15553
15610
  var init_arcgis_webscene_loader = __esm({
15554
15611
  "src/arcgis-webscene-loader.ts"() {
15555
15612
  init_parse_arcgis_webscene();
15556
- VERSION15 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
15613
+ VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
15557
15614
  ArcGisWebSceneLoader = {
15558
15615
  name: "ArcGIS Web Scene Loader",
15559
15616
  id: "arcgis-web-scene",
15560
15617
  module: "i3s",
15561
- version: VERSION15,
15618
+ version: VERSION14,
15562
15619
  mimeTypes: ["application/json"],
15563
15620
  parse: parse5,
15564
15621
  extensions: ["json"],
@@ -8,7 +8,7 @@ exports.ArcGisWebSceneLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
11
- var VERSION = typeof "4.0.0-alpha.17" !== 'undefined' ? "4.0.0-alpha.17" : 'beta';
11
+ var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'beta';
12
12
  var ArcGisWebSceneLoader = {
13
13
  name: 'ArcGIS Web Scene Loader',
14
14
  id: 'arcgis-web-scene',
@@ -15,7 +15,7 @@ var _parseI3sAttribute = require("./lib/parsers/parse-i3s-attribute");
15
15
  var _urlUtils = require("./lib/utils/url-utils");
16
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
- var VERSION = typeof "4.0.0-alpha.17" !== 'undefined' ? "4.0.0-alpha.17" : 'latest';
18
+ var VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'latest';
19
19
  var EMPTY_VALUE = '';
20
20
  var REJECTED_STATUS = 'rejected';
21
21
  var I3SAttributeLoader = {