@loaders.gl/draco 4.0.0-beta.1 → 4.0.0-beta.3

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 (101) hide show
  1. package/dist/dist.dev.js +1245 -0
  2. package/dist/{esm/draco-loader.js → draco-loader.js} +1 -1
  3. package/dist/draco-loader.js.map +1 -0
  4. package/dist/draco-worker-node.js +287 -141
  5. package/dist/draco-worker-node.js.map +4 -4
  6. package/dist/draco-worker.js +1 -1
  7. package/dist/draco-worker.js.map +4 -4
  8. package/dist/draco-writer-worker-node.js +290 -144
  9. package/dist/draco-writer-worker-node.js.map +4 -4
  10. package/dist/draco-writer-worker.js +3 -3
  11. package/dist/draco-writer-worker.js.map +4 -4
  12. package/dist/{esm/draco-writer.js → draco-writer.js} +3 -3
  13. package/dist/draco-writer.js.map +1 -0
  14. package/dist/draco3d/draco3d-types.js.map +1 -0
  15. package/dist/index.cjs +1028 -0
  16. package/dist/{esm/index.js → index.js} +6 -6
  17. package/dist/index.js.map +1 -0
  18. package/dist/{esm/lib → lib}/draco-builder.js +11 -10
  19. package/dist/lib/draco-builder.js.map +1 -0
  20. package/dist/{esm/lib → lib}/draco-module-loader.js +5 -5
  21. package/dist/lib/draco-module-loader.js.map +1 -0
  22. package/dist/{esm/lib → lib}/draco-parser.js +6 -7
  23. package/dist/lib/draco-parser.js.map +1 -0
  24. package/dist/lib/draco-types.js.map +1 -0
  25. package/dist/{esm/lib → lib}/utils/get-draco-schema.js +1 -1
  26. package/dist/lib/utils/get-draco-schema.js.map +1 -0
  27. package/dist/lib/utils/version.js +2 -0
  28. package/dist/lib/utils/version.js.map +1 -0
  29. package/dist/libs/draco_encoder.js +2 -52
  30. package/dist/libs/draco_encoder.js.map +1 -0
  31. package/dist/libs/draco_wasm_wrapper.js +1985 -117
  32. package/dist/libs/draco_wasm_wrapper.js.map +1 -0
  33. package/dist/{esm/workers → workers}/draco-worker-node.js +1 -1
  34. package/dist/workers/draco-worker-node.js.map +1 -0
  35. package/dist/{esm/workers → workers}/draco-worker.js +1 -1
  36. package/dist/workers/draco-worker.js.map +1 -0
  37. package/dist/{esm/workers → workers}/draco-writer-worker-node.js +1 -1
  38. package/dist/workers/draco-writer-worker-node.js.map +1 -0
  39. package/dist/{esm/workers → workers}/draco-writer-worker.js +1 -1
  40. package/dist/workers/draco-writer-worker.js.map +1 -0
  41. package/package.json +18 -10
  42. package/dist/bundle.d.ts +0 -2
  43. package/dist/bundle.d.ts.map +0 -1
  44. package/dist/dist.min.js +0 -4
  45. package/dist/dist.min.js.map +0 -7
  46. package/dist/es5/bundle.js +0 -6
  47. package/dist/es5/bundle.js.map +0 -1
  48. package/dist/es5/draco-loader.js +0 -31
  49. package/dist/es5/draco-loader.js.map +0 -1
  50. package/dist/es5/draco-writer.js +0 -63
  51. package/dist/es5/draco-writer.js.map +0 -1
  52. package/dist/es5/draco3d/draco3d-types.js +0 -51
  53. package/dist/es5/draco3d/draco3d-types.js.map +0 -1
  54. package/dist/es5/index.js +0 -88
  55. package/dist/es5/index.js.map +0 -1
  56. package/dist/es5/lib/draco-builder.js +0 -324
  57. package/dist/es5/lib/draco-builder.js.map +0 -1
  58. package/dist/es5/lib/draco-module-loader.js +0 -190
  59. package/dist/es5/lib/draco-module-loader.js.map +0 -1
  60. package/dist/es5/lib/draco-parser.js +0 -435
  61. package/dist/es5/lib/draco-parser.js.map +0 -1
  62. package/dist/es5/lib/draco-types.js +0 -2
  63. package/dist/es5/lib/draco-types.js.map +0 -1
  64. package/dist/es5/lib/utils/get-draco-schema.js +0 -47
  65. package/dist/es5/lib/utils/get-draco-schema.js.map +0 -1
  66. package/dist/es5/lib/utils/version.js +0 -9
  67. package/dist/es5/lib/utils/version.js.map +0 -1
  68. package/dist/es5/workers/draco-worker-node.js +0 -7
  69. package/dist/es5/workers/draco-worker-node.js.map +0 -1
  70. package/dist/es5/workers/draco-worker.js +0 -6
  71. package/dist/es5/workers/draco-worker.js.map +0 -1
  72. package/dist/es5/workers/draco-writer-worker-node.js +0 -54
  73. package/dist/es5/workers/draco-writer-worker-node.js.map +0 -1
  74. package/dist/es5/workers/draco-writer-worker.js +0 -53
  75. package/dist/es5/workers/draco-writer-worker.js.map +0 -1
  76. package/dist/esm/bundle.js +0 -4
  77. package/dist/esm/bundle.js.map +0 -1
  78. package/dist/esm/draco-loader.js.map +0 -1
  79. package/dist/esm/draco-writer.js.map +0 -1
  80. package/dist/esm/draco3d/draco3d-types.js.map +0 -1
  81. package/dist/esm/index.js.map +0 -1
  82. package/dist/esm/lib/draco-builder.js.map +0 -1
  83. package/dist/esm/lib/draco-module-loader.js.map +0 -1
  84. package/dist/esm/lib/draco-parser.js.map +0 -1
  85. package/dist/esm/lib/draco-types.js.map +0 -1
  86. package/dist/esm/lib/utils/get-draco-schema.js.map +0 -1
  87. package/dist/esm/lib/utils/version.js +0 -2
  88. package/dist/esm/lib/utils/version.js.map +0 -1
  89. package/dist/esm/libs/draco_decoder.wasm +0 -0
  90. package/dist/esm/libs/draco_encoder.js +0 -52
  91. package/dist/esm/libs/draco_wasm_wrapper.js +0 -117
  92. package/dist/esm/workers/draco-worker-node.js.map +0 -1
  93. package/dist/esm/workers/draco-worker.js.map +0 -1
  94. package/dist/esm/workers/draco-writer-worker-node.js.map +0 -1
  95. package/dist/esm/workers/draco-writer-worker.js.map +0 -1
  96. package/src/bundle.ts +0 -4
  97. /package/dist/{esm/draco3d → draco3d}/draco3d-types.js +0 -0
  98. /package/dist/{esm/lib → lib}/draco-types.js +0 -0
  99. /package/dist/{es5 → libs}/libs/draco_decoder.wasm +0 -0
  100. /package/dist/{es5 → libs}/libs/draco_encoder.js +0 -0
  101. /package/dist/{es5 → libs}/libs/draco_wasm_wrapper.js +0 -0
