@loaders.gl/i3s 3.2.0-alpha.2 → 3.2.0

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 (66) hide show
  1. package/dist/arcgis-webscene-loader.d.ts +7 -0
  2. package/dist/arcgis-webscene-loader.d.ts.map +1 -0
  3. package/dist/arcgis-webscene-loader.js +28 -0
  4. package/dist/dist.min.js +74 -2
  5. package/dist/es5/arcgis-webscene-loader.js +50 -0
  6. package/dist/es5/arcgis-webscene-loader.js.map +1 -0
  7. package/dist/es5/i3s-attribute-loader.js +1 -1
  8. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  9. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  10. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  11. package/dist/es5/i3s-content-loader.js +1 -1
  12. package/dist/es5/i3s-content-loader.js.map +1 -1
  13. package/dist/es5/i3s-loader.js +1 -1
  14. package/dist/es5/i3s-loader.js.map +1 -1
  15. package/dist/es5/i3s-node-page-loader.js +1 -1
  16. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  17. package/dist/es5/index.js +8 -0
  18. package/dist/es5/index.js.map +1 -1
  19. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +10 -7
  20. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  21. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +68 -0
  22. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  23. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +10 -9
  24. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  25. package/dist/es5/types.js.map +1 -1
  26. package/dist/esm/arcgis-webscene-loader.js +17 -0
  27. package/dist/esm/arcgis-webscene-loader.js.map +1 -0
  28. package/dist/esm/i3s-attribute-loader.js +1 -1
  29. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  30. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  31. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  32. package/dist/esm/i3s-content-loader.js +1 -1
  33. package/dist/esm/i3s-content-loader.js.map +1 -1
  34. package/dist/esm/i3s-loader.js +1 -1
  35. package/dist/esm/i3s-loader.js.map +1 -1
  36. package/dist/esm/i3s-node-page-loader.js +1 -1
  37. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  38. package/dist/esm/index.js +1 -0
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +4 -0
  41. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  42. package/dist/esm/lib/parsers/parse-arcgis-webscene.js +35 -0
  43. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  44. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +2 -1
  45. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  46. package/dist/esm/types.js.map +1 -1
  47. package/dist/i3s-content-worker.js +21 -11
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +3 -1
  51. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -0
  52. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  53. package/dist/lib/helpers/i3s-nodepages-tiles.js +2 -0
  54. package/dist/lib/parsers/parse-arcgis-webscene.d.ts +7 -0
  55. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
  56. package/dist/lib/parsers/parse-arcgis-webscene.js +45 -0
  57. package/dist/lib/parsers/parse-i3s-tile-content.js +2 -1
  58. package/dist/types.d.ts +174 -0
  59. package/dist/types.d.ts.map +1 -1
  60. package/package.json +9 -9
  61. package/src/arcgis-webscene-loader.ts +31 -0
  62. package/src/index.ts +1 -0
  63. package/src/lib/helpers/i3s-nodepages-tiles.ts +3 -0
  64. package/src/lib/parsers/parse-arcgis-webscene.ts +51 -0
  65. package/src/lib/parsers/parse-i3s-tile-content.ts +2 -1
  66. package/src/types.ts +189 -0
@@ -0,0 +1,7 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Loader for ArcGis WebScene
4
+ * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/
5
+ */
6
+ export declare const ArcGisWebSceneLoader: LoaderWithParser;
7
+ //# sourceMappingURL=arcgis-webscene-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-webscene-loader.d.ts","sourceRoot":"","sources":["../src/arcgis-webscene-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAS/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBASlC,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGisWebSceneLoader = void 0;
4
+ const parse_arcgis_webscene_1 = require("./lib/parsers/parse-arcgis-webscene");
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
8
+ /**
9
+ * Loader for ArcGis WebScene
10
+ * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/
11
+ */
12
+ exports.ArcGisWebSceneLoader = {
13
+ name: 'ArcGIS Web Scene Loader',
14
+ id: 'arcgis-web-scene',
15
+ module: 'i3s',
16
+ version: VERSION,
17
+ mimeTypes: ['application/json'],
18
+ parse,
19
+ extensions: ['json'],
20
+ options: {}
21
+ };
22
+ /**
23
+ * Parse ArcGis webscene
24
+ * @param data
25
+ */
26
+ async function parse(data) {
27
+ return (0, parse_arcgis_webscene_1.parseWebscene)(data);
28
+ }
package/dist/dist.min.js CHANGED
@@ -674,10 +674,12 @@
674
674
  const workerFarm = WorkerFarm.getWorkerFarm(options);
