@loaders.gl/gltf 4.0.0-alpha.23 → 4.0.0-alpha.25

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 (123) hide show
  1. package/dist/dist.min.js +378 -241
  2. package/dist/es5/index.js +12 -0
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/api/gltf-extensions.js +1 -1
  5. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  6. package/dist/es5/lib/extensions/EXT_mesh_features.js +13 -25
  7. package/dist/es5/lib/extensions/EXT_mesh_features.js.map +1 -1
  8. package/dist/es5/lib/extensions/EXT_structural_metadata.js +152 -106
  9. package/dist/es5/lib/extensions/EXT_structural_metadata.js.map +1 -1
  10. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +64 -16
  11. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  12. package/dist/es5/lib/extensions/{data-processing.js → utils/3d-tiles-utils.js} +51 -24
  13. package/dist/es5/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
  14. package/dist/es5/lib/gltf-utils/gltf-utils.js +29 -0
  15. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  16. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
  17. package/dist/es5/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  18. package/dist/es5/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
  19. package/dist/es5/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
  20. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
  21. package/dist/es5/lib/types/gltf-types.js.map +1 -1
  22. package/dist/es5/lib/utils/version.js +1 -1
  23. package/dist/esm/index.js +2 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/lib/api/gltf-extensions.js +1 -1
  26. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  27. package/dist/esm/lib/extensions/EXT_mesh_features.js +13 -25
  28. package/dist/esm/lib/extensions/EXT_mesh_features.js.map +1 -1
  29. package/dist/esm/lib/extensions/EXT_structural_metadata.js +127 -89
  30. package/dist/esm/lib/extensions/EXT_structural_metadata.js.map +1 -1
  31. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +64 -17
  32. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  33. package/dist/esm/lib/extensions/{data-processing.js → utils/3d-tiles-utils.js} +50 -24
  34. package/dist/esm/lib/extensions/utils/3d-tiles-utils.js.map +1 -0
  35. package/dist/esm/lib/gltf-utils/gltf-utils.js +30 -0
  36. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  37. package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js +2 -0
  38. package/dist/esm/lib/types/gltf-ext-feature-metadata-schema.js.map +1 -0
  39. package/dist/esm/lib/types/gltf-ext-mesh-features-schema.js.map +1 -1
  40. package/dist/esm/lib/types/gltf-ext-structural-metadata-schema.js.map +1 -1
  41. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
  42. package/dist/esm/lib/types/gltf-types.js.map +1 -1
  43. package/dist/esm/lib/utils/version.js +1 -1
  44. package/dist/index.d.ts +6 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/lib/extensions/EXT_mesh_features.d.ts.map +1 -1
  47. package/dist/lib/extensions/EXT_structural_metadata.d.ts +12 -4
  48. package/dist/lib/extensions/EXT_structural_metadata.d.ts.map +1 -1
  49. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +9 -0
  50. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
  51. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts +52 -0
  52. package/dist/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -0
  53. package/dist/lib/gltf-utils/gltf-utils.d.ts +2 -0
  54. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  55. package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts +421 -0
  56. package/dist/lib/types/gltf-ext-feature-metadata-schema.d.ts.map +1 -0
  57. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts +4 -6
  58. package/dist/lib/types/gltf-ext-mesh-features-schema.d.ts.map +1 -1
  59. package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts +48 -29
  60. package/dist/lib/types/gltf-ext-structural-metadata-schema.d.ts.map +1 -1
  61. package/dist/lib/types/gltf-json-schema.d.ts +1 -420
  62. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  63. package/dist/lib/types/gltf-types.d.ts +3 -0
  64. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  65. package/package.json +6 -6
  66. package/src/index.ts +10 -5
  67. package/src/lib/api/gltf-extensions.ts +1 -1
  68. package/src/lib/extensions/EXT_mesh_features.ts +18 -44
  69. package/src/lib/extensions/EXT_structural_metadata.ts +364 -217
  70. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +193 -30
  71. package/src/lib/extensions/{data-processing.ts → utils/3d-tiles-utils.ts} +128 -56
  72. package/src/lib/gltf-utils/gltf-utils.ts +38 -0
  73. package/src/lib/types/gltf-ext-feature-metadata-schema.ts +470 -0
  74. package/src/lib/types/gltf-ext-mesh-features-schema.ts +4 -6
  75. package/src/lib/types/gltf-ext-structural-metadata-schema.ts +52 -31
  76. package/src/lib/types/gltf-json-schema.ts +1 -468
  77. package/src/lib/types/gltf-types.ts +4 -0
  78. package/dist/bundle.js +0 -5
  79. package/dist/es5/lib/extensions/data-processing.js.map +0 -1
  80. package/dist/esm/lib/extensions/data-processing.js.map +0 -1
  81. package/dist/glb-loader.js +0 -34
  82. package/dist/glb-writer.js +0 -35
  83. package/dist/gltf-loader.js +0 -50
  84. package/dist/gltf-writer.js +0 -32
  85. package/dist/index.js +0 -34
  86. package/dist/lib/api/gltf-extensions.js +0 -88
  87. package/dist/lib/api/gltf-scenegraph.js +0 -580
  88. package/dist/lib/api/normalize-gltf-v1.js +0 -299
  89. package/dist/lib/api/post-process-gltf.js +0 -433
  90. package/dist/lib/encoders/encode-glb.js +0 -72
  91. package/dist/lib/encoders/encode-gltf.js +0 -32
  92. package/dist/lib/extensions/EXT_mesh_features.js +0 -89
  93. package/dist/lib/extensions/EXT_meshopt_compression.js +0 -41
  94. package/dist/lib/extensions/EXT_structural_metadata.js +0 -504
  95. package/dist/lib/extensions/EXT_texture_webp.js +0 -36
  96. package/dist/lib/extensions/KHR_binary_gltf.js +0 -39
  97. package/dist/lib/extensions/KHR_draco_mesh_compression.js +0 -137
  98. package/dist/lib/extensions/KHR_texture_basisu.js +0 -29
  99. package/dist/lib/extensions/KHR_texture_transform.js +0 -227
  100. package/dist/lib/extensions/data-processing.d.ts +0 -34
  101. package/dist/lib/extensions/data-processing.d.ts.map +0 -1
  102. package/dist/lib/extensions/data-processing.js +0 -212
  103. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +0 -282
  104. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +0 -59
  105. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +0 -44
  106. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +0 -79
  107. package/dist/lib/gltf-utils/get-typed-array.js +0 -41
  108. package/dist/lib/gltf-utils/gltf-attribute-utils.js +0 -73
  109. package/dist/lib/gltf-utils/gltf-constants.js +0 -43
  110. package/dist/lib/gltf-utils/gltf-utils.js +0 -90
  111. package/dist/lib/gltf-utils/resolve-url.js +0 -18
  112. package/dist/lib/parsers/parse-glb.js +0 -166
  113. package/dist/lib/parsers/parse-gltf.js +0 -185
  114. package/dist/lib/types/glb-types.js +0 -2
  115. package/dist/lib/types/gltf-ext-mesh-features-schema.js +0 -2
  116. package/dist/lib/types/gltf-ext-structural-metadata-schema.js +0 -2
  117. package/dist/lib/types/gltf-json-schema.js +0 -4
  118. package/dist/lib/types/gltf-postprocessed-schema.js +0 -4
  119. package/dist/lib/types/gltf-types.js +0 -3
  120. package/dist/lib/utils/assert.js +0 -12
  121. package/dist/lib/utils/version.js +0 -7
  122. package/dist/meshopt/meshopt-decoder.js +0 -118
  123. package/dist/webp/webp.js +0 -38
