@loaders.gl/i3s 3.3.0-alpha.8 → 3.3.1

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 (49) hide show
  1. package/dist/dist.min.js +76 -67
  2. package/dist/es5/arcgis-webscene-loader.js +1 -1
  3. package/dist/es5/arcgis-webscene-loader.js.map +1 -1
  4. package/dist/es5/i3s-attribute-loader.js +1 -1
  5. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  6. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  7. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  8. package/dist/es5/i3s-content-loader.js +1 -1
  9. package/dist/es5/i3s-content-loader.js.map +1 -1
  10. package/dist/es5/i3s-loader.js +11 -4
  11. package/dist/es5/i3s-loader.js.map +1 -1
  12. package/dist/es5/i3s-node-page-loader.js +1 -1
  13. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  14. package/dist/es5/lib/parsers/constants.js +1 -1
  15. package/dist/es5/lib/parsers/constants.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +1 -1
  17. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  18. package/dist/es5/types.js.map +1 -1
  19. package/dist/esm/arcgis-webscene-loader.js +1 -1
  20. package/dist/esm/arcgis-webscene-loader.js.map +1 -1
  21. package/dist/esm/i3s-attribute-loader.js +1 -1
  22. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  23. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  24. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  25. package/dist/esm/i3s-content-loader.js +1 -1
  26. package/dist/esm/i3s-content-loader.js.map +1 -1
  27. package/dist/esm/i3s-loader.js +5 -1
  28. package/dist/esm/i3s-loader.js.map +1 -1
  29. package/dist/esm/i3s-node-page-loader.js +1 -1
  30. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  31. package/dist/esm/lib/parsers/constants.js +1 -1
  32. package/dist/esm/lib/parsers/constants.js.map +1 -1
  33. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +1 -1
  34. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  35. package/dist/esm/types.js.map +1 -1
  36. package/dist/i3s-content-nodejs-worker.js +58 -58
  37. package/dist/i3s-content-nodejs-worker.js.map +3 -3
  38. package/dist/i3s-content-worker.js +53 -55
  39. package/dist/i3s-loader.d.ts.map +1 -1
  40. package/dist/i3s-loader.js +4 -0
  41. package/dist/lib/parsers/constants.js +1 -1
  42. package/dist/lib/parsers/parse-i3s-tile-content.js +1 -1
  43. package/dist/types.d.ts +89 -2
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +8 -8
  46. package/src/i3s-loader.ts +5 -0
  47. package/src/lib/parsers/constants.ts +1 -1
  48. package/src/lib/parsers/parse-i3s-tile-content.ts +1 -1
  49. package/src/types.ts +95 -2
package/dist/dist.min.js CHANGED
@@ -145,11 +145,13 @@
145
145
  }
146
146
  });
147
147
 
148
- // ../worker-utils/src/lib/node/worker_threads-browser.js
148
+ // ../worker-utils/src/lib/node/worker_threads-browser.ts
149
149
  var Worker2;
150
150
  var init_worker_threads_browser = __esm({
151
- "../worker-utils/src/lib/node/worker_threads-browser.js"() {
151
+ "../worker-utils/src/lib/node/worker_threads-browser.ts"() {
152
152
  Worker2 = class {
153
+ terminate() {
154
+ }
153
155
  };
154
156
  }
155
157
  });
@@ -536,7 +538,7 @@
536
538
  var init_get_worker_url = __esm({
537
539
  "../worker-utils/src/lib/worker-api/get-worker-url.ts"() {
538
540
  init_assert2();
539
- NPM_TAG = "beta";
541
+ NPM_TAG = "latest";
540
542
  }
541
543
  });
542
544
 
@@ -634,7 +636,7 @@
634
636
  node = __toModule(require_require_utils());
635
637
  init_assert2();
636
638
  init_version();
637
- LATEST = "beta";
639
+ LATEST = "latest";
638
640
  VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
639
641
  loadLibraryPromises = {};
640
642
  }
@@ -707,46 +709,7 @@
707
709
  }
708
710
  });
709
711
 
710
- // ../loader-utils/src/lib/binary-utils/buffer-utils.ts
711
- function isBuffer(value) {
712
- return value && typeof value === "object" && value.isBuffer;
713
- }
714
- function bufferToArrayBuffer(buffer) {
715
- if (isBuffer(buffer)) {
716
- const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
717
- return typedArray.slice().buffer;
718
- }
719
- return buffer;
720
- }
721
- var init_buffer_utils = __esm({
722
- "../loader-utils/src/lib/binary-utils/buffer-utils.ts"() {
723
- }
724
- });
725
-
726
712
  // ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts
727
- function toArrayBuffer(data) {
728
- if (isBuffer(data)) {
729
- return bufferToArrayBuffer(data);
730
- }
731
- if (data instanceof ArrayBuffer) {
732
- return data;
733
- }
734
- if (ArrayBuffer.isView(data)) {
735
- if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
736
- return data.buffer;
737
- }
738
- return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
739
- }
740
- if (typeof data === "string") {
741
- const text = data;
742
- const uint8Array = new TextEncoder().encode(text);
743
- return uint8Array.buffer;
744
- }
745
- if (data && typeof data === "object" && data._toArrayBuffer) {
746
- return data._toArrayBuffer();
747
- }
748
- throw new Error("toArrayBuffer");
749
- }
750
713
  function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {
751
714
  byteLength = byteLength || arrayBuffer1.byteLength;
752
715
  if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {
@@ -774,7 +737,6 @@
774
737
  }
775
738
  var init_array_buffer_utils = __esm({
776
739
  "../loader-utils/src/lib/binary-utils/array-buffer-utils.ts"() {
777
- init_buffer_utils();
778
740
  }
779
741
  });
780
742
 
@@ -856,6 +818,45 @@
856
818
  }
857
819
  });
858
820
 
