@loaders.gl/draco 3.2.12 → 3.3.0-alpha.10

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 (93) hide show
  1. package/dist/dist.min.js +2 -2
  2. package/dist/dist.min.js.map +3 -3
  3. package/dist/draco-loader.d.ts +2 -1
  4. package/dist/draco-loader.d.ts.map +1 -1
  5. package/dist/draco-loader.js +2 -1
  6. package/dist/draco-nodejs-worker.js +191 -0
  7. package/dist/draco-nodejs-worker.js.map +7 -0
  8. package/dist/draco-worker.js +1 -1
  9. package/dist/draco-worker.js.map +2 -2
  10. package/dist/draco-writer-nodejs-worker.js +61 -60
  11. package/dist/draco-writer-nodejs-worker.js.map +3 -3
  12. package/dist/draco-writer-worker.js +2 -2
  13. package/dist/draco-writer-worker.js.map +2 -2
  14. package/dist/draco-writer.d.ts +1 -1
  15. package/dist/draco-writer.d.ts.map +1 -1
  16. package/dist/draco3d/draco3d-types.d.ts +1 -1
  17. package/dist/draco3d/draco3d-types.d.ts.map +1 -1
  18. package/dist/es5/bundle.js +0 -1
  19. package/dist/es5/bundle.js.map +1 -1
  20. package/dist/es5/draco-loader.js +3 -4
  21. package/dist/es5/draco-loader.js.map +1 -1
  22. package/dist/es5/draco-writer-nodejs.js +0 -2
  23. package/dist/es5/draco-writer-nodejs.js.map +1 -1
  24. package/dist/es5/draco-writer.js +5 -17
  25. package/dist/es5/draco-writer.js.map +1 -1
  26. package/dist/es5/draco3d/draco3d-types.js +1 -8
  27. package/dist/es5/draco3d/draco3d-types.js.map +1 -1
  28. package/dist/es5/index.js +5 -25
  29. package/dist/es5/index.js.map +1 -1
  30. package/dist/es5/lib/draco-builder.js +40 -96
  31. package/dist/es5/lib/draco-builder.js.map +1 -1
  32. package/dist/es5/lib/draco-module-loader.js +9 -46
  33. package/dist/es5/lib/draco-module-loader.js.map +1 -1
  34. package/dist/es5/lib/draco-parser.js +63 -111
  35. package/dist/es5/lib/draco-parser.js.map +1 -1
  36. package/dist/es5/lib/draco-types.js.map +1 -1
  37. package/dist/es5/lib/utils/get-draco-schema.js +0 -12
  38. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -1
  39. package/dist/es5/lib/utils/version.js +1 -1
  40. package/dist/es5/lib/utils/version.js.map +1 -1
  41. package/dist/es5/workers/draco-nodejs-worker.js +7 -0
  42. package/dist/es5/workers/draco-nodejs-worker.js.map +1 -0
  43. package/dist/es5/workers/draco-worker.js +0 -2
  44. package/dist/es5/workers/draco-worker.js.map +1 -1
  45. package/dist/es5/workers/draco-writer-nodejs-worker.js +0 -15
  46. package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -1
  47. package/dist/es5/workers/draco-writer-worker.js +0 -15
  48. package/dist/es5/workers/draco-writer-worker.js.map +1 -1
  49. package/dist/esm/bundle.js +1 -1
  50. package/dist/esm/bundle.js.map +1 -1
  51. package/dist/esm/draco-loader.js +3 -1
  52. package/dist/esm/draco-loader.js.map +1 -1
  53. package/dist/esm/draco-writer-nodejs.js +1 -0
  54. package/dist/esm/draco-writer-nodejs.js.map +1 -1
  55. package/dist/esm/draco-writer.js +3 -3
  56. package/dist/esm/draco-writer.js.map +1 -1
  57. package/dist/esm/draco3d/draco3d-types.js +2 -3
  58. package/dist/esm/draco3d/draco3d-types.js.map +1 -1
  59. package/dist/esm/index.js +6 -3
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/lib/draco-builder.js +6 -75
  62. package/dist/esm/lib/draco-builder.js.map +1 -1
  63. package/dist/esm/lib/draco-module-loader.js +11 -14
  64. package/dist/esm/lib/draco-module-loader.js.map +1 -1
  65. package/dist/esm/lib/draco-parser.js +5 -66
  66. package/dist/esm/lib/draco-parser.js.map +1 -1
  67. package/dist/esm/lib/draco-types.js.map +1 -1
  68. package/dist/esm/lib/utils/get-draco-schema.js +0 -10
  69. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -1
  70. package/dist/esm/lib/utils/version.js +2 -1
  71. package/dist/esm/lib/utils/version.js.map +1 -1
  72. package/dist/esm/workers/draco-nodejs-worker.js +5 -0
  73. package/dist/esm/workers/draco-nodejs-worker.js.map +1 -0
  74. package/dist/esm/workers/draco-worker.js.map +1 -1
  75. package/dist/esm/workers/draco-writer-nodejs-worker.js +0 -4
  76. package/dist/esm/workers/draco-writer-nodejs-worker.js.map +1 -1
  77. package/dist/esm/workers/draco-writer-worker.js +0 -4
  78. package/dist/esm/workers/draco-writer-worker.js.map +1 -1
  79. package/dist/lib/draco-builder.d.ts +1 -1
  80. package/dist/lib/draco-builder.d.ts.map +1 -1
  81. package/dist/lib/draco-module-loader.d.ts.map +1 -1
  82. package/dist/lib/draco-module-loader.js +7 -5
  83. package/dist/lib/draco-parser.d.ts +1 -1
  84. package/dist/lib/draco-parser.d.ts.map +1 -1
  85. package/dist/lib/draco-types.d.ts +6 -6
  86. package/dist/lib/draco-types.d.ts.map +1 -1
  87. package/dist/workers/draco-nodejs-worker.d.ts +2 -0
  88. package/dist/workers/draco-nodejs-worker.d.ts.map +1 -0
  89. package/dist/workers/draco-nodejs-worker.js +6 -0
  90. package/package.json +9 -8
  91. package/src/draco-loader.ts +3 -1
  92. package/src/lib/draco-module-loader.ts +9 -5
  93. package/src/workers/draco-nodejs-worker.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/draco-builder.ts"],"names":["GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","noop","DracoBuilder","draco","dracoEncoder","Encoder","dracoMeshBuilder","MeshBuilder","dracoMetadataBuilder","MetadataBuilder","destroyEncodedObject","object","destroy","mesh","options","log","_setOptions","pointcloud","_encodePointCloud","_encodeMesh","attributes","indices","dracoPointCloud","PointCloud","metadata","_addGeometryMetadata","_getAttributesFromMesh","_createDracoPointCloud","dracoData","DracoInt8Array","encodedLen","EncodePointCloudToDracoBuffer","Error","num_points","num_attributes","dracoInt8ArrayToArrayBuffer","dracoMesh","Mesh","_createDracoMesh","EncodeMeshToDracoBuffer","SetSpeedOptions","speed","dracoMethod","method","SetEncodingMethod","attribute","quantization","bits","dracoPosition","SetAttributeQuantization","optionalMetadata","attributesMetadata","positions","_getPositionAttribute","vertexCount","length","attributeName","uniqueId","_addAttributeToMesh","_addAttributeMetadata","name","error","ArrayBuffer","isView","type","_getDracoAttributeType","size","numFaces","AddFacesToMesh","builder","buffer","constructor","Int8Array","AddInt8Attribute","Int16Array","AddInt16Attribute","Int32Array","AddInt32Attribute","Uint8Array","Uint8ClampedArray","AddUInt8Attribute","Uint16Array","AddUInt16Attribute","Uint32Array","AddUInt32Attribute","Float32Array","AddFloatAttribute","toLowerCase","COLOR","TEX_COORD","GENERIC","dracoType","dracoGeometry","dracoMetadata","Metadata","_populateDracoMetadata","AddMetadata","uniqueAttributeId","dracoAttributeMetadata","SetMetadataForAttribute","getEntries","key","value","Math","trunc","AddIntEntry","AddDoubleEntry","AddIntEntryArray","AddStringEntry","byteLength","outputBuffer","outputData","i","GetValue","container","hasEntriesFunc","entries","hasOwnProperty","Object"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n// This code is inspired by example code in the DRACO repository\nimport type {\n Draco3D,\n DracoInt8Array,\n Encoder,\n Mesh,\n MeshBuilder,\n PointCloud,\n Metadata,\n MetadataBuilder,\n draco_GeometryAttribute_Type\n} from '../draco3d/draco3d-types';\n\nimport type {TypedArray} from '@loaders.gl/schema';\nimport type {DracoMesh} from './draco-types';\n\nexport type DracoBuildOptions = {\n pointcloud?: boolean;\n metadata?: {[key: string]: string};\n attributesMetadata?: {};\n log?: any;\n\n // draco encoding options\n speed?: [number, number];\n method?: string;\n quantization?: {[attributeName: string]: number};\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR_0: 'COLOR',\n TEXCOORD_0: 'TEX_COORD'\n};\n\nconst noop = () => {};\n\nexport default class DracoBuilder {\n draco: Draco3D;\n dracoEncoder: Encoder;\n dracoMeshBuilder: MeshBuilder;\n dracoMetadataBuilder: MetadataBuilder;\n log: any;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.dracoEncoder = new this.draco.Encoder();\n this.dracoMeshBuilder = new this.draco.MeshBuilder();\n this.dracoMetadataBuilder = new this.draco.MetadataBuilder();\n }\n\n destroy(): void {\n this.destroyEncodedObject(this.dracoMeshBuilder);\n this.destroyEncodedObject(this.dracoEncoder);\n this.destroyEncodedObject(this.dracoMetadataBuilder);\n // @ts-ignore\n this.dracoMeshBuilder = null;\n // @ts-ignore\n this.dracoEncoder = null;\n // @ts-ignore\n this.draco = null;\n }\n\n // TBD - when does this need to be called?\n destroyEncodedObject(object): void {\n if (object) {\n this.draco.destroy(object);\n }\n }\n\n /**\n * Encode mesh or point cloud\n * @param mesh =({})\n * @param options\n */\n encodeSync(mesh: DracoMesh, options: DracoBuildOptions = {}): ArrayBuffer {\n this.log = noop; // TODO\n this._setOptions(options);\n\n return options.pointcloud\n ? this._encodePointCloud(mesh, options)\n : this._encodeMesh(mesh, options);\n }\n\n // PRIVATE\n\n _getAttributesFromMesh(mesh: DracoMesh) {\n // TODO - Change the encodePointCloud interface instead?\n const attributes = {...mesh, ...mesh.attributes};\n // Fold indices into the attributes\n if (mesh.indices) {\n attributes.indices = mesh.indices;\n }\n return attributes;\n }\n\n _encodePointCloud(pointcloud: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoPointCloud = new this.draco.PointCloud();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoPointCloud, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(pointcloud);\n\n // Build a `DracoPointCloud` from the input data\n this._createDracoPointCloud(dracoPointCloud, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(\n dracoPointCloud,\n false,\n dracoData\n );\n\n if (!(encodedLen > 0)) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoPointCloud.num_points()} points\n with ${dracoPointCloud.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoPointCloud);\n }\n }\n\n _encodeMesh(mesh: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoMesh = new this.draco.Mesh();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoMesh, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(mesh);\n\n // Build a `DracoMesh` from the input data\n this._createDracoMesh(dracoMesh, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);\n if (encodedLen <= 0) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoMesh.num_points()} points\n with ${dracoMesh.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoMesh);\n }\n }\n\n /**\n * Set encoding options.\n * @param {{speed?: any; method?: any; quantization?: any;}} options\n */\n _setOptions(options: DracoBuildOptions): void {\n if ('speed' in options) {\n // @ts-ignore\n this.dracoEncoder.SetSpeedOptions(...options.speed);\n }\n if ('method' in options) {\n const dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];\n // assert(dracoMethod)\n this.dracoEncoder.SetEncodingMethod(dracoMethod);\n }\n if ('quantization' in options) {\n for (const attribute in options.quantization) {\n const bits = options.quantization[attribute];\n const dracoPosition = this.draco[attribute];\n this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);\n }\n }\n }\n\n /**\n * @param {Mesh} dracoMesh\n * @param {object} attributes\n * @returns {Mesh}\n */\n _createDracoMesh(dracoMesh: Mesh, attributes, options: DracoBuildOptions): Mesh {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(dracoMesh, attributeName, attribute, vertexCount);\n\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoMesh, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoMesh);\n throw error;\n }\n\n return dracoMesh;\n }\n\n /**\n * @param {} dracoPointCloud\n * @param {object} attributes\n */\n _createDracoPointCloud(\n dracoPointCloud: PointCloud,\n attributes: object,\n options: DracoBuildOptions\n ): PointCloud {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(\n dracoPointCloud,\n attributeName,\n attribute,\n vertexCount\n );\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoPointCloud, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoPointCloud);\n throw error;\n }\n\n return dracoPointCloud;\n }\n\n /**\n * @param mesh\n * @param attributeName\n * @param attribute\n * @param vertexCount\n */\n _addAttributeToMesh(\n mesh: PointCloud,\n attributeName: string,\n attribute: TypedArray,\n vertexCount: number\n ) {\n if (!ArrayBuffer.isView(attribute)) {\n return -1;\n }\n\n const type = this._getDracoAttributeType(attributeName);\n // @ts-ignore TODO/fix types\n const size = attribute.length / vertexCount;\n\n if (type === 'indices') {\n // @ts-ignore TODO/fix types\n const numFaces = attribute.length / 3;\n this.log(`Adding attribute ${attributeName}, size ${numFaces}`);\n\n // @ts-ignore assumes mesh is a Mesh, not a point cloud\n this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);\n return -1;\n }\n\n this.log(`Adding attribute ${attributeName}, size ${size}`);\n\n const builder = this.dracoMeshBuilder;\n const {buffer} = attribute;\n\n switch (attribute.constructor) {\n case Int8Array:\n return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));\n\n case Int16Array:\n return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));\n\n case Int32Array:\n return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));\n case Uint8Array:\n case Uint8ClampedArray:\n return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));\n\n case Uint16Array:\n return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));\n\n case Uint32Array:\n return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));\n\n case Float32Array:\n default:\n return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));\n }\n }\n\n /**\n * DRACO can compress attributes of know type better\n * TODO - expose an attribute type map?\n * @param attributeName\n */\n _getDracoAttributeType(attributeName: string): draco_GeometryAttribute_Type | 'indices' {\n switch (attributeName.toLowerCase()) {\n case 'indices':\n return 'indices';\n case 'position':\n case 'positions':\n case 'vertices':\n return this.draco.POSITION;\n case 'normal':\n case 'normals':\n return this.draco.NORMAL;\n case 'color':\n case 'colors':\n return this.draco.COLOR;\n case 'texcoord':\n case 'texcoords':\n return this.draco.TEX_COORD;\n default:\n return this.draco.GENERIC;\n }\n }\n\n _getPositionAttribute(attributes) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const dracoType = this._getDracoAttributeType(attributeName);\n if (dracoType === this.draco.POSITION) {\n return attribute;\n }\n }\n return null;\n }\n\n /**\n * Add metadata for the geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param metadata\n */\n _addGeometryMetadata(dracoGeometry: PointCloud, metadata: {[key: string]: string}) {\n const dracoMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoMetadata, metadata);\n this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);\n }\n\n /**\n * Add metadata for an attribute to geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param uniqueAttributeId\n * @param metadata\n */\n _addAttributeMetadata(\n dracoGeometry: PointCloud,\n uniqueAttributeId: number,\n metadata: Map<string, string> | {[key: string]: string}\n ) {\n // Note: Draco JS IDL doesn't seem to expose draco.AttributeMetadata, however it seems to\n // create such objects automatically from draco.Metadata object.\n const dracoAttributeMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoAttributeMetadata, metadata);\n // Draco3d doc note: Directly add attribute metadata to geometry.\n // You can do this without explicitly adding |GeometryMetadata| to mesh.\n this.dracoMeshBuilder.SetMetadataForAttribute(\n dracoGeometry,\n uniqueAttributeId,\n dracoAttributeMetadata\n );\n }\n\n /**\n * Add contents of object or map to a WASM Draco Metadata Object\n * @param dracoMetadata - WASM Draco Object\n * @param metadata\n */\n _populateDracoMetadata(\n dracoMetadata: Metadata,\n metadata: Map<string, string> | {[key: string]: string}\n ) {\n for (const [key, value] of getEntries(metadata)) {\n switch (typeof value) {\n case 'number':\n if (Math.trunc(value) === value) {\n this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);\n } else {\n this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);\n }\n break;\n case 'object':\n if (value instanceof Int32Array) {\n this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);\n }\n break;\n case 'string':\n default:\n this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);\n }\n }\n }\n}\n\n// HELPER FUNCTIONS\n\n/**\n * Copy encoded data to buffer\n * @param dracoData\n */\nfunction dracoInt8ArrayToArrayBuffer(dracoData: DracoInt8Array) {\n const byteLength = dracoData.size();\n const outputBuffer = new ArrayBuffer(byteLength);\n const outputData = new Int8Array(outputBuffer);\n for (let i = 0; i < byteLength; ++i) {\n outputData[i] = dracoData.GetValue(i);\n }\n return outputBuffer;\n}\n\n/** Enable iteration over either an object or a map */\nfunction getEntries(container) {\n const hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');\n return hasEntriesFunc ? container.entries() : Object.entries(container);\n}\n"],"file":"draco-builder.js"}