@@ -5,12 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.decode = decode;
8
+ exports.getPropertyTableFromExtStructuralMetadata = getPropertyTableFromExtStructuralMetadata;
8
9
  exports.getPropertyTablePopulated = getPropertyTablePopulated;
9
10
  exports.name = void 0;
10
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
13
  var _gltfScenegraph = require("../api/gltf-scenegraph");
13
- var _dataProcessing = require("./data-processing");
14
+ var _dTilesUtils = require("./utils/3d-tiles-utils");
14
15
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
16
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
17
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -36,6 +37,26 @@ function _decode() {
36
37
  }));
37
38
  return _decode.apply(this, arguments);
38
39
  }
40
+ function getPropertyTableFromExtStructuralMetadata(extension, metadataClass) {
41
+ if (extension.propertyTables) {
42
+ var firstPropertyTable = extension === null || extension === void 0 ? void 0 : extension.propertyTables[0];
43
+ var propertyTableWithData = {};
44
+ for (var propertyName in firstPropertyTable.properties) {
45
+ propertyTableWithData[propertyName] = firstPropertyTable.properties[propertyName].data;
46
+ }
47
+ return propertyTableWithData;
48
+ }
49
+ if (extension.propertyTextures) {
50
+ var firstPropertyTexture = extension === null || extension === void 0 ? void 0 : extension.propertyTextures[0];
51
+ var _propertyTableWithData = {};
52
+ for (var _propertyName in firstPropertyTexture.properties) {
53
+ _propertyTableWithData[_propertyName] = firstPropertyTexture.properties[_propertyName].data;
54
+ }
55
+ return _propertyTableWithData;
56
+ }
57
+ console.warn('Cannot get property table from EXT_structural_metadata extension. There is neither propertyTables, nor propertyTextures in the extension.');
58
+ return null;
59
+ }
39
60
  function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
