@loaders.gl/i3s 4.0.0-alpha.16 → 4.0.0-alpha.18

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 +97 -58
  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 +29 -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 +20 -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 +53 -26
  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 +21 -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 +102 -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 +25 -16
  56. package/src/lib/utils/url-utils.ts +6 -5
  57. package/src/types.ts +99 -35
@@ -32,6 +32,12 @@
32
32
  }
33
33
  });
34
34
 
35
+ // (disabled):../core/src/lib/fetch/fetch-file.node
36
+ var require_fetch_file = __commonJS({
37
+ "(disabled):../core/src/lib/fetch/fetch-file.node"() {
38
+ }
39
+ });
40
+
35
41
  // ../loader-utils/src/lib/env-utils/assert.ts
36
42
  function assert(condition, message) {
37
43
  if (!condition) {
@@ -55,7 +61,7 @@
55
61
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
56
62
 
57
63
  // ../worker-utils/src/lib/env-utils/version.ts
58
- var VERSION = true ? "4.0.0-alpha.16" : DEFAULT_VERSION;
64
+ var VERSION = true ? "4.0.0-alpha.18" : DEFAULT_VERSION;
59
65
  if (false) {
60
66
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
61
67
  }
@@ -587,8 +593,7 @@
587
593
  }
588
594
  async function loadLibraryFromFile(libraryUrl) {
589
595
  if (libraryUrl.endsWith("wasm")) {
590
- const response2 = await fetch(libraryUrl);
591
- return await response2.arrayBuffer();
596
+ return await loadAsArrayBuffer(libraryUrl);
592
597
  }
593
598
  if (!isBrowser2) {
594
599
  try {
@@ -600,8 +605,7 @@
600
605
  if (isWorker) {
601
606
  return importScripts(libraryUrl);
602
607
  }
603
- const response = await fetch(libraryUrl);
604
- const scriptSource = await response.text();
608
+ const scriptSource = await loadAsText(libraryUrl);
605
609
  return loadLibraryFromString(scriptSource, libraryUrl);
606
610
  }
607
611
  function loadLibraryFromString(scriptSource, id) {
@@ -622,6 +626,20 @@
622
626
  document.body.appendChild(script);
623
627
  return null;
624
628
  }
629
+ async function loadAsArrayBuffer(url) {
630
+ if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
631
+ const response = await fetch(url);
632
+ return await response.arrayBuffer();
633
+ }
634
+ return await node.readFileAsArrayBuffer(url);
635
+ }
636
+ async function loadAsText(url) {
637
+ if (!node.readFileAsText || url.startsWith("http")) {
638
+ const response = await fetch(url);
639
+ return await response.text();
640
+ }
641
+ return await node.readFileAsText(url);
642
+ }
625
643
 
626
644
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
627
645
  var requestId = 0;
@@ -1191,16 +1209,25 @@
1191
1209
  }
1192
1210
 
1193
1211
  // ../core/src/lib/fetch/fetch-file.ts
1194
- async function fetchFile(url, options) {
1195
- if (typeof url === "string") {
1196
- url = resolvePath(url);
1197
- let fetchOptions = options;
1198
- if (options?.fetch && typeof options?.fetch !== "function") {
1199
- fetchOptions = options.fetch;
1212
+ var node3 = __toModule(require_fetch_file());
1213
+ function isNodePath(url) {
1214
+ return !isRequestURL(url) && !isDataURL(url);
1215
+ }
1216
+ function isRequestURL(url) {
1217
+ return url.startsWith("http:") || url.startsWith("https:");
1218
+ }
1219
+ function isDataURL(url) {
1220
+ return url.startsWith("data:");
1221
+ }
1222
+ async function fetchFile(urlOrData, fetchOptions) {
1223
+ if (typeof urlOrData === "string") {
1224
+ const url = resolvePath(urlOrData);
1225
+ if (isNodePath(url) && node3?.fetchFileNode) {
1226
+ return node3.fetchFileNode(url, fetchOptions);
1200
1227
  }
1201
1228
  return await fetch(url, fetchOptions);
1202
1229
  }
1203
- return await makeResponse(url);
1230
+ return await makeResponse(urlOrData);
1204
1231
  }
1205
1232
 
1206
1233
  // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-electron.js
@@ -1234,7 +1261,7 @@
1234
1261
  var navigator_ = globalThis.navigator || {};
1235
1262
 
1236
1263
  // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
1237
- var VERSION3 = true ? "4.0.0-alpha.16" : "untranspiled source";
1264
+ var VERSION3 = true ? "4.0.0-alpha.18" : "untranspiled source";
1238
1265
  var isBrowser4 = isBrowser3();
1239
1266
 
1240
1267
  // ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
@@ -4582,7 +4609,7 @@
4582
4609
  _defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
4583
4610
 
4584
4611
  // ../images/src/lib/utils/version.ts
4585
- var VERSION4 = true ? "4.0.0-alpha.16" : "latest";
4612
+ var VERSION4 = true ? "4.0.0-alpha.18" : "latest";
4586
4613
 
4587
4614
  // ../images/src/lib/category-api/image-type.ts
4588
4615
  var { _parseImageNode } = globalThis;
@@ -4979,7 +5006,7 @@
4979
5006
  };
4980
5007
 
4981
5008
  // ../draco/src/lib/utils/version.ts
4982
- var VERSION5 = true ? "4.0.0-alpha.16" : "latest";
5009
+ var VERSION5 = true ? "4.0.0-alpha.18" : "latest";
4983
5010
 
4984
5011
  // ../draco/src/draco-loader.ts
4985
5012
  var DEFAULT_DRACO_OPTIONS = {
@@ -5524,22 +5551,22 @@
5524
5551
  }
5525
5552
 
5526
5553
  // ../textures/src/lib/utils/version.ts
5527
- var VERSION6 = true ? "4.0.0-alpha.16" : "beta";
5554
+ var VERSION6 = true ? "4.0.0-alpha.18" : "beta";
5528
5555
 
5529
5556
  // ../textures/src/lib/parsers/basis-module-loader.ts
5530
- var VERSION7 = true ? "4.0.0-alpha.16" : "beta";
5557
+ var VERSION7 = true ? "4.0.0-alpha.18" : "beta";
5531
5558
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.wasm`;
5532
5559
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.js`;
5533
5560
  var loadBasisTranscoderPromise;
5534
- async function loadBasisTrascoderModule(options) {
5561
+ async function loadBasisTranscoderModule(options) {
5535
5562
  const modules = options.modules || {};
5536
5563
  if (modules.basis) {
5537
5564
  return modules.basis;
5538
5565
  }
5539
- loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
5566
+ loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
5540
5567
  return await loadBasisTranscoderPromise;
5541
5568
  }
5542
- async function loadBasisTrascoder(options) {
5569
+ async function loadBasisTranscoder(options) {
5543
5570
  let BASIS = null;
5544
5571
  let wasmBinary = null;
5545
5572
  [BASIS, wasmBinary] = await Promise.all([
@@ -5547,9 +5574,9 @@
5547
5574
  await loadLibrary("basis_transcoder.wasm", "textures", options)
5548
5575
  ]);
5549
5576
  BASIS = BASIS || globalThis.BASIS;
5550
- return await initializeBasisTrascoderModule(BASIS, wasmBinary);
5577
+ return await initializeBasisTranscoderModule(BASIS, wasmBinary);
5551
5578
  }
5552
- function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
5579
+ function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
5553
5580
  const options = {};
5554
5581
  if (wasmBinary) {
5555
5582
  options.wasmBinary = wasmBinary;
@@ -5985,7 +6012,7 @@
5985
6012
  const fileConstructors = await loadBasisEncoderModule(options);
5986
6013
  return parseKTX2File(fileConstructors.KTX2File, data, options);
5987
6014
  }
5988
- const { BasisFile } = await loadBasisTrascoderModule(options);
6015
+ const { BasisFile } = await loadBasisTranscoderModule(options);
5989
6016
  return parseBasisFile(BasisFile, data, options);
5990
6017
  }
5991
6018
  switch (options.basis.module) {
@@ -6000,7 +6027,7 @@
6000
6027
  }
6001
6028
  case "transcoder":
6002
6029
  default:
6003
- const { BasisFile } = await loadBasisTrascoderModule(options);
6030
+ const { BasisFile } = await loadBasisTranscoderModule(options);
6004
6031
  return parseBasisFile(BasisFile, data, options);
6005
6032
  }
6006
6033
  }
@@ -7213,7 +7240,7 @@
7213
7240
  }
7214
7241
 
7215
7242
  // src/i3s-attribute-loader.ts
7216
- var VERSION8 = true ? "4.0.0-alpha.16" : "latest";
7243
+ var VERSION8 = true ? "4.0.0-alpha.18" : "latest";
7217
7244
  var I3SAttributeLoader = {
7218
7245
  name: "I3S Attribute",
7219
7246
  id: "i3s-attribute",
@@ -7676,7 +7703,7 @@
7676
7703
  }
7677
7704
 
7678
7705
  // src/i3s-content-loader.ts
7679
- var VERSION9 = true ? "4.0.0-alpha.16" : "beta";
7706
+ var VERSION9 = true ? "4.0.0-alpha.18" : "beta";
7680
7707
  var I3SContentLoader = {
7681
7708
  name: "I3S Content (Indexed Scene Layers)",
7682
7709
  id: "i3s-content",
@@ -82,10 +82,8 @@ async function parseTileset(data, options, context) {
82
82
  if (tilesetJson?.layerType === POINT_CLOUD) {
83
83
  throw new Error('Point Cloud layers currently are not supported by I3SLoader');
84
84
  }
85
- // eslint-disable-next-line no-use-before-define
86
- tilesetJson.loader = exports.I3SLoader;
87
- await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
88
- return tilesetJson;
85
+ const tilesetPostprocessed = await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
86
+ return tilesetPostprocessed;
89
87
  }
90
88
  async function parseTile(data, context) {
91
89
  data = JSON.parse(new TextDecoder().decode(data));
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export type { BoundingVolumes, Mbs, Obb, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
1
+ export type { BoundingVolumes, Mbs, Obb, I3STilesetHeader, I3STileContent, I3STileHeader, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
2
2
  export type { FileProvider } from './lib/parsers/parse-zip/file-provider';
3
+ export type { I3SLoaderOptions } from './i3s-loader';
3
4
  export { COORDINATE_SYSTEM } from './lib/parsers/constants';
4
5
  export { I3SLoader } from './i3s-loader';
5
6
  export { SLPKLoader } from './i3s-slpk-loader';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC;AACxE,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
- import { I3STilesetHeader, NodePage, NodeInPage, I3STextureFormat, I3STileHeader } from '../../types';
2
+ import { NodePage, NodeInPage, I3STextureFormat, I3STileHeader, SceneLayer3D } from '../../types';
3
3
  /**
4
4
  * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them
5
5
  */
6
6
  export default class I3SNodePagesTiles {
7
- tileset: I3STilesetHeader;
7
+ tileset: SceneLayer3D;
8
8
  nodePages: NodePage[];
9
9
  pendingNodePages: {
10
10
  promise: Promise<NodePage>;
@@ -18,14 +18,16 @@ export default class I3SNodePagesTiles {
18
18
  name: string;
19
19
  } | null)[];
20
20
  nodesInNodePages: number;
21
+ url: string;
21
22
  private textureLoaderOptions;
22
23
  /**
23
24
  * @constructs
24
25
  * Create a I3SNodePagesTiles instance.
25
26
  * @param tileset - i3s tileset header ('layers/0')
27
+ * @param url - tileset url
26
28
  * @param options - i3s loader options
27
29
  */
28
- constructor(tileset: I3STilesetHeader, options: LoaderOptions);
30
+ constructor(tileset: SceneLayer3D, url: string | undefined, options: LoaderOptions);
29
31
  /**
30
32
  * Loads some nodePage and return a particular node from it
31
33
  * @param id - id of node through all node pages
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-nodepages-tiles.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAEhB,QAAQ,EACR,UAAU,EAIV,gBAAgB,EAEhB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,gBAAgB,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAA;KAAC,EAAE,CAAM;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,EAAE,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,EAAE,CAAM;IAC5F,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,oBAAoB,CAA4B;IAExD;;;;;OAKG;gBACS,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IAU7D;;;OAGG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlD;;;OAGG;IAEG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4D/D;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA8BrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;IACH,OAAO,CAAC,wCAAwC;IA2BhD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}
1
+ {"version":3,"file":"i3s-nodepages-tiles.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAEL,QAAQ,EACR,UAAU,EAIV,gBAAgB,EAEhB,aAAa,EACb,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,gBAAgB,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAA;KAAC,EAAE,CAAM;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,EAAE,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,EAAE,CAAM;IAC5F,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,oBAAoB,CAA4B;IAExD;;;;;;OAMG;gBACS,OAAO,EAAE,YAAY,EAAE,GAAG,oBAAa,EAAE,OAAO,EAAE,aAAa;IAW3E;;;OAGG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlD;;;OAGG;IAEG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgE/D;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA8BrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;IACH,OAAO,CAAC,wCAAwC;IA2BhD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}
@@ -13,14 +13,16 @@ class I3SNodePagesTiles {
13
13
  * @constructs
14
14
  * Create a I3SNodePagesTiles instance.
15
15
  * @param tileset - i3s tileset header ('layers/0')
16
+ * @param url - tileset url
16
17
  * @param options - i3s loader options
17
18
  */
18
- constructor(tileset, options) {
19
+ constructor(tileset, url = '', options) {
19
20
  this.nodePages = [];
20
21
  this.pendingNodePages = [];
21
22
  this.textureDefinitionsSelectedFormats = [];
22
23
  this.textureLoaderOptions = {};
23
24
  this.tileset = { ...tileset }; // spread the tileset to avoid circular reference
25
+ this.url = url;
24
26
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
25
27
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
26
28
  this.options = options;
@@ -34,7 +36,7 @@ class I3SNodePagesTiles {
34
36
  async getNodeById(id) {
35
37
  const pageIndex = Math.floor(id / this.nodesPerPage);
36
38
  if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
37
- const nodePageUrl = (0, url_utils_1.getUrlWithToken)(`${this.tileset.url}/nodepages/${pageIndex}`,
39
+ const nodePageUrl = (0, url_utils_1.getUrlWithToken)(`${this.url}/nodepages/${pageIndex}`,
38
40
  // @ts-expect-error this.options is not properly typed
39
41
  this.options.i3s?.token);
40
42
  this.pendingNodePages[pageIndex] = {
@@ -86,10 +88,10 @@ class I3SNodePagesTiles {
86
88
  materialDefinition = nodeMaterialDefinition;
87
89
  textureFormat = textureData.format || textureFormat;
88
90
  if (textureData.name) {
89
- textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;
91
+ textureUrl = `${this.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;
90
92
  }
91
93
  if (this.tileset.attributeStorageInfo) {
92
- attributeUrls = (0, url_utils_1.generateTilesetAttributeUrls)(this.tileset, node.mesh.attribute.resource);
94
+ attributeUrls = (0, url_utils_1.generateTilesetAttributeUrls)(this.tileset, this.url, node.mesh.attribute.resource);
93
95
  }
94
96
  }
95
97
  const lodSelection = this.getLodSelection(node);
@@ -131,7 +133,7 @@ class I3SNodePagesTiles {
131
133
  if (geometryIndex !== -1) {
132
134
  const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
133
135
  result = {
134
- url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
136
+ url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
135
137
  isDracoGeometry
136
138
  };
137
139
  }
@@ -1,6 +1,6 @@
1
- import { I3STilesetHeader, I3STileHeader, I3SMinimalNodeData, Node3DIndexDocument } from '../../types';
1
+ import { I3STilesetHeader, I3STileHeader, I3SMinimalNodeData, Node3DIndexDocument, SceneLayer3D } from '../../types';
2
2
  import type { LoaderOptions, LoaderContext } from '@loaders.gl/loader-utils';
3
3
  export declare function normalizeTileData(tile: Node3DIndexDocument, context: LoaderContext): I3STileHeader;
4
4
  export declare function normalizeTileNonUrlData(tile: I3SMinimalNodeData): I3STileHeader;
5
- export declare function normalizeTilesetData(tileset: I3STilesetHeader, options: LoaderOptions, context: LoaderContext): Promise<void>;
5
+ export declare function normalizeTilesetData(tileset: SceneLayer3D, options: LoaderOptions, context: LoaderContext): Promise<I3STilesetHeader>;
6
6
  //# sourceMappingURL=parse-i3s.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CAyBnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAmChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,gBAAgB,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,iBA0BrH"}
1
+ {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CA6BnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAkChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,YAAY,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8B7I"}
@@ -10,6 +10,7 @@ const core_1 = require("@loaders.gl/core");
10
10
  const tiles_1 = require("@loaders.gl/tiles");
11
11
  const i3s_nodepages_tiles_1 = __importDefault(require("../helpers/i3s-nodepages-tiles"));
12
12
  const url_utils_1 = require("../utils/url-utils");
13
+ const i3s_loader_1 = require("../../i3s-loader");
13
14
  function normalizeTileData(tile, context) {
14
15
  const url = context.url || '';
15
16
  let contentUrl;
@@ -24,11 +25,14 @@ function normalizeTileData(tile, context) {
24
25
  if (tile.attributeData) {
25
26
  attributeUrls = (0, url_utils_1.generateTileAttributeUrls)(url, tile);
26
27
  }
28
+ const children = tile.children || [];
27
29
  return normalizeTileNonUrlData({
28
30
  ...tile,
31
+ children,
29
32
  url,
30
33
  contentUrl,
31
34
  textureUrl,
35
+ textureFormat: 'jpg',
32
36
  attributeUrls,
33
37
  isDracoGeometry: false
34
38
  });
@@ -57,26 +61,27 @@ function normalizeTileNonUrlData(tile) {
57
61
  }
58
62
  const lodMetricType = tile.lodSelection?.[0].metricType;
59
63
  const lodMetricValue = tile.lodSelection?.[0].maxError;
60
- const transformMatrix = tile.transform;
61
64
  const type = tiles_1.TILE_TYPE.MESH;
62
65
  /**
63
66
  * I3S specification supports only REPLACE
64
67
  */
65
68
  const refine = tiles_1.TILE_REFINEMENT.REPLACE;
66
- return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, transformMatrix, type, refine };
69
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
67
70
  }
68
71
  exports.normalizeTileNonUrlData = normalizeTileNonUrlData;
69
72
  async function normalizeTilesetData(tileset, options, context) {
70
- tileset.url = context.url;
73
+ const url = context.url;
74
+ let nodePagesTile;
75
+ let root;
71
76
  if (tileset.nodePages) {
72
- tileset.nodePagesTile = new i3s_nodepages_tiles_1.default(tileset, options);
73
- tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
77
+ nodePagesTile = new i3s_nodepages_tiles_1.default(tileset, url, options);
78
+ root = await nodePagesTile.formTileFromNodePages(0);
74
79
  }
75
80
  else {
76
81
  // @ts-expect-error options is not properly typed
77
82
  const rootNodeUrl = (0, url_utils_1.getUrlWithToken)(`${tileset.url}/nodes/root`, options.i3s?.token);
78
83
  // eslint-disable-next-line no-use-before-define
79
- tileset.root = await (0, core_1.load)(rootNodeUrl, tileset.loader, {
84
+ root = await (0, core_1.load)(rootNodeUrl, i3s_loader_1.I3SLoader, {
80
85
  ...options,
81
86
  i3s: {
82
87
  // @ts-expect-error options is not properly typed
@@ -85,11 +90,15 @@ async function normalizeTilesetData(tileset, options, context) {
85
90
  }
86
91
  });
87
92
  }
88
- // base path that non-absolute paths in tileset are relative to.
89
- tileset.basePath = tileset.url;
90
- tileset.type = tiles_1.TILESET_TYPE.I3S;
91
- // populate from root node
92
- tileset.lodMetricType = tileset.root.lodMetricType;
93
- tileset.lodMetricValue = tileset.root.lodMetricValue;
93
+ return {
94
+ ...tileset,
95
+ url,
96
+ basePath: url,
97
+ type: tiles_1.TILESET_TYPE.I3S,
98
+ nodePagesTile,
99
+ root,
100
+ lodMetricType: root.lodMetricType,
101
+ lodMetricValue: root.lodMetricValue
102
+ };
94
103
  }
95
104
  exports.normalizeTilesetData = normalizeTilesetData;
@@ -1,4 +1,4 @@
1
- import { Node3DIndexDocument } from '../../types';
1
+ import { Node3DIndexDocument, SceneLayer3D } from '../../types';
2
2
  /**
3
3
  * Generates url with token if it is exists.
4
4
  * @param url
@@ -14,9 +14,10 @@ export declare function getUrlWithToken(url: string, token?: string | null): str
14
14
  export declare function generateTileAttributeUrls(url: string, tile: Node3DIndexDocument): string[];
15
15
  /**
16
16
  * Generates attribute urls for tileset based on tileset and resource
17
- * @param {Object} tileset
18
- * @param {number} resource
17
+ * @param tileset - tileset metadata
18
+ * @param url - tileset base url
19
+ * @param resource - resource id per I3S spec
19
20
  * @returns {Array}
20
21
  */
21
- export declare function generateTilesetAttributeUrls(tileset: any, resource: any): string[];
22
+ export declare function generateTilesetAttributeUrls(tileset: SceneLayer3D, url: string, resource: number): string[];
22
23
  //# sourceMappingURL=url-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAU1F;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,KAAA,EAAE,QAAQ,KAAA,YAU7D"}
1
+ {"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAU1F;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAUhG"}
@@ -28,13 +28,14 @@ function generateTileAttributeUrls(url, tile) {
28
28
  exports.generateTileAttributeUrls = generateTileAttributeUrls;
29
29
  /**
30
30
  * Generates attribute urls for tileset based on tileset and resource
31
- * @param {Object} tileset
32
- * @param {number} resource
31
+ * @param tileset - tileset metadata
32
+ * @param url - tileset base url
33
+ * @param resource - resource id per I3S spec
33
34
  * @returns {Array}
34
35
  */
35
- function generateTilesetAttributeUrls(tileset, resource) {
36
+ function generateTilesetAttributeUrls(tileset, url, resource) {
36
37
  const attributeUrls = [];
37
- const { attributeStorageInfo, url } = tileset;
38
+ const { attributeStorageInfo = [] } = tileset;
38
39
  for (let index = 0; index < attributeStorageInfo.length; index++) {
39
40
  const fileName = attributeStorageInfo[index].key;
40
41
  attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);