1
+ {"version":3,"file":"draco-builder.js","names":["GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","noop","DracoBuilder","draco","dracoEncoder","Encoder","dracoMeshBuilder","MeshBuilder","dracoMetadataBuilder","MetadataBuilder","destroyEncodedObject","object","destroy","mesh","options","log","_setOptions","pointcloud","_encodePointCloud","_encodeMesh","attributes","indices","dracoPointCloud","PointCloud","metadata","_addGeometryMetadata","_getAttributesFromMesh","_createDracoPointCloud","dracoData","DracoInt8Array","encodedLen","EncodePointCloudToDracoBuffer","Error","num_points","num_attributes","dracoInt8ArrayToArrayBuffer","dracoMesh","Mesh","_createDracoMesh","EncodeMeshToDracoBuffer","SetSpeedOptions","speed","dracoMethod","method","SetEncodingMethod","attribute","quantization","bits","dracoPosition","SetAttributeQuantization","optionalMetadata","attributesMetadata","positions","_getPositionAttribute","vertexCount","length","attributeName","uniqueId","_addAttributeToMesh","_addAttributeMetadata","name","error","ArrayBuffer","isView","type","_getDracoAttributeType","size","numFaces","AddFacesToMesh","builder","buffer","constructor","Int8Array","AddInt8Attribute","Int16Array","AddInt16Attribute","Int32Array","AddInt32Attribute","Uint8Array","Uint8ClampedArray","AddUInt8Attribute","Uint16Array","AddUInt16Attribute","Uint32Array","AddUInt32Attribute","Float32Array","AddFloatAttribute","toLowerCase","COLOR","TEX_COORD","GENERIC","dracoType","dracoGeometry","dracoMetadata","Metadata","_populateDracoMetadata","AddMetadata","uniqueAttributeId","dracoAttributeMetadata","SetMetadataForAttribute","getEntries","key","value","Math","trunc","AddIntEntry","AddDoubleEntry","AddIntEntryArray","AddStringEntry","byteLength","outputBuffer","outputData","i","GetValue","container","hasEntriesFunc","entries","hasOwnProperty","Object"],"sources":["../../../src/lib/draco-builder.ts"],"sourcesContent":["/* eslint-disable camelcase */\n// This code is inspired by example code in the DRACO repository\nimport type {\n Draco3D,\n DracoInt8Array,\n Encoder,\n Mesh,\n MeshBuilder,\n PointCloud,\n Metadata,\n MetadataBuilder,\n draco_GeometryAttribute_Type\n} from '../draco3d/draco3d-types';\n\nimport type {TypedArray} from '@loaders.gl/schema';\nimport type {DracoMesh} from './draco-types';\n\nexport type DracoBuildOptions = {\n pointcloud?: boolean;\n metadata?: {[key: string]: string};\n attributesMetadata?: {};\n log?: any;\n\n // draco encoding options\n speed?: [number, number];\n method?: string;\n quantization?: {[attributeName: string]: number};\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR_0: 'COLOR',\n TEXCOORD_0: 'TEX_COORD'\n};\n\nconst noop = () => {};\n\nexport default class DracoBuilder {\n draco: Draco3D;\n dracoEncoder: Encoder;\n dracoMeshBuilder: MeshBuilder;\n dracoMetadataBuilder: MetadataBuilder;\n log: any;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.dracoEncoder = new this.draco.Encoder();\n this.dracoMeshBuilder = new this.draco.MeshBuilder();\n this.dracoMetadataBuilder = new this.draco.MetadataBuilder();\n }\n\n destroy(): void {\n this.destroyEncodedObject(this.dracoMeshBuilder);\n this.destroyEncodedObject(this.dracoEncoder);\n this.destroyEncodedObject(this.dracoMetadataBuilder);\n // @ts-ignore\n this.dracoMeshBuilder = null;\n // @ts-ignore\n this.dracoEncoder = null;\n // @ts-ignore\n this.draco = null;\n }\n\n // TBD - when does this need to be called?\n destroyEncodedObject(object): void {\n if (object) {\n this.draco.destroy(object);\n }\n }\n\n /**\n * Encode mesh or point cloud\n * @param mesh =({})\n * @param options\n */\n encodeSync(mesh: DracoMesh, options: DracoBuildOptions = {}): ArrayBuffer {\n this.log = noop; // TODO\n this._setOptions(options);\n\n return options.pointcloud\n ? this._encodePointCloud(mesh, options)\n : this._encodeMesh(mesh, options);\n }\n\n // PRIVATE\n\n _getAttributesFromMesh(mesh: DracoMesh) {\n // TODO - Change the encodePointCloud interface instead?\n const attributes = {...mesh, ...mesh.attributes};\n // Fold indices into the attributes\n if (mesh.indices) {\n attributes.indices = mesh.indices;\n }\n return attributes;\n }\n\n _encodePointCloud(pointcloud: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoPointCloud = new this.draco.PointCloud();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoPointCloud, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(pointcloud);\n\n // Build a `DracoPointCloud` from the input data\n this._createDracoPointCloud(dracoPointCloud, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(\n dracoPointCloud,\n false,\n dracoData\n );\n\n if (!(encodedLen > 0)) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoPointCloud.num_points()} points\n with ${dracoPointCloud.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoPointCloud);\n }\n }\n\n _encodeMesh(mesh: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoMesh = new this.draco.Mesh();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoMesh, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(mesh);\n\n // Build a `DracoMesh` from the input data\n this._createDracoMesh(dracoMesh, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);\n if (encodedLen <= 0) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoMesh.num_points()} points\n with ${dracoMesh.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoMesh);\n }\n }\n\n /**\n * Set encoding options.\n * @param {{speed?: any; method?: any; quantization?: any;}} options\n */\n _setOptions(options: DracoBuildOptions): void {\n if ('speed' in options) {\n // @ts-ignore\n this.dracoEncoder.SetSpeedOptions(...options.speed);\n }\n if ('method' in options) {\n const dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];\n // assert(dracoMethod)\n this.dracoEncoder.SetEncodingMethod(dracoMethod);\n }\n if ('quantization' in options) {\n for (const attribute in options.quantization) {\n const bits = options.quantization[attribute];\n const dracoPosition = this.draco[attribute];\n this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);\n }\n }\n }\n\n /**\n * @param {Mesh} dracoMesh\n * @param {object} attributes\n * @returns {Mesh}\n */\n _createDracoMesh(dracoMesh: Mesh, attributes, options: DracoBuildOptions): Mesh {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(dracoMesh, attributeName, attribute, vertexCount);\n\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoMesh, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoMesh);\n throw error;\n }\n\n return dracoMesh;\n }\n\n /**\n * @param {} dracoPointCloud\n * @param {object} attributes\n */\n _createDracoPointCloud(\n dracoPointCloud: PointCloud,\n attributes: object,\n options: DracoBuildOptions\n ): PointCloud {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(\n dracoPointCloud,\n attributeName,\n attribute,\n vertexCount\n );\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoPointCloud, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoPointCloud);\n throw error;\n }\n\n return dracoPointCloud;\n }\n\n /**\n * @param mesh\n * @param attributeName\n * @param attribute\n * @param vertexCount\n */\n _addAttributeToMesh(\n mesh: PointCloud,\n attributeName: string,\n attribute: TypedArray,\n vertexCount: number\n ) {\n if (!ArrayBuffer.isView(attribute)) {\n return -1;\n }\n\n const type = this._getDracoAttributeType(attributeName);\n // @ts-ignore TODO/fix types\n const size = attribute.length / vertexCount;\n\n if (type === 'indices') {\n // @ts-ignore TODO/fix types\n const numFaces = attribute.length / 3;\n this.log(`Adding attribute ${attributeName}, size ${numFaces}`);\n\n // @ts-ignore assumes mesh is a Mesh, not a point cloud\n this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);\n return -1;\n }\n\n this.log(`Adding attribute ${attributeName}, size ${size}`);\n\n const builder = this.dracoMeshBuilder;\n const {buffer} = attribute;\n\n switch (attribute.constructor) {\n case Int8Array:\n return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));\n\n case Int16Array:\n return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));\n\n case Int32Array:\n return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));\n case Uint8Array:\n case Uint8ClampedArray:\n return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));\n\n case Uint16Array:\n return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));\n\n case Uint32Array:\n return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));\n\n case Float32Array:\n default:\n return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));\n }\n }\n\n /**\n * DRACO can compress attributes of know type better\n * TODO - expose an attribute type map?\n * @param attributeName\n */\n _getDracoAttributeType(attributeName: string): draco_GeometryAttribute_Type | 'indices' {\n switch (attributeName.toLowerCase()) {\n case 'indices':\n return 'indices';\n case 'position':\n case 'positions':\n case 'vertices':\n return this.draco.POSITION;\n case 'normal':\n case 'normals':\n return this.draco.NORMAL;\n case 'color':\n case 'colors':\n return this.draco.COLOR;\n case 'texcoord':\n case 'texcoords':\n return this.draco.TEX_COORD;\n default:\n return this.draco.GENERIC;\n }\n }\n\n _getPositionAttribute(attributes) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const dracoType = this._getDracoAttributeType(attributeName);\n if (dracoType === this.draco.POSITION) {\n return attribute;\n }\n }\n return null;\n }\n\n /**\n * Add metadata for the geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param metadata\n */\n _addGeometryMetadata(dracoGeometry: PointCloud, metadata: {[key: string]: string}) {\n const dracoMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoMetadata, metadata);\n this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);\n }\n\n /**\n * Add metadata for an attribute to geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param uniqueAttributeId\n * @param metadata\n */\n _addAttributeMetadata(\n dracoGeometry: PointCloud,\n uniqueAttributeId: number,\n metadata: Map<string, string> | {[key: string]: string}\n ) {\n // Note: Draco JS IDL doesn't seem to expose draco.AttributeMetadata, however it seems to\n // create such objects automatically from draco.Metadata object.\n const dracoAttributeMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoAttributeMetadata, metadata);\n // Draco3d doc note: Directly add attribute metadata to geometry.\n // You can do this without explicitly adding |GeometryMetadata| to mesh.\n this.dracoMeshBuilder.SetMetadataForAttribute(\n dracoGeometry,\n uniqueAttributeId,\n dracoAttributeMetadata\n );\n }\n\n /**\n * Add contents of object or map to a WASM Draco Metadata Object\n * @param dracoMetadata - WASM Draco Object\n * @param metadata\n */\n _populateDracoMetadata(\n dracoMetadata: Metadata,\n metadata: Map<string, string> | {[key: string]: string}\n ) {\n for (const [key, value] of getEntries(metadata)) {\n switch (typeof value) {\n case 'number':\n if (Math.trunc(value) === value) {\n this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);\n } else {\n this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);\n }\n break;\n case 'object':\n if (value instanceof Int32Array) {\n this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);\n }\n break;\n case 'string':\n default:\n this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);\n }\n }\n }\n}\n\n// HELPER FUNCTIONS\n\n/**\n * Copy encoded data to buffer\n * @param dracoData\n */\nfunction dracoInt8ArrayToArrayBuffer(dracoData: DracoInt8Array) {\n const byteLength = dracoData.size();\n const outputBuffer = new ArrayBuffer(byteLength);\n const outputData = new Int8Array(outputBuffer);\n for (let i = 0; i < byteLength; ++i) {\n outputData[i] = dracoData.GetValue(i);\n }\n return outputBuffer;\n}\n\n/** Enable iteration over either an object or a map */\nfunction getEntries(container) {\n const hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');\n return hasEntriesFunc ? container.entries() : Object.entries(container);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,IAAMA,gCAAgC,GAAG;EACvCC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,OAAO;EAChBC,UAAU,EAAE;AACd,CAAC;AAED,IAAMC,IAAI,GAAG,SAAPA,IAAI,GAAS,CAAC,CAAC;AAAC,IAEDC,YAAY;EAQ/B,sBAAYC,KAAc,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAC1B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAG,IAAI,IAAI,CAACD,KAAK,CAACE,OAAO,EAAE;IAC5C,IAAI,CAACC,gBAAgB,GAAG,IAAI,IAAI,CAACH,KAAK,CAACI,WAAW,EAAE;IACpD,IAAI,CAACC,oBAAoB,GAAG,IAAI,IAAI,CAACL,KAAK,CAACM,eAAe,EAAE;EAC9D;EAAC;IAAA;IAAA,OAED,mBAAgB;MACd,IAAI,CAACC,oBAAoB,CAAC,IAAI,CAACJ,gBAAgB,CAAC;MAChD,IAAI,CAACI,oBAAoB,CAAC,IAAI,CAACN,YAAY,CAAC;MAC5C,IAAI,CAACM,oBAAoB,CAAC,IAAI,CAACF,oBAAoB,CAAC;MAEpD,IAAI,CAACF,gBAAgB,GAAG,IAAI;MAE5B,IAAI,CAACF,YAAY,GAAG,IAAI;MAExB,IAAI,CAACD,KAAK,GAAG,IAAI;IACnB;;EAAC;IAAA;IAAA;IAGD,8BAAqBQ,MAAM,EAAQ;MACjC,IAAIA,MAAM,EAAE;QACV,IAAI,CAACR,KAAK,CAACS,OAAO,CAACD,MAAM,CAAC;MAC5B;IACF;;EAAC;IAAA;IAAA;IAOD,oBAAWE,IAAe,EAAgD;MAAA,IAA9CC,OAA0B,uEAAG,CAAC,CAAC;MACzD,IAAI,CAACC,GAAG,GAAGd,IAAI;MACf,IAAI,CAACe,WAAW,CAACF,OAAO,CAAC;MAEzB,OAAOA,OAAO,CAACG,UAAU,GACrB,IAAI,CAACC,iBAAiB,CAACL,IAAI,EAAEC,OAAO,CAAC,GACrC,IAAI,CAACK,WAAW,CAACN,IAAI,EAAEC,OAAO,CAAC;IACrC;;EAAC;IAAA;IAAA;;IAID,gCAAuBD,IAAe,EAAE;MAEtC,IAAMO,UAAU,mCAAOP,IAAI,GAAKA,IAAI,CAACO,UAAU,CAAC;MAEhD,IAAIP,IAAI,CAACQ,OAAO,EAAE;QAChBD,UAAU,CAACC,OAAO,GAAGR,IAAI,CAACQ,OAAO;MACnC;MACA,OAAOD,UAAU;IACnB;EAAC;IAAA;IAAA,OAED,2BAAkBH,UAAqB,EAAEH,OAA0B,EAAe;MAChF,IAAMQ,eAAe,GAAG,IAAI,IAAI,CAACnB,KAAK,CAACoB,UAAU,EAAE;MAEnD,IAAIT,OAAO,CAACU,QAAQ,EAAE;QACpB,IAAI,CAACC,oBAAoB,CAACH,eAAe,EAAER,OAAO,CAACU,QAAQ,CAAC;MAC9D;MAEA,IAAMJ,UAAU,GAAG,IAAI,CAACM,sBAAsB,CAACT,UAAU,CAAC;;MAG1D,IAAI,CAACU,sBAAsB,CAACL,eAAe,EAAEF,UAAU,EAAEN,OAAO,CAAC;MAEjE,IAAMc,SAAS,GAAG,IAAI,IAAI,CAACzB,KAAK,CAAC0B,cAAc,EAAE;MAEjD,IAAI;QACF,IAAMC,UAAU,GAAG,IAAI,CAAC1B,YAAY,CAAC2B,6BAA6B,CAChET,eAAe,EACf,KAAK,EACLM,SAAS,CACV;QAED,IAAI,EAAEE,UAAU,GAAG,CAAC,CAAC,EAAE;UACrB,MAAM,IAAIE,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEA,IAAI,CAACjB,GAAG,yBAAkBO,eAAe,CAACW,UAAU,EAAE,mCAC7CX,eAAe,CAACY,cAAc,EAAE,8BAAoBJ,UAAU,YAAS;QAEhF,OAAOK,2BAA2B,CAACP,SAAS,CAAC;MAC/C,CAAC,SAAS;QACR,IAAI,CAAClB,oBAAoB,CAACkB,SAAS,CAAC;QACpC,IAAI,CAAClB,oBAAoB,CAACY,eAAe,CAAC;MAC5C;IACF;EAAC;IAAA;IAAA,OAED,qBAAYT,IAAe,EAAEC,OAA0B,EAAe;MACpE,IAAMsB,SAAS,GAAG,IAAI,IAAI,CAACjC,KAAK,CAACkC,IAAI,EAAE;MAEvC,IAAIvB,OAAO,CAACU,QAAQ,EAAE;QACpB,IAAI,CAACC,oBAAoB,CAACW,SAAS,EAAEtB,OAAO,CAACU,QAAQ,CAAC;MACxD;MAEA,IAAMJ,UAAU,GAAG,IAAI,CAACM,sBAAsB,CAACb,IAAI,CAAC;;MAGpD,IAAI,CAACyB,gBAAgB,CAACF,SAAS,EAAEhB,UAAU,EAAEN,OAAO,CAAC;MAErD,IAAMc,SAAS,GAAG,IAAI,IAAI,CAACzB,KAAK,CAAC0B,cAAc,EAAE;MAEjD,IAAI;QACF,IAAMC,UAAU,GAAG,IAAI,CAAC1B,YAAY,CAACmC,uBAAuB,CAACH,SAAS,EAAER,SAAS,CAAC;QAClF,IAAIE,UAAU,IAAI,CAAC,EAAE;UACnB,MAAM,IAAIE,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEA,IAAI,CAACjB,GAAG,yBAAkBqB,SAAS,CAACH,UAAU,EAAE,mCACvCG,SAAS,CAACF,cAAc,EAAE,8BAAoBJ,UAAU,YAAS;QAE1E,OAAOK,2BAA2B,CAACP,SAAS,CAAC;MAC/C,CAAC,SAAS;QACR,IAAI,CAAClB,oBAAoB,CAACkB,SAAS,CAAC;QACpC,IAAI,CAAClB,oBAAoB,CAAC0B,SAAS,CAAC;MACtC;IACF;;EAAC;IAAA;IAAA;IAMD,qBAAYtB,OAA0B,EAAQ;MAC5C,IAAI,OAAO,IAAIA,OAAO,EAAE;QAAA;QAEtB,0BAAI,CAACV,YAAY,EAACoC,eAAe,4DAAI1B,OAAO,CAAC2B,KAAK,EAAC;MACrD;MACA,IAAI,QAAQ,IAAI3B,OAAO,EAAE;QACvB,IAAM4B,WAAW,GAAG,IAAI,CAACvC,KAAK,CAACW,OAAO,CAAC6B,MAAM,IAAI,0BAA0B,CAAC;QAE5E,IAAI,CAACvC,YAAY,CAACwC,iBAAiB,CAACF,WAAW,CAAC;MAClD;MACA,IAAI,cAAc,IAAI5B,OAAO,EAAE;QAC7B,KAAK,IAAM+B,SAAS,IAAI/B,OAAO,CAACgC,YAAY,EAAE;UAC5C,IAAMC,IAAI,GAAGjC,OAAO,CAACgC,YAAY,CAACD,SAAS,CAAC;UAC5C,IAAMG,aAAa,GAAG,IAAI,CAAC7C,KAAK,CAAC0C,SAAS,CAAC;UAC3C,IAAI,CAACzC,YAAY,CAAC6C,wBAAwB,CAACD,aAAa,EAAED,IAAI,CAAC;QACjE;MACF;IACF;;EAAC;IAAA;IAAA;IAOD,0BAAiBX,SAAe,EAAEhB,UAAU,EAAEN,OAA0B,EAAQ;MAC9E,IAAMoC,gBAAgB,GAAGpC,OAAO,CAACqC,kBAAkB,IAAI,CAAC,CAAC;MAEzD,IAAI;QACF,IAAMC,SAAS,GAAG,IAAI,CAACC,qBAAqB,CAACjC,UAAU,CAAC;QACxD,IAAI,CAACgC,SAAS,EAAE;UACd,MAAM,IAAIpB,KAAK,CAAC,WAAW,CAAC;QAC9B;QACA,IAAMsB,WAAW,GAAGF,SAAS,CAACG,MAAM,GAAG,CAAC;QAExC,KAAK,IAAIC,cAAa,IAAIpC,UAAU,EAAE;UACpC,IAAMyB,SAAS,GAAGzB,UAAU,CAACoC,cAAa,CAAC;UAC3CA,cAAa,GAAG5D,gCAAgC,CAAC4D,cAAa,CAAC,IAAIA,cAAa;UAChF,IAAMC,QAAQ,GAAG,IAAI,CAACC,mBAAmB,CAACtB,SAAS,EAAEoB,cAAa,EAAEX,SAAS,EAAES,WAAW,CAAC;UAE3F,IAAIG,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,IAAI,CAACE,qBAAqB,CAACvB,SAAS,EAAEqB,QAAQ;cAC5CG,IAAI,EAAEJ;YAAa,GACfN,gBAAgB,CAACM,cAAa,CAAC,IAAI,CAAC,CAAC,EACzC;UACJ;QACF;MACF,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd,IAAI,CAACnD,oBAAoB,CAAC0B,SAAS,CAAC;QACpC,MAAMyB,KAAK;MACb;MAEA,OAAOzB,SAAS;IAClB;;EAAC;IAAA;IAAA;IAMD,gCACEd,eAA2B,EAC3BF,UAAkB,EAClBN,OAA0B,EACd;MACZ,IAAMoC,gBAAgB,GAAGpC,OAAO,CAACqC,kBAAkB,IAAI,CAAC,CAAC;MAEzD,IAAI;QACF,IAAMC,SAAS,GAAG,IAAI,CAACC,qBAAqB,CAACjC,UAAU,CAAC;QACxD,IAAI,CAACgC,SAAS,EAAE;UACd,MAAM,IAAIpB,KAAK,CAAC,WAAW,CAAC;QAC9B;QACA,IAAMsB,WAAW,GAAGF,SAAS,CAACG,MAAM,GAAG,CAAC;QAExC,KAAK,IAAIC,eAAa,IAAIpC,UAAU,EAAE;UACpC,IAAMyB,SAAS,GAAGzB,UAAU,CAACoC,eAAa,CAAC;UAC3CA,eAAa,GAAG5D,gCAAgC,CAAC4D,eAAa,CAAC,IAAIA,eAAa;UAChF,IAAMC,QAAQ,GAAG,IAAI,CAACC,mBAAmB,CACvCpC,eAAe,EACfkC,eAAa,EACbX,SAAS,EACTS,WAAW,CACZ;UACD,IAAIG,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,IAAI,CAACE,qBAAqB,CAACrC,eAAe,EAAEmC,QAAQ;cAClDG,IAAI,EAAEJ;YAAa,GACfN,gBAAgB,CAACM,eAAa,CAAC,IAAI,CAAC,CAAC,EACzC;UACJ;QACF;MACF,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd,IAAI,CAACnD,oBAAoB,CAACY,eAAe,CAAC;QAC1C,MAAMuC,KAAK;MACb;MAEA,OAAOvC,eAAe;IACxB;;EAAC;IAAA;IAAA;IAQD,6BACET,IAAgB,EAChB2C,aAAqB,EACrBX,SAAqB,EACrBS,WAAmB,EACnB;MACA,IAAI,CAACQ,WAAW,CAACC,MAAM,CAAClB,SAAS,CAAC,EAAE;QAClC,OAAO,CAAC,CAAC;MACX;MAEA,IAAMmB,IAAI,GAAG,IAAI,CAACC,sBAAsB,CAACT,aAAa,CAAC;MAEvD,IAAMU,IAAI,GAAGrB,SAAS,CAACU,MAAM,GAAGD,WAAW;MAE3C,IAAIU,IAAI,KAAK,SAAS,EAAE;QAEtB,IAAMG,QAAQ,GAAGtB,SAAS,CAACU,MAAM,GAAG,CAAC;QACrC,IAAI,CAACxC,GAAG,4BAAqByC,aAAa,oBAAUW,QAAQ,EAAG;;QAG/D,IAAI,CAAC7D,gBAAgB,CAAC8D,cAAc,CAACvD,IAAI,EAAEsD,QAAQ,EAAEtB,SAAS,CAAC;QAC/D,OAAO,CAAC,CAAC;MACX;MAEA,IAAI,CAAC9B,GAAG,4BAAqByC,aAAa,oBAAUU,IAAI,EAAG;MAE3D,IAAMG,OAAO,GAAG,IAAI,CAAC/D,gBAAgB;MACrC,IAAOgE,MAAM,GAAIzB,SAAS,CAAnByB,MAAM;MAEb,QAAQzB,SAAS,CAAC0B,WAAW;QAC3B,KAAKC,SAAS;UACZ,OAAOH,OAAO,CAACI,gBAAgB,CAAC5D,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIM,SAAS,CAACF,MAAM,CAAC,CAAC;QAEvF,KAAKI,UAAU;UACb,OAAOL,OAAO,CAACM,iBAAiB,CAAC9D,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIQ,UAAU,CAACJ,MAAM,CAAC,CAAC;QAEzF,KAAKM,UAAU;UACb,OAAOP,OAAO,CAACQ,iBAAiB,CAAChE,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIU,UAAU,CAACN,MAAM,CAAC,CAAC;QACzF,KAAKQ,UAAU;QACf,KAAKC,iBAAiB;UACpB,OAAOV,OAAO,CAACW,iBAAiB,CAACnE,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIY,UAAU,CAACR,MAAM,CAAC,CAAC;QAEzF,KAAKW,WAAW;UACd,OAAOZ,OAAO,CAACa,kBAAkB,CAACrE,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIe,WAAW,CAACX,MAAM,CAAC,CAAC;QAE3F,KAAKa,WAAW;UACd,OAAOd,OAAO,CAACe,kBAAkB,CAACvE,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAIiB,WAAW,CAACb,MAAM,CAAC,CAAC;QAE3F,KAAKe,YAAY;QACjB;UACE,OAAOhB,OAAO,CAACiB,iBAAiB,CAACzE,IAAI,EAAEmD,IAAI,EAAEV,WAAW,EAAEY,IAAI,EAAE,IAAImB,YAAY,CAACf,MAAM,CAAC,CAAC;MAAC;IAEhG;;EAAC;IAAA;IAAA;IAOD,gCAAuBd,aAAqB,EAA4C;MACtF,QAAQA,aAAa,CAAC+B,WAAW,EAAE;QACjC,KAAK,SAAS;UACZ,OAAO,SAAS;QAClB,KAAK,UAAU;QACf,KAAK,WAAW;QAChB,KAAK,UAAU;UACb,OAAO,IAAI,CAACpF,KAAK,CAACN,QAAQ;QAC5B,KAAK,QAAQ;QACb,KAAK,SAAS;UACZ,OAAO,IAAI,CAACM,KAAK,CAACL,MAAM;QAC1B,KAAK,OAAO;QACZ,KAAK,QAAQ;UACX,OAAO,IAAI,CAACK,KAAK,CAACqF,KAAK;QACzB,KAAK,UAAU;QACf,KAAK,WAAW;UACd,OAAO,IAAI,CAACrF,KAAK,CAACsF,SAAS;QAC7B;UACE,OAAO,IAAI,CAACtF,KAAK,CAACuF,OAAO;MAAC;IAEhC;EAAC;IAAA;IAAA,OAED,+BAAsBtE,UAAU,EAAE;MAChC,KAAK,IAAMoC,eAAa,IAAIpC,UAAU,EAAE;QACtC,IAAMyB,SAAS,GAAGzB,UAAU,CAACoC,eAAa,CAAC;QAC3C,IAAMmC,SAAS,GAAG,IAAI,CAAC1B,sBAAsB,CAACT,eAAa,CAAC;QAC5D,IAAImC,SAAS,KAAK,IAAI,CAACxF,KAAK,CAACN,QAAQ,EAAE;UACrC,OAAOgD,SAAS;QAClB;MACF;MACA,OAAO,IAAI;IACb;;EAAC;IAAA;IAAA;IAOD,8BAAqB+C,aAAyB,EAAEpE,QAAiC,EAAE;MACjF,IAAMqE,aAAa,GAAG,IAAI,IAAI,CAAC1F,KAAK,CAAC2F,QAAQ,EAAE;MAC/C,IAAI,CAACC,sBAAsB,CAACF,aAAa,EAAErE,QAAQ,CAAC;MACpD,IAAI,CAAClB,gBAAgB,CAAC0F,WAAW,CAACJ,aAAa,EAAEC,aAAa,CAAC;IACjE;;EAAC;IAAA;IAAA;IAQD,+BACED,aAAyB,EACzBK,iBAAyB,EACzBzE,QAAuD,EACvD;MAGA,IAAM0E,sBAAsB,GAAG,IAAI,IAAI,CAAC/F,KAAK,CAAC2F,QAAQ,EAAE;MACxD,IAAI,CAACC,sBAAsB,CAACG,sBAAsB,EAAE1E,QAAQ,CAAC;MAG7D,IAAI,CAAClB,gBAAgB,CAAC6F,uBAAuB,CAC3CP,aAAa,EACbK,iBAAiB,EACjBC,sBAAsB,CACvB;IACH;;EAAC;IAAA;IAAA;IAOD,gCACEL,aAAuB,EACvBrE,QAAuD,EACvD;MAAA,2CAC2B4E,UAAU,CAAC5E,QAAQ,CAAC;QAAA;MAAA;QAA/C,oDAAiD;UAAA;YAArC6E,IAAG;YAAEC,KAAK;UACpB,8BAAeA,KAAK;YAClB,KAAK,QAAQ;cACX,IAAIC,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC,KAAKA,KAAK,EAAE;gBAC/B,IAAI,CAAC9F,oBAAoB,CAACiG,WAAW,CAACZ,aAAa,EAAEQ,IAAG,EAAEC,KAAK,CAAC;cAClE,CAAC,MAAM;gBACL,IAAI,CAAC9F,oBAAoB,CAACkG,cAAc,CAACb,aAAa,EAAEQ,IAAG,EAAEC,KAAK,CAAC;cACrE;cACA;YACF,KAAK,QAAQ;cACX,IAAIA,KAAK,YAAY1B,UAAU,EAAE;gBAC/B,IAAI,CAACpE,oBAAoB,CAACmG,gBAAgB,CAACd,aAAa,EAAEQ,IAAG,EAAEC,KAAK,EAAEA,KAAK,CAAC/C,MAAM,CAAC;cACrF;cACA;YACF,KAAK,QAAQ;YACb;cACE,IAAI,CAAC/C,oBAAoB,CAACoG,cAAc,CAACf,aAAa,EAAEQ,IAAG,EAAEC,KAAK,CAAC;UAAC;QAE1E;MAAC;QAAA;MAAA;QAAA;MAAA;IACH;EAAC;EAAA;AAAA;AAAA;;AASH,SAASnE,2BAA2B,CAACP,SAAyB,EAAE;EAC9D,IAAMiF,UAAU,GAAGjF,SAAS,CAACsC,IAAI,EAAE;EACnC,IAAM4C,YAAY,GAAG,IAAIhD,WAAW,CAAC+C,UAAU,CAAC;EAChD,IAAME,UAAU,GAAG,IAAIvC,SAAS,CAACsC,YAAY,CAAC;EAC9C,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,EAAE,EAAEG,CAAC,EAAE;IACnCD,UAAU,CAACC,CAAC,CAAC,GAAGpF,SAAS,CAACqF,QAAQ,CAACD,CAAC,CAAC;EACvC;EACA,OAAOF,YAAY;AACrB;;AAGA,SAASV,UAAU,CAACc,SAAS,EAAE;EAC7B,IAAMC,cAAc,GAAGD,SAAS,CAACE,OAAO,IAAI,CAACF,SAAS,CAACG,cAAc,CAAC,SAAS,CAAC;EAChF,OAAOF,cAAc,GAAGD,SAAS,CAACE,OAAO,EAAE,GAAGE,MAAM,CAACF,OAAO,CAACF,SAAS,CAAC;AACzE"}
@@ -1,39 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.loadDracoDecoderModule = loadDracoDecoderModule;
9
8
  exports.loadDracoEncoderModule = loadDracoEncoderModule;
10
-
11
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
-
15
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
18
-
19
13
  var _workerUtils = require("@loaders.gl/worker-utils");
20
-
21
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
22
-
23
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
-
25
- var DRACO_VERSION = '1.4.1';
26
- var DRACO_JS_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_decoder.js");
27
- var DRACO_WASM_WRAPPER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_wasm_wrapper.js");
28
- var DRACO_WASM_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_decoder.wasm");
29
- var DRACO_ENCODER_URL = "https://raw.githubusercontent.com/google/draco/".concat(DRACO_VERSION, "/javascript/draco_encoder.js");
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ var DRACO_DECODER_VERSION = '1.5.5';
17
+ var DRACO_ENCODER_VERSION = '1.4.1';
18
+ var STATIC_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_DECODER_VERSION);
19
+ var DRACO_JS_DECODER_URL = "".concat(STATIC_DECODER_URL, "/draco_decoder.js");
20
+ var DRACO_WASM_WRAPPER_URL = "".concat(STATIC_DECODER_URL, "/draco_wasm_wrapper.js");
21
+ var DRACO_WASM_DECODER_URL = "".concat(STATIC_DECODER_URL, "/draco_decoder.wasm");
22
+ var DRACO_ENCODER_URL = "https://raw.githubusercontent.com/google/draco/".concat(DRACO_ENCODER_VERSION, "/javascript/draco_encoder.js");
30
23
  var loadDecoderPromise;
