@loaders.gl/i3s 3.3.0-alpha.1 → 3.3.0-alpha.2

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 (47) hide show
  1. package/dist/dist.min.js +56 -49
  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 +19 -8
  6. package/dist/es5/i3s-content-loader.js.map +1 -1
  7. package/dist/es5/i3s-loader.js +36 -38
  8. package/dist/es5/i3s-loader.js.map +1 -1
  9. package/dist/es5/i3s-node-page-loader.js +1 -1
  10. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +76 -77
  11. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  12. package/dist/es5/lib/parsers/parse-i3s.js +1 -1
  13. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  14. package/dist/es5/types.js.map +1 -1
  15. package/dist/esm/arcgis-webscene-loader.js +1 -1
  16. package/dist/esm/i3s-attribute-loader.js +1 -1
  17. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  18. package/dist/esm/i3s-content-loader.js +12 -4
  19. package/dist/esm/i3s-content-loader.js.map +1 -1
  20. package/dist/esm/i3s-loader.js +8 -12
  21. package/dist/esm/i3s-loader.js.map +1 -1
  22. package/dist/esm/i3s-node-page-loader.js +1 -1
  23. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +37 -34
  24. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  25. package/dist/esm/lib/parsers/parse-i3s.js +1 -1
  26. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  27. package/dist/esm/types.js.map +1 -1
  28. package/dist/i3s-content-loader.d.ts.map +1 -1
  29. package/dist/i3s-content-loader.js +7 -3
  30. package/dist/i3s-content-worker.js +54 -46
  31. package/dist/i3s-loader.d.ts +5 -0
  32. package/dist/i3s-loader.d.ts.map +1 -1
  33. package/dist/i3s-loader.js +6 -9
  34. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +2 -2
  35. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  36. package/dist/lib/parsers/parse-i3s-tile-content.js +36 -32
  37. package/dist/lib/parsers/parse-i3s.d.ts +1 -1
  38. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  39. package/dist/lib/parsers/parse-i3s.js +1 -1
  40. package/dist/types.d.ts +41 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +8 -8
  43. package/src/i3s-content-loader.ts +17 -5
  44. package/src/i3s-loader.ts +15 -12
  45. package/src/lib/parsers/parse-i3s-tile-content.ts +46 -41
  46. package/src/lib/parsers/parse-i3s.ts +1 -1
  47. package/src/types.ts +45 -0
package/dist/dist.min.js CHANGED
@@ -262,7 +262,7 @@
262
262
  this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
263
263
  }
264
264
  static isSupported() {
265
- return typeof Worker !== "undefined" && isBrowser2 || typeof Worker2 !== void 0;
265
+ return typeof Worker !== "undefined" && isBrowser2 || typeof Worker2 !== "undefined" && !isBrowser2;
266
266
  }