@@ -1,324 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
- 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; }
18
- 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; }
19
- var GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {
20
- POSITION: 'POSITION',
21
- NORMAL: 'NORMAL',
22
- COLOR_0: 'COLOR',
23
- TEXCOORD_0: 'TEX_COORD'
24
- };
25
- var noop = function noop() {};
26
- var DracoBuilder = function () {
27
- function DracoBuilder(draco) {
28
- (0, _classCallCheck2.default)(this, DracoBuilder);
29
- (0, _defineProperty2.default)(this, "draco", void 0);
30
- (0, _defineProperty2.default)(this, "dracoEncoder", void 0);
31
- (0, _defineProperty2.default)(this, "dracoMeshBuilder", void 0);
32
- (0, _defineProperty2.default)(this, "dracoMetadataBuilder", void 0);
33
- (0, _defineProperty2.default)(this, "log", void 0);
34
- this.draco = draco;
35
- this.dracoEncoder = new this.draco.Encoder();
36
- this.dracoMeshBuilder = new this.draco.MeshBuilder();
37
- this.dracoMetadataBuilder = new this.draco.MetadataBuilder();
38
- }
39
- (0, _createClass2.default)(DracoBuilder, [{
40
- key: "destroy",
41
- value: function destroy() {
42
- this.destroyEncodedObject(this.dracoMeshBuilder);
43
- this.destroyEncodedObject(this.dracoEncoder);
44
- this.destroyEncodedObject(this.dracoMetadataBuilder);
45
- this.dracoMeshBuilder = null;
46
- this.dracoEncoder = null;
47
- this.draco = null;
48
- }
49
- }, {
50
- key: "destroyEncodedObject",
51
- value: function destroyEncodedObject(object) {
52
- if (object) {
53
- this.draco.destroy(object);
54
- }
55
- }
56
- }, {
57
- key: "encodeSync",
58
- value: function encodeSync(mesh) {
59
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
60
- this.log = noop;
61
- this._setOptions(options);
62
- return options.pointcloud ? this._encodePointCloud(mesh, options) : this._encodeMesh(mesh, options);
63
- }
64
- }, {
65
- key: "_getAttributesFromMesh",
66
- value: function _getAttributesFromMesh(mesh) {
67
- var attributes = _objectSpread(_objectSpread({}, mesh), mesh.attributes);
68
- if (mesh.indices) {
69
- attributes.indices = mesh.indices;
70
- }
71
- return attributes;
72
- }
73
- }, {
74
- key: "_encodePointCloud",
75
- value: function _encodePointCloud(pointcloud, options) {
76
- var dracoPointCloud = new this.draco.PointCloud();
77
- if (options.metadata) {
78
- this._addGeometryMetadata(dracoPointCloud, options.metadata);
79
- }
80
- var attributes = this._getAttributesFromMesh(pointcloud);
81
- this._createDracoPointCloud(dracoPointCloud, attributes, options);
82
- var dracoData = new this.draco.DracoInt8Array();
83
- try {
84
- var encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(dracoPointCloud, false, dracoData);
85
- if (!(encodedLen > 0)) {
86
- throw new Error('Draco encoding failed.');
87
- }
88
- this.log("DRACO encoded ".concat(dracoPointCloud.num_points(), " points\n with ").concat(dracoPointCloud.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
89
- return dracoInt8ArrayToArrayBuffer(dracoData);
90
- } finally {
91
- this.destroyEncodedObject(dracoData);
92
- this.destroyEncodedObject(dracoPointCloud);
93
- }
94
- }
95
- }, {
96
- key: "_encodeMesh",
97
- value: function _encodeMesh(mesh, options) {
98
- var dracoMesh = new this.draco.Mesh();
99
- if (options.metadata) {
100
- this._addGeometryMetadata(dracoMesh, options.metadata);
101
- }
102
- var attributes = this._getAttributesFromMesh(mesh);
103
- this._createDracoMesh(dracoMesh, attributes, options);
104
- var dracoData = new this.draco.DracoInt8Array();
105
- try {
106
- var encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);
107
- if (encodedLen <= 0) {
108
- throw new Error('Draco encoding failed.');
109
- }
110
- this.log("DRACO encoded ".concat(dracoMesh.num_points(), " points\n with ").concat(dracoMesh.num_attributes(), " attributes into ").concat(encodedLen, " bytes"));
111
- return dracoInt8ArrayToArrayBuffer(dracoData);
112
- } finally {
113
- this.destroyEncodedObject(dracoData);
114
- this.destroyEncodedObject(dracoMesh);
115
- }
116
- }
117
- }, {
118
- key: "_setOptions",
119
- value: function _setOptions(options) {
120
- if ('speed' in options) {
121
- var _this$dracoEncoder;
122
- (_this$dracoEncoder = this.dracoEncoder).SetSpeedOptions.apply(_this$dracoEncoder, (0, _toConsumableArray2.default)(options.speed));
123
- }
124
- if ('method' in options) {
125
- var dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];
126
- this.dracoEncoder.SetEncodingMethod(dracoMethod);
127
- }
128
- if ('quantization' in options) {
129
- for (var attribute in options.quantization) {
130
- var bits = options.quantization[attribute];
131
- var dracoPosition = this.draco[attribute];
132
- this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);
133
- }
134
- }
135
- }
136
- }, {
137
- key: "_createDracoMesh",
138
- value: function _createDracoMesh(dracoMesh, attributes, options) {
139
- var optionalMetadata = options.attributesMetadata || {};
140
- try {
141
- var positions = this._getPositionAttribute(attributes);
142
- if (!positions) {
143
- throw new Error('positions');
144
- }
145
- var vertexCount = positions.length / 3;
146
- for (var _attributeName in attributes) {
147
- var attribute = attributes[_attributeName];
148
- _attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[_attributeName] || _attributeName;
149
- var uniqueId = this._addAttributeToMesh(dracoMesh, _attributeName, attribute, vertexCount);
150
- if (uniqueId !== -1) {
151
- this._addAttributeMetadata(dracoMesh, uniqueId, _objectSpread({
152
- name: _attributeName
153
- }, optionalMetadata[_attributeName] || {}));
154
- }
155
- }
156
- } catch (error) {
157
- this.destroyEncodedObject(dracoMesh);
158
- throw error;
159
- }
160
- return dracoMesh;
161
- }
162
- }, {
163
- key: "_createDracoPointCloud",
164
- value: function _createDracoPointCloud(dracoPointCloud, attributes, options) {
165
- var optionalMetadata = options.attributesMetadata || {};
166
- try {
167
- var positions = this._getPositionAttribute(attributes);
168
- if (!positions) {
169
- throw new Error('positions');
170
- }
171
- var vertexCount = positions.length / 3;
172
- for (var _attributeName2 in attributes) {
173
- var attribute = attributes[_attributeName2];
174
- _attributeName2 = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[_attributeName2] || _attributeName2;
175
- var uniqueId = this._addAttributeToMesh(dracoPointCloud, _attributeName2, attribute, vertexCount);
176
- if (uniqueId !== -1) {
177
- this._addAttributeMetadata(dracoPointCloud, uniqueId, _objectSpread({
178
- name: _attributeName2
179
- }, optionalMetadata[_attributeName2] || {}));
180
- }
181
- }
182
- } catch (error) {
183
- this.destroyEncodedObject(dracoPointCloud);
184
- throw error;
185
- }
186
- return dracoPointCloud;
187
- }
188
- }, {
189
- key: "_addAttributeToMesh",
190
- value: function _addAttributeToMesh(mesh, attributeName, attribute, vertexCount) {
191
- if (!ArrayBuffer.isView(attribute)) {
192
- return -1;
193
- }
194
- var type = this._getDracoAttributeType(attributeName);
195
- var size = attribute.length / vertexCount;
196
- if (type === 'indices') {
197
- var numFaces = attribute.length / 3;
198
- this.log("Adding attribute ".concat(attributeName, ", size ").concat(numFaces));
199
- this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);
200
- return -1;
201
- }
202
- this.log("Adding attribute ".concat(attributeName, ", size ").concat(size));
203
- var builder = this.dracoMeshBuilder;
204
- var buffer = attribute.buffer;
205
- switch (attribute.constructor) {
206
- case Int8Array:
207
- return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));
208
- case Int16Array:
209
- return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));
210
- case Int32Array:
211
- return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));
212
- case Uint8Array:
213
- case Uint8ClampedArray:
214
- return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));
215
- case Uint16Array:
216
- return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));
217
- case Uint32Array:
218
- return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));
219
- case Float32Array:
220
- default:
221
- return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));
222
- }
223
- }
224
- }, {
225
- key: "_getDracoAttributeType",
226
- value: function _getDracoAttributeType(attributeName) {
227
- switch (attributeName.toLowerCase()) {
228
- case 'indices':
229
- return 'indices';
230
- case 'position':
231
- case 'positions':
232
- case 'vertices':
233
- return this.draco.POSITION;
234
- case 'normal':
235
- case 'normals':
236
- return this.draco.NORMAL;
237
- case 'color':
238
- case 'colors':
239
- return this.draco.COLOR;
240
- case 'texcoord':
241
- case 'texcoords':
242
- return this.draco.TEX_COORD;
243
- default:
244
- return this.draco.GENERIC;
245
- }
246
- }
247
- }, {
248
- key: "_getPositionAttribute",
249
- value: function _getPositionAttribute(attributes) {
250
- for (var _attributeName3 in attributes) {
251
- var attribute = attributes[_attributeName3];
252
- var dracoType = this._getDracoAttributeType(_attributeName3);
253
- if (dracoType === this.draco.POSITION) {
254
- return attribute;
255
- }
256
- }
257
- return null;
258
- }
259
- }, {
260
- key: "_addGeometryMetadata",
261
- value: function _addGeometryMetadata(dracoGeometry, metadata) {
262
- var dracoMetadata = new this.draco.Metadata();
263
- this._populateDracoMetadata(dracoMetadata, metadata);
264
- this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);
265
- }
266
- }, {
267
- key: "_addAttributeMetadata",
268
- value: function _addAttributeMetadata(dracoGeometry, uniqueAttributeId, metadata) {
269
- var dracoAttributeMetadata = new this.draco.Metadata();
270
- this._populateDracoMetadata(dracoAttributeMetadata, metadata);
271
- this.dracoMeshBuilder.SetMetadataForAttribute(dracoGeometry, uniqueAttributeId, dracoAttributeMetadata);
272
- }
273
- }, {
274
- key: "_populateDracoMetadata",
275
- value: function _populateDracoMetadata(dracoMetadata, metadata) {
276
- var _iterator = _createForOfIteratorHelper(getEntries(metadata)),
277
- _step;
278
- try {
279
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
280
- var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
281
- _key = _step$value[0],
282
- value = _step$value[1];
283
- switch ((0, _typeof2.default)(value)) {
284
- case 'number':
285
- if (Math.trunc(value) === value) {
286
- this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, _key, value);
287
- } else {
288
- this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, _key, value);
289
- }
290
- break;
291
- case 'object':
292
- if (value instanceof Int32Array) {
293
- this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, _key, value, value.length);
294
- }
295
- break;
296
- case 'string':
297
- default:
298
- this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, _key, value);
299
- }
300
- }
301
- } catch (err) {
302
- _iterator.e(err);
303
- } finally {
304
- _iterator.f();
305
- }
306
- }
307
- }]);
308
- return DracoBuilder;
309
- }();
310
- exports.default = DracoBuilder;
311
- function dracoInt8ArrayToArrayBuffer(dracoData) {
312
- var byteLength = dracoData.size();
313
- var outputBuffer = new ArrayBuffer(byteLength);
314
- var outputData = new Int8Array(outputBuffer);
315
- for (var i = 0; i < byteLength; ++i) {
316
- outputData[i] = dracoData.GetValue(i);
317
- }
318
- return outputBuffer;
319
- }
320
- function getEntries(container) {
321
- var hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');
322
- return hasEntriesFunc ? container.entries() : Object.entries(container);
323
- }
324
- //# sourceMappingURL=draco-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"draco-builder.js","names":["GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","noop","DracoBuilder","draco","_classCallCheck2","default","_defineProperty2","dracoEncoder","Encoder","dracoMeshBuilder","MeshBuilder","dracoMetadataBuilder","MetadataBuilder","_createClass2","key","value","destroy","destroyEncodedObject","object","encodeSync","mesh","options","arguments","length","undefined","log","_setOptions","pointcloud","_encodePointCloud","_encodeMesh","_getAttributesFromMesh","attributes","_objectSpread","indices","dracoPointCloud","PointCloud","metadata","_addGeometryMetadata","_createDracoPointCloud","dracoData","DracoInt8Array","encodedLen","EncodePointCloudToDracoBuffer","Error","concat","num_points","num_attributes","dracoInt8ArrayToArrayBuffer","dracoMesh","Mesh","_createDracoMesh","EncodeMeshToDracoBuffer","_this$dracoEncoder","SetSpeedOptions","apply","_toConsumableArray2","speed","dracoMethod","method","SetEncodingMethod","attribute","quantization","bits","dracoPosition","SetAttributeQuantization","optionalMetadata","attributesMetadata","positions","_getPositionAttribute","vertexCount","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","_iterator","_createForOfIteratorHelper","getEntries","_step","s","n","done","_step$value","_slicedToArray2","_typeof2","Math","trunc","AddIntEntry","AddDoubleEntry","AddIntEntryArray","AddStringEntry","err","e","f","exports","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":"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"}
@@ -1,190 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.DRACO_EXTERNAL_LIBRARY_URLS = exports.DRACO_EXTERNAL_LIBRARIES = void 0;
8
- exports.loadDracoDecoderModule = loadDracoDecoderModule;
9
- exports.loadDracoEncoderModule = loadDracoEncoderModule;
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _workerUtils = require("@loaders.gl/worker-utils");
15
- var _DRACO_EXTERNAL_LIBRA;
16
- 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; }
17
- 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; }
18
- var DRACO_DECODER_VERSION = '1.5.6';
19
- var DRACO_ENCODER_VERSION = '1.4.1';
20
- var STATIC_DECODER_URL = "https://www.gstatic.com/draco/versioned/decoders/".concat(DRACO_DECODER_VERSION);
21
- var DRACO_EXTERNAL_LIBRARIES = {
22
- DECODER: 'draco_wasm_wrapper.js',
23
- DECODER_WASM: 'draco_decoder.wasm',
24
- FALLBACK_DECODER: 'draco_decoder.js',
25
- ENCODER: 'draco_encoder.js'
26
- };
27
- exports.DRACO_EXTERNAL_LIBRARIES = DRACO_EXTERNAL_LIBRARIES;
28
- var DRACO_EXTERNAL_LIBRARY_URLS = (_DRACO_EXTERNAL_LIBRA = {}, (0, _defineProperty2.default)(_DRACO_EXTERNAL_LIBRA, DRACO_EXTERNAL_LIBRARIES.DECODER, "".concat(STATIC_DECODER_URL, "/").concat(DRACO_EXTERNAL_LIBRARIES.DECODER)), (0, _defineProperty2.default)(_DRACO_EXTERNAL_LIBRA, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM, "".concat(STATIC_DECODER_URL, "/").concat(DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)), (0, _defineProperty2.default)(_DRACO_EXTERNAL_LIBRA, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER, "".concat(STATIC_DECODER_URL, "/").concat(DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER)), (0, _defineProperty2.default)(_DRACO_EXTERNAL_LIBRA, DRACO_EXTERNAL_LIBRARIES.ENCODER, "https://raw.githubusercontent.com/google/draco/".concat(DRACO_ENCODER_VERSION, "/javascript/").concat(DRACO_EXTERNAL_LIBRARIES.ENCODER)), _DRACO_EXTERNAL_LIBRA);
29
- exports.DRACO_EXTERNAL_LIBRARY_URLS = DRACO_EXTERNAL_LIBRARY_URLS;
30
- var loadDecoderPromise;
31
- var loadEncoderPromise;
32
- function loadDracoDecoderModule(_x) {
33
- return _loadDracoDecoderModule.apply(this, arguments);
34
- }
35
- function _loadDracoDecoderModule() {
36
- _loadDracoDecoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
37
- var modules;
38
- return _regenerator.default.wrap(function _callee$(_context) {
39
- while (1) switch (_context.prev = _context.next) {
40
- case 0:
41
- modules = options.modules || {};
42
- if (modules.draco3d) {
43
- loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(function (draco) {
44
- return {
45
- draco: draco
46
- };
47
- });
48
- } else {
49
- loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
50
- }
51
- _context.next = 4;
52
- return loadDecoderPromise;
53
- case 4:
54
- return _context.abrupt("return", _context.sent);
55
- case 5:
56
- case "end":
57
- return _context.stop();
58
- }
59
- }, _callee);
60
- }));
61
- return _loadDracoDecoderModule.apply(this, arguments);
62
- }
63
- function loadDracoEncoderModule(_x2) {
64
- return _loadDracoEncoderModule.apply(this, arguments);
65
- }
66
- function _loadDracoEncoderModule() {
67
- _loadDracoEncoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
68
- var modules;
69
- return _regenerator.default.wrap(function _callee2$(_context2) {
70
- while (1) switch (_context2.prev = _context2.next) {
71
- case 0:
72
- modules = options.modules || {};
73
- if (modules.draco3d) {
74
- loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(function (draco) {
75
- return {
76
- draco: draco
77
- };
78
- });
79
- } else {
80
- loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
81
- }
82
- _context2.next = 4;
83
- return loadEncoderPromise;
84
- case 4:
85
- return _context2.abrupt("return", _context2.sent);
86
- case 5:
87
- case "end":
88
- return _context2.stop();
89
- }
90
- }, _callee2);
91
- }));
92
- return _loadDracoEncoderModule.apply(this, arguments);
93
- }
94
- function loadDracoDecoder(_x3) {
95
- return _loadDracoDecoder.apply(this, arguments);
96
- }
97
- function _loadDracoDecoder() {
98
- _loadDracoDecoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(options) {
99
- var DracoDecoderModule, wasmBinary, _yield$Promise$all, _yield$Promise$all2;
100
- return _regenerator.default.wrap(function _callee3$(_context3) {
101
- while (1) switch (_context3.prev = _context3.next) {
102
- case 0:
103
- _context3.t0 = options.draco && options.draco.decoderType;
104
- _context3.next = _context3.t0 === 'js' ? 3 : _context3.t0 === 'wasm' ? 7 : 7;
105
- break;
106
- case 3:
107
- _context3.next = 5;
108
- return (0, _workerUtils.loadLibrary)(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
109
- case 5:
110
- DracoDecoderModule = _context3.sent;
111
- return _context3.abrupt("break", 21);
112
- case 7:
113
- _context3.t1 = Promise;
114
- _context3.next = 10;
115
- return (0, _workerUtils.loadLibrary)(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER);
116
- case 10:
117
- _context3.t2 = _context3.sent;
118
- _context3.next = 13;
119
- return (0, _workerUtils.loadLibrary)(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM);
120
- case 13:
121
- _context3.t3 = _context3.sent;
122
- _context3.t4 = [_context3.t2, _context3.t3];
123
- _context3.next = 17;
124
- return _context3.t1.all.call(_context3.t1, _context3.t4);
125
- case 17:
126
- _yield$Promise$all = _context3.sent;
127
- _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
128
- DracoDecoderModule = _yield$Promise$all2[0];
129
- wasmBinary = _yield$Promise$all2[1];
130
- case 21:
131
- DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
132
- _context3.next = 24;
133
- return initializeDracoDecoder(DracoDecoderModule, wasmBinary);
134
- case 24:
135
- return _context3.abrupt("return", _context3.sent);
136
- case 25:
137
- case "end":
138
- return _context3.stop();
139
- }
140
- }, _callee3);
141
- }));
142
- return _loadDracoDecoder.apply(this, arguments);
143
- }
144
- function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
145
- var options = {};
146
- if (wasmBinary) {
147
- options.wasmBinary = wasmBinary;
148
- }
149
- return new Promise(function (resolve) {
150
- DracoDecoderModule(_objectSpread(_objectSpread({}, options), {}, {
151
- onModuleLoaded: function onModuleLoaded(draco) {
152
- return resolve({
153
- draco: draco
154
- });
155
- }
156
- }));
157
- });
158
- }
159
- function loadDracoEncoder(_x4) {
160
- return _loadDracoEncoder.apply(this, arguments);
161
- }
162
- function _loadDracoEncoder() {
163
- _loadDracoEncoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(options) {
164
- var DracoEncoderModule;
165
- return _regenerator.default.wrap(function _callee4$(_context4) {
166
- while (1) switch (_context4.prev = _context4.next) {
167
- case 0:
168
- _context4.next = 2;
169
- return (0, _workerUtils.loadLibrary)(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.ENCODER);
170
- case 2:
171
- DracoEncoderModule = _context4.sent;
172
- DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
173
- return _context4.abrupt("return", new Promise(function (resolve) {
174
- DracoEncoderModule({
175
- onModuleLoaded: function onModuleLoaded(draco) {
176
- return resolve({
177
- draco: draco
178
- });
179
- }
180
- });
181
- }));
182
- case 5:
183
- case "end":
184
- return _context4.stop();
185
- }
186
- }, _callee4);
187
- }));
188
- return _loadDracoEncoder.apply(this, arguments);
189
- }
190
- //# sourceMappingURL=draco-module-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"draco-module-loader.js","names":["_workerUtils","require","_DRACO_EXTERNAL_LIBRA","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DRACO_DECODER_VERSION","DRACO_ENCODER_VERSION","STATIC_DECODER_URL","concat","DRACO_EXTERNAL_LIBRARIES","DECODER","DECODER_WASM","FALLBACK_DECODER","ENCODER","exports","DRACO_EXTERNAL_LIBRARY_URLS","loadDecoderPromise","loadEncoderPromise","loadDracoDecoderModule","_x","_loadDracoDecoderModule","_asyncToGenerator2","_regenerator","mark","_callee","options","modules","wrap","_callee$","_context","prev","next","draco3d","createDecoderModule","then","draco","loadDracoDecoder","abrupt","sent","stop","loadDracoEncoderModule","_x2","_loadDracoEncoderModule","_callee2","_callee2$","_context2","createEncoderModule","loadDracoEncoder","_x3","_loadDracoDecoder","_callee3","DracoDecoderModule","wasmBinary","_yield$Promise$all","_yield$Promise$all2","_callee3$","_context3","t0","decoderType","loadLibrary","t1","Promise","t2","t3","t4","all","call","_slicedToArray2","globalThis","initializeDracoDecoder","resolve","onModuleLoaded","_x4","_loadDracoEncoder","_callee4","DracoEncoderModule","_callee4$","_context4"],"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.6';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nexport const DRACO_EXTERNAL_LIBRARIES = {\n /** The primary Draco3D encoder, javascript wrapper part */\n DECODER: 'draco_wasm_wrapper.js',\n /** The primary draco decoder, compiled web assembly part */\n DECODER_WASM: 'draco_decoder.wasm',\n /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */\n FALLBACK_DECODER: 'draco_decoder.js',\n /** Draco encoder */\n ENCODER: 'draco_encoder.js'\n};\n\nexport const DRACO_EXTERNAL_LIBRARY_URLS = {\n [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,\n [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`\n};\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(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER\n );\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER\n ),\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER_WASM\n )\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(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.ENCODER\n );\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n"],"mappings":"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"}