821
+ // (disabled):../loader-utils/src/lib/node/buffer
822
+ var init_buffer = __esm({
823
+ "(disabled):../loader-utils/src/lib/node/buffer"() {
824
+ }
825
+ });
826
+
827
+ // ../loader-utils/src/lib/binary-utils/memory-conversion-utils.ts
828
+ function isBuffer(value) {
829
+ return value && typeof value === "object" && value.isBuffer;
830
+ }
831
+ function toArrayBuffer2(data) {
832
+ if (isBuffer(data)) {
833
+ return node2.toArrayBuffer(data);
834
+ }
835
+ if (data instanceof ArrayBuffer) {
836
+ return data;
837
+ }
838
+ if (ArrayBuffer.isView(data)) {
839
+ if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
840
+ return data.buffer;
841
+ }
842
+ return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
843
+ }
844
+ if (typeof data === "string") {
845
+ const text = data;
846
+ const uint8Array = new TextEncoder().encode(text);
847
+ return uint8Array.buffer;
848
+ }
849
+ if (data && typeof data === "object" && data._toArrayBuffer) {
850
+ return data._toArrayBuffer();
851
+ }
852
+ throw new Error("toArrayBuffer");
853
+ }
854
+ var init_memory_conversion_utils = __esm({
855
+ "../loader-utils/src/lib/binary-utils/memory-conversion-utils.ts"() {
856
+ init_buffer();
857
+ }
858
+ });
859
+
859
860
  // ../loader-utils/src/lib/path-utils/path.ts
860
861
  var path_exports = {};
861
862
  __export(path_exports, {
@@ -899,6 +900,7 @@
899
900
  init_async_iteration();
900
901
  init_file_aliases();
901
902
  init_json_loader();
903
+ init_memory_conversion_utils();
902
904
  init_path();
903
905
  }
904
906
  });
@@ -2260,7 +2262,7 @@
2260
2262
  if (done) {
2261
2263
  return;
2262
2264
  }
2263
- yield toArrayBuffer(value);
2265
+ yield toArrayBuffer2(value);
2264
2266
  }
2265
2267
  } catch (error) {
2266
2268
  reader.releaseLock();
@@ -2268,7 +2270,7 @@
2268
2270
  }
2269
2271
  async function* makeNodeStreamIterator(stream, options) {
2270
2272
  for await (const chunk of stream) {
2271
- yield toArrayBuffer(chunk);
2273
+ yield toArrayBuffer2(chunk);
2272
2274
  }
2273
2275
  }
2274
2276
  var init_make_stream_iterator = __esm({
@@ -7274,15 +7276,17 @@
7274
7276
  });
7275
7277
  });
7276
7278
  }
7277
- var DRACO_VERSION, DRACO_JS_DECODER_URL, DRACO_WASM_WRAPPER_URL, DRACO_WASM_DECODER_URL, DRACO_ENCODER_URL, loadDecoderPromise;
7279
+ 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;
7278
7280
  var init_draco_module_loader = __esm({
7279
7281
  "../draco/src/lib/draco-module-loader.ts"() {
7280
7282
  init_src();
7281
- DRACO_VERSION = "1.4.1";
7282
- DRACO_JS_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.js`;
7283
- DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_wasm_wrapper.js`;
7284
- DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
7285
- DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
7283
+ DRACO_DECODER_VERSION = "1.5.5";
7284
+ DRACO_ENCODER_VERSION = "1.4.1";
7285
+ STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
7286
+ DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;
7287
+ DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;
7288
+ DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;
7289
+ DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;
7286
7290
  }
7287
7291
  });
7288
7292
 
@@ -7853,6 +7857,7 @@
7853
7857
  height,
7854
7858
  data: decodedData,
7855
7859
  compressed,
7860
+ levelSize: decodedSize,
7856
7861
  hasAlpha: alphaFlag,
7857
7862
  format
7858
7863
  };
@@ -9060,7 +9065,7 @@
9060
9065
  init_types();
9061
9066
  GL_TYPE_MAP = {
9062
9067
  UInt8: esm_default2.UNSIGNED_BYTE,
9063
- UInt16: esm_default2.UNSIGNED_INT,
9068
+ UInt16: esm_default2.UNSIGNED_SHORT,
9064
9069
  Float32: esm_default2.FLOAT,
9065
9070
  UInt32: esm_default2.UNSIGNED_INT,
9066
9071
  UInt64: esm_default2.DOUBLE
@@ -9449,7 +9454,7 @@
9449
9454
  normals: attributes.normal,
9450
9455
  colors: normalizeAttribute(attributes.color),
9451
9456
  texCoords: attributes.uv0,
9452
- uvRegions: normalizeAttribute(attributes.uvRegion)
9457
+ uvRegions: normalizeAttribute(attributes.uvRegion || attributes.region)
9453
9458
  };
9454
9459
  content.indices = indices || null;
9455
9460
  if (attributes.id && attributes.id.value) {
@@ -10395,10 +10400,10 @@
10395
10400
  return this.nodePages[pageIndex].nodes[nodeIndex];
10396
10401
  }