267
267
  destroy() {
268
268
  this.onMessage = NOOP;
@@ -6702,6 +6702,7 @@
6702
6702
  var DEFAULT_DRACO_OPTIONS, DracoLoader;
6703
6703
  var init_draco_loader = __esm({
6704
6704
  "../draco/src/draco-loader.ts"() {
6705
+ init_src();
6705
6706
  init_version3();
6706
6707
  DEFAULT_DRACO_OPTIONS = {
6707
6708
  draco: {
@@ -6713,7 +6714,7 @@
6713
6714
  };
6714
6715
  DracoLoader = {
6715
6716
  name: "Draco",
6716
- id: "draco",
6717
+ id: isBrowser2 ? "draco" : "draco-nodejs",
6717
6718
  module: "draco",
6718
6719
  shapes: ["mesh"],
6719
6720
  version: VERSION6,
@@ -8406,11 +8407,12 @@
8406
8407
  var BasisWorkerLoader, BasisLoader;
8407
8408
  var init_basis_loader = __esm({
8408
8409
  "../textures/src/basis-loader.ts"() {
8410
+ init_src();
8409
8411
  init_version4();
8410
8412
  init_parse_basis();
8411
8413
  BasisWorkerLoader = {
8412
8414
  name: "Basis",
8413
- id: "basis",
8415
+ id: isBrowser2 ? "basis" : "basis-nodejs",
8414
8416
  module: "textures",
8415
8417
  version: VERSION7,
8416
8418
  worker: true,
@@ -9552,29 +9554,27 @@
9552
9554
  return ImageLoader;
9553
9555
  }
9554
9556
  }
9555
- async function parseI3STileContent(arrayBuffer, tile, tileset, options, context) {
9556
- tile.content = tile.content || {};
9557
- tile.content.featureIds = tile.content.featureIds || null;
9558
- tile.content.attributes = {};
9559
- if (tile.textureUrl) {
9560
- const url = getUrlWithToken(tile.textureUrl, options?.i3s?.token);
9561
- const loader = getLoaderForTextureFormat(tile.textureFormat);
9557
+ async function parseI3STileContent(arrayBuffer, tileOptions, tilesetOptions, options, context) {
9558
+ const content = defaultContent;
9559
+ if (tileOptions.textureUrl) {
9560
+ const url = getUrlWithToken(tileOptions.textureUrl, options?.i3s?.token);
9561
+ const loader = getLoaderForTextureFormat(tileOptions.textureFormat);
9562
9562
  const response = await fetch(url, options?.fetch);
9563
9563
  const arrayBuffer2 = await response.arrayBuffer();
9564
9564
  if (options?.i3s.decodeTextures) {
9565
9565
  if (loader === ImageLoader) {
9566
- const options2 = { ...tile.textureLoaderOptions, image: { type: "data" } };
9566
+ const options2 = { ...tileOptions.textureLoaderOptions, image: { type: "data" } };
9567
9567
  try {
9568
- tile.content.texture = await context.parse(arrayBuffer2, options2);
9568
+ content.texture = await context.parse(arrayBuffer2, options2);
9569
9569
  } catch (e2) {
9570
- tile.content.texture = await parse(arrayBuffer2, loader, options2);
9570
+ content.texture = await parse(arrayBuffer2, loader, options2);
9571
9571
  }
9572
9572
  } else if (loader === CompressedTextureLoader || loader === BasisLoader) {
9573
- let texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
9573
+ let texture = await load(arrayBuffer2, loader, tileOptions.textureLoaderOptions);
9574
9574
  if (loader === BasisLoader) {
9575
9575
  texture = texture[0];
9576
9576
  }
9577
- tile.content.texture = {
9577
+ content.texture = {
9578
9578
  compressed: true,
9579
9579
  mipmaps: false,
9580
9580
  width: texture[0].width,
@@ -9583,27 +9583,23 @@
9583
9583
  };
9584
9584
  }
9585
9585
  } else {
9586
- tile.content.texture = arrayBuffer2;
9586
+ content.texture = arrayBuffer2;
9587
9587
  }
9588
9588
  }
9589
- tile.content.material = makePbrMaterial(tile.materialDefinition, tile.content.texture);
9590
- if (tile.content.material) {
9591
- tile.content.texture = null;
9589
+ content.material = makePbrMaterial(tileOptions.materialDefinition, content.texture);
9590
+ if (content.material) {
9591
+ content.texture = null;
9592
9592
  }
9593
- return await parseI3SNodeGeometry(arrayBuffer, tile, tileset, options);
9593
+ return await parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options);
9594
9594
  }
9595
- async function parseI3SNodeGeometry(arrayBuffer, tile, tileset, options) {
9596
- if (!tile.content) {
9597
- return tile;
9598
- }
9599
- const content = tile.content;
9595
+ async function parseI3SNodeGeometry(arrayBuffer, content, tileOptions, tilesetOptions, options) {
9600
9596
  const contentByteLength = arrayBuffer.byteLength;
9601
9597
  let attributes;
9602
9598
  let vertexCount;
9603
9599
  let byteOffset = 0;
9604
9600
  let featureCount = 0;
9605
9601
  let indices;
9606
- if (tile.isDracoGeometry) {
9602
+ if (tileOptions.isDracoGeometry) {
9607
9603
  const decompressedGeometry = await parse(arrayBuffer, DracoLoader2, {
9608
9604
  draco: {
9609
9605
  attributeNameEntry: I3S_ATTRIBUTE_TYPE
@@ -9638,8 +9634,8 @@
9638
9634
  ordering: attributesOrder,
9639
9635
  featureAttributes,
9640
9636
  featureAttributeOrder
9641
- } = tileset.store.defaultGeometrySchema;
9642
- const headers = parseHeaders(tileset, arrayBuffer);
9637
+ } = tilesetOptions.store.defaultGeometrySchema;
9638
+ const headers = parseHeaders(arrayBuffer, tilesetOptions);
9643
9639
  byteOffset = headers.byteOffset;
9644
9640
  vertexCount = headers.vertexCount;
9645
9641
  featureCount = headers.featureCount;
@@ -9649,7 +9645,7 @@
9649
9645
  attributes = concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes);
9650
9646
  }
9651
9647
  if (!options?.i3s?.coordinateSystem || options.i3s.coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {
9652
- const enuMatrix = parsePositions(attributes.position, tile);
9648
+ const enuMatrix = parsePositions(attributes.position, tileOptions);
9653
9649
  content.modelMatrix = enuMatrix.invert();
9654
9650
  content.coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS;
9655
9651
  } else {
@@ -9665,7 +9661,7 @@
9665
9661
  };
9666
9662
  content.indices = indices || null;
9667
9663
  if (attributes.id && attributes.id.value) {
9668
- tile.content.featureIds = attributes.id.value;
9664
+ content.featureIds = attributes.id.value;
9669
9665
  }
9670
9666
  for (const attributeIndex in content.attributes) {
9671
9667
  if (!content.attributes[attributeIndex]) {
@@ -9674,7 +9670,7 @@
9674
9670
  }
9675
9671
  content.vertexCount = vertexCount;
9676
9672
  content.byteLength = contentByteLength;
9677
- return tile;
9673
+ return content;
9678
9674
  }
9679
9675
  function updateAttributesMetadata(attributes, decompressedGeometry) {
9680
9676
  for (const key in decompressedGeometry.loaderData.attributes) {
@@ -9701,11 +9697,11 @@
9701
9697
  attribute.normalized = true;
9702
9698
  return attribute;
9703
9699
  }
9704
- function parseHeaders(tileset, arrayBuffer) {
9700
+ function parseHeaders(arrayBuffer, options) {
9705
9701
  let byteOffset = 0;
9706
9702
  let vertexCount = 0;
9707
9703
  let featureCount = 0;
9708
- for (const { property, type } of tileset.store.defaultGeometrySchema.header) {
9704
+ for (const { property, type } of options.store.defaultGeometrySchema.header) {
9709
9705
  const TypedArrayTypeHeader = getConstructorForDataFormat(type);
9710
9706
  switch (property) {
9711
9707
  case HeaderAttributeProperty.vertexCount:
@@ -9775,8 +9771,8 @@
9775
9771
  }
9776
9772
  return new Uint32Array(values);
9777
9773
  }
9778
- function parsePositions(attribute, tile) {
9779
- const mbs = tile.mbs;
9774
+ function parsePositions(attribute, options) {
9775
+ const mbs = options.mbs;
9780
9776
  const value = attribute.value;
9781
9777
  const metadata = attribute.metadata;
9782
9778
  const enuMatrix = new Matrix4();
@@ -9906,7 +9902,7 @@
9906
9902
  function getFeatureIdsFromFeatureIndexMetadata(featureIndex) {
9907
9903
  return featureIndex?.metadata?.["i3s-feature-ids"]?.intArray;
9908
9904
  }
9909
- var scratchVector5, I3S_ATTRIBUTE_TYPE;
9905
+ var scratchVector5, I3S_ATTRIBUTE_TYPE, defaultContent;
9910
9906
  var init_parse_i3s_tile_content = __esm({
9911
9907
  "src/lib/parsers/parse-i3s-tile-content.ts"() {
9912
9908
  init_src3();
@@ -9920,14 +9916,28 @@
9920
9916
  init_constants2();
9921
9917
  scratchVector5 = new Vector3([0, 0, 0]);
9922
9918
  I3S_ATTRIBUTE_TYPE = "i3s-attribute-type";
9919
+ defaultContent = {
9920
+ attributes: {},
9921
+ indices: null,
9922
+ featureIds: [],
9923
+ vertexCount: 0,
9924
+ modelMatrix: new Matrix4(),
9925
+ coordinateSystem: 0,
9926
+ byteLength: 0,
9927
+ texture: null
9928
+ };
9923
9929
  }
9924
9930
  });
9925
9931
 
9926
9932
  // src/i3s-content-loader.ts
9927
9933
  async function parse3(data, options, context) {
9928
- const { tile, tileset } = options?.i3s || {};
9929
- await parseI3STileContent(data, tile, tileset, options, context);
9930
- return tile.content;
9934
+ const { tile, _tileOptions, tileset, _tilesetOptions } = options?.i3s || {};
9935
+ const tileOptions = _tileOptions || tile;
9936
+ const tilesetOptions = _tilesetOptions || tileset;
9937
+ if (!tileOptions || !tilesetOptions) {
9938
+ return null;
9939
+ }
9940
+ return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
9931
9941
  }
9932
9942
  var VERSION9, I3SContentLoader;
9933
9943
  var init_i3s_content_loader = __esm({
@@ -10658,7 +10668,7 @@
10658
10668
  });
10659
10669
 
10660
10670
  // src/lib/parsers/parse-i3s.ts
10661
- function normalizeTileData(tile, options, context) {
10671
+ function normalizeTileData(tile, context) {
10662
10672
  const url = context.url || "";
10663
10673
  let contentUrl;
10664
10674
  if (tile.geometryData) {
@@ -10742,7 +10752,7 @@
10742
10752
  });
10743
10753
 
10744
10754
  // src/i3s-loader.ts
10745
- async function parseI3S(data, options, context) {
10755
+ async function parseI3S(data, options = {}, context) {
10746
10756
  const url = context.url;
10747
10757
  options.i3s = options.i3s || {};
10748
10758
  const magicNumber = getMagicNumber(data);
@@ -10764,11 +10774,7 @@
10764
10774
  if (isTileset) {
10765
10775
  data = await parseTileset(data, options, context);
10766
10776
  } else if (isTileHeader) {
10767
- data = await parseTile(data, options, context);
10768
- if (options.i3s.loadContent) {
10769
- options.i3s.tile = data;
10770
- await load(data.contentUrl, I3SLoader, options);
10771
- }
10777
+ data = await parseTile(data, context);
10772
10778
  } else {
10773
10779
  data = await parseTileContent(data, options);
10774
10780
  }
@@ -10783,9 +10789,9 @@
10783
10789
  await normalizeTilesetData(tilesetJson, options, context);
10784
10790
  return tilesetJson;
10785
10791
  }
10786
- async function parseTile(data, options, context) {
10792
+ async function parseTile(data, context) {
10787
10793
  data = JSON.parse(new TextDecoder().decode(data));
10788
- return normalizeTileData(data, options, context);
10794
+ return normalizeTileData(data, context);
10789
10795
  }
10790
10796
  function getMagicNumber(data) {
10791
10797
  if (data instanceof ArrayBuffer) {
@@ -10814,12 +10820,13 @@
10814
10820
  extensions: ["bin"],
10815
10821
  options: {
10816
10822
  i3s: {
10817
- loadContent: true,
10818
10823
  token: null,
10819
10824
  isTileset: "auto",
10820
10825
  isTileHeader: "auto",
10821
10826
  tile: null,
10822
10827
  tileset: null,
10828
+ _tileOptions: null,
10829
+ _tilesetOptions: null,
10823
10830
  useDracoGeometry: true,
10824
10831
  useCompressedTextures: true,
10825
10832
  decodeTextures: true,
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
15
15
 
16
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'beta';
16
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'beta';
17
17
  var ArcGisWebSceneLoader = {
18
18
  name: 'ArcGIS Web Scene Loader',
19
19
  id: 'arcgis-web-scene',
@@ -24,7 +24,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
24
24
 
25
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
26
26
 
27
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'latest';
27
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'latest';
28
28
  var EMPTY_VALUE = '';
29
29
  var REJECTED_STATUS = 'rejected';
30
30
  var I3SAttributeLoader = {
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
15
15
 
16
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'beta';
16
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'beta';
17
17
  var I3SBuildingSceneLayerLoader = {
18
18
  name: 'I3S Building Scene Layer',
19
19
  id: 'i3s-building-scene-layer',
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
15
15
 
16
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'beta';
16
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'beta';
17
17
  var I3SContentLoader = {
18
18
  name: 'I3S Content (Indexed Scene Layers)',
19
19
  id: 'i3s-content',
@@ -35,20 +35,31 @@ function parse(_x, _x2, _x3) {
35
35
 
36
36
  function _parse() {
37
37
  _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options, context) {
38
- var _ref, tile, tileset;
38
+ var _ref, tile, _tileOptions, tileset, _tilesetOptions, tileOptions, tilesetOptions;
39
39
 
40
40
  return _regenerator.default.wrap(function _callee$(_context) {
41
41
  while (1) {
42
42
  switch (_context.prev = _context.next) {
43
43
  case 0:
44
- _ref = (options === null || options === void 0 ? void 0 : options.i3s) || {}, tile = _ref.tile, tileset = _ref.tileset;
45
- _context.next = 3;
46
- return (0, _parseI3sTileContent.parseI3STileContent)(data, tile, tileset, options, context);
44
+ _ref = (options === null || options === void 0 ? void 0 : options.i3s) || {}, tile = _ref.tile, _tileOptions = _ref._tileOptions, tileset = _ref.tileset, _tilesetOptions = _ref._tilesetOptions;
45
+ tileOptions = _tileOptions || tile;
46
+ tilesetOptions = _tilesetOptions || tileset;
47
47
 
48
- case 3:
49
- return _context.abrupt("return", tile.content);
48
+ if (!(!tileOptions || !tilesetOptions)) {
49
+ _context.next = 5;
50
+ break;
51
+ }
50
52
 
51
- case 4:
53
+ return _context.abrupt("return", null);
54
+
55
+ case 5:
56
+ _context.next = 7;
57
+ return (0, _parseI3sTileContent.parseI3STileContent)(data, tileOptions, tilesetOptions, options, context);
58
+
59
+ case 7:
60
+ return _context.abrupt("return", _context.sent);
61
+
62
+ case 8:
52
63
  case "end":
53
64
  return _context.stop();
54
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-content-loader.ts"],"names":["VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","i3s","tile","tileset","content"],"mappings":";;;;;;;;;;;;;AACA;;AAKA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIO,IAAMC,gBAAkC,GAAG;AAChDC,EAAAA,IAAI,EAAE,oCAD0C;AAEhDC,EAAAA,EAAE,EAAE,aAF4C;AAGhDC,EAAAA,MAAM,EAAE,KAHwC;AAIhDC,EAAAA,MAAM,EAAE,IAJwC;AAKhDC,EAAAA,OAAO,EAAEN,OALuC;AAMhDO,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANqC;AAOhDC,EAAAA,KAAK,EAALA,KAPgD;AAQhDC,EAAAA,UAAU,EAAE,CAAC,KAAD,CARoC;AAShDC,EAAAA,OAAO,EAAE;AACP,mBAAe;AADR;AATuC,CAA3C;;;SAcQF,K;;;;;qEAAf,iBAAqBG,IAArB,EAA2BD,OAA3B,EAAoDE,OAApD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,mBAC0B,CAAAF,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEG,GAAT,KAAgB,EAD1C,EACSC,IADT,QACSA,IADT,EACeC,OADf,QACeA,OADf;AAAA;AAAA,mBAEQ,8CAAoBJ,IAApB,EAA0BG,IAA1B,EAAgCC,OAAhC,EAAyCL,OAAzC,EAAkDE,OAAlD,CAFR;;AAAA;AAAA,6CAGSE,IAAI,CAACE,OAHd;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: 'i3s-content',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: LoaderOptions, context?: LoaderContext) {\n const {tile, tileset} = options?.i3s || {};\n await parseI3STileContent(data, tile, tileset, options, context);\n return tile.content;\n}\n"],"file":"i3s-content-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-content-loader.ts"],"names":["VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","i3s","tile","_tileOptions","tileset","_tilesetOptions","tileOptions","tilesetOptions"],"mappings":";;;;;;;;;;;;;AAEA;;AAMA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIO,IAAMC,gBAAkC,GAAG;AAChDC,EAAAA,IAAI,EAAE,oCAD0C;AAEhDC,EAAAA,EAAE,EAAE,aAF4C;AAGhDC,EAAAA,MAAM,EAAE,KAHwC;AAIhDC,EAAAA,MAAM,EAAE,IAJwC;AAKhDC,EAAAA,OAAO,EAAEN,OALuC;AAMhDO,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANqC;AAOhDC,EAAAA,KAAK,EAALA,KAPgD;AAQhDC,EAAAA,UAAU,EAAE,CAAC,KAAD,CARoC;AAShDC,EAAAA,OAAO,EAAE;AACP,mBAAe;AADR;AATuC,CAA3C;;;SAcQF,K;;;;;qEAAf,iBAAqBG,IAArB,EAA2BD,OAA3B,EAAuDE,OAAvD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,mBACyD,CAAAF,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEG,GAAT,KAAgB,EADzE,EACSC,IADT,QACSA,IADT,EACeC,YADf,QACeA,YADf,EAC6BC,OAD7B,QAC6BA,OAD7B,EACsCC,eADtC,QACsCA,eADtC;AAEQC,YAAAA,WAFR,GAEsBH,YAAY,IAAID,IAFtC;AAGQK,YAAAA,cAHR,GAGyBF,eAAe,IAAID,OAH5C;;AAAA,kBAIM,CAACE,WAAD,IAAgB,CAACC,cAJvB;AAAA;AAAA;AAAA;;AAAA,6CAKW,IALX;;AAAA;AAAA;AAAA,mBAOe,8CACXR,IADW,EAEXO,WAFW,EAGXC,cAHW,EAIXT,OAJW,EAKXE,OALW,CAPf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import type {LoaderWithParser, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {I3SLoaderOptions} from './i3s-loader';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\nimport {I3STileOptions, I3STilesetOptions} from './types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: 'i3s-content',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: I3SLoaderOptions, context?: LoaderContext) {\n const {tile, _tileOptions, tileset, _tilesetOptions} = options?.i3s || {};\n const tileOptions = _tileOptions || tile;\n const tilesetOptions = _tilesetOptions || tileset;\n if (!tileOptions || !tilesetOptions) {\n return null;\n }\n return await parseI3STileContent(\n data,\n tileOptions as I3STileOptions,\n tilesetOptions as I3STilesetOptions,\n options,\n context\n );\n}\n"],"file":"i3s-content-loader.js"}
@@ -21,7 +21,7 @@ var _parseI3s = require("./lib/parsers/parse-i3s");
21
21
 
22
22
  var _constants = require("./lib/parsers/constants");
23
23
 
24
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'latest';
24
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'latest';
25
25
  var TILESET_REGEX = /layers\/[0-9]+$/;
26
26
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
27
27
  var SLPK_HEX = '504b0304';
@@ -35,12 +35,13 @@ var I3SLoader = {
35
35
  extensions: ['bin'],
36
36
  options: {
37
37
  i3s: {
38
- loadContent: true,
39
38
  token: null,
40
39
  isTileset: 'auto',
41
40
  isTileHeader: 'auto',
42
41
  tile: null,
43
42
  tileset: null,
43
+ _tileOptions: null,
44
+ _tilesetOptions: null,
44
45
  useDracoGeometry: true,
45
46
  useCompressedTextures: true,
46
47
  decodeTextures: true,
@@ -50,29 +51,37 @@ var I3SLoader = {
50
51
  };
51
52
  exports.I3SLoader = I3SLoader;
52
53
 
53
- function parseI3S(_x, _x2, _x3) {
54
+ function parseI3S(_x) {
54
55
  return _parseI3S.apply(this, arguments);
55
56
  }
56
57
 
57
58
  function _parseI3S() {
58
- _parseI3S = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options, context) {
59
- var url, magicNumber, isTileset, isTileHeader;
59
+ _parseI3S = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
60
+ var options,
61
+ context,
62
+ url,
63
+ magicNumber,
64
+ isTileset,
65
+ isTileHeader,
66
+ _args = arguments;
60
67
  return _regenerator.default.wrap(function _callee$(_context) {
61
68
  while (1) {
62
69
  switch (_context.prev = _context.next) {
63
70
  case 0:
71
+ options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
72
+ context = _args.length > 2 ? _args[2] : undefined;
64
73
  url = context.url;
65
74
  options.i3s = options.i3s || {};
66
75
  magicNumber = getMagicNumber(data);
67
76
 
68
77
  if (!(magicNumber === SLPK_HEX)) {
69
- _context.next = 5;
78
+ _context.next = 7;
70
79
  break;
71
80
  }
72
81
 
73
82
  throw new Error('Files with .slpk extention currently are not supported by I3SLoader');
74
83
 
75
- case 5:
84
+ case 7:
76
85
  if (options.i3s.isTileset === 'auto') {
77
86
  isTileset = TILESET_REGEX.test(url);
78
87
  } else {
@@ -86,54 +95,43 @@ function _parseI3S() {
86
95
  }
87
96
 
88
97
  if (!isTileset) {
89
- _context.next = 13;
98
+ _context.next = 15;
90
99
  break;
91
100
  }
92
101
 
93
- _context.next = 10;
102
+ _context.next = 12;
94
103
  return parseTileset(data, options, context);
95
104
 
96
- case 10:
105
+ case 12:
97
106
  data = _context.sent;
98
- _context.next = 26;
107
+ _context.next = 24;
99
108
  break;
100
109
 
101
- case 13:
110
+ case 15:
102
111
  if (!isTileHeader) {
103
- _context.next = 23;
104
- break;
105
- }
106
-
107
- _context.next = 16;
108
- return parseTile(data, options, context);
109
-
110
- case 16:
111
- data = _context.sent;
112
-
113
- if (!options.i3s.loadContent) {
114
112
  _context.next = 21;
115
113
  break;
116
114
  }
117
115
 
118
- options.i3s.tile = data;
119
- _context.next = 21;
120
- return (0, _core.load)(data.contentUrl, I3SLoader, options);
116
+ _context.next = 18;
117
+ return parseTile(data, context);
121
118
 
122
- case 21:
123
- _context.next = 26;
119
+ case 18:
120
+ data = _context.sent;
121
+ _context.next = 24;
124
122
  break;
125
123
 
126
- case 23:
127
- _context.next = 25;
124
+ case 21:
125
+ _context.next = 23;
128
126
  return parseTileContent(data, options);
129
127
 
130
- case 25:
128
+ case 23:
131
129
  data = _context.sent;
132
130
 
133
- case 26:
131
+ case 24:
134
132
  return _context.abrupt("return", data);
135
133
 
136
- case 27:
134
+ case 25:
137
135
  case "end":
138
136
  return _context.stop();
139
137
  }
@@ -143,7 +141,7 @@ function _parseI3S() {
143
141
  return _parseI3S.apply(this, arguments);
144
142
  }
145
143
 
146
- function parseTileContent(_x4, _x5) {
144
+ function parseTileContent(_x2, _x3) {
147
145
  return _parseTileContent.apply(this, arguments);
148
146
  }
149
147
 
@@ -169,7 +167,7 @@ function _parseTileContent() {
169
167
  return _parseTileContent.apply(this, arguments);
170
168
  }
171
169
 
172
- function parseTileset(_x6, _x7, _x8) {
170
+ function parseTileset(_x4, _x5, _x6) {
173
171
  return _parseTileset.apply(this, arguments);
174
172
  }
175
173
 
@@ -198,18 +196,18 @@ function _parseTileset() {
198
196
  return _parseTileset.apply(this, arguments);
199
197
  }
200
198
 
201
- function parseTile(_x9, _x10, _x11) {
199
+ function parseTile(_x7, _x8) {
202
200
  return _parseTile.apply(this, arguments);
203
201
  }
204
202
 
205
203
  function _parseTile() {
206
- _parseTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(data, options, context) {
204
+ _parseTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(data, context) {
207
205
  return _regenerator.default.wrap(function _callee4$(_context4) {
208
206
  while (1) {
209
207
  switch (_context4.prev = _context4.next) {
210
208
  case 0:
211
209
  data = JSON.parse(new TextDecoder().decode(data));
212
- return _context4.abrupt("return", (0, _parseI3s.normalizeTileData)(data, options, context));
210
+ return _context4.abrupt("return", (0, _parseI3s.normalizeTileData)(data, context));
213
211
 
214
212
  case 2:
215
213
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-loader.ts"],"names":["VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parse","parseI3S","extensions","options","i3s","loadContent","token","isTileset","isTileHeader","tile","tileset","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","contentUrl","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load, parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n loadContent: true,\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS\n }\n }\n};\n\nasync function parseI3S(data, options, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, options, context);\n if (options.i3s.loadContent) {\n options.i3s.tile = data;\n await load(data.contentUrl, I3SLoader, options);\n }\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, options, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, options, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-loader.ts"],"names":["VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parse","parseI3S","extensions","options","i3s","token","isTileset","isTileHeader","tile","tileset","_tileOptions","_tilesetOptions","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\nimport {I3SParseOptions} from './types';\nimport {LoaderOptions} from './../../loader-utils/src/types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\nexport type I3SLoaderOptions = LoaderOptions & {\n i3s?: I3SParseOptions;\n};\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n _tileOptions: null,\n _tilesetOptions: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS\n }\n }\n};\n\nasync function parseI3S(data, options: I3SLoaderOptions = {}, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, context);\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options: I3SLoaderOptions) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options: I3SLoaderOptions, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
- var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'latest';
14
+ var VERSION = typeof "3.3.0-alpha.2" !== 'undefined' ? "3.3.0-alpha.2" : 'latest';
15
15
 
16
16
  function parseNodePage(_x) {
17
17
  return _parseNodePage.apply(this, arguments);