@loaders.gl/draco 3.4.0-alpha.2 → 3.4.0-alpha.4

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 (55) hide show
  1. package/dist/draco-loader.js +1 -1
  2. package/dist/draco-nodejs-worker.js +46 -46
  3. package/dist/draco-nodejs-worker.js.map +2 -2
  4. package/dist/draco-worker.js +1 -1
  5. package/dist/draco-writer-nodejs-worker.js +55 -55
  6. package/dist/draco-writer-nodejs-worker.js.map +2 -2
  7. package/dist/draco-writer-worker.js +2 -2
  8. package/dist/es5/draco-loader.js +0 -2
  9. package/dist/es5/draco-loader.js.map +1 -1
  10. package/dist/es5/draco-writer-nodejs.js.map +1 -1
  11. package/dist/es5/draco-writer.js +18 -21
  12. package/dist/es5/draco-writer.js.map +1 -1
  13. package/dist/es5/draco3d/draco3d-types.js +16 -16
  14. package/dist/es5/draco3d/draco3d-types.js.map +1 -1
  15. package/dist/es5/index.js +17 -20
  16. package/dist/es5/index.js.map +1 -1
  17. package/dist/es5/lib/draco-builder.js +12 -41
  18. package/dist/es5/lib/draco-builder.js.map +1 -1
  19. package/dist/es5/lib/draco-module-loader.js +95 -104
  20. package/dist/es5/lib/draco-module-loader.js.map +1 -1
  21. package/dist/es5/lib/draco-parser.js +16 -61
  22. package/dist/es5/lib/draco-parser.js.map +1 -1
  23. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -1
  24. package/dist/es5/lib/utils/version.js +1 -1
  25. package/dist/es5/lib/utils/version.js.map +1 -1
  26. package/dist/es5/workers/draco-nodejs-worker.js.map +1 -1
  27. package/dist/es5/workers/draco-worker.js.map +1 -1
  28. package/dist/es5/workers/draco-writer-nodejs-worker.js +29 -31
  29. package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -1
  30. package/dist/es5/workers/draco-writer-worker.js +29 -31
  31. package/dist/es5/workers/draco-writer-worker.js.map +1 -1
  32. package/dist/esm/bundle.js +0 -1
  33. package/dist/esm/bundle.js.map +1 -1
  34. package/dist/esm/draco-loader.js +0 -1
  35. package/dist/esm/draco-loader.js.map +1 -1
  36. package/dist/esm/draco-writer-nodejs.js +0 -1
  37. package/dist/esm/draco-writer-nodejs.js.map +1 -1
  38. package/dist/esm/draco-writer.js +0 -1
  39. package/dist/esm/draco-writer.js.map +1 -1
  40. package/dist/esm/draco3d/draco3d-types.js +12 -18
  41. package/dist/esm/draco3d/draco3d-types.js.map +1 -1
  42. package/dist/esm/index.js +0 -5
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/lib/draco-builder.js +0 -17
  45. package/dist/esm/lib/draco-builder.js.map +1 -1
  46. package/dist/esm/lib/draco-module-loader.js +0 -6
  47. package/dist/esm/lib/draco-module-loader.js.map +1 -1
  48. package/dist/esm/lib/draco-parser.js +0 -28
  49. package/dist/esm/lib/draco-parser.js.map +1 -1
  50. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -1
  51. package/dist/esm/lib/utils/version.js +1 -2
  52. package/dist/esm/lib/utils/version.js.map +1 -1
  53. package/dist/esm/workers/draco-writer-nodejs-worker.js.map +1 -1
  54. package/dist/esm/workers/draco-writer-worker.js.map +1 -1
  55. package/package.json +6 -6
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import { loadLibrary } from '@loaders.gl/worker-utils';
4
2
  const DRACO_DECODER_VERSION = '1.5.5';
5
3
  const DRACO_ENCODER_VERSION = '1.4.1';
@@ -12,7 +10,6 @@ let loadDecoderPromise;
12
10
  let loadEncoderPromise;