675
675
  const workerPool = workerFarm.getWorkerPool({ name, url });
676
676
  options = JSON.parse(JSON.stringify(options));
677
+ context = JSON.parse(JSON.stringify(context || {}));
677
678
  const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
678
679
  job.postMessage("process", {
679
680
  input: data,
680
- options
681
+ options,
682
+ context
681
683
  });
682
684
  const result = await job.result;
683
685
  return await result.result;
@@ -3024,6 +3026,12 @@
3024
3026
  }
3025
3027
  async function parseWithLoader(loader, data, options, context) {
3026
3028
  validateWorkerVersion(loader);
3029
+ if (isResponse(data)) {
3030
+ const response = data;
3031
+ const { ok, redirected, status, statusText, type, url } = response;
3032
+ const headers = Object.fromEntries(response.headers.entries());
3033
+ context.response = { headers, ok, redirected, status, statusText, type, url };
3034
+ }
3027
3035
  data = await getArrayBufferOrStringFromData(data, loader, options);
3028
3036
  if (loader.parseTextSync && typeof data === "string") {
3029
3037
  options.dataType = "text";
@@ -3046,6 +3054,7 @@
3046
3054
  init_src();
3047
3055
  init_src2();
3048
3056
  init_normalize_loader();
3057
+ init_is_type();
3049
3058
  init_option_utils();
3050
3059
  init_get_data();
3051
3060
  init_loader_context();
@@ -9594,6 +9603,7 @@
9594
9603
  return tile;
9595
9604
  }
9596
9605
  const content = tile.content;
9606
+ const contentByteLength = arrayBuffer.byteLength;
9597
9607
  let attributes;
9598
9608
  let vertexCount;
9599
9609
  let byteOffset = 0;
@@ -9669,7 +9679,7 @@
9669
9679
  }
9670
9680
  }
9671
9681
  content.vertexCount = vertexCount;
9672
- content.byteLength = arrayBuffer.byteLength;
9682
+ content.byteLength = contentByteLength;
9673
9683
  return tile;
9674
9684
  }
9675
9685
  function updateAttributesMetadata(attributes, decompressedGeometry) {
@@ -10492,6 +10502,7 @@
10492
10502
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
10493
10503
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
10494
10504
  this.options = options;
10505
+ this.nodesInNodePages = 0;
10495
10506
  this.initSelectedFormatsForTextureDefinitions(tileset);
10496
10507
  }
10497
10508
  async getNodeById(id) {
@@ -10503,6 +10514,7 @@
10503
10514
  promise: load(nodePageUrl, I3SNodePageLoader, this.options)
10504
10515
  };
10505
10516
  this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;
10517
+ this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
10506
10518
  this.pendingNodePages[pageIndex].status = "Done";
10507
10519
  }
10508
10520
  if (this.pendingNodePages[pageIndex].status === "Pending") {
@@ -11062,9 +11074,68 @@
11062
11074
  }
11063
11075
  });
11064
11076
 