10397
10402
  async formTileFromNodePages(id) {
10398
- const node2 = await this.getNodeById(id);
10403
+ const node3 = await this.getNodeById(id);
10399
10404
  const children = [];
10400
10405
  const childNodesPromises = [];
10401
- for (const child of node2.children || []) {
10406
+ for (const child of node3.children || []) {
10402
10407
  childNodesPromises.push(this.getNodeById(child));
10403
10408
  }
10404
10409
  const childNodes = await Promise.all(childNodesPromises);
@@ -10414,25 +10419,25 @@
10414
10419
  let textureFormat = "jpg";
10415
10420
  let attributeUrls = [];
10416
10421
  let isDracoGeometry = false;
10417
- if (node2 && node2.mesh) {
10418
- const { url, isDracoGeometry: isDracoGeometryResult } = node2.mesh.geometry && this.getContentUrl(node2.mesh.geometry) || { isDracoGeometry: false };
10422
+ if (node3 && node3.mesh) {
10423
+ const { url, isDracoGeometry: isDracoGeometryResult } = node3.mesh.geometry && this.getContentUrl(node3.mesh.geometry) || { isDracoGeometry: false };
10419
10424
  contentUrl = url;
10420
10425
  isDracoGeometry = isDracoGeometryResult;
10421
- const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node2.mesh.material);
10426
+ const { textureData, materialDefinition: nodeMaterialDefinition } = this.getInformationFromMaterial(node3.mesh.material);
10422
10427
  materialDefinition = nodeMaterialDefinition;
10423
10428
  textureFormat = textureData.format || textureFormat;
10424
10429
  if (textureData.name) {
10425
- textureUrl = `${this.tileset.url}/nodes/${node2.mesh.material.resource}/textures/${textureData.name}`;
10430
+ textureUrl = `${this.tileset.url}/nodes/${node3.mesh.material.resource}/textures/${textureData.name}`;
10426
10431
  }
10427
10432
  if (this.tileset.attributeStorageInfo) {
10428
- attributeUrls = generateTilesetAttributeUrls(this.tileset, node2.mesh.attribute.resource);
10433
+ attributeUrls = generateTilesetAttributeUrls(this.tileset, node3.mesh.attribute.resource);
10429
10434
  }
10430
10435
  }
10431
- const lodSelection = this.getLodSelection(node2);
10436
+ const lodSelection = this.getLodSelection(node3);
10432
10437
  return normalizeTileNonUrlData({
10433
10438
  id: id.toString(),
10434
10439
  lodSelection,
10435
- obb: node2.obb,
10440
+ obb: node3.obb,
10436
10441
  contentUrl,
10437
10442
  textureUrl,
10438
10443
  attributeUrls,
@@ -10462,17 +10467,17 @@
10462
10467
  }
10463
10468
  return result;
10464
10469
  }
10465
- getLodSelection(node2) {
10470
+ getLodSelection(node3) {
10466
10471
  const lodSelection = [];
10467
10472
  if (this.lodSelectionMetricType === "maxScreenThresholdSQ") {
10468
10473
  lodSelection.push({
10469
10474
  metricType: "maxScreenThreshold",
10470
- maxError: Math.sqrt(node2.lodThreshold / (Math.PI * 0.25))
10475
+ maxError: Math.sqrt(node3.lodThreshold / (Math.PI * 0.25))
10471
10476
  });
10472
10477
  }
10473
10478
  lodSelection.push({
10474
10479
  metricType: this.lodSelectionMetricType,
10475
- maxError: node2.lodThreshold
10480
+ maxError: node3.lodThreshold
10476
10481
  });
10477
10482
  return lodSelection;
10478
10483
  }
@@ -10652,6 +10657,9 @@
10652
10657
  }
10653
10658
  async function parseTileset(data, options, context) {
10654
10659
  const tilesetJson = JSON.parse(new TextDecoder().decode(data));
10660
+ if (tilesetJson?.layerType === POINT_CLOUD) {
10661
+ throw new Error("Point Cloud layers currently are not supported by I3SLoader");
10662
+ }
10655
10663
  tilesetJson.loader = I3SLoader;
10656
10664
  await normalizeTilesetData(tilesetJson, options, context);
10657
10665
  return tilesetJson;
@@ -10666,7 +10674,7 @@
10666
10674
  }
10667
10675
  return null;
10668
10676
  }
10669
- var VERSION12, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, I3SLoader;
10677
+ var VERSION12, TILESET_REGEX, TILE_HEADER_REGEX, SLPK_HEX, POINT_CLOUD, I3SLoader;
10670
10678
  var init_i3s_loader = __esm({
10671
10679
  "src/i3s-loader.ts"() {
10672
10680
  init_src3();
@@ -10677,6 +10685,7 @@
10677
10685
  TILESET_REGEX = /layers\/[0-9]+$/;
10678
10686
  TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
10679
10687
  SLPK_HEX = "504b0304";
10688
+ POINT_CLOUD = "PointCloud";
10680
10689
  I3SLoader = {
10681
10690
  name: "I3S (Indexed Scene Layers)",
10682
10691
  id: "i3s",
@@ -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 "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'beta';
11
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'beta';
12
12
 
13
13
  var ArcGisWebSceneLoader = {
14
14
  name: 'ArcGIS Web Scene Loader',
@@ -1 +1 @@
1
- {"version":3,"file":"arcgis-webscene-loader.js","names":["VERSION","ArcGisWebSceneLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","parseWebscene"],"sources":["../../src/arcgis-webscene-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ArcGisWebSceneData} from './types';\n\nimport {parseWebscene} from './lib/parsers/parse-arcgis-webscene';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n/**\n * Loader for ArcGis WebScene\n * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/\n */\nexport const ArcGisWebSceneLoader: LoaderWithParser = {\n name: 'ArcGIS Web Scene Loader',\n id: 'arcgis-web-scene',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\n/**\n * Parse ArcGis webscene\n * @param data\n */\nasync function parse(data: ArrayBuffer): Promise<ArcGisWebSceneData> {\n return parseWebscene(data);\n}\n"],"mappings":";;;;;;;;;AAGA;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM;;AAMlE,IAAMC,oBAAsC,GAAG;EACpDC,IAAI,EAAE,yBAAyB;EAC/BC,EAAE,EAAE,kBAAkB;EACtBC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;;AAAC;AAAA,SAMaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBAAqBG,IAAiB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAC7B,IAAAC,kCAAa,EAACD,IAAI,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAC3B;EAAA;AAAA"}
1
+ {"version":3,"file":"arcgis-webscene-loader.js","names":["VERSION","ArcGisWebSceneLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","parseWebscene"],"sources":["../../src/arcgis-webscene-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ArcGisWebSceneData} from './types';\n\nimport {parseWebscene} from './lib/parsers/parse-arcgis-webscene';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n/**\n * Loader for ArcGis WebScene\n * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/\n */\nexport const ArcGisWebSceneLoader: LoaderWithParser = {\n name: 'ArcGIS Web Scene Loader',\n id: 'arcgis-web-scene',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\n/**\n * Parse ArcGis webscene\n * @param data\n */\nasync function parse(data: ArrayBuffer): Promise<ArcGisWebSceneData> {\n return parseWebscene(data);\n}\n"],"mappings":";;;;;;;;;AAGA;AAIA,IAAMA,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,MAAM;;AAMlE,IAAMC,oBAAsC,GAAG;EACpDC,IAAI,EAAE,yBAAyB;EAC/BC,EAAE,EAAE,kBAAkB;EACtBC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;;AAAC;AAAA,SAMaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBAAqBG,IAAiB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAC7B,IAAAC,kCAAa,EAACD,IAAI,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAC3B;EAAA;AAAA"}
@@ -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 "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
18
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'latest';
19
19
  var EMPTY_VALUE = '';
20
20
  var REJECTED_STATUS = 'rejected';
21
21
  var I3SAttributeLoader = {
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-attribute-loader.js","names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","parseI3STileAttribute","loadFeatureAttributes","tile","featureId","getAttributesData","attributeStorageInfo","attributeUrls","tilesetFields","attributes","attributeLoadPromises","index","length","url","getUrlWithToken","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","load","push","Promise","allSettled","generateAttributesByFeatureId","tileset","header","fields","attribute","hasOwnProperty","attributeValues","valueType","getFeatureIdsAttributeName","objectIdsAttribute","find","includes","objectIdsAttributeName","objectIds","value","attributeIndex","indexOf","getFeatureAttributesByIndex","featureIdIndex","attributesObject","codedValues","getAttributeCodedValues","getAttributeByIndexAndAttributeName","formatAttributeValue","attributeField","field","alias","domain","attributesName","attributeObject","status","String","replace","trim","codeValue","codedValue","code","Number"],"sources":["../../src/i3s-attribute-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load} from '@loaders.gl/core';\nimport {parseI3STileAttribute} from './lib/parsers/parse-i3s-attribute';\nimport {getUrlWithToken} from './lib/utils/url-utils';\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';\nconst EMPTY_VALUE = '';\nconst REJECTED_STATUS = 'rejected';\n/**\n * Loader for I3S attributes\n */\nexport const I3SAttributeLoader: LoaderWithParser = {\n name: 'I3S Attribute',\n id: 'i3s-attribute',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/binary'],\n parse,\n extensions: ['bin'],\n options: {},\n binary: true\n};\n\nasync function parse(data, options) {\n data = parseI3STileAttribute(data, options);\n return data;\n}\n\n/**\n * Load attributes based on feature id\n * @param {Object} tile\n * @param {number} featureId\n * @param {Object} options\n * @returns {Promise}\n */\n// eslint-disable-next-line complexity\nexport async function loadFeatureAttributes(tile, featureId, options = {}) {\n const {attributeStorageInfo, attributeUrls, tilesetFields} = getAttributesData(tile);\n\n if (!attributeStorageInfo || !attributeUrls || featureId < 0) {\n return null;\n }\n\n let attributes: object[] = [];\n const attributeLoadPromises: Promise<object>[] = [];\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n // @ts-ignore\n const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);\n const attributeName = attributeStorageInfo[index].name;\n const attributeType = getAttributeValueType(attributeStorageInfo[index]);\n const loadOptions = {...options, attributeName, attributeType};\n const promise = load(url, I3SAttributeLoader, loadOptions);\n\n attributeLoadPromises.push(promise);\n }\n try {\n attributes = await Promise.allSettled(attributeLoadPromises);\n } catch (error) {\n // do nothing\n }\n\n if (!attributes.length) {\n return null;\n }\n\n return generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields);\n}\n\n/**\n * Gets attributes data from tile.\n * @param tile \n * @returns \n */\nfunction getAttributesData(tile) {\n const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;\n const attributeUrls = tile.header?.attributeUrls;\n const tilesetFields = tile.tileset?.tileset?.fields || [];\n\n return {attributeStorageInfo, attributeUrls, tilesetFields};\n}\n\n/**\n * Get attribute value type based on property names\n * @param {Object} attribute\n * @returns {String}\n */\nexport function getAttributeValueType(attribute) {\n if (attribute.hasOwnProperty('objectIds')) {\n return 'Oid32';\n } else if (attribute.hasOwnProperty('attributeValues')) {\n return attribute.attributeValues.valueType;\n }\n return '';\n}\n\n/**\n * Find in attributeStorageInfo attribute name responsible for feature ids list.\n * @param attributeStorageInfo \n * @returns Feature ids attribute name\n */\nfunction getFeatureIdsAttributeName(attributeStorageInfo) {\n const objectIdsAttribute = attributeStorageInfo.find(attribute => attribute.name.includes('OBJECTID'));\n\n return objectIdsAttribute?.name;\n}\n\n/**\n * Generates mapping featureId to feature attributes\n * @param {Array} attributes\n * @param {Object} attributeStorageInfo\n * @param {number} featureId\n * @returns {Object}\n */\nfunction generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields) {\n const objectIdsAttributeName = getFeatureIdsAttributeName(attributeStorageInfo);\n const objectIds = attributes.find((attribute) => attribute.value[objectIdsAttributeName]);\n\n if (!objectIds) {\n return null;\n }\n\n const attributeIndex = objectIds.value[objectIdsAttributeName].indexOf(featureId);\n\n if (attributeIndex < 0) {\n return null;\n }\n\n return getFeatureAttributesByIndex(attributes, attributeIndex, attributeStorageInfo, tilesetFields);\n}\n\n/**\n * Generates attribute object for feature mapping by feature id\n * @param {Array} attributes\n * @param {Number} featureIdIndex\n * @param {Object} attributeStorageInfo\n * @returns {Object}\n */\nfunction getFeatureAttributesByIndex(attributes, featureIdIndex, attributeStorageInfo, tilesetFields) {\n const attributesObject = {};\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n const attributeName = attributeStorageInfo[index].name;\n const codedValues = getAttributeCodedValues(attributeName, tilesetFields);\n const attribute = getAttributeByIndexAndAttributeName(attributes, index, attributeName);\n attributesObject[attributeName] = formatAttributeValue(attribute, featureIdIndex, codedValues);\n }\n\n return attributesObject;\n}\n\n/**\n * Get coded values list from tileset.\n * @param attributeName \n * @param tilesetFields \n */\nfunction getAttributeCodedValues(attributeName, tilesetFields) {\n const attributeField = tilesetFields\n .find(field => field.name === attributeName || field.alias === attributeName);\n\n return attributeField?.domain?.codedValues || [];\n}\n\n/**\n * Return attribute value if it presents in atrributes list\n * @param {array} attributes\n * @param {number} index\n * @param {string} attributesName\n */\nfunction getAttributeByIndexAndAttributeName(attributes, index, attributesName) {\n const attributeObject = attributes[index];\n\n if (attributeObject.status === REJECTED_STATUS) {\n return null;\n }\n\n return attributeObject.value[attributesName];\n}\n\n/**\n * Do formatting of attribute values or return empty string.\n * @param {Array} attribute\n * @param {Number} featureIdIndex\n * @returns {String}\n */\nfunction formatAttributeValue(attribute, featureIdIndex, codedValues) {\n let value = EMPTY_VALUE;\n\n if (attribute && (featureIdIndex in attribute)) {\n // eslint-disable-next-line no-control-regex\n value = String(attribute[featureIdIndex]).replace(/\\u0000|NaN/g, '').trim();\n }\n\n // Check if coded values are existed. If so we use them.\n if (codedValues.length) {\n const codeValue = codedValues.find(codedValue => codedValue.code === Number(value));\n value = codeValue?.name || EMPTY_VALUE;\n }\n\n return value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"i3s-attribute-loader.js","names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","parseI3STileAttribute","loadFeatureAttributes","tile","featureId","getAttributesData","attributeStorageInfo","attributeUrls","tilesetFields","attributes","attributeLoadPromises","index","length","url","getUrlWithToken","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","load","push","Promise","allSettled","generateAttributesByFeatureId","tileset","header","fields","attribute","hasOwnProperty","attributeValues","valueType","getFeatureIdsAttributeName","objectIdsAttribute","find","includes","objectIdsAttributeName","objectIds","value","attributeIndex","indexOf","getFeatureAttributesByIndex","featureIdIndex","attributesObject","codedValues","getAttributeCodedValues","getAttributeByIndexAndAttributeName","formatAttributeValue","attributeField","field","alias","domain","attributesName","attributeObject","status","String","replace","trim","codeValue","codedValue","code","Number"],"sources":["../../src/i3s-attribute-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load} from '@loaders.gl/core';\nimport {parseI3STileAttribute} from './lib/parsers/parse-i3s-attribute';\nimport {getUrlWithToken} from './lib/utils/url-utils';\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';\nconst EMPTY_VALUE = '';\nconst REJECTED_STATUS = 'rejected';\n/**\n * Loader for I3S attributes\n */\nexport const I3SAttributeLoader: LoaderWithParser = {\n name: 'I3S Attribute',\n id: 'i3s-attribute',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/binary'],\n parse,\n extensions: ['bin'],\n options: {},\n binary: true\n};\n\nasync function parse(data, options) {\n data = parseI3STileAttribute(data, options);\n return data;\n}\n\n/**\n * Load attributes based on feature id\n * @param {Object} tile\n * @param {number} featureId\n * @param {Object} options\n * @returns {Promise}\n */\n// eslint-disable-next-line complexity\nexport async function loadFeatureAttributes(tile, featureId, options = {}) {\n const {attributeStorageInfo, attributeUrls, tilesetFields} = getAttributesData(tile);\n\n if (!attributeStorageInfo || !attributeUrls || featureId < 0) {\n return null;\n }\n\n let attributes: object[] = [];\n const attributeLoadPromises: Promise<object>[] = [];\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n // @ts-ignore\n const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);\n const attributeName = attributeStorageInfo[index].name;\n const attributeType = getAttributeValueType(attributeStorageInfo[index]);\n const loadOptions = {...options, attributeName, attributeType};\n const promise = load(url, I3SAttributeLoader, loadOptions);\n\n attributeLoadPromises.push(promise);\n }\n try {\n attributes = await Promise.allSettled(attributeLoadPromises);\n } catch (error) {\n // do nothing\n }\n\n if (!attributes.length) {\n return null;\n }\n\n return generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields);\n}\n\n/**\n * Gets attributes data from tile.\n * @param tile \n * @returns \n */\nfunction getAttributesData(tile) {\n const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;\n const attributeUrls = tile.header?.attributeUrls;\n const tilesetFields = tile.tileset?.tileset?.fields || [];\n\n return {attributeStorageInfo, attributeUrls, tilesetFields};\n}\n\n/**\n * Get attribute value type based on property names\n * @param {Object} attribute\n * @returns {String}\n */\nexport function getAttributeValueType(attribute) {\n if (attribute.hasOwnProperty('objectIds')) {\n return 'Oid32';\n } else if (attribute.hasOwnProperty('attributeValues')) {\n return attribute.attributeValues.valueType;\n }\n return '';\n}\n\n/**\n * Find in attributeStorageInfo attribute name responsible for feature ids list.\n * @param attributeStorageInfo \n * @returns Feature ids attribute name\n */\nfunction getFeatureIdsAttributeName(attributeStorageInfo) {\n const objectIdsAttribute = attributeStorageInfo.find(attribute => attribute.name.includes('OBJECTID'));\n\n return objectIdsAttribute?.name;\n}\n\n/**\n * Generates mapping featureId to feature attributes\n * @param {Array} attributes\n * @param {Object} attributeStorageInfo\n * @param {number} featureId\n * @returns {Object}\n */\nfunction generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields) {\n const objectIdsAttributeName = getFeatureIdsAttributeName(attributeStorageInfo);\n const objectIds = attributes.find((attribute) => attribute.value[objectIdsAttributeName]);\n\n if (!objectIds) {\n return null;\n }\n\n const attributeIndex = objectIds.value[objectIdsAttributeName].indexOf(featureId);\n\n if (attributeIndex < 0) {\n return null;\n }\n\n return getFeatureAttributesByIndex(attributes, attributeIndex, attributeStorageInfo, tilesetFields);\n}\n\n/**\n * Generates attribute object for feature mapping by feature id\n * @param {Array} attributes\n * @param {Number} featureIdIndex\n * @param {Object} attributeStorageInfo\n * @returns {Object}\n */\nfunction getFeatureAttributesByIndex(attributes, featureIdIndex, attributeStorageInfo, tilesetFields) {\n const attributesObject = {};\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n const attributeName = attributeStorageInfo[index].name;\n const codedValues = getAttributeCodedValues(attributeName, tilesetFields);\n const attribute = getAttributeByIndexAndAttributeName(attributes, index, attributeName);\n attributesObject[attributeName] = formatAttributeValue(attribute, featureIdIndex, codedValues);\n }\n\n return attributesObject;\n}\n\n/**\n * Get coded values list from tileset.\n * @param attributeName \n * @param tilesetFields \n */\nfunction getAttributeCodedValues(attributeName, tilesetFields) {\n const attributeField = tilesetFields\n .find(field => field.name === attributeName || field.alias === attributeName);\n\n return attributeField?.domain?.codedValues || [];\n}\n\n/**\n * Return attribute value if it presents in atrributes list\n * @param {array} attributes\n * @param {number} index\n * @param {string} attributesName\n */\nfunction getAttributeByIndexAndAttributeName(attributes, index, attributesName) {\n const attributeObject = attributes[index];\n\n if (attributeObject.status === REJECTED_STATUS) {\n return null;\n }\n\n return attributeObject.value[attributesName];\n}\n\n/**\n * Do formatting of attribute values or return empty string.\n * @param {Array} attribute\n * @param {Number} featureIdIndex\n * @returns {String}\n */\nfunction formatAttributeValue(attribute, featureIdIndex, codedValues) {\n let value = EMPTY_VALUE;\n\n if (attribute && (featureIdIndex in attribute)) {\n // eslint-disable-next-line no-control-regex\n value = String(attribute[featureIdIndex]).replace(/\\u0000|NaN/g, '').trim();\n }\n\n // Check if coded values are existed. If so we use them.\n if (codedValues.length) {\n const codeValue = codedValues.find(codedValue => codedValue.code === Number(value));\n value = codeValue?.name || EMPTY_VALUE;\n }\n\n return value;\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
11
11
 
12
- var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'beta';
12
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'beta';
13
13
  var I3SBuildingSceneLayerLoader = {
14
14
  name: 'I3S Building Scene Layer',
15
15
  id: 'i3s-building-scene-layer',
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-building-scene-layer-loader.js","names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error","parseBuildingSceneLayer"],"sources":["../../src/i3s-building-scene-layer-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\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 - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"mappings":";;;;;;;;;AAGA;;AAKA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM;AAIlE,IAAMC,2BAA6C,GAAG;EAC3DC,IAAI,EAAE,0BAA0B;EAChCC,EAAE,EAAE,0BAA0B;EAC9BC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC;AAAA,SAEaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBACEG,IAAiB,EACjBD,OAAuB,EACvBE,OAAuB;IAAA;MAAA;QAAA;UAAA;YAAA,IAElBA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,GAAG;cAAA;cAAA;YAAA;YAAA,MACT,IAAIC,KAAK,CAAC,qBAAqB,CAAC;UAAA;YAAA,iCAGjC,IAAAC,mDAAuB,EAACJ,IAAI,EAAEC,OAAO,CAACC,GAAG,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAClD;EAAA;AAAA"}
1
+ {"version":3,"file":"i3s-building-scene-layer-loader.js","names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error","parseBuildingSceneLayer"],"sources":["../../src/i3s-building-scene-layer-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\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 - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"mappings":";;;;;;;;;AAGA;;AAKA,IAAMA,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,MAAM;AAIlE,IAAMC,2BAA6C,GAAG;EAC3DC,IAAI,EAAE,0BAA0B;EAChCC,EAAE,EAAE,0BAA0B;EAC9BC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC;AAAA,SAEaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBACEG,IAAiB,EACjBD,OAAuB,EACvBE,OAAuB;IAAA;MAAA;QAAA;UAAA;YAAA,IAElBA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,GAAG;cAAA;cAAA;YAAA;YAAA,MACT,IAAIC,KAAK,CAAC,qBAAqB,CAAC;UAAA;YAAA,iCAGjC,IAAAC,mDAAuB,EAACJ,IAAI,EAAEC,OAAO,CAACC,GAAG,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAClD;EAAA;AAAA"}
@@ -10,7 +10,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
10
10
  var _workerUtils = require("@loaders.gl/worker-utils");
11
11
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
12
12
 
13
- var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'beta';
13
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'beta';
14
14
  var I3SContentLoader = {
15
15
  name: 'I3S Content (Indexed Scene Layers)',
16
16
  id: _workerUtils.isBrowser ? 'i3s-content' : 'i3s-content-nodejs',
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-content-loader.js","names":["VERSION","I3SContentLoader","name","id","isBrowser","module","worker","version","mimeTypes","parse","extensions","options","data","context","i3s","tile","_tileOptions","tileset","_tilesetOptions","tileOptions","tilesetOptions","parseI3STileContent"],"sources":["../../src/i3s-content-loader.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/worker-utils';\nimport 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: isBrowser ? 'i3s-content' : 'i3s-content-nodejs',\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"],"mappings":";;;;;;;;;AAAA;AAGA;;AAMA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM;AAIlE,IAAMC,gBAAkC,GAAG;EAChDC,IAAI,EAAE,oCAAoC;EAC1CC,EAAE,EAAEC,sBAAS,GAAG,aAAa,GAAG,oBAAoB;EACpDC,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAEP,OAAO;EAChBQ,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,OAAO,EAAE;IACP,aAAa,EAAE,CAAC;EAClB;AACF,CAAC;AAAC;AAAA,SAEaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBAAqBG,IAAI,EAAED,OAA0B,EAAEE,OAAuB;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,OACrB,CAAAF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,GAAG,KAAI,CAAC,CAAC,EAAlEC,IAAI,QAAJA,IAAI,EAAEC,YAAY,QAAZA,YAAY,EAAEC,OAAO,QAAPA,OAAO,EAAEC,eAAe,QAAfA,eAAe;YAC7CC,WAAW,GAAGH,YAAY,IAAID,IAAI;YAClCK,cAAc,GAAGF,eAAe,IAAID,OAAO;YAAA,MAC7C,CAACE,WAAW,IAAI,CAACC,cAAc;cAAA;cAAA;YAAA;YAAA,iCAC1B,IAAI;UAAA;YAAA;YAAA,OAEA,IAAAC,wCAAmB,EAC9BT,IAAI,EACJO,WAAW,EACXC,cAAc,EACdT,OAAO,EACPE,OAAO,CACR;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACF;EAAA;AAAA"}
1
+ {"version":3,"file":"i3s-content-loader.js","names":["VERSION","I3SContentLoader","name","id","isBrowser","module","worker","version","mimeTypes","parse","extensions","options","data","context","i3s","tile","_tileOptions","tileset","_tilesetOptions","tileOptions","tilesetOptions","parseI3STileContent"],"sources":["../../src/i3s-content-loader.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/worker-utils';\nimport 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: isBrowser ? 'i3s-content' : 'i3s-content-nodejs',\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"],"mappings":";;;;;;;;;AAAA;AAGA;;AAMA,IAAMA,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,MAAM;AAIlE,IAAMC,gBAAkC,GAAG;EAChDC,IAAI,EAAE,oCAAoC;EAC1CC,EAAE,EAAEC,sBAAS,GAAG,aAAa,GAAG,oBAAoB;EACpDC,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAEP,OAAO;EAChBQ,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAALA,KAAK;EACLC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,OAAO,EAAE;IACP,aAAa,EAAE,CAAC;EAClB;AACF,CAAC;AAAC;AAAA,SAEaF,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,iBAAqBG,IAAI,EAAED,OAA0B,EAAEE,OAAuB;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,OACrB,CAAAF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,GAAG,KAAI,CAAC,CAAC,EAAlEC,IAAI,QAAJA,IAAI,EAAEC,YAAY,QAAZA,YAAY,EAAEC,OAAO,QAAPA,OAAO,EAAEC,eAAe,QAAfA,eAAe;YAC7CC,WAAW,GAAGH,YAAY,IAAID,IAAI;YAClCK,cAAc,GAAGF,eAAe,IAAID,OAAO;YAAA,MAC7C,CAACE,WAAW,IAAI,CAACC,cAAc;cAAA;cAAA;YAAA;YAAA,iCAC1B,IAAI;UAAA;YAAA;YAAA,OAEA,IAAAC,wCAAmB,EAC9BT,IAAI,EACJO,WAAW,EACXC,cAAc,EACdT,OAAO,EACPE,OAAO,CACR;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACF;EAAA;AAAA"}
@@ -12,10 +12,11 @@ var _core = require("@loaders.gl/core");
12
12
  var _i3sContentLoader = require("./i3s-content-loader");
13
13
  var _parseI3s = require("./lib/parsers/parse-i3s");
14
14
  var _constants = require("./lib/parsers/constants");
15
- var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
15
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'latest';
16
16
  var TILESET_REGEX = /layers\/[0-9]+$/;
17
17
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
18
18
  var SLPK_HEX = '504b0304';
19
+ var POINT_CLOUD = 'PointCloud';
19
20
  var I3SLoader = {
20
21
  name: 'I3S (Indexed Scene Layers)',
21
22
  id: 'i3s',
@@ -149,12 +150,18 @@ function _parseTileset() {
149
150
  switch (_context3.prev = _context3.next) {
150
151
  case 0:
151
152
  tilesetJson = JSON.parse(new TextDecoder().decode(data));
153
+ if (!((tilesetJson === null || tilesetJson === void 0 ? void 0 : tilesetJson.layerType) === POINT_CLOUD)) {
154
+ _context3.next = 3;
155
+ break;
156
+ }
157
+ throw new Error('Point Cloud layers currently are not supported by I3SLoader');
158
+ case 3:
152
159
  tilesetJson.loader = I3SLoader;
153
- _context3.next = 4;
160
+ _context3.next = 6;
154
161
  return (0, _parseI3s.normalizeTilesetData)(tilesetJson, options, context);
155
- case 4:
162
+ case 6:
156
163
  return _context3.abrupt("return", tilesetJson);
157
- case 5:
164
+ case 7:
158
165
  case "end":
159
166
  return _context3.stop();
160
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-loader.js","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","colorsByAttribute","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","loader","normalizeTilesetData","normalizeTileData","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"sources":["../../src/i3s-loader.ts"],"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 colorsByAttribute: null\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"],"mappings":"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"}
1
+ {"version":3,"file":"i3s-loader.js","names":["VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","POINT_CLOUD","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","colorsByAttribute","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","layerType","loader","normalizeTilesetData","normalizeTileData","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"sources":["../../src/i3s-loader.ts"],"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';\nconst POINT_CLOUD = 'PointCloud';\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 colorsByAttribute: null\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\n if (tilesetJson?.layerType === POINT_CLOUD) {\n throw new Error('Point Cloud layers currently are not supported by I3SLoader');\n }\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"],"mappings":"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"}
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.I3SNodePageLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var VERSION = typeof "3.3.0-alpha.8" !== 'undefined' ? "3.3.0-alpha.8" : 'latest';
10
+ var VERSION = typeof "3.3.1" !== 'undefined' ? "3.3.1" : 'latest';
11
11
  function parseNodePage(_x) {
12
12
  return _parseNodePage.apply(this, arguments);
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-node-page-loader.js","names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"sources":["../../src/i3s-node-page-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"mappings":";;;;;;;;;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAAC,SAE7DC,aAAa;EAAA;AAAA;AAAA;EAAA,2EAA5B,iBAA6BC,IAAI;IAAA;MAAA;QAAA;UAAA;YAAA,iCACxBC,IAAI,CAACC,KAAK,CAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACJ,IAAI,CAAC,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAClD;EAAA;AAAA;AAKM,IAAMK,iBAAmC,GAAG;EACjDC,IAAI,EAAE,eAAe;EACrBC,EAAE,EAAE,eAAe;EACnBC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BR,KAAK,EAALA,KAAK;EACLS,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC;AAAA,SAEaV,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,kBAAqBF,IAAI;IAAA;MAAA;QAAA;UAAA;YACvBA,IAAI,GAAGD,aAAa,CAACC,IAAI,CAAC;YAAC,kCACpBA,IAAI;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA"}
1
+ {"version":3,"file":"i3s-node-page-loader.js","names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"sources":["../../src/i3s-node-page-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"mappings":";;;;;;;;;AAIA,IAAMA,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,QAAQ;AAAC,SAE7DC,aAAa;EAAA;AAAA;AAAA;EAAA,2EAA5B,iBAA6BC,IAAI;IAAA;MAAA;QAAA;UAAA;YAAA,iCACxBC,IAAI,CAACC,KAAK,CAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACJ,IAAI,CAAC,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAClD;EAAA;AAAA;AAKM,IAAMK,iBAAmC,GAAG;EACjDC,IAAI,EAAE,eAAe;EACrBC,EAAE,EAAE,eAAe;EACnBC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BR,KAAK,EAALA,KAAK;EACLS,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC;AAAA,SAEaV,KAAK;EAAA;AAAA;AAAA;EAAA,mEAApB,kBAAqBF,IAAI;IAAA;MAAA;QAAA;UAAA;YACvBA,IAAI,GAAGD,aAAa,CAACC,IAAI,CAAC;YAAC,kCACpBA,IAAI;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA"}
@@ -27,7 +27,7 @@ function getConstructorForDataFormat(dataType) {
27
27
  }
28
28
  var GL_TYPE_MAP = {
29
29
  UInt8: _constants.default.UNSIGNED_BYTE,
30
- UInt16: _constants.default.UNSIGNED_INT,
30
+ UInt16: _constants.default.UNSIGNED_SHORT,
31
31
  Float32: _constants.default.FLOAT,
32
32
  UInt32: _constants.default.UNSIGNED_INT,
33
33
  UInt64: _constants.default.DOUBLE
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["getConstructorForDataFormat","dataType","DATA_TYPE","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","Error","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","sizeOf","Int16","Int32","Int64","Float64","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"sources":["../../../../src/lib/parsers/constants.ts"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AAEO,SAASA,2BAA2B,CAACC,QAAgB,EAAE;EAC5D,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAOC,UAAU;IACnB,KAAKF,gBAAS,CAACG,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKJ,gBAAS,CAACK,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKN,gBAAS,CAACO,OAAO;MACpB,OAAOC,YAAY;IACrB,KAAKR,gBAAS,CAACS,MAAM;MACnB,OAAOC,YAAY;IACrB;MACE,MAAM,IAAIC,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMa,WAAoC,GAAG;EAClDX,KAAK,EAAEY,kBAAE,CAACC,aAAa;EACvBX,MAAM,EAAEU,kBAAE,CAACE,YAAY;EACvBR,OAAO,EAAEM,kBAAE,CAACG,KAAK;EACjBX,MAAM,EAAEQ,kBAAE,CAACE,YAAY;EACvBN,MAAM,EAAEI,kBAAE,CAACI;AACb,CAAC;AAAC;AAMK,SAASC,MAAM,CAACnB,QAAgB,EAAU;EAC/C,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAO,CAAC;IACV,KAAKD,gBAAS,CAACG,MAAM;IACrB,KAAKH,gBAAS,CAACmB,KAAK;MAClB,OAAO,CAAC;IACV,KAAKnB,gBAAS,CAACK,MAAM;IACrB,KAAKL,gBAAS,CAACoB,KAAK;IACpB,KAAKpB,gBAAS,CAACO,OAAO;MACpB,OAAO,CAAC;IACV,KAAKP,gBAAS,CAACS,MAAM;IACrB,KAAKT,gBAAS,CAACqB,KAAK;IACpB,KAAKrB,gBAAS,CAACsB,OAAO;MACpB,OAAO,CAAC;IACV;MACE,MAAM,IAAIX,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMwB,qBAAqB,GAAG,QAAQ;AAAC;AACvC,IAAMC,wBAAwB,GAAG,OAAO;AAAC;AACzC,IAAMC,aAAa,GAAG,SAAS;AAAC;AAChC,IAAMC,qBAAqB,GAAG,OAAO;;AAAC;AAAA,IAIjCC,iBAAiB;AAAA;AAAA,WAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,iCAAjBA,iBAAiB"}
1
+ {"version":3,"file":"constants.js","names":["getConstructorForDataFormat","dataType","DATA_TYPE","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","Error","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_SHORT","FLOAT","UNSIGNED_INT","DOUBLE","sizeOf","Int16","Int32","Int64","Float64","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"sources":["../../../../src/lib/parsers/constants.ts"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_SHORT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"mappings":";;;;;;;;;AAAA;AACA;AAEO,SAASA,2BAA2B,CAACC,QAAgB,EAAE;EAC5D,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAOC,UAAU;IACnB,KAAKF,gBAAS,CAACG,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKJ,gBAAS,CAACK,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKN,gBAAS,CAACO,OAAO;MACpB,OAAOC,YAAY;IACrB,KAAKR,gBAAS,CAACS,MAAM;MACnB,OAAOC,YAAY;IACrB;MACE,MAAM,IAAIC,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMa,WAAoC,GAAG;EAClDX,KAAK,EAAEY,kBAAE,CAACC,aAAa;EACvBX,MAAM,EAAEU,kBAAE,CAACE,cAAc;EACzBR,OAAO,EAAEM,kBAAE,CAACG,KAAK;EACjBX,MAAM,EAAEQ,kBAAE,CAACI,YAAY;EACvBR,MAAM,EAAEI,kBAAE,CAACK;AACb,CAAC;AAAC;AAMK,SAASC,MAAM,CAACpB,QAAgB,EAAU;EAC/C,QAAQA,QAAQ;IACd,KAAKC,gBAAS,CAACC,KAAK;MAClB,OAAO,CAAC;IACV,KAAKD,gBAAS,CAACG,MAAM;IACrB,KAAKH,gBAAS,CAACoB,KAAK;MAClB,OAAO,CAAC;IACV,KAAKpB,gBAAS,CAACK,MAAM;IACrB,KAAKL,gBAAS,CAACqB,KAAK;IACpB,KAAKrB,gBAAS,CAACO,OAAO;MACpB,OAAO,CAAC;IACV,KAAKP,gBAAS,CAACS,MAAM;IACrB,KAAKT,gBAAS,CAACsB,KAAK;IACpB,KAAKtB,gBAAS,CAACuB,OAAO;MACpB,OAAO,CAAC;IACV;MACE,MAAM,IAAIZ,KAAK,yDAAkDZ,QAAQ,EAAG;EAAC;AAEnF;AAEO,IAAMyB,qBAAqB,GAAG,QAAQ;AAAC;AACvC,IAAMC,wBAAwB,GAAG,OAAO;AAAC;AACzC,IAAMC,aAAa,GAAG,SAAS;AAAC;AAChC,IAAMC,qBAAqB,GAAG,OAAO;;AAAC;AAAA,IAIjCC,iBAAiB;AAAA;AAAA,WAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,iCAAjBA,iBAAiB"}
@@ -217,7 +217,7 @@ function _parseI3SNodeGeometry() {
217
217
  normals: attributes.normal,
218
218
  colors: normalizeAttribute(attributes.color),
219
219
  texCoords: attributes.uv0,
220
- uvRegions: normalizeAttribute(attributes.uvRegion)
220
+ uvRegions: normalizeAttribute(attributes.uvRegion || attributes.region)
221
221
  };
222
222
 
223
223
  content.indices = indices || null;