@loaders.gl/draco 3.1.3 → 4.0.0-alpha.5

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 (76) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/dist.min.js +2 -2
  4. package/dist/dist.min.js.map +2 -2
  5. package/dist/draco-loader.js +21 -27
  6. package/dist/draco-loader.js.map +1 -0
  7. package/dist/draco-worker.js +1 -1
  8. package/dist/draco-worker.js.map +2 -2
  9. package/dist/draco-writer.js +27 -39
  10. package/dist/draco-writer.js.map +1 -0
  11. package/dist/draco3d/draco3d-types.js +44 -47
  12. package/dist/draco3d/draco3d-types.js.map +1 -0
  13. package/dist/index.js +21 -28
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/draco-builder.js +329 -313
  16. package/dist/lib/draco-builder.js.map +1 -0
  17. package/dist/lib/draco-module-loader.js +72 -78
  18. package/dist/lib/draco-module-loader.js.map +1 -0
  19. package/dist/lib/draco-parser.js +416 -440
  20. package/dist/lib/draco-parser.js.map +1 -0
  21. package/dist/lib/draco-types.js +2 -3
  22. package/dist/{es5/lib → lib}/draco-types.js.map +0 -0
  23. package/dist/lib/utils/get-draco-schema.js +41 -35
  24. package/dist/lib/utils/get-draco-schema.js.map +1 -0
  25. package/dist/lib/utils/version.js +2 -7
  26. package/dist/lib/utils/version.js.map +1 -0
  27. package/dist/workers/draco-worker.js +4 -5
  28. package/dist/workers/draco-worker.js.map +1 -0
  29. package/package.json +8 -8
  30. package/dist/es5/bundle.js +0 -7
  31. package/dist/es5/bundle.js.map +0 -1
  32. package/dist/es5/draco-loader.js +0 -38
  33. package/dist/es5/draco-loader.js.map +0 -1
  34. package/dist/es5/draco-writer.js +0 -78
  35. package/dist/es5/draco-writer.js.map +0 -1
  36. package/dist/es5/draco3d/draco3d-types.js +0 -58
  37. package/dist/es5/draco3d/draco3d-types.js.map +0 -1
  38. package/dist/es5/index.js +0 -85
  39. package/dist/es5/index.js.map +0 -1
  40. package/dist/es5/lib/draco-builder.js +0 -409
  41. package/dist/es5/lib/draco-builder.js.map +0 -1
  42. package/dist/es5/lib/draco-module-loader.js +0 -229
  43. package/dist/es5/lib/draco-module-loader.js.map +0 -1
  44. package/dist/es5/lib/draco-parser.js +0 -528
  45. package/dist/es5/lib/draco-parser.js.map +0 -1
  46. package/dist/es5/lib/draco-types.js +0 -2
  47. package/dist/es5/lib/utils/get-draco-schema.js +0 -55
  48. package/dist/es5/lib/utils/get-draco-schema.js.map +0 -1
  49. package/dist/es5/lib/utils/version.js +0 -9
  50. package/dist/es5/lib/utils/version.js.map +0 -1
  51. package/dist/es5/workers/draco-worker.js +0 -8
  52. package/dist/es5/workers/draco-worker.js.map +0 -1
  53. package/dist/esm/bundle.js +0 -5
  54. package/dist/esm/bundle.js.map +0 -1
  55. package/dist/esm/draco-loader.js +0 -24
  56. package/dist/esm/draco-loader.js.map +0 -1
  57. package/dist/esm/draco-writer.js +0 -32
  58. package/dist/esm/draco-writer.js.map +0 -1
  59. package/dist/esm/draco3d/draco3d-types.js +0 -48
  60. package/dist/esm/draco3d/draco3d-types.js.map +0 -1
  61. package/dist/esm/index.js +0 -24
  62. package/dist/esm/index.js.map +0 -1
  63. package/dist/esm/lib/draco-builder.js +0 -354
  64. package/dist/esm/lib/draco-builder.js.map +0 -1
  65. package/dist/esm/lib/draco-module-loader.js +0 -85
  66. package/dist/esm/lib/draco-module-loader.js.map +0 -1
  67. package/dist/esm/lib/draco-parser.js +0 -452
  68. package/dist/esm/lib/draco-parser.js.map +0 -1
  69. package/dist/esm/lib/draco-types.js +0 -2
  70. package/dist/esm/lib/draco-types.js.map +0 -1
  71. package/dist/esm/lib/utils/get-draco-schema.js +0 -48
  72. package/dist/esm/lib/utils/get-draco-schema.js.map +0 -1
  73. package/dist/esm/lib/utils/version.js +0 -2
  74. package/dist/esm/lib/utils/version.js.map +0 -1
  75. package/dist/esm/workers/draco-worker.js +0 -4
  76. package/dist/esm/workers/draco-worker.js.map +0 -1
@@ -0,0 +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","constructor","draco","dracoEncoder","Encoder","dracoMeshBuilder","MeshBuilder","dracoMetadataBuilder","MetadataBuilder","destroy","destroyEncodedObject","object","encodeSync","mesh","options","log","_setOptions","pointcloud","_encodePointCloud","_encodeMesh","_getAttributesFromMesh","attributes","indices","dracoPointCloud","PointCloud","metadata","_addGeometryMetadata","_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","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","key","value","getEntries","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,91 +1,85 @@
1
- "use strict";
2
- // Dynamic DRACO module loading inspired by THREE.DRACOLoader
3
- // https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js
4
- // by Don McCurdy / https://www.donmccurdy.com / MIT license
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadDracoEncoderModule = exports.loadDracoDecoderModule = void 0;
7
- const worker_utils_1 = require("@loaders.gl/worker-utils");
1
+ import { loadLibrary } from '@loaders.gl/worker-utils';
8
2
  const DRACO_VERSION = '1.4.1';