11077
+ // src/lib/parsers/parse-arcgis-webscene.ts
11078
+ async function parseWebscene(data) {
11079
+ const layer0 = JSON.parse(new TextDecoder().decode(data));
11080
+ const { operationalLayers } = layer0;
11081
+ return {
11082
+ header: layer0,
11083
+ layers: parseOperationalLayers(operationalLayers)
11084
+ };
11085
+ }
11086
+ function parseOperationalLayers(layersList) {
11087
+ let layers = [];
11088
+ for (let index = 0; index < layersList.length; index++) {
11089
+ const layer = layersList[index];
11090
+ if (SUPPORTED_LAYERS_TYPES.includes(layer.layerType)) {
11091
+ layers.push(layer);
11092
+ }
11093
+ if (layer.layers?.length) {
11094
+ layers = [...layers, ...parseOperationalLayers(layer.layers)];
11095
+ }
11096
+ }
11097
+ return layers;
11098
+ }
11099
+ var ARCGIS_SCENE_SERVER_LAYER_TYPE, BUILDING_SCENE_LAYER, INTEGRATED_MESH_LAYER, SUPPORTED_LAYERS_TYPES;
11100
+ var init_parse_arcgis_webscene = __esm({
11101
+ "src/lib/parsers/parse-arcgis-webscene.ts"() {
11102
+ ARCGIS_SCENE_SERVER_LAYER_TYPE = "ArcGISSceneServiceLayer";
11103
+ BUILDING_SCENE_LAYER = "BuildingSceneLayer";
11104
+ INTEGRATED_MESH_LAYER = "IntegratedMeshLayer";
11105
+ SUPPORTED_LAYERS_TYPES = [
11106
+ ARCGIS_SCENE_SERVER_LAYER_TYPE,
11107
+ INTEGRATED_MESH_LAYER,
11108
+ BUILDING_SCENE_LAYER
11109
+ ];
11110
+ }
11111
+ });
11112
+
11113
+ // src/arcgis-webscene-loader.ts
11114
+ async function parse7(data) {
11115
+ return parseWebscene(data);
11116
+ }
11117
+ var VERSION14, ArcGisWebSceneLoader;
11118
+ var init_arcgis_webscene_loader = __esm({
11119
+ "src/arcgis-webscene-loader.ts"() {
11120
+ init_parse_arcgis_webscene();
11121
+ VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11122
+ ArcGisWebSceneLoader = {
11123
+ name: "ArcGIS Web Scene Loader",
11124
+ id: "arcgis-web-scene",
11125
+ module: "i3s",
11126
+ version: VERSION14,
11127
+ mimeTypes: ["application/json"],
11128
+ parse: parse7,
11129
+ extensions: ["json"],
11130
+ options: {}
11131
+ };
11132
+ }
11133
+ });
11134
+
11065
11135
  // src/index.ts
11066
11136
  var src_exports = {};
11067
11137
  __export(src_exports, {
11138
+ ArcGisWebSceneLoader: () => ArcGisWebSceneLoader,
11068
11139
  COORDINATE_SYSTEM: () => COORDINATE_SYSTEM,
11069
11140
  I3SAttributeLoader: () => I3SAttributeLoader,
11070
11141
  I3SBuildingSceneLayerLoader: () => I3SBuildingSceneLayerLoader,
@@ -11078,6 +11149,7 @@
11078
11149
  init_i3s_content_loader();
11079
11150
  init_i3s_attribute_loader();
11080
11151
  init_i3s_building_scene_layer_loader();
11152
+ init_arcgis_webscene_loader();
11081
11153
  init_constants2();
11082
11154
  }
11083
11155
  });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ArcGisWebSceneLoader = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
15
+
16
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'beta';
17
+ var ArcGisWebSceneLoader = {
18
+ name: 'ArcGIS Web Scene Loader',
19
+ id: 'arcgis-web-scene',
20
+ module: 'i3s',
21
+ version: VERSION,
22
+ mimeTypes: ['application/json'],
23
+ parse: parse,
24
+ extensions: ['json'],
25
+ options: {}
26
+ };
27
+ exports.ArcGisWebSceneLoader = ArcGisWebSceneLoader;
28
+
29
+ function parse(_x) {
30
+ return _parse.apply(this, arguments);
31
+ }
32
+
33
+ function _parse() {
34
+ _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
35
+ return _regenerator.default.wrap(function _callee$(_context) {
36
+ while (1) {
37
+ switch (_context.prev = _context.next) {
38
+ case 0:
39
+ return _context.abrupt("return", (0, _parseArcgisWebscene.parseWebscene)(data));
40
+
41
+ case 1:
42
+ case "end":
43
+ return _context.stop();
44
+ }
45
+ }
46
+ }, _callee);
47
+ }));
48
+ return _parse.apply(this, arguments);
49
+ }
50
+ //# sourceMappingURL=arcgis-webscene-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/arcgis-webscene-loader.ts"],"names":["VERSION","ArcGisWebSceneLoader","name","id","module","version","mimeTypes","parse","extensions","options","data"],"mappings":";;;;;;;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,MAAnE;AAMO,IAAMC,oBAAsC,GAAG;AACpDC,EAAAA,IAAI,EAAE,yBAD8C;AAEpDC,EAAAA,EAAE,EAAE,kBAFgD;AAGpDC,EAAAA,MAAM,EAAE,KAH4C;AAIpDC,EAAAA,OAAO,EAAEL,OAJ2C;AAKpDM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALyC;AAMpDC,EAAAA,KAAK,EAALA,KANoD;AAOpDC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPwC;AAQpDC,EAAAA,OAAO,EAAE;AAR2C,CAA/C;;;SAeQF,K;;;;;qEAAf,iBAAqBG,IAArB;AAAA;AAAA;AAAA;AAAA;AAAA,6CACS,wCAAcA,IAAd,CADT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"],"file":"arcgis-webscene-loader.js"}
@@ -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.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
27
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'latest';
28
28
  var EMPTY_VALUE = '';