40
61
  var _extension$propertyTa;
41
62
  var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
@@ -47,14 +68,23 @@ function getPropertyTablePopulated(scenegraph, propertyTableIndex) {
47
68
  throw new Error("Incorrect data in the EXT_structural_metadata extension: no property table with index ".concat(propertyTableIndex));
48
69
  }
49
70
  function decodeExtStructuralMetadata(scenegraph, options) {
50
- var _options$gltf;
71
+ var _options$gltf, _options$gltf2;
72
+ if (!((_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadBuffers)) {
73
+ return;
74
+ }
51
75
  var extension = scenegraph.getExtension(EXT_STRUCTURAL_METADATA_NAME);
52
- if (!(extension !== null && extension !== void 0 && extension.schema)) {
76
+ if (!extension) {
53
77
  return;
54
78
  }
79
+ if ((_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadImages) {
80
+ decodePropertyTextures(scenegraph, extension);
81
+ }
82
+ decodePropertyTables(scenegraph, extension);
83
+ }
84
+ function decodePropertyTextures(scenegraph, extension) {
55
85
  var propertyTextures = extension.propertyTextures;
56
86
  var json = scenegraph.gltf.json;
57
- if (propertyTextures && json.meshes && options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.loadImages) {
87
+ if (propertyTextures && json.meshes) {
58
88
  var _iterator = _createForOfIteratorHelper(json.meshes),
59
89
  _step;
60
90
  try {
@@ -79,17 +109,40 @@ function decodeExtStructuralMetadata(scenegraph, options) {
79
109
  _iterator.f();
80
110
  }
81
111
  }
82
- var schemaClasses = extension.schema.classes;
112
+ }
113
+ function decodePropertyTables(scenegraph, extension) {
114
+ var schema = extension.schema;
115
+ if (!schema) {
116
+ return;
117
+ }
118
+ var schemaClasses = schema.classes;
83
119
  var propertyTables = extension.propertyTables;
84
120
  if (schemaClasses && propertyTables) {
85
121
  for (var schemaName in schemaClasses) {
86
122
  var propertyTable = findPropertyTableByClass(propertyTables, schemaName);
87
123
  if (propertyTable) {
88
- processPropertyTable(scenegraph, extension.schema, propertyTable);
124
+ processPropertyTable(scenegraph, schema, propertyTable);
89
125
  }
90
126
  }
91
127
  }
92
128
  }
129
+ function findPropertyTableByClass(propertyTables, schemaClassName) {
130
+ var _iterator3 = _createForOfIteratorHelper(propertyTables),
131
+ _step3;
132
+ try {
133
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
134
+ var propertyTable = _step3.value;
135
+ if (propertyTable.class === schemaClassName) {
136
+ return propertyTable;
137
+ }
138
+ }
139
+ } catch (err) {
140
+ _iterator3.e(err);
141
+ } finally {
142
+ _iterator3.f();
143
+ }
144
+ return null;
145
+ }
93
146
  function processPrimitivePropertyTextures(scenegraph, propertyTextures, primitive, extension) {
94
147
  var _primitive$extensions;
95
148
  if (!propertyTextures) {
@@ -100,18 +153,18 @@ function processPrimitivePropertyTextures(scenegraph, propertyTextures, primitiv
100
153
  if (!primitivePropertyTextureIndices) {
101
154
  return;
102
155
  }
103
- var _iterator3 = _createForOfIteratorHelper(primitivePropertyTextureIndices),
104
- _step3;
156
+ var _iterator4 = _createForOfIteratorHelper(primitivePropertyTextureIndices),
157
+ _step4;
105
158
  try {
106
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
107
- var primitivePropertyTextureIndex = _step3.value;
159
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
160
+ var primitivePropertyTextureIndex = _step4.value;
108
161
  var propertyTexture = propertyTextures[primitivePropertyTextureIndex];
109
162
  processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension);
110
163
  }
111
164
  } catch (err) {
112
- _iterator3.e(err);
165
+ _iterator4.e(err);
113
166
  } finally {
114
- _iterator3.f();
167
+ _iterator4.f();
115
168
  }
116
169
  }
117
170
  function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive, extension) {
@@ -122,10 +175,10 @@ function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive,
122
175
  extension.dataAttributeNames = [];
123
176
  }
124
177
  var className = propertyTexture.class;
125
- for (var propName in propertyTexture.properties) {
178
+ for (var propertyName in propertyTexture.properties) {
126
179
  var _propertyTexture$prop;
127
- var attributeName = "".concat(className, "_").concat(propName);
128
- var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[propName];
180
+ var attributeName = "".concat(className, "_").concat(propertyName);
181
+ var textureInfoTopLevel = (_propertyTexture$prop = propertyTexture.properties) === null || _propertyTexture$prop === void 0 ? void 0 : _propertyTexture$prop[propertyName];
129
182
  if (!textureInfoTopLevel) {
130
183
  continue;
131
184
  }
@@ -133,11 +186,11 @@ function processPrimitivePropertyTexture(scenegraph, propertyTexture, primitive,
133
186
  textureInfoTopLevel.data = [];
134
187
  }
135
188
  var featureTextureTable = textureInfoTopLevel.data;
136
- var propertyData = (0, _dataProcessing.getPrimitiveTextureData)(scenegraph, textureInfoTopLevel, primitive);
189
+ var propertyData = (0, _dTilesUtils.getPrimitiveTextureData)(scenegraph, textureInfoTopLevel, primitive);
137
190
  if (propertyData === null) {
138
191
  continue;
139
192
  }
140
- (0, _dataProcessing.primitivePropertyDataToAttributes)(scenegraph, attributeName, propertyData, featureTextureTable, primitive);
193
+ (0, _dTilesUtils.primitivePropertyDataToAttributes)(scenegraph, attributeName, propertyData, featureTextureTable, primitive);
141
194
  textureInfoTopLevel.data = featureTextureTable;
142
195
  extension.dataAttributeNames.push(attributeName);
143
196
  }
@@ -163,14 +216,8 @@ function getPropertyDataFromBinarySource(scenegraph, schema, classProperty, numb
163
216
  var data = [];
164
217
  var valuesBufferView = propertyTableProperty.values;
165
218
  var valuesDataBytes = scenegraph.getTypedArrayForBufferView(valuesBufferView);
166
- var arrayOffsets = null;
167
- if (classProperty.array && typeof classProperty.count === 'undefined' && typeof propertyTableProperty.arrayOffsets !== 'undefined' && typeof propertyTableProperty.arrayOffsetType !== 'undefined') {
168
- arrayOffsets = getOffsetArray(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType, numberOfElements);
169
- }
170
- var stringOffsets = null;
171
- if (typeof propertyTableProperty.stringOffsets !== 'undefined' && typeof propertyTableProperty.stringOffsetType !== 'undefined') {
172
- stringOffsets = getOffsetArray(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType, numberOfElements);
173
- }
219
+ var arrayOffsets = getArrayOffsetsForProperty(scenegraph, classProperty, propertyTableProperty, numberOfElements);
220
+ var stringOffsets = getStringOffsetsForProperty(scenegraph, propertyTableProperty, numberOfElements);
174
221
  switch (classProperty.type) {
175
222
  case 'SCALAR':
176
223
  case 'VEC2':
@@ -202,66 +249,62 @@ function getPropertyDataFromBinarySource(scenegraph, schema, classProperty, numb
202
249
  }
203
250
  return data;
204
251
  }
205
- function getOffsetArray(scenegraph, offsets, offsetType, numberOfElements) {
206
- var arrayOffsetsBufferView = offsets;
207
- var arrayOffsetsBytes = scenegraph.getTypedArrayForBufferView(arrayOffsetsBufferView);
208
- var arrayOffsets = (0, _dataProcessing.convertRawBufferToMetadataArray)(arrayOffsetsBytes, 'SCALAR', offsetType, numberOfElements + 1);
209
- return arrayOffsets;
252
+ function getArrayOffsetsForProperty(scenegraph, classProperty, propertyTableProperty, numberOfElements) {
253
+ if (classProperty.array && typeof classProperty.count === 'undefined' && typeof propertyTableProperty.arrayOffsets !== 'undefined') {
254
+ return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.arrayOffsets, propertyTableProperty.arrayOffsetType || 'UINT32', numberOfElements);
255
+ }
256
+ return null;
257
+ }
258
+ function getStringOffsetsForProperty(scenegraph, propertyTableProperty, numberOfElements) {
259
+ if (typeof propertyTableProperty.stringOffsets !== 'undefined') {
260
+ return (0, _dTilesUtils.getOffsetsForProperty)(scenegraph, propertyTableProperty.stringOffsets, propertyTableProperty.stringOffsetType || 'UINT32', numberOfElements);
261
+ }
262
+ return null;
210
263
  }
211
264
  function getPropertyDataNumeric(classProperty, numberOfElements, valuesDataBytes, arrayOffsets) {
212
265
  var isArray = classProperty.array;
213
266
  var arrayCount = classProperty.count;
214
- var elementSize = (0, _dataProcessing.getArrayElementByteSize)(classProperty.type, classProperty.componentType);
267
+ var elementSize = (0, _dTilesUtils.getArrayElementByteSize)(classProperty.type, classProperty.componentType);
215
268
  var elementCount = valuesDataBytes.byteLength / elementSize;
216
269
  var valuesData;
217
270
  if (classProperty.componentType) {
218
- valuesData = (0, _dataProcessing.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, classProperty.componentType, elementCount);
271
+ valuesData = (0, _dTilesUtils.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, classProperty.componentType, elementCount);
272
+ if (!valuesData) {
273
+ valuesData = valuesDataBytes;
274
+ }
219
275
  } else {
220
276
  valuesData = valuesDataBytes;
221
277
  }
222
278
  if (isArray) {
223
279
  if (arrayOffsets) {
224
- return handleVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytes.length, elementSize);
280
+ return parseVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytes.length, elementSize);
225
281
  }
226
282
  if (arrayCount) {
227
- return handleFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount);
283
+ return parseFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount);
228
284
  }
229
285
  return [];
230
286
  }
231
- var attributeValueArray = [];
232
- for (var index = 0; index < numberOfElements; index++) {
233
- var value = valuesData[index];
234
- attributeValueArray.push(value);
235
- }
236
- return attributeValueArray;
287
+ return valuesData;
237
288
  }
238
- function handleVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytesLength, elementSize) {
289
+ function parseVariableLengthArrayNumeric(valuesData, numberOfElements, arrayOffsets, valuesDataBytesLength, valueSize) {
239
290
  var attributeValueArray = [];
240
291
  for (var index = 0; index < numberOfElements; index++) {
241
- var array = [];
242
292
  var arrayOffset = arrayOffsets[index];
243
293
  var arrayByteSize = arrayOffsets[index + 1] - arrayOffsets[index];
244
- if (arrayByteSize + arrayOffset <= valuesDataBytesLength) {
245
- var typedArrayOffset = arrayOffset / elementSize;
246
- var elementCount = arrayByteSize / elementSize;
247
- for (var i = 0; i < elementCount; i++) {
248
- var value = valuesData[typedArrayOffset + i];
249
- array.push(value);
250
- }
294
+ if (arrayByteSize + arrayOffset > valuesDataBytesLength) {
295
+ break;
251
296
  }
252
- attributeValueArray.push(array);
297
+ var typedArrayOffset = arrayOffset / valueSize;
298
+ var elementCount = arrayByteSize / valueSize;
299
+ attributeValueArray.push(valuesData.slice(typedArrayOffset, typedArrayOffset + elementCount));
253
300
  }
254
301
  return attributeValueArray;
255
302
  }
256
- function handleFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount) {
303
+ function parseFixedLengthArrayNumeric(valuesData, numberOfElements, arrayCount) {
257
304
  var attributeValueArray = [];
258
305
  for (var index = 0; index < numberOfElements; index++) {
259
- var array = [];
260
- for (var i = 0; i < arrayCount; i++) {
261
- var value = valuesData[i];
262
- array.push(value);
263
- }
264
- attributeValueArray.push(array);
306
+ var elementOffset = index * arrayCount;
307
+ attributeValueArray.push(valuesData.slice(elementOffset, elementOffset + arrayCount));
265
308
  }
266
309
  return attributeValueArray;
267
310
  }
@@ -288,9 +331,6 @@ function getPropertyDataString(classProperty, numberOfElements, valuesDataBytes,
288
331
  }
289
332
  function getPropertyDataENUM(schema, classProperty, numberOfElements, valuesDataBytes, arrayOffsets) {
290
333
  var _schema$enums;
291
- var data = [];
292
- var isArray = classProperty.array;
293
- var arrayCount = classProperty.count;
294
334
  var enumType = classProperty.enumType;
295
335
  if (!enumType) {
296
336
  throw new Error('Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM');
@@ -300,86 +340,92 @@ function getPropertyDataENUM(schema, classProperty, numberOfElements, valuesData
300
340
  throw new Error("Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ".concat(enumType));
301
341
  }
302
342
  var enumValueType = enumEntry.valueType || 'UINT16';
303
- var elementSize = (0, _dataProcessing.getArrayElementByteSize)(classProperty.type, enumValueType);
343
+ var elementSize = (0, _dTilesUtils.getArrayElementByteSize)(classProperty.type, enumValueType);
304
344
  var elementCount = valuesDataBytes.byteLength / elementSize;
305
- var valuesData = (0, _dataProcessing.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, enumValueType, elementCount);
306
- if (isArray) {
345
+ var valuesData = (0, _dTilesUtils.convertRawBufferToMetadataArray)(valuesDataBytes, classProperty.type, enumValueType, elementCount);
346
+ if (!valuesData) {
347
+ valuesData = valuesDataBytes;
348
+ }
349
+ if (classProperty.array) {
307
350
  if (arrayOffsets) {
308
- return handleVariableLengthArrayENUM(valuesData, numberOfElements, arrayOffsets, valuesDataBytes.length, elementSize, enumEntry);
351
+ return parseVariableLengthArrayENUM({
352
+ valuesData: valuesData,
353
+ numberOfElements: numberOfElements,
354
+ arrayOffsets: arrayOffsets,
355
+ valuesDataBytesLength: valuesDataBytes.length,
356
+ elementSize: elementSize,
357
+ enumEntry: enumEntry
358
+ });
309
359
  }
360
+ var arrayCount = classProperty.count;
310
361
  if (arrayCount) {
311
- return handleFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry);
362
+ return parseFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry);
312
363
  }
313
364
  return [];
314
365
  }
315
- for (var index = 0; index < numberOfElements; index++) {
316
- var enumValue = valuesData[index];
317
- var enumObject = getEnumByValue(enumEntry, enumValue);
318
- if (enumObject) {
319
- data.push(enumObject.name);
320
- }
321
- }
322
- return data;
366
+ return getEnumsArray(valuesData, 0, numberOfElements, enumEntry);
323
367
  }
324
- function handleVariableLengthArrayENUM(valuesData, numberOfElements, arrayOffsets, valuesDataBytesLength, elementSize, enumEntry) {
368
+ function parseVariableLengthArrayENUM(params) {
369
+ var valuesData = params.valuesData,
370
+ numberOfElements = params.numberOfElements,
371
+ arrayOffsets = params.arrayOffsets,
372
+ valuesDataBytesLength = params.valuesDataBytesLength,
373
+ elementSize = params.elementSize,
374
+ enumEntry = params.enumEntry;
325
375
  var attributeValueArray = [];
326
376
  for (var index = 0; index < numberOfElements; index++) {
327
- var array = [];
328
377
  var arrayOffset = arrayOffsets[index];
329
378
  var arrayByteSize = arrayOffsets[index + 1] - arrayOffsets[index];
330
- if (arrayByteSize + arrayOffset <= valuesDataBytesLength) {
331
- var typedArrayOffset = arrayOffset / elementSize;
332
- var elementCount = arrayByteSize / elementSize;
333
- for (var i = 0; i < elementCount; i++) {
334
- var value = valuesData[typedArrayOffset + i];
335
- var enumObject = getEnumByValue(enumEntry, value);
336
- if (enumObject) {
337
- array.push(enumObject.name);
338
- }
339
- }
379
+ if (arrayByteSize + arrayOffset > valuesDataBytesLength) {
380
+ break;
340
381
  }
382
+ var typedArrayOffset = arrayOffset / elementSize;
383
+ var elementCount = arrayByteSize / elementSize;
384
+ var array = getEnumsArray(valuesData, typedArrayOffset, elementCount, enumEntry);
341
385
  attributeValueArray.push(array);
342
386
  }
343
387
  return attributeValueArray;
344
388
  }
345
- function handleFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry) {
389
+ function parseFixedLengthArrayENUM(valuesData, numberOfElements, arrayCount, enumEntry) {
346
390
  var attributeValueArray = [];
347
391
  for (var index = 0; index < numberOfElements; index++) {
348
- var array = [];
349
- for (var i = 0; i < arrayCount; i++) {
350
- var value = valuesData[i];
351
- var enumObject = getEnumByValue(enumEntry, value);
352
- if (enumObject) {
353
- array.push(enumObject.name);
354
- }
355
- }
392
+ var elementOffset = arrayCount * index;
393
+ var array = getEnumsArray(valuesData, elementOffset, arrayCount, enumEntry);
356
394
  attributeValueArray.push(array);
357
395
  }
358
396
  return attributeValueArray;
359
397
  }
360
- function findPropertyTableByClass(propertyTables, schemaClassName) {
361
- for (var i = 0, len = propertyTables.length; i < len; i++) {
362
- var propertyTable = propertyTables[i];
363
- if (propertyTable.class === schemaClassName) {
364
- return propertyTable;
398
+ function getEnumsArray(valuesData, offset, count, enumEntry) {
399
+ var array = [];
400
+ for (var i = 0; i < count; i++) {
401
+ if (valuesData instanceof BigInt64Array || valuesData instanceof BigUint64Array) {
402
+ array.push('');
403
+ } else {
404
+ var value = valuesData[offset + i];
405
+ var enumObject = getEnumByValue(enumEntry, value);
406
+ if (enumObject) {
407
+ array.push(enumObject.name);
408
+ } else {
409
+ array.push('');
410
+ }
365
411
  }
366
412
  }
367
- return null;
413
+ return array;
368
414
  }
369
415
  function getEnumByValue(enumEntry, value) {
370
- var _iterator4 = _createForOfIteratorHelper(enumEntry.values),
371
- _step4;
416
+ var _iterator5 = _createForOfIteratorHelper(enumEntry.values),
417
+ _step5;
372
418
  try {
373
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
374
- var enumValue = _step4.value;
419
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
420
+ var enumValue = _step5.value;
375
421
  if (enumValue.value === value) {
376
422
  return enumValue;
377
423
  }
378
424
  }
379
425
  } catch (err) {
380
- _iterator4.e(err);
426
+ _iterator5.e(err);
381
427
  } finally {
382
- _iterator4.f();
428
+ _iterator5.f();
383
429
  }
384
430
  return null;
385
431
  }