9
- const DRACO_JS_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.js`;
10
- const DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_wasm_wrapper.js`;
11
- const DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
12
- const DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
3
+ const DRACO_JS_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_decoder.js");
4
+ const DRACO_WASM_WRAPPER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_wasm_wrapper.js");
5
+ const DRACO_WASM_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_VERSION, "/draco_decoder.wasm");
6
+ const DRACO_ENCODER_URL = "https://raw.githubusercontent.com/google/draco/".concat(DRACO_VERSION, "/javascript/draco_encoder.js");
13
7
  let loadDecoderPromise;
14
8
  let loadEncoderPromise;
15
- async function loadDracoDecoderModule(options) {
16
- const modules = options.modules || {};
17
- // Check if a bundled draco3d library has been supplied by application
18
- if (modules.draco3d) {
19
- loadDecoderPromise =
20
- loadDecoderPromise ||
21
- modules.draco3d.createDecoderModule({}).then((draco) => {
22
- return { draco };
23
- });
24
- }
25
- else {
26
- // If not, dynamically load the WASM script from our CDN
27
- loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
28
- }
29
- return await loadDecoderPromise;
9
+ export async function loadDracoDecoderModule(options) {
10
+ const modules = options.modules || {};
11
+
12
+ if (modules.draco3d) {
13
+ loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(draco => {
14
+ return {
15
+ draco
16
+ };
17
+ });
18
+ } else {
19
+ loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
20
+ }
21
+
22
+ return await loadDecoderPromise;
30
23
  }
31
- exports.loadDracoDecoderModule = loadDracoDecoderModule;
32
- async function loadDracoEncoderModule(options) {
33
- const modules = options.modules || {};
34
- // Check if a bundled draco3d library has been supplied by application
35
- if (modules.draco3d) {
36
- loadEncoderPromise =
37
- loadEncoderPromise ||
38
- modules.draco3d.createEncoderModule({}).then((draco) => {
39
- return { draco };
40
- });
41
- }
42
- else {
43
- // If not, dynamically load the WASM script from our CDN
44
- loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
45
- }
46
- return await loadEncoderPromise;
24
+ export async function loadDracoEncoderModule(options) {
25
+ const modules = options.modules || {};
26
+
27
+ if (modules.draco3d) {
28
+ loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(draco => {
29
+ return {
30
+ draco
31
+ };
32
+ });
33
+ } else {
34
+ loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
35
+ }
36
+
37
+ return await loadEncoderPromise;
47
38
  }
48
- exports.loadDracoEncoderModule = loadDracoEncoderModule;
49
- // DRACO DECODER LOADING
39
+
50
40
  async function loadDracoDecoder(options) {
51
- let DracoDecoderModule;
52
- let wasmBinary;
53
- switch (options.draco && options.draco.decoderType) {
54
- case 'js':
55
- DracoDecoderModule = await (0, worker_utils_1.loadLibrary)(DRACO_JS_DECODER_URL, 'draco', options);
56
- break;
57
- case 'wasm':
58
- default:
59
- [DracoDecoderModule, wasmBinary] = await Promise.all([
60
- await (0, worker_utils_1.loadLibrary)(DRACO_WASM_WRAPPER_URL, 'draco', options),
61
- await (0, worker_utils_1.loadLibrary)(DRACO_WASM_DECODER_URL, 'draco', options)
62
- ]);
63
- }
64
- // Depends on how import happened...
65
- // @ts-ignore
66
- DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
67
- return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
41
+ let DracoDecoderModule;
42
+ let wasmBinary;
43
+
44
+ switch (options.draco && options.draco.decoderType) {
45
+ case 'js':
46
+ DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, 'draco', options);
47
+ break;
48
+
49
+ case 'wasm':
50
+ default:
51
+ [DracoDecoderModule, wasmBinary] = await Promise.all([await loadLibrary(DRACO_WASM_WRAPPER_URL, 'draco', options), await loadLibrary(DRACO_WASM_DECODER_URL, 'draco', options)]);
52
+ }
53
+
54
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
55
+ return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
68
56
  }
57
+
69
58
  function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
70
- const options = {};
71
- if (wasmBinary) {
72
- options.wasmBinary = wasmBinary;
73
- }
74
- return new Promise((resolve) => {
75
- DracoDecoderModule({
76
- ...options,
77
- onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
78
- });
59
+ const options = {};
60
+
61
+ if (wasmBinary) {
62
+ options.wasmBinary = wasmBinary;
63
+ }
64
+
65
+ return new Promise(resolve => {
66
+ DracoDecoderModule({ ...options,
67
+ onModuleLoaded: draco => resolve({
68
+ draco
69
+ })
79
70
  });
71
+ });
80
72
  }
81
- // ENCODER
73
+
82
74
  async function loadDracoEncoder(options) {
83
- let DracoEncoderModule = await (0, worker_utils_1.loadLibrary)(DRACO_ENCODER_URL, 'draco', options);
84
- // @ts-ignore
85
- DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
86
- return new Promise((resolve) => {
87
- DracoEncoderModule({
88
- onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
89
- });
75
+ let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);
76
+ DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
77
+ return new Promise(resolve => {
78
+ DracoEncoderModule({
79
+ onModuleLoaded: draco => resolve({
80
+ draco
81
+ })
90
82
  });
83
+ });
91
84
  }
85
+ //# sourceMappingURL=draco-module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/draco-module-loader.ts"],"names":["loadLibrary","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","DracoDecoderModule","wasmBinary","decoderType","Promise","all","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"}