29
29
  var REJECTED_STATUS = 'rejected';
30
30
  var I3SAttributeLoader = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-attribute-loader.ts"],"names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","loadFeatureAttributes","tile","featureId","getAttributesData","attributeStorageInfo","attributeUrls","tilesetFields","attributes","attributeLoadPromises","index","length","url","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","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"],"mappings":"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","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 */\nfunction 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"],"file":"i3s-attribute-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-attribute-loader.ts"],"names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","loadFeatureAttributes","tile","featureId","getAttributesData","attributeStorageInfo","attributeUrls","tilesetFields","attributes","attributeLoadPromises","index","length","url","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","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"],"mappings":"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","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 */\nfunction 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"],"file":"i3s-attribute-loader.js"}
@@ -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.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'beta';
16
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'beta';
17
17
  var I3SBuildingSceneLayerLoader = {
18
18
  name: 'I3S Building Scene Layer',
19
19
  id: 'i3s-building-scene-layer',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-building-scene-layer-loader.ts"],"names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"mappings":";;;;;;;;;;;;;AAGA;;AAKA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIO,IAAMC,2BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,0BADqD;AAE3DC,EAAAA,EAAE,EAAE,0BAFuD;AAG3DC,EAAAA,MAAM,EAAE,KAHmD;AAI3DC,EAAAA,OAAO,EAAEL,OAJkD;AAK3DM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALgD;AAM3DC,EAAAA,KAAK,EAALA,KAN2D;AAO3DC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP+C;AAQ3DC,EAAAA,OAAO,EAAE;AARkD,CAAtD;;;SAWQF,K;;;;;qEAAf,iBACEG,IADF,EAEED,OAFF,EAGEE,OAHF;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKOA,OALP,aAKOA,OALP,eAKOA,OAAO,CAAEC,GALhB;AAAA;AAAA;AAAA;;AAAA,kBAMU,IAAIC,KAAJ,CAAU,qBAAV,CANV;;AAAA;AAAA,6CASS,yDAAwBH,IAAxB,EAA8BC,OAAO,CAACC,GAAtC,CATT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"],"file":"i3s-building-scene-layer-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-building-scene-layer-loader.ts"],"names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"mappings":";;;;;;;;;;;;;AAGA;;AAKA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,MAAnE;AAIO,IAAMC,2BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,0BADqD;AAE3DC,EAAAA,EAAE,EAAE,0BAFuD;AAG3DC,EAAAA,MAAM,EAAE,KAHmD;AAI3DC,EAAAA,OAAO,EAAEL,OAJkD;AAK3DM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALgD;AAM3DC,EAAAA,KAAK,EAALA,KAN2D;AAO3DC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP+C;AAQ3DC,EAAAA,OAAO,EAAE;AARkD,CAAtD;;;SAWQF,K;;;;;qEAAf,iBACEG,IADF,EAEED,OAFF,EAGEE,OAHF;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKOA,OALP,aAKOA,OALP,eAKOA,OAAO,CAAEC,GALhB;AAAA;AAAA;AAAA;;AAAA,kBAMU,IAAIC,KAAJ,CAAU,qBAAV,CANV;;AAAA;AAAA,6CASS,yDAAwBH,IAAxB,EAA8BC,OAAO,CAACC,GAAtC,CATT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"],"file":"i3s-building-scene-layer-loader.js"}