13
11
  export async function loadDracoDecoderModule(options) {
14
12
  const modules = options.modules || {};
15
-
16
13
  if (modules.draco3d) {
17
14
  loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(draco => {
18
15
  return {
@@ -26,7 +23,6 @@ export async function loadDracoDecoderModule(options) {
26
23
  }
27
24
  export async function loadDracoEncoderModule(options) {
28
25
  const modules = options.modules || {};
29
-
30
26
  if (modules.draco3d) {
31
27
  loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(draco => {
32
28
  return {
@@ -38,7 +34,6 @@ export async function loadDracoEncoderModule(options) {
38
34
  }
39
35
  return await loadEncoderPromise;
40
36
  }
41
-
42
37
  async function loadDracoDecoder(options) {
43
38
  let DracoDecoderModule;
44
39
  let wasmBinary;
@@ -67,7 +62,6 @@ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
67
62
  });
68
63
  });
69
64
  }
70
-
71
65
  async function loadDracoEncoder(options) {
72
66
  let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);
73
67
  DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
@@ -1 +1 @@
1
- {"version":3,"file":"draco-module-loader.js","names":["loadLibrary","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","loadEncoderPromise","loadDracoDecoderModule","options","modules","draco3d","createDecoderModule","then","draco","loadDracoDecoder","loadDracoEncoderModule","createEncoderModule","loadDracoEncoder","DracoDecoderModule","wasmBinary","decoderType","Promise","all","globalThis","initializeDracoDecoder","resolve","onModuleLoaded","DracoEncoderModule"],"sources":["../../../src/lib/draco-module-loader.ts"],"sourcesContent":["// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst DRACO_DECODER_VERSION = '1.5.5';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nconst DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;\nconst DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;\nconst DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;\n\nconst DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise =\n loadDecoderPromise ||\n modules.draco3d.createDecoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise =\n loadEncoderPromise ||\n modules.draco3d.createEncoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, 'draco', options);\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(DRACO_WASM_WRAPPER_URL, 'draco', options),\n await loadLibrary(DRACO_WASM_DECODER_URL, 'draco', options)\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options: {wasmBinary?: any} = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"draco-module-loader.js","names":["loadLibrary","DRACO_DECODER_VERSION","DRACO_ENCODER_VERSION","STATIC_DECODER_URL","concat","DRACO_JS_DECODER_URL","DRACO_WASM_WRAPPER_URL","DRACO_WASM_DECODER_URL","DRACO_ENCODER_URL","loadDecoderPromise","loadEncoderPromise","loadDracoDecoderModule","options","modules","draco3d","createDecoderModule","then","draco","loadDracoDecoder","loadDracoEncoderModule","createEncoderModule","loadDracoEncoder","DracoDecoderModule","wasmBinary","decoderType","Promise","all","globalThis","initializeDracoDecoder","resolve","onModuleLoaded","DracoEncoderModule"],"sources":["../../../src/lib/draco-module-loader.ts"],"sourcesContent":["// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst DRACO_DECODER_VERSION = '1.5.5';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nconst DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;\nconst DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;\nconst DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;\n\nconst DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise =\n loadDecoderPromise ||\n modules.draco3d.createDecoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise =\n loadEncoderPromise ||\n modules.draco3d.createEncoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, 'draco', options);\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(DRACO_WASM_WRAPPER_URL, 'draco', options),\n await loadLibrary(DRACO_WASM_DECODER_URL, 'draco', options)\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options: {wasmBinary?: any} = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n"],"mappings":"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"}
@@ -1,13 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
2
  import { getMeshBoundingBox } from '@loaders.gl/schema';
4
3
  import { getDracoSchema } from './utils/get-draco-schema';
5
-
6
4
  const GEOMETRY_TYPE = {
7
5
  TRIANGULAR_MESH: 0,
8
6
  POINT_CLOUD: 1
9
7
  };
10
-
11
8
  const DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {
12
9
  POSITION: 'POSITION',
13
10
  NORMAL: 'NORMAL',
@@ -33,12 +30,10 @@ export default class DracoParser {
33
30
  this.decoder = new this.draco.Decoder();
34
31
  this.metadataQuerier = new this.draco.MetadataQuerier();
35
32
  }
36
-
37
33
  destroy() {
38
34
  this.draco.destroy(this.decoder);
39
35
  this.draco.destroy(this.metadataQuerier);
40
36
  }
41
-
42
37
  parseSync(arrayBuffer) {
43
38
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
44
39
  const buffer = new this.draco.DecoderBuffer();
@@ -84,7 +79,6 @@ export default class DracoParser {
84
79
  }
85
80
  }
86
81
  }
87
-
88
82
  _getDracoLoaderData(dracoGeometry, geometry_type, options) {
89
83
  const metadata = this._getTopLevelMetadata(dracoGeometry);
90
84
  const attributes = this._getDracoAttributes(dracoGeometry, options);
@@ -97,7 +91,6 @@ export default class DracoParser {
97
91
  attributes
98
92
  };
99
93
  }
100
-
101
94
  _getDracoAttributes(dracoGeometry, options) {
102
95
  const dracoAttributes = {};
103
96
  for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
@@ -114,7 +107,6 @@ export default class DracoParser {
114
107
  attribute_index: attributeId,
115
108
  metadata
116
109
  };
117
-
118
110
  const quantization = this._getQuantizationTransform(dracoAttribute, options);
119
111
  if (quantization) {
120
112
  dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;
@@ -126,14 +118,12 @@ export default class DracoParser {
126
118
  }
127
119
  return dracoAttributes;
128
120
  }
129
-
130
121
  _getMeshData(dracoGeometry, loaderData, options) {
131
122
  const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
132
123
  const positionAttribute = attributes.POSITION;
133
124
  if (!positionAttribute) {
134
125
  throw new Error('DRACO: No position attribute found.');
135
126
  }
136
-
137
127
  if (dracoGeometry instanceof this.draco.Mesh) {
138
128
  switch (options.topology) {
139
129
  case 'triangle-strip':
@@ -159,7 +149,6 @@ export default class DracoParser {
159
149
  };
160
150
  }
161
151
  }
162
-
163
152
  return {
164
153
  topology: 'point-list',
165
154
  mode: 0,
@@ -185,7 +174,6 @@ export default class DracoParser {
185
174
  }
186
175
  return attributes;
187
176
  }
188
-
189
177
  _getTriangleListIndices(dracoGeometry) {
190
178
  const numFaces = dracoGeometry.num_faces();
191
179
  const numIndices = numFaces * 3;
@@ -198,7 +186,6 @@ export default class DracoParser {
198
186
  this.draco._free(ptr);
199
187
  }
200
188
  }
201
-
202
189
  _getTriangleStripIndices(dracoGeometry) {
203
190
  const dracoArray = new this.draco.DracoInt32Array();
204
191
  try {
@@ -208,7 +195,6 @@ export default class DracoParser {
208
195
  this.draco.destroy(dracoArray);
209
196
  }
210
197
  }
211
-
212
198
  _getAttributeValues(dracoGeometry, attribute) {
213
199
  const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
214
200
  const numComponents = attribute.num_components;
@@ -230,7 +216,6 @@ export default class DracoParser {
230
216
  size: numComponents
231
217
  };
232
218
  }
233
-
234
219
  _deduceAttributeName(attribute, options) {
235
220
  const uniqueId = attribute.unique_id;
236
221
  for (const [attributeName, attributeUniqueId] of Object.entries(options.extraAttributes || {})) {
@@ -238,7 +223,6 @@ export default class DracoParser {
238
223
  return attributeName;
239
224
  }
240
225
  }
241
-
242
226
  const thisAttributeType = attribute.attribute_type;
243
227
  for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {
244
228
  const attributeType = this.draco[dracoAttributeConstant];
@@ -246,25 +230,20 @@ export default class DracoParser {
246
230
  return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];
247
231
  }
248
232
  }
249
-
250
233
  const entryName = options.attributeNameEntry || 'name';
251
234
  if (attribute.metadata[entryName]) {
252
235
  return attribute.metadata[entryName].string;
253
236
  }
254
-
255
237
  return "CUSTOM_ATTRIBUTE_".concat(uniqueId);
256
238
  }
257
-
258
239
  _getTopLevelMetadata(dracoGeometry) {
259
240
  const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
260
241
  return this._getDracoMetadata(dracoMetadata);
261
242
  }
262
-
263
243
  _getAttributeMetadata(dracoGeometry, attributeId) {
264
244
  const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
265
245
  return this._getDracoMetadata(dracoMetadata);
266
246
  }
267
-
268
247
  _getDracoMetadata(dracoMetadata) {
269
248
  if (!dracoMetadata || !dracoMetadata.ptr) {
270
249
  return {};
@@ -277,7 +256,6 @@ export default class DracoParser {
277
256
  }
278
257
  return result;
279
258
  }
280
-
281
259
  _getDracoMetadataField(dracoMetadata, entryName) {
282
260
  const dracoArray = new this.draco.DracoInt32Array();
283
261
  try {
@@ -293,7 +271,6 @@ export default class DracoParser {
293
271
  this.draco.destroy(dracoArray);
294
272
  }
295
273
  }
296
-
297
274
  _disableAttributeTransforms(options) {
298
275
  const {
299
276
  quantizedAttributes = [],
@@ -304,7 +281,6 @@ export default class DracoParser {
304
281
  this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);
305
282
  }
306
283
  }
307
-
308
284
  _getQuantizationTransform(dracoAttribute, options) {
309
285
  const {
310
286
  quantizedAttributes = []
@@ -347,9 +323,7 @@ export default class DracoParser {
347
323
  }
348
324
  return null;
349
325
  }
350
-
351
326
  }
352
-
353
327
  function getDracoDataType(draco, attributeType) {
354
328
  switch (attributeType) {
355
329
  case Float32Array:
@@ -370,7 +344,6 @@ function getDracoDataType(draco, attributeType) {
370
344
  return draco.DT_INVALID;
371
345
  }
372
346
  }
373
-
374
347
  function getInt32Array(dracoArray) {
375
348
  const numValues = dracoArray.size();
376
349
  const intArray = new Int32Array(numValues);
@@ -379,7 +352,6 @@ function getInt32Array(dracoArray) {
379
352
  }
380
353
  return intArray;
381
354
  }
382
-
383
355
  function getUint32Array(dracoArray) {
384
356
  const numValues = dracoArray.size();
385
357
  const intArray = new Int32Array(numValues);
@@ -1 +1 @@
1
- {"version":3,"file":"draco-parser.js","names":["getMeshBoundingBox","getDracoSchema","GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","constructor","draco","decoder","Decoder","metadataQuerier","MetadataQuerier","destroy","parseSync","arrayBuffer","options","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","attributes","schema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","value","_getTriangleStripIndices","size","_getTriangleListIndices","loaderAttribute","Object","values","attributeName","_deduceAttributeName","name","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","slice","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","attributeUniqueId","entries","extraAttributes","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","quantizedAttributes","octahedronAttributes","skipAttributes","dracoAttributeName","SkipAttributeTransform","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","i","min_value","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":";;AA2BA,SAAQA,kBAAkB,QAAO,oBAAoB;AACrD,SAAQC,cAAc,QAAO,0BAA0B;;AAmBvD,MAAMC,aAAa,GAAG;EACpBC,eAAe,EAAE,CAAC;EAClBC,WAAW,EAAE;AACf,CAAC;;AAGD,MAAMC,gCAAgC,GAAG;EACvCC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,SAAS;EAChBC,SAAS,EAAE;AACb,CAAC;AAED,MAAMC,kCAAkC,GAAG;EACzC,CAAC,EAAEC,SAAS;EACZ,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,WAAW;EACd,CAAC,EAAEC,UAAU;EACb,CAAC,EAAEC,WAAW;EACd,CAAC,EAAEC;AACL,CAAC;AAED,MAAMC,eAAe,GAAG,CAAC;AAEzB,eAAe,MAAMC,WAAW,CAAC;EAM/BC,WAAW,CAACC,KAAc,EAAE;IAAA;IAAA;IAAA;IAC1B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAG,IAAI,IAAI,CAACD,KAAK,CAACE,OAAO,EAAE;IACvC,IAAI,CAACC,eAAe,GAAG,IAAI,IAAI,CAACH,KAAK,CAACI,eAAe,EAAE;EACzD;;EAKAC,OAAO,GAAS;IACd,IAAI,CAACL,KAAK,CAACK,OAAO,CAAC,IAAI,CAACJ,OAAO,CAAC;IAChC,IAAI,CAACD,KAAK,CAACK,OAAO,CAAC,IAAI,CAACF,eAAe,CAAC;EAC1C;;EAOAG,SAAS,CAACC,WAAwB,EAA8C;IAAA,IAA5CC,OAA0B,uEAAG,CAAC,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAI,IAAI,CAACT,KAAK,CAACU,aAAa,EAAE;IAC7CD,MAAM,CAACE,IAAI,CAAC,IAAIrB,SAAS,CAACiB,WAAW,CAAC,EAAEA,WAAW,CAACK,UAAU,CAAC;IAE/D,IAAI,CAACC,2BAA2B,CAACL,OAAO,CAAC;IAEzC,MAAMM,aAAa,GAAG,IAAI,CAACb,OAAO,CAACc,sBAAsB,CAACN,MAAM,CAAC;IACjE,MAAMO,aAAa,GACjBF,aAAa,KAAK,IAAI,CAACd,KAAK,CAAClB,eAAe,GACxC,IAAI,IAAI,CAACkB,KAAK,CAACiB,IAAI,EAAE,GACrB,IAAI,IAAI,CAACjB,KAAK,CAACkB,UAAU,EAAE;IAEjC,IAAI;MACF,IAAIC,WAAW;MACf,QAAQL,aAAa;QACnB,KAAK,IAAI,CAACd,KAAK,CAAClB,eAAe;UAC7BqC,WAAW,GAAG,IAAI,CAAClB,OAAO,CAACmB,kBAAkB,CAACX,MAAM,EAAEO,aAAa,CAAS;UAC5E;QAEF,KAAK,IAAI,CAAChB,KAAK,CAACjB,WAAW;UACzBoC,WAAW,GAAG,IAAI,CAAClB,OAAO,CAACoB,wBAAwB,CAACZ,MAAM,EAAEO,aAAa,CAAC;UAC1E;QAEF;UACE,MAAM,IAAIM,KAAK,CAAC,+BAA+B,CAAC;MAAC;MAGrD,IAAI,CAACH,WAAW,CAACI,EAAE,EAAE,IAAI,CAACP,aAAa,CAACQ,GAAG,EAAE;QAC3C,MAAMC,OAAO,yCAAkCN,WAAW,CAACO,SAAS,EAAE,CAAE;QAExE,MAAM,IAAIJ,KAAK,CAACG,OAAO,CAAC;MAC1B;MAEA,MAAME,UAAU,GAAG,IAAI,CAACC,mBAAmB,CAACZ,aAAa,EAAEF,aAAa,EAAEN,OAAO,CAAC;MAElF,MAAMqB,QAAQ,GAAG,IAAI,CAACC,YAAY,CAACd,aAAa,EAAEW,UAAU,EAAEnB,OAAO,CAAC;MAEtE,MAAMuB,WAAW,GAAGpD,kBAAkB,CAACkD,QAAQ,CAACG,UAAU,CAAC;MAE3D,MAAMC,MAAM,GAAGrD,cAAc,CAACiD,QAAQ,CAACG,UAAU,EAAEL,UAAU,EAAEE,QAAQ,CAACK,OAAO,CAAC;MAEhF,MAAMC,IAAe,GAAG;QACtBC,MAAM,EAAE,OAAO;QACfT,UAAU;QACVU,MAAM,EAAE;UACNC,WAAW,EAAEtB,aAAa,CAACuB,UAAU,EAAE;UACvCR;QACF,CAAC;QACD,GAAGF,QAAQ;QACXI;MACF,CAAC;MACD,OAAOE,IAAI;IACb,CAAC,SAAS;MACR,IAAI,CAACnC,KAAK,CAACK,OAAO,CAACI,MAAM,CAAC;MAC1B,IAAIO,aAAa,EAAE;QACjB,IAAI,CAAChB,KAAK,CAACK,OAAO,CAACW,aAAa,CAAC;MACnC;IACF;EACF;;EAWAY,mBAAmB,CACjBZ,aAAgC,EAChCF,aAAa,EACbN,OAA0B,EACT;IACjB,MAAMgC,QAAQ,GAAG,IAAI,CAACC,oBAAoB,CAACzB,aAAa,CAAC;IACzD,MAAMgB,UAAU,GAAG,IAAI,CAACU,mBAAmB,CAAC1B,aAAa,EAAER,OAAO,CAAC;IAEnE,OAAO;MACLM,aAAa;MACb6B,cAAc,EAAE3B,aAAa,CAAC2B,cAAc,EAAE;MAC9CJ,UAAU,EAAEvB,aAAa,CAACuB,UAAU,EAAE;MACtCK,SAAS,EAAE5B,aAAa,YAAY,IAAI,CAAChB,KAAK,CAACiB,IAAI,GAAGD,aAAa,CAAC4B,SAAS,EAAE,GAAG,CAAC;MACnFJ,QAAQ;MACRR;IACF,CAAC;EACH;;EAQAU,mBAAmB,CACjB1B,aAAgC,EAChCR,OAA0B,EACa;IACvC,MAAMqC,eAAsD,GAAG,CAAC,CAAC;IAEjE,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAG9B,aAAa,CAAC2B,cAAc,EAAE,EAAEG,WAAW,EAAE,EAAE;MAGrF,MAAMC,cAAc,GAAG,IAAI,CAAC9C,OAAO,CAAC+C,YAAY,CAAChC,aAAa,EAAE8B,WAAW,CAAC;MAE5E,MAAMN,QAAQ,GAAG,IAAI,CAACS,qBAAqB,CAACjC,aAAa,EAAE8B,WAAW,CAAC;MAEvED,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,GAAG;QAC5CA,SAAS,EAAEH,cAAc,CAACG,SAAS,EAAE;QACrCC,cAAc,EAAEJ,cAAc,CAACI,cAAc,EAAE;QAC/CC,SAAS,EAAEL,cAAc,CAACK,SAAS,EAAE;QACrCC,cAAc,EAAEN,cAAc,CAACM,cAAc,EAAE;QAE/CC,WAAW,EAAEP,cAAc,CAACO,WAAW,EAAE;QACzCC,WAAW,EAAER,cAAc,CAACQ,WAAW,EAAE;QACzCC,UAAU,EAAET,cAAc,CAACS,UAAU,EAAE;QACvCC,eAAe,EAAEX,WAAW;QAE5BN;MACF,CAAC;;MAGD,MAAMkB,YAAY,GAAG,IAAI,CAACC,yBAAyB,CAACZ,cAAc,EAAEvC,OAAO,CAAC;MAC5E,IAAIkD,YAAY,EAAE;QAChBb,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,CAACU,sBAAsB,GAAGF,YAAY;MACnF;MAEA,MAAMG,UAAU,GAAG,IAAI,CAACC,uBAAuB,CAACf,cAAc,EAAEvC,OAAO,CAAC;MACxE,IAAIqD,UAAU,EAAE;QACdhB,eAAe,CAACE,cAAc,CAACG,SAAS,EAAE,CAAC,CAACa,oBAAoB,GAAGF,UAAU;MAC/E;IACF;IAEA,OAAOhB,eAAe;EACxB;;EAQAf,YAAY,CACVd,aAAgC,EAChCW,UAA2B,EAC3BnB,OAA0B,EACZ;IACd,MAAMwB,UAAU,GAAG,IAAI,CAACgC,kBAAkB,CAACrC,UAAU,EAAEX,aAAa,EAAER,OAAO,CAAC;IAE9E,MAAMyD,iBAAiB,GAAGjC,UAAU,CAAC/C,QAAQ;IAC7C,IAAI,CAACgF,iBAAiB,EAAE;MACtB,MAAM,IAAI3C,KAAK,CAAC,qCAAqC,CAAC;IACxD;;IAGA,IAAIN,aAAa,YAAY,IAAI,CAAChB,KAAK,CAACiB,IAAI,EAAE;MAC5C,QAAQT,OAAO,CAAC0D,QAAQ;QACtB,KAAK,gBAAgB;UACnB,OAAO;YACLA,QAAQ,EAAE,gBAAgB;YAC1BC,IAAI,EAAE,CAAC;YACPnC,UAAU;YACVE,OAAO,EAAE;cACPkC,KAAK,EAAE,IAAI,CAACC,wBAAwB,CAACrD,aAAa,CAAC;cACnDsD,IAAI,EAAE;YACR;UACF,CAAC;QACH,KAAK,eAAe;QACpB;UACE,OAAO;YACLJ,QAAQ,EAAE,eAAe;YACzBC,IAAI,EAAE,CAAC;YACPnC,UAAU;YACVE,OAAO,EAAE;cACPkC,KAAK,EAAE,IAAI,CAACG,uBAAuB,CAACvD,aAAa,CAAC;cAClDsD,IAAI,EAAE;YACR;UACF,CAAC;MAAC;IAER;;IAGA,OAAO;MACLJ,QAAQ,EAAE,YAAY;MACtBC,IAAI,EAAE,CAAC;MACPnC;IACF,CAAC;EACH;EAEAgC,kBAAkB,CAChBrC,UAA2B,EAC3BX,aAAgC,EAChCR,OAA0B,EACgB;IAC1C,MAAMwB,UAA0C,GAAG,CAAC,CAAC;IAErD,KAAK,MAAMwC,eAAe,IAAIC,MAAM,CAACC,MAAM,CAAC/C,UAAU,CAACK,UAAU,CAAC,EAAE;MAClE,MAAM2C,aAAa,GAAG,IAAI,CAACC,oBAAoB,CAACJ,eAAe,EAAEhE,OAAO,CAAC;MACzEgE,eAAe,CAACK,IAAI,GAAGF,aAAa;MACpC,MAAM;QAACP,KAAK;QAAEE;MAAI,CAAC,GAAG,IAAI,CAACQ,mBAAmB,CAAC9D,aAAa,EAAEwD,eAAe,CAAC;MAC9ExC,UAAU,CAAC2C,aAAa,CAAC,GAAG;QAC1BP,KAAK;QACLE,IAAI;QACJS,UAAU,EAAEP,eAAe,CAAClB,WAAW;QACvC0B,UAAU,EAAER,eAAe,CAACjB,WAAW;QACvCC,UAAU,EAAEgB,eAAe,CAAChB;MAC9B,CAAC;IACH;IAEA,OAAOxB,UAAU;EACnB;;EAQAuC,uBAAuB,CAACvD,aAAmB,EAAE;IAE3C,MAAMiE,QAAQ,GAAGjE,aAAa,CAAC4B,SAAS,EAAE;IAC1C,MAAMsC,UAAU,GAAGD,QAAQ,GAAG,CAAC;IAC/B,MAAMrE,UAAU,GAAGsE,UAAU,GAAGrF,eAAe;IAE/C,MAAM2B,GAAG,GAAG,IAAI,CAACxB,KAAK,CAACmF,OAAO,CAACvE,UAAU,CAAC;IAC1C,IAAI;MACF,IAAI,CAACX,OAAO,CAACmF,uBAAuB,CAACpE,aAAa,EAAEJ,UAAU,EAAEY,GAAG,CAAC;MACpE,OAAO,IAAI7B,WAAW,CAAC,IAAI,CAACK,KAAK,CAACqF,OAAO,CAAC5E,MAAM,EAAEe,GAAG,EAAE0D,UAAU,CAAC,CAACI,KAAK,EAAE;IAC5E,CAAC,SAAS;MACR,IAAI,CAACtF,KAAK,CAACuF,KAAK,CAAC/D,GAAG,CAAC;IACvB;EACF;;EAMA6C,wBAAwB,CAACrD,aAAmB,EAAE;IAC5C,MAAMwE,UAAU,GAAG,IAAI,IAAI,CAACxF,KAAK,CAACyF,eAAe,EAAE;IACnD,IAAI;MACsB,IAAI,CAACxF,OAAO,CAACyF,yBAAyB,CAAC1E,aAAa,EAAEwE,UAAU,CAAC;MACzF,OAAOG,cAAc,CAACH,UAAU,CAAC;IACnC,CAAC,SAAS;MACR,IAAI,CAACxF,KAAK,CAACK,OAAO,CAACmF,UAAU,CAAC;IAChC;EACF;;EAQAV,mBAAmB,CACjB9D,aAAgC,EAChC4E,SAAyB,EACU;IACnC,MAAMC,cAAc,GAAGxG,kCAAkC,CAACuG,SAAS,CAACxC,SAAS,CAAC;IAC9E,MAAM0C,aAAa,GAAGF,SAAS,CAACvC,cAAc;IAC9C,MAAM0C,SAAS,GAAG/E,aAAa,CAACuB,UAAU,EAAE;IAC5C,MAAMyD,SAAS,GAAGD,SAAS,GAAGD,aAAa;IAE3C,MAAMlF,UAAU,GAAGoF,SAAS,GAAGH,cAAc,CAACI,iBAAiB;IAC/D,MAAMC,QAAQ,GAAGC,gBAAgB,CAAC,IAAI,CAACnG,KAAK,EAAE6F,cAAc,CAAC;IAE7D,IAAIzB,KAAiB;IAErB,MAAM5C,GAAG,GAAG,IAAI,CAACxB,KAAK,CAACmF,OAAO,CAACvE,UAAU,CAAC;IAC1C,IAAI;MACF,MAAMmC,cAAc,GAAG,IAAI,CAAC9C,OAAO,CAAC+C,YAAY,CAAChC,aAAa,EAAE4E,SAAS,CAACnC,eAAe,CAAC;MAC1F,IAAI,CAACxD,OAAO,CAACmG,iCAAiC,CAC5CpF,aAAa,EACb+B,cAAc,EACdmD,QAAQ,EACRtF,UAAU,EACVY,GAAG,CACJ;MACD4C,KAAK,GAAG,IAAIyB,cAAc,CAAC,IAAI,CAAC7F,KAAK,CAACqF,OAAO,CAAC5E,MAAM,EAAEe,GAAG,EAAEwE,SAAS,CAAC,CAACV,KAAK,EAAE;IAC/E,CAAC,SAAS;MACR,IAAI,CAACtF,KAAK,CAACuF,KAAK,CAAC/D,GAAG,CAAC;IACvB;IAEA,OAAO;MAAC4C,KAAK;MAAEE,IAAI,EAAEwB;IAAa,CAAC;EACrC;;EA4BAlB,oBAAoB,CAACgB,SAAyB,EAAEpF,OAA0B,EAAU;IAElF,MAAM6F,QAAQ,GAAGT,SAAS,CAAC1C,SAAS;IACpC,KAAK,MAAM,CAACyB,aAAa,EAAE2B,iBAAiB,CAAC,IAAI7B,MAAM,CAAC8B,OAAO,CAC7D/F,OAAO,CAACgG,eAAe,IAAI,CAAC,CAAC,CAC9B,EAAE;MACD,IAAIF,iBAAiB,KAAKD,QAAQ,EAAE;QAClC,OAAO1B,aAAa;MACtB;IACF;;IAGA,MAAM8B,iBAAiB,GAAGb,SAAS,CAACzC,cAAc;IAClD,KAAK,MAAMuD,sBAAsB,IAAI1H,gCAAgC,EAAE;MACrE,MAAM2H,aAAa,GAAG,IAAI,CAAC3G,KAAK,CAAC0G,sBAAsB,CAAC;MACxD,IAAIC,aAAa,KAAKF,iBAAiB,EAAE;QAGvC,OAAOzH,gCAAgC,CAAC0H,sBAAsB,CAAC;MACjE;IACF;;IAIA,MAAME,SAAS,GAAGpG,OAAO,CAACqG,kBAAkB,IAAI,MAAM;IACtD,IAAIjB,SAAS,CAACpD,QAAQ,CAACoE,SAAS,CAAC,EAAE;MACjC,OAAOhB,SAAS,CAACpD,QAAQ,CAACoE,SAAS,CAAC,CAACE,MAAM;IAC7C;;IAGA,kCAA2BT,QAAQ;EACrC;;EAKA5D,oBAAoB,CAACzB,aAAgC,EAAE;IACrD,MAAM+F,aAAa,GAAG,IAAI,CAAC9G,OAAO,CAAC+G,WAAW,CAAChG,aAAa,CAAC;IAC7D,OAAO,IAAI,CAACiG,iBAAiB,CAACF,aAAa,CAAC;EAC9C;;EAGA9D,qBAAqB,CAACjC,aAAgC,EAAE8B,WAAmB,EAAE;IAC3E,MAAMiE,aAAa,GAAG,IAAI,CAAC9G,OAAO,CAACiH,oBAAoB,CAAClG,aAAa,EAAE8B,WAAW,CAAC;IACnF,OAAO,IAAI,CAACmE,iBAAiB,CAACF,aAAa,CAAC;EAC9C;;EAOAE,iBAAiB,CAACF,aAAuB,EAAyC;IAEhF,IAAI,CAACA,aAAa,IAAI,CAACA,aAAa,CAACvF,GAAG,EAAE;MACxC,OAAO,CAAC,CAAC;IACX;IACA,MAAM2F,MAAM,GAAG,CAAC,CAAC;IACjB,MAAMC,UAAU,GAAG,IAAI,CAACjH,eAAe,CAACkH,UAAU,CAACN,aAAa,CAAC;IACjE,KAAK,IAAIO,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGF,UAAU,EAAEE,UAAU,EAAE,EAAE;MAC9D,MAAMV,SAAS,GAAG,IAAI,CAACzG,eAAe,CAACoH,YAAY,CAACR,aAAa,EAAEO,UAAU,CAAC;MAC9EH,MAAM,CAACP,SAAS,CAAC,GAAG,IAAI,CAACY,sBAAsB,CAACT,aAAa,EAAEH,SAAS,CAAC;IAC3E;IACA,OAAOO,MAAM;EACf;;EAOAK,sBAAsB,CAACT,aAAuB,EAAEH,SAAiB,EAAsB;IACrF,MAAMpB,UAAU,GAAG,IAAI,IAAI,CAACxF,KAAK,CAACyF,eAAe,EAAE;IACnD,IAAI;MAEF,IAAI,CAACtF,eAAe,CAACsH,gBAAgB,CAACV,aAAa,EAAEH,SAAS,EAAEpB,UAAU,CAAC;MAC3E,MAAMkC,QAAQ,GAAGC,aAAa,CAACnC,UAAU,CAAC;MAC1C,OAAO;QACLoC,GAAG,EAAE,IAAI,CAACzH,eAAe,CAAC0H,WAAW,CAACd,aAAa,EAAEH,SAAS,CAAC;QAC/DE,MAAM,EAAE,IAAI,CAAC3G,eAAe,CAAC2H,cAAc,CAACf,aAAa,EAAEH,SAAS,CAAC;QACrEmB,MAAM,EAAE,IAAI,CAAC5H,eAAe,CAAC6H,cAAc,CAACjB,aAAa,EAAEH,SAAS,CAAC;QACrEc;MACF,CAAC;IACH,CAAC,SAAS;MACR,IAAI,CAAC1H,KAAK,CAACK,OAAO,CAACmF,UAAU,CAAC;IAChC;EACF;;EAKA3E,2BAA2B,CAACL,OAA0B,EAAE;IACtD,MAAM;MAACyH,mBAAmB,GAAG,EAAE;MAAEC,oBAAoB,GAAG;IAAE,CAAC,GAAG1H,OAAO;IACrE,MAAM2H,cAAc,GAAG,CAAC,GAAGF,mBAAmB,EAAE,GAAGC,oBAAoB,CAAC;IACxE,KAAK,MAAME,kBAAkB,IAAID,cAAc,EAAE;MAC/C,IAAI,CAAClI,OAAO,CAACoI,sBAAsB,CAAC,IAAI,CAACrI,KAAK,CAACoI,kBAAkB,CAAC,CAAC;IACrE;EACF;;EAMAzE,yBAAyB,CACvBZ,cAA8B,EAC9BvC,OAA0B,EACS;IACnC,MAAM;MAACyH,mBAAmB,GAAG;IAAE,CAAC,GAAGzH,OAAO;IAC1C,MAAM2C,cAAc,GAAGJ,cAAc,CAACI,cAAc,EAAE;IACtD,MAAMmF,IAAI,GAAGL,mBAAmB,CAACM,GAAG,CAAEC,IAAI,IAAK,IAAI,CAACvI,OAAO,CAACuI,IAAI,CAAC,CAAC,CAACC,QAAQ,CAACtF,cAAc,CAAC;IAC3F,IAAImF,IAAI,EAAE;MACR,MAAMI,SAAS,GAAG,IAAI,IAAI,CAAC1I,KAAK,CAAC2I,8BAA8B,EAAE;MACjE,IAAI;QACF,IAAID,SAAS,CAACE,iBAAiB,CAAC7F,cAAc,CAAC,EAAE;UAC/C,OAAO;YACL8F,iBAAiB,EAAEH,SAAS,CAACG,iBAAiB,EAAE;YAChDC,KAAK,EAAEJ,SAAS,CAACI,KAAK,EAAE;YACxBC,UAAU,EAAE,IAAInJ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC2I,GAAG,CAAES,CAAC,IAAKN,SAAS,CAACO,SAAS,CAACD,CAAC,CAAC;UAC3E,CAAC;QACH;MACF,CAAC,SAAS;QACR,IAAI,CAAChJ,KAAK,CAACK,OAAO,CAACqI,SAAS,CAAC;MAC/B;IACF;IACA,OAAO,IAAI;EACb;EAEA5E,uBAAuB,CACrBf,cAA8B,EAC9BvC,OAA0B,EACO;IACjC,MAAM;MAAC0H,oBAAoB,GAAG;IAAE,CAAC,GAAG1H,OAAO;IAC3C,MAAM2C,cAAc,GAAGJ,cAAc,CAACI,cAAc,EAAE;IACtD,MAAMU,UAAU,GAAGqE,oBAAoB,CACpCK,GAAG,CAAEC,IAAI,IAAK,IAAI,CAACvI,OAAO,CAACuI,IAAI,CAAC,CAAC,CACjCC,QAAQ,CAACtF,cAAc,CAAC;IAC3B,IAAIU,UAAU,EAAE;MACd,MAAM6E,SAAS,GAAG,IAAI,IAAI,CAAC1I,KAAK,CAAC2I,8BAA8B,EAAE;MACjE,IAAI;QACF,IAAID,SAAS,CAACE,iBAAiB,CAAC7F,cAAc,CAAC,EAAE;UAC/C,OAAO;YACL8F,iBAAiB,EAAEH,SAAS,CAACG,iBAAiB;UAChD,CAAC;QACH;MACF,CAAC,SAAS;QACR,IAAI,CAAC7I,KAAK,CAACK,OAAO,CAACqI,SAAS,CAAC;MAC/B;IACF;IACA,OAAO,IAAI;EACb;;AAGF;;AAOA,SAASvC,gBAAgB,CAACnG,KAAc,EAAE2G,aAAkB,EAAkB;EAC5E,QAAQA,aAAa;IACnB,KAAK/G,YAAY;MACf,OAAOI,KAAK,CAACkJ,UAAU;IACzB,KAAK5J,SAAS;MACZ,OAAOU,KAAK,CAACmJ,OAAO;IACtB,KAAK3J,UAAU;MACb,OAAOQ,KAAK,CAACoJ,QAAQ;IACvB,KAAK1J,UAAU;MACb,OAAOM,KAAK,CAACqJ,QAAQ;IACvB,KAAK9J,UAAU;MACb,OAAOS,KAAK,CAACsJ,QAAQ;IACvB,KAAK7J,WAAW;MACd,OAAOO,KAAK,CAACuJ,SAAS;IACxB,KAAK5J,WAAW;MACd,OAAOK,KAAK,CAACwJ,SAAS;IACxB;MACE,OAAOxJ,KAAK,CAACyJ,UAAU;EAAC;AAE9B;;AAKA,SAAS9B,aAAa,CAACnC,UAA2B,EAAc;EAC9D,MAAMQ,SAAS,GAAGR,UAAU,CAAClB,IAAI,EAAE;EACnC,MAAMoD,QAAQ,GAAG,IAAIhI,UAAU,CAACsG,SAAS,CAAC;EAC1C,KAAK,IAAIgD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,SAAS,EAAEgD,CAAC,EAAE,EAAE;IAClCtB,QAAQ,CAACsB,CAAC,CAAC,GAAGxD,UAAU,CAACkE,QAAQ,CAACV,CAAC,CAAC;EACtC;EACA,OAAOtB,QAAQ;AACjB;;AAKA,SAAS/B,cAAc,CAACH,UAA2B,EAAc;EAC/D,MAAMQ,SAAS,GAAGR,UAAU,CAAClB,IAAI,EAAE;EACnC,MAAMoD,QAAQ,GAAG,IAAIhI,UAAU,CAACsG,SAAS,CAAC;EAC1C,KAAK,IAAIgD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,SAAS,EAAEgD,CAAC,EAAE,EAAE;IAClCtB,QAAQ,CAACsB,CAAC,CAAC,GAAGxD,UAAU,CAACkE,QAAQ,CAACV,CAAC,CAAC;EACtC;EACA,OAAOtB,QAAQ;AACjB"}
1
+ {"version":3,"file":"draco-parser.js","names":["getMeshBoundingBox","getDracoSchema","GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","constructor","draco","_defineProperty","decoder","Decoder","metadataQuerier","MetadataQuerier","destroy","parseSync","arrayBuffer","options","arguments","length","undefined","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","concat","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","attributes","schema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","value","_getTriangleStripIndices","size","_getTriangleListIndices","loaderAttribute","Object","values","attributeName","_deduceAttributeName","name","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","slice","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","attributeUniqueId","entries","extraAttributes","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","quantizedAttributes","octahedronAttributes","skipAttributes","dracoAttributeName","SkipAttributeTransform","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","i","min_value","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-draco-schema.js","names":["deduceMeshField","Schema","getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","result","key","dracoAttribute","name","undefined","Map","set","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":"AAAA,SAAQA,eAAe,QAAsB,oBAAoB;AACjE,SAAQC,MAAM,QAAc,oBAAoB;AAIhD,OAAO,SAASC,cAAc,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,MAAMC,WAAW,GAAGC,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC;EACrD,MAAMC,MAAe,GAAG,EAAE;EAC1B,MAAMC,yBAAyB,GAAGC,6BAA6B,CAACP,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,MAAMS,aAAa,IAAIT,UAAU,EAAE;IACtC,MAAMU,SAAS,GAAGV,UAAU,CAACS,aAAa,CAAC;IAC3C,MAAME,KAAK,GAAGC,0BAA0B,CACtCH,aAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,aAAa,CAAC,CACzC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIT,OAAO,EAAE;IACX,MAAMY,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAEV,OAAO,CAAC;IACnEI,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO,IAAIhB,MAAM,CAACQ,MAAM,EAAEH,WAAW,CAAC;AACxC;AAEA,SAASK,6BAA6B,CAACP,UAA2C,EAEhF;EACA,MAAMc,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,MAAMC,GAAG,IAAIf,UAAU,EAAE;IAC5B,MAAMgB,cAAc,GAAGhB,UAAU,CAACe,GAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASH,0BAA0B,CACjCH,aAAqB,EACrBC,SAAwB,EACxBT,UAA2B,EACpB;EACP,MAAME,WAAW,GAAGF,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC,GAAGc,SAAS;EAC9E,MAAMR,KAAK,GAAGd,eAAe,CAACY,aAAa,EAAEC,SAAS,EAAEP,WAAW,CAAC;EACpE,OAAOQ,KAAK;AACd;AAEA,SAASP,YAAY,CAACC,QAA6C,EAAuB;EACxF,MAAMF,WAAW,GAAG,IAAIiB,GAAG,EAAE;EAC7B,KAAK,MAAMJ,GAAG,IAAIX,QAAQ,EAAE;IAC1BF,WAAW,CAACkB,GAAG,WAAIL,GAAG,cAAWM,IAAI,CAACC,SAAS,CAAClB,QAAQ,CAACW,GAAG,CAAC,CAAC,CAAC;EACjE;EACA,OAAOb,WAAW;AACpB"}
1
+ {"version":3,"file":"get-draco-schema.js","names":["deduceMeshField","Schema","getDracoSchema","attributes","loaderData","indices","metadataMap","makeMetadata","metadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","result","key","dracoAttribute","name","undefined","Map","set","concat","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadataMap = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Map<string, string> {\n const metadataMap = new Map();\n for (const key in metadata) {\n metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));\n }\n return metadataMap;\n}\n"],"mappings":"AAAA,SAAQA,eAAe,QAAsB,oBAAoB;AACjE,SAAQC,MAAM,QAAc,oBAAoB;AAIhD,OAAO,SAASC,cAAcA,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,MAAMC,WAAW,GAAGC,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC;EACrD,MAAMC,MAAe,GAAG,EAAE;EAC1B,MAAMC,yBAAyB,GAAGC,6BAA6B,CAACP,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,MAAMS,aAAa,IAAIT,UAAU,EAAE;IACtC,MAAMU,SAAS,GAAGV,UAAU,CAACS,aAAa,CAAC;IAC3C,MAAME,KAAK,GAAGC,0BAA0B,CACtCH,aAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,aAAa,CACzC,CAAC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIT,OAAO,EAAE;IACX,MAAMY,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAEV,OAAO,CAAC;IACnEI,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO,IAAIhB,MAAM,CAACQ,MAAM,EAAEH,WAAW,CAAC;AACxC;AAEA,SAASK,6BAA6BA,CAACP,UAA2C,EAEhF;EACA,MAAMc,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,MAAMC,GAAG,IAAIf,UAAU,EAAE;IAC5B,MAAMgB,cAAc,GAAGhB,UAAU,CAACe,GAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASH,0BAA0BA,CACjCH,aAAqB,EACrBC,SAAwB,EACxBT,UAA2B,EACpB;EACP,MAAME,WAAW,GAAGF,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACI,QAAQ,CAAC,GAAGc,SAAS;EAC9E,MAAMR,KAAK,GAAGd,eAAe,CAACY,aAAa,EAAEC,SAAS,EAAEP,WAAW,CAAC;EACpE,OAAOQ,KAAK;AACd;AAEA,SAASP,YAAYA,CAACC,QAA6C,EAAuB;EACxF,MAAMF,WAAW,GAAG,IAAIiB,GAAG,CAAC,CAAC;EAC7B,KAAK,MAAMJ,GAAG,IAAIX,QAAQ,EAAE;IAC1BF,WAAW,CAACkB,GAAG,IAAAC,MAAA,CAAIN,GAAG,cAAWO,IAAI,CAACC,SAAS,CAACnB,QAAQ,CAACW,GAAG,CAAC,CAAC,CAAC;EACjE;EACA,OAAOb,WAAW;AACpB"}
@@ -1,3 +1,2 @@
1
-
2
- export const VERSION = typeof "3.4.0-alpha.2" !== 'undefined' ? "3.4.0-alpha.2" : 'latest';
1
+ export const VERSION = typeof "3.4.0-alpha.4" !== 'undefined' ? "3.4.0-alpha.4" : 'latest';
3
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";AAGA,OAAO,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ"}
1
+ {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"draco-writer-nodejs-worker.js","names":["WorkerBody","DracoWriterNodeJS","inWorkerThread","onmessage","type","payload","input","options","result","encode","postMessage","error","message","Error"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,iBAAiB,QAAO,wBAAwB;AAExD,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,EAAE,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UACF,MAAM;YAACE,KAAK;YAAEC;UAAO,CAAC,GAAGF,OAAO;UAChC,MAAMG,MAAM,GAAG,MAAMP,iBAAiB,CAACQ,MAAM,CAAEH,KAAK,EAAEC,OAAO,CAAC;UAC9DP,UAAU,CAACU,WAAW,CAAC,MAAM,EAAE;YAACF;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3DZ,UAAU,CAACU,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IAAQ;EAEZ,CAAC;AACH,CAAC,GAAG"}
1
+ {"version":3,"file":"draco-writer-nodejs-worker.js","names":["WorkerBody","DracoWriterNodeJS","inWorkerThread","onmessage","type","payload","input","options","result","encode","postMessage","error","message","Error"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,iBAAiB,QAAO,wBAAwB;AAExD,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UACF,MAAM;YAACE,KAAK;YAAEC;UAAO,CAAC,GAAGF,OAAO;UAChC,MAAMG,MAAM,GAAG,MAAMP,iBAAiB,CAACQ,MAAM,CAAEH,KAAK,EAAEC,OAAO,CAAC;UAC9DP,UAAU,CAACU,WAAW,CAAC,MAAM,EAAE;YAACF;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3DZ,UAAU,CAACU,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"draco-writer-worker.js","names":["WorkerBody","DracoWriter","inWorkerThread","onmessage","type","payload","input","options","result","encode","postMessage","error","message","Error"],"sources":["../../../src/workers/draco-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriter} from '../draco-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriter.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,WAAW,QAAO,iBAAiB;AAE3C,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,EAAE,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UACF,MAAM;YAACE,KAAK;YAAEC;UAAO,CAAC,GAAGF,OAAO;UAChC,MAAMG,MAAM,GAAG,MAAMP,WAAW,CAACQ,MAAM,CAAEH,KAAK,EAAEC,OAAO,CAAC;UACxDP,UAAU,CAACU,WAAW,CAAC,MAAM,EAAE;YAACF;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3DZ,UAAU,CAACU,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IAAQ;EAEZ,CAAC;AACH,CAAC,GAAG"}
1
+ {"version":3,"file":"draco-writer-worker.js","names":["WorkerBody","DracoWriter","inWorkerThread","onmessage","type","payload","input","options","result","encode","postMessage","error","message","Error"],"sources":["../../../src/workers/draco-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriter} from '../draco-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriter.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,WAAW,QAAO,iBAAiB;AAE3C,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UACF,MAAM;YAACE,KAAK;YAAEC;UAAO,CAAC,GAAGF,OAAO;UAChC,MAAMG,MAAM,GAAG,MAAMP,WAAW,CAACQ,MAAM,CAAEH,KAAK,EAAEC,OAAO,CAAC;UACxDP,UAAU,CAACU,WAAW,CAAC,MAAM,EAAE;YAACF;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3DZ,UAAU,CAACU,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/draco",
3
- "version": "3.4.0-alpha.2",
3
+ "version": "3.4.0-alpha.4",
4
4
  "description": "Framework-independent loader and writer for Draco compressed meshes and point clouds",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -42,13 +42,13 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@babel/runtime": "^7.3.1",
45
- "@loaders.gl/loader-utils": "3.4.0-alpha.2",
46
- "@loaders.gl/schema": "3.4.0-alpha.2",
47
- "@loaders.gl/worker-utils": "3.4.0-alpha.2",
45
+ "@loaders.gl/loader-utils": "3.4.0-alpha.4",
46
+ "@loaders.gl/schema": "3.4.0-alpha.4",
47
+ "@loaders.gl/worker-utils": "3.4.0-alpha.4",
48
48
  "draco3d": "1.5.5"
49
49
  },
50
50
  "devDependencies": {
51
- "@loaders.gl/polyfills": "3.4.0-alpha.2"
51
+ "@loaders.gl/polyfills": "3.4.0-alpha.4"
52
52
  },
53
- "gitHead": "f1c00c124d8d0c41a138ff40afb0d1a00711bf2e"
53
+ "gitHead": "f039a523df8b908a91f26c5ba8c4cfc1924b6140"
54
54
  }