31
24
  var loadEncoderPromise;
32
-
33
25
  function loadDracoDecoderModule(_x) {
34
26
  return _loadDracoDecoderModule.apply(this, arguments);
35
27
  }
36
-
37
28
  function _loadDracoDecoderModule() {
38
29
  _loadDracoDecoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
39
30
  var modules;
@@ -42,7 +33,6 @@ function _loadDracoDecoderModule() {
42
33
  switch (_context.prev = _context.next) {
43
34
  case 0:
44
35
  modules = options.modules || {};
45
-
46
36
  if (modules.draco3d) {
47
37
  loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(function (draco) {
48
38
  return {
@@ -52,13 +42,10 @@ function _loadDracoDecoderModule() {
52
42
  } else {
53
43
  loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
54
44
  }
55
-
56
45
  _context.next = 4;
57
46
  return loadDecoderPromise;
58
-
59
47
  case 4:
60
48
  return _context.abrupt("return", _context.sent);
61
-
62
49
  case 5:
63
50
  case "end":
64
51
  return _context.stop();
@@ -68,11 +55,9 @@ function _loadDracoDecoderModule() {
68
55
  }));
69
56
  return _loadDracoDecoderModule.apply(this, arguments);
70
57
  }
71
-
72
58
  function loadDracoEncoderModule(_x2) {
73
59
  return _loadDracoEncoderModule.apply(this, arguments);
74
60
  }
75
-
76
61
  function _loadDracoEncoderModule() {
77
62
  _loadDracoEncoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
78
63
  var modules;
@@ -81,7 +66,6 @@ function _loadDracoEncoderModule() {
81
66
  switch (_context2.prev = _context2.next) {
82
67
  case 0:
83
68
  modules = options.modules || {};
84
-
85
69
  if (modules.draco3d) {
86
70
  loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(function (draco) {
87
71
  return {
@@ -91,13 +75,10 @@ function _loadDracoEncoderModule() {
91
75
  } else {
92
76
  loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
93
77
  }
94
-
95
78
  _context2.next = 4;
96
79
  return loadEncoderPromise;
97
-
98
80
  case 4:
99
81
  return _context2.abrupt("return", _context2.sent);
100
-
101
82
  case 5:
102
83
  case "end":
103
84
  return _context2.stop();
@@ -107,15 +88,12 @@ function _loadDracoEncoderModule() {
107
88
  }));
108
89
  return _loadDracoEncoderModule.apply(this, arguments);
109
90
  }
110
-
111
91
  function loadDracoDecoder(_x3) {
112
92
  return _loadDracoDecoder.apply(this, arguments);
113
93
  }
114
-
115
94
  function _loadDracoDecoder() {
116
95
  _loadDracoDecoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(options) {
117
96
  var DracoDecoderModule, wasmBinary, _yield$Promise$all, _yield$Promise$all2;
118
-
119
97
  return _regenerator.default.wrap(function _callee3$(_context3) {
120
98
  while (1) {
121
99
  switch (_context3.prev = _context3.next) {
@@ -123,45 +101,36 @@ function _loadDracoDecoder() {
123
101
  _context3.t0 = options.draco && options.draco.decoderType;
124
102
  _context3.next = _context3.t0 === 'js' ? 3 : _context3.t0 === 'wasm' ? 7 : 7;
125
103
  break;
126
-
127
104
  case 3:
128
105
  _context3.next = 5;
129
106
  return (0, _workerUtils.loadLibrary)(DRACO_JS_DECODER_URL, 'draco', options);
130
-
131
107
  case 5:
132
108
  DracoDecoderModule = _context3.sent;
133
109
  return _context3.abrupt("break", 21);
134
-
135
110
  case 7:
136
111
  _context3.t1 = Promise;
137
112
  _context3.next = 10;
138
113
  return (0, _workerUtils.loadLibrary)(DRACO_WASM_WRAPPER_URL, 'draco', options);
139
-
140
114
  case 10:
141
115
  _context3.t2 = _context3.sent;
142
116
  _context3.next = 13;
143
117
  return (0, _workerUtils.loadLibrary)(DRACO_WASM_DECODER_URL, 'draco', options);
144
-
145
118
  case 13:
146
119
  _context3.t3 = _context3.sent;
147
120
  _context3.t4 = [_context3.t2, _context3.t3];
148
121
  _context3.next = 17;
149
122
  return _context3.t1.all.call(_context3.t1, _context3.t4);
150
-
151
123
  case 17:
152
124
  _yield$Promise$all = _context3.sent;
153
125
  _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
154
126
  DracoDecoderModule = _yield$Promise$all2[0];
155
127
  wasmBinary = _yield$Promise$all2[1];
156
-
157
128
  case 21:
158
129
  DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
159
130
  _context3.next = 24;
160
131
  return initializeDracoDecoder(DracoDecoderModule, wasmBinary);
161
-
162
132
  case 24:
163
133
  return _context3.abrupt("return", _context3.sent);
164
-
165
134
  case 25:
166
135
  case "end":
167
136
  return _context3.stop();
@@ -171,14 +140,11 @@ function _loadDracoDecoder() {
171
140
  }));
172
141
  return _loadDracoDecoder.apply(this, arguments);
173
142
  }
174
-
175
143
  function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
176
144
  var options = {};
177
-
178
145
  if (wasmBinary) {
179
146
  options.wasmBinary = wasmBinary;
180
147
  }
181
-
182
148
  return new Promise(function (resolve) {
183
149
  DracoDecoderModule(_objectSpread(_objectSpread({}, options), {}, {
184
150
  onModuleLoaded: function onModuleLoaded(draco) {
@@ -193,7 +159,6 @@ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
193
159
  function loadDracoEncoder(_x4) {
194
160
  return _loadDracoEncoder.apply(this, arguments);
195
161
  }
196
-
197
162
  function _loadDracoEncoder() {
198
163
  _loadDracoEncoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(options) {
199
164
  var DracoEncoderModule;
@@ -203,7 +168,6 @@ function _loadDracoEncoder() {
203
168
  case 0:
204
169
  _context4.next = 2;
205
170
  return (0, _workerUtils.loadLibrary)(DRACO_ENCODER_URL, 'draco', options);
206
-
207
171
  case 2:
208
172
  DracoEncoderModule = _context4.sent;
209
173
  DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
@@ -216,7 +180,6 @@ function _loadDracoEncoder() {
216
180
  }
217
181
  });
218
182
  }));
219
-
220
183
  case 5:
221
184
  case "end":
222
185
  return _context4.stop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/draco-module-loader.ts"],"names":["DRACO_VERSION","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","decoderType","DracoDecoderModule","Promise","all","wasmBinary","globalThis","initializeDracoDecoder","resolve","onModuleLoaded","DracoEncoderModule"],"mappings":"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","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_VERSION = '1.4.1';\nconst DRACO_JS_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.js`;\nconst DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_wasm_wrapper.js`;\nconst DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;\n\nconst DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_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"],"file":"draco-module-loader.js"}
1
+ {"version":3,"file":"draco-module-loader.js","names":["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","decoderType","loadLibrary","DracoDecoderModule","Promise","all","wasmBinary","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":";;;;;;;;;;;;AAIA;AAAqD;AAAA;AAErD,IAAMA,qBAAqB,GAAG,OAAO;AACrC,IAAMC,qBAAqB,GAAG,OAAO;AAErC,IAAMC,kBAAkB,8DAAuDF,qBAAqB,CAAE;AAEtG,IAAMG,oBAAoB,aAAMD,kBAAkB,sBAAmB;AACrE,IAAME,sBAAsB,aAAMF,kBAAkB,2BAAwB;AAC5E,IAAMG,sBAAsB,aAAMH,kBAAkB,wBAAqB;AAEzE,IAAMI,iBAAiB,4DAAqDL,qBAAqB,iCAA8B;AAE/H,IAAIM,kBAAkB;AACtB,IAAIC,kBAAkB;AAAC,SAEDC,sBAAsB;EAAA;AAAA;AAAA;EAAA,oFAArC,iBAAsCC,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YAC5CC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;YAGrC,IAAIA,OAAO,CAACC,OAAO,EAAE;cACnBL,kBAAkB,GAChBA,kBAAkB,IAClBI,OAAO,CAACC,OAAO,CAACC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,KAAK,EAAK;gBACtD,OAAO;kBAACA,KAAK,EAALA;gBAAK,CAAC;cAChB,CAAC,CAAC;YACN,CAAC,MAAM;cAELR,kBAAkB,GAAGA,kBAAkB,IAAIS,gBAAgB,CAACN,OAAO,CAAC;YACtE;YAAC;YAAA,OACYH,kBAAkB;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChC;EAAA;AAAA;AAAA,SAEqBU,sBAAsB;EAAA;AAAA;AAAA;EAAA,oFAArC,kBAAsCP,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YAC5CC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;YAGrC,IAAIA,OAAO,CAACC,OAAO,EAAE;cACnBJ,kBAAkB,GAChBA,kBAAkB,IAClBG,OAAO,CAACC,OAAO,CAACM,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAACJ,IAAI,CAAC,UAACC,KAAK,EAAK;gBACtD,OAAO;kBAACA,KAAK,EAALA;gBAAK,CAAC;cAChB,CAAC,CAAC;YACN,CAAC,MAAM;cAELP,kBAAkB,GAAGA,kBAAkB,IAAIW,gBAAgB,CAACT,OAAO,CAAC;YACtE;YAAC;YAAA,OACYF,kBAAkB;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChC;EAAA;AAAA;AAAA,SAIcQ,gBAAgB;EAAA;AAAA;AAAA;EAAA,8EAA/B,kBAAgCN,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,eAG7BA,OAAO,CAACK,KAAK,IAAIL,OAAO,CAACK,KAAK,CAACK,WAAW;YAAA,kCAC3C,IAAI,wBAIJ,MAAM;YAAA;UAAA;YAAA;YAAA,OAHkB,IAAAC,wBAAW,EAAClB,oBAAoB,EAAE,OAAO,EAAEO,OAAO,CAAC;UAAA;YAA9EY,kBAAkB;YAAA;UAAA;YAAA,eAKuBC,OAAO;YAAA;YAAA,OACxC,IAAAF,wBAAW,EAACjB,sBAAsB,EAAE,OAAO,EAAEM,OAAO,CAAC;UAAA;YAAA;YAAA;YAAA,OACrD,IAAAW,wBAAW,EAAChB,sBAAsB,EAAE,OAAO,EAAEK,OAAO,CAAC;UAAA;YAAA;YAAA;YAAA;YAAA,oBAFZc,GAAG;UAAA;YAAA;YAAA;YAAnDF,kBAAkB;YAAEG,UAAU;UAAA;YAOnCH,kBAAkB,GAAGA,kBAAkB,IAAII,UAAU,CAACJ,kBAAkB;YAAC;YAAA,OAC5DK,sBAAsB,CAACL,kBAAkB,EAAEG,UAAU,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACpE;EAAA;AAAA;AAED,SAASE,sBAAsB,CAACL,kBAAkB,EAAEG,UAAU,EAAE;EAC9D,IAAMf,OAA2B,GAAG,CAAC,CAAC;EACtC,IAAIe,UAAU,EAAE;IACdf,OAAO,CAACe,UAAU,GAAGA,UAAU;EACjC;EAEA,OAAO,IAAIF,OAAO,CAAC,UAACK,OAAO,EAAK;IAC9BN,kBAAkB,iCACbZ,OAAO;MACVmB,cAAc,EAAE,wBAACd,KAAK;QAAA,OAAKa,OAAO,CAAC;UAACb,KAAK,EAALA;QAAK,CAAC,CAAC;MAAA;IAAA,GAC3C;EACJ,CAAC,CAAC;AACJ;;AAAC,SAIcI,gBAAgB;EAAA;AAAA;AAAA;EAAA,8EAA/B,kBAAgCT,OAAO;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA;YAAA,OACN,IAAAW,wBAAW,EAACf,iBAAiB,EAAE,OAAO,EAAEI,OAAO,CAAC;UAAA;YAA3EoB,kBAAkB;YAEtBA,kBAAkB,GAAGA,kBAAkB,IAAIJ,UAAU,CAACI,kBAAkB;YAAC,kCAElE,IAAIP,OAAO,CAAC,UAACK,OAAO,EAAK;cAC9BE,kBAAkB,CAAC;gBACjBD,cAAc,EAAE,wBAACd,KAAK;kBAAA,OAAKa,OAAO,CAAC;oBAACb,KAAK,EAALA;kBAAK,CAAC,CAAC;gBAAA;cAC7C,CAAC,CAAC;YACJ,CAAC,CAAC;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACH;EAAA;AAAA"}