@@ -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.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'beta';
16
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'beta';
17
17
  var I3SContentLoader = {
18
18
  name: 'I3S Content (Indexed Scene Layers)',
19
19
  id: 'i3s-content',
@@ -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","tileset","content"],"mappings":";;;;;;;;;;;;;AACA;;AAKA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,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"}
@@ -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.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
24
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : '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';
@@ -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","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"}
@@ -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.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
14
+ var VERSION = typeof "3.2.0" !== 'undefined' ? "3.2.0" : 'latest';
15
15
 
16
16
  function parseNodePage(_x) {
17
17
  return _parseNodePage.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":";;;;;;;;;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;;SAEeC,a;;;;;6EAAf,iBAA6BC,IAA7B;AAAA;AAAA;AAAA;AAAA;AAAA,6CACSC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CADT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAOO,IAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KAAK,EAALA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;;SAWQV,K;;;;;qEAAf,kBAAqBF,IAArB;AAAA;AAAA;AAAA;AAAA;AACEA,YAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AADF,8CAESA,IAFT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"],"file":"i3s-node-page-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":";;;;;;;;;;;;;AAIA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;;SAEeC,a;;;;;6EAAf,iBAA6BC,IAA7B;AAAA;AAAA;AAAA;AAAA;AAAA,6CACSC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CADT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAOO,IAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KAAK,EAALA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;;SAWQV,K;;;;;qEAAf,kBAAqBF,IAArB;AAAA;AAAA;AAAA;AAAA;AACEA,YAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AADF,8CAESA,IAFT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"],"file":"i3s-node-page-loader.js"}
package/dist/es5/index.js CHANGED
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "I3SBuildingSceneLayerLoader", {
33
33
  return _i3sBuildingSceneLayerLoader.I3SBuildingSceneLayerLoader;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "ArcGisWebSceneLoader", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _arcgisWebsceneLoader.ArcGisWebSceneLoader;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "COORDINATE_SYSTEM", {
37
43
  enumerable: true,
38
44
  get: function get() {
@@ -48,5 +54,7 @@ var _i3sAttributeLoader = require("./i3s-attribute-loader");
48
54
 
49
55
  var _i3sBuildingSceneLayerLoader = require("./i3s-building-scene-layer-loader");
50
56
 
57
+ var _arcgisWebsceneLoader = require("./arcgis-webscene-loader");
58
+
51
59
  var _constants = require("./lib/parsers/constants");
52
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AA0BA","sourcesContent":["export {I3SLoader} from './i3s-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition,\n TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AA0BA","sourcesContent":["export {I3SLoader} from './i3s-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {ArcGisWebSceneLoader} from './arcgis-webscene-loader';\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition,\n TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}
@@ -49,11 +49,13 @@ var I3SNodePagesTiles = function () {
49
49
  (0, _defineProperty2.default)(this, "options", void 0);
50
50
  (0, _defineProperty2.default)(this, "lodSelectionMetricType", void 0);
51
51
  (0, _defineProperty2.default)(this, "textureDefinitionsSelectedFormats", []);
52
+ (0, _defineProperty2.default)(this, "nodesInNodePages", void 0);
52
53
  (0, _defineProperty2.default)(this, "textureLoaderOptions", {});
53
54
  this.tileset = _objectSpread({}, tileset);
54
55
  this.nodesPerPage = ((_tileset$nodePages = tileset.nodePages) === null || _tileset$nodePages === void 0 ? void 0 : _tileset$nodePages.nodesPerPage) || 64;
55
56
  this.lodSelectionMetricType = (_tileset$nodePages2 = tileset.nodePages) === null || _tileset$nodePages2 === void 0 ? void 0 : _tileset$nodePages2.lodSelectionMetricType;
56
57
  this.options = options;
58
+ this.nodesInNodePages = 0;
57
59
  this.initSelectedFormatsForTextureDefinitions(tileset);
58
60
  }
59
61
 
@@ -70,7 +72,7 @@ var I3SNodePagesTiles = function () {
70
72
  pageIndex = Math.floor(id / this.nodesPerPage);
71
73
 
72
74
  if (!(!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex])) {
73
- _context.next = 8;
75
+ _context.next = 9;
74
76
  break;
75
77
  }
76
78
 
@@ -84,25 +86,26 @@ var I3SNodePagesTiles = function () {
84
86
 
85
87
  case 6:
86
88
  this.nodePages[pageIndex] = _context.sent;
89
+ this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
87
90
  this.pendingNodePages[pageIndex].status = 'Done';
88
91
 
89
- case 8:
92
+ case 9:
90
93
  if (!(this.pendingNodePages[pageIndex].status === 'Pending')) {
91
- _context.next = 12;
94
+ _context.next = 13;
92
95
  break;
93
96
  }
94
97
 
95
- _context.next = 11;
98
+ _context.next = 12;
96
99
  return this.pendingNodePages[pageIndex].promise;
97
100
 
98
- case 11:
101
+ case 12:
99
102
  this.nodePages[pageIndex] = _context.sent;
100
103
 
101
- case 12:
104
+ case 13:
102
105
  nodeIndex = id % this.nodesPerPage;
103
106
  return _context.abrupt("return", this.nodePages[pageIndex].nodes[nodeIndex]);
104
107
 
105
- case 14:
108
+ case 15:
106
109
  case "end":
107
110
  return _context.stop();
108
111
  }