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

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 (127) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +3 -3
  3. package/dist/dist.min.js.map +3 -3
  4. package/dist/draco-loader.d.ts +4 -14
  5. package/dist/draco-loader.d.ts.map +1 -1
  6. package/dist/draco-loader.js +26 -21
  7. package/dist/draco-worker-node.js +190 -0
  8. package/dist/draco-worker-node.js.map +7 -0
  9. package/dist/draco-worker.js +1 -1
  10. package/dist/draco-worker.js.map +3 -3
  11. package/dist/draco-writer-worker-node.js +192 -0
  12. package/dist/draco-writer-worker-node.js.map +7 -0
  13. package/dist/draco-writer-worker.js +4 -0
  14. package/dist/draco-writer-worker.js.map +7 -0
  15. package/dist/draco-writer.d.ts +12 -3
  16. package/dist/draco-writer.d.ts.map +1 -1
  17. package/dist/draco-writer.js +40 -28
  18. package/dist/draco3d/draco3d-types.d.ts +1 -1
  19. package/dist/draco3d/draco3d-types.d.ts.map +1 -1
  20. package/dist/draco3d/draco3d-types.js +47 -44
  21. package/dist/es5/bundle.js +6 -0
  22. package/dist/es5/bundle.js.map +1 -0
  23. package/dist/es5/draco-loader.js +33 -0
  24. package/dist/es5/draco-loader.js.map +1 -0
  25. package/dist/es5/draco-writer.js +63 -0
  26. package/dist/es5/draco-writer.js.map +1 -0
  27. package/dist/es5/draco3d/draco3d-types.js +51 -0
  28. package/dist/es5/draco3d/draco3d-types.js.map +1 -0
  29. package/dist/es5/index.js +78 -0
  30. package/dist/es5/index.js.map +1 -0
  31. package/dist/es5/lib/draco-builder.js +324 -0
  32. package/dist/es5/lib/draco-builder.js.map +1 -0
  33. package/dist/es5/lib/draco-module-loader.js +183 -0
  34. package/dist/es5/lib/draco-module-loader.js.map +1 -0
  35. package/dist/es5/lib/draco-parser.js +435 -0
  36. package/dist/es5/lib/draco-parser.js.map +1 -0
  37. package/dist/es5/lib/draco-types.js +2 -0
  38. package/dist/es5/lib/draco-types.js.map +1 -0
  39. package/dist/es5/lib/utils/get-draco-schema.js +47 -0
  40. package/dist/es5/lib/utils/get-draco-schema.js.map +1 -0
  41. package/dist/es5/lib/utils/version.js +9 -0
  42. package/dist/es5/lib/utils/version.js.map +1 -0
  43. package/dist/es5/workers/draco-worker-node.js +7 -0
  44. package/dist/es5/workers/draco-worker-node.js.map +1 -0
  45. package/dist/es5/workers/draco-worker.js +6 -0
  46. package/dist/es5/workers/draco-worker.js.map +1 -0
  47. package/dist/es5/workers/draco-writer-worker-node.js +54 -0
  48. package/dist/es5/workers/draco-writer-worker-node.js.map +1 -0
  49. package/dist/es5/workers/draco-writer-worker.js +53 -0
  50. package/dist/es5/workers/draco-writer-worker.js.map +1 -0
  51. package/dist/esm/bundle.js +4 -0
  52. package/dist/esm/bundle.js.map +1 -0
  53. package/dist/esm/draco-loader.js +23 -0
  54. package/dist/esm/draco-loader.js.map +1 -0
  55. package/dist/esm/draco-writer.js +31 -0
  56. package/dist/esm/draco-writer.js.map +1 -0
  57. package/dist/esm/draco3d/draco3d-types.js +41 -0
  58. package/dist/esm/draco3d/draco3d-types.js.map +1 -0
  59. package/dist/esm/index.js +34 -0
  60. package/dist/esm/index.js.map +1 -0
  61. package/dist/esm/lib/draco-builder.js +268 -0
  62. package/dist/esm/lib/draco-builder.js.map +1 -0
  63. package/dist/esm/lib/draco-module-loader.js +76 -0
  64. package/dist/esm/lib/draco-module-loader.js.map +1 -0
  65. package/dist/esm/lib/draco-parser.js +363 -0
  66. package/dist/esm/lib/draco-parser.js.map +1 -0
  67. package/dist/esm/lib/draco-types.js +2 -0
  68. package/dist/esm/lib/draco-types.js.map +1 -0
  69. package/dist/esm/lib/utils/get-draco-schema.js +41 -0
  70. package/dist/esm/lib/utils/get-draco-schema.js.map +1 -0
  71. package/dist/esm/lib/utils/version.js +2 -0
  72. package/dist/esm/lib/utils/version.js.map +1 -0
  73. package/dist/esm/workers/draco-worker-node.js +5 -0
  74. package/dist/esm/workers/draco-worker-node.js.map +1 -0
  75. package/dist/esm/workers/draco-worker.js +4 -0
  76. package/dist/esm/workers/draco-worker.js.map +1 -0
  77. package/dist/esm/workers/draco-writer-worker-node.js +31 -0
  78. package/dist/esm/workers/draco-writer-worker-node.js.map +1 -0
  79. package/dist/esm/workers/draco-writer-worker.js +30 -0
  80. package/dist/esm/workers/draco-writer-worker.js.map +1 -0
  81. package/dist/index.d.ts +14 -13
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +44 -21
  84. package/dist/lib/draco-builder.d.ts +1 -1
  85. package/dist/lib/draco-builder.d.ts.map +1 -1
  86. package/dist/lib/draco-builder.js +313 -329
  87. package/dist/lib/draco-module-loader.d.ts.map +1 -1
  88. package/dist/lib/draco-module-loader.js +81 -73
  89. package/dist/lib/draco-parser.d.ts +1 -1
  90. package/dist/lib/draco-parser.d.ts.map +1 -1
  91. package/dist/lib/draco-parser.js +440 -416
  92. package/dist/lib/draco-types.d.ts +6 -6
  93. package/dist/lib/draco-types.d.ts.map +1 -1
  94. package/dist/lib/draco-types.js +3 -2
  95. package/dist/lib/utils/get-draco-schema.js +35 -41
  96. package/dist/lib/utils/version.js +7 -2
  97. package/dist/workers/draco-worker-node.d.ts +2 -0
  98. package/dist/workers/draco-worker-node.d.ts.map +1 -0
  99. package/dist/workers/draco-worker-node.js +7 -0
  100. package/dist/workers/draco-worker.js +5 -4
  101. package/dist/workers/draco-writer-worker-node.d.ts +2 -0
  102. package/dist/workers/draco-writer-worker-node.d.ts.map +1 -0
  103. package/dist/workers/draco-writer-worker-node.js +28 -0
  104. package/dist/workers/draco-writer-worker.d.ts +2 -0
  105. package/dist/workers/draco-writer-worker.d.ts.map +1 -0
  106. package/dist/workers/draco-writer-worker.js +26 -0
  107. package/package.json +17 -10
  108. package/src/draco-loader.ts +5 -3
  109. package/src/draco-writer.ts +17 -12
  110. package/src/index.ts +19 -1
  111. package/src/lib/draco-module-loader.ts +9 -5
  112. package/src/lib/utils/get-draco-schema.ts +7 -6
  113. package/src/workers/draco-worker-node.ts +6 -0
  114. package/src/workers/draco-writer-worker-node.ts +27 -0
  115. package/src/workers/draco-writer-worker.ts +25 -0
  116. package/dist/bundle.js.map +0 -1
  117. package/dist/draco-loader.js.map +0 -1
  118. package/dist/draco-writer.js.map +0 -1
  119. package/dist/draco3d/draco3d-types.js.map +0 -1
  120. package/dist/index.js.map +0 -1
  121. package/dist/lib/draco-builder.js.map +0 -1
  122. package/dist/lib/draco-module-loader.js.map +0 -1
  123. package/dist/lib/draco-parser.js.map +0 -1
  124. package/dist/lib/draco-types.js.map +0 -1
  125. package/dist/lib/utils/get-draco-schema.js.map +0 -1
  126. package/dist/lib/utils/version.js.map +0 -1
  127. package/dist/workers/draco-worker.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.loadDracoDecoderModule = loadDracoDecoderModule;
8
+ exports.loadDracoEncoderModule = loadDracoEncoderModule;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+ var _workerUtils = require("@loaders.gl/worker-utils");
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");
23
+ var loadDecoderPromise;
24
+ var loadEncoderPromise;
25
+ function loadDracoDecoderModule(_x) {
26
+ return _loadDracoDecoderModule.apply(this, arguments);
27
+ }
28
+ function _loadDracoDecoderModule() {
29
+ _loadDracoDecoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
30
+ var modules;
31
+ return _regenerator.default.wrap(function _callee$(_context) {
32
+ while (1) switch (_context.prev = _context.next) {
33
+ case 0:
34
+ modules = options.modules || {};
35
+ if (modules.draco3d) {
36
+ loadDecoderPromise = loadDecoderPromise || modules.draco3d.createDecoderModule({}).then(function (draco) {
37
+ return {
38
+ draco: draco
39
+ };
40
+ });
41
+ } else {
42
+ loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
43
+ }
44
+ _context.next = 4;
45
+ return loadDecoderPromise;
46
+ case 4:
47
+ return _context.abrupt("return", _context.sent);
48
+ case 5:
49
+ case "end":
50
+ return _context.stop();
51
+ }
52
+ }, _callee);
53
+ }));
54
+ return _loadDracoDecoderModule.apply(this, arguments);
55
+ }
56
+ function loadDracoEncoderModule(_x2) {
57
+ return _loadDracoEncoderModule.apply(this, arguments);
58
+ }
59
+ function _loadDracoEncoderModule() {
60
+ _loadDracoEncoderModule = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
61
+ var modules;
62
+ return _regenerator.default.wrap(function _callee2$(_context2) {
63
+ while (1) switch (_context2.prev = _context2.next) {
64
+ case 0:
65
+ modules = options.modules || {};
66
+ if (modules.draco3d) {
67
+ loadEncoderPromise = loadEncoderPromise || modules.draco3d.createEncoderModule({}).then(function (draco) {
68
+ return {
69
+ draco: draco
70
+ };
71
+ });
72
+ } else {
73
+ loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
74
+ }
75
+ _context2.next = 4;
76
+ return loadEncoderPromise;
77
+ case 4:
78
+ return _context2.abrupt("return", _context2.sent);
79
+ case 5:
80
+ case "end":
81
+ return _context2.stop();
82
+ }
83
+ }, _callee2);
84
+ }));
85
+ return _loadDracoEncoderModule.apply(this, arguments);
86
+ }
87
+ function loadDracoDecoder(_x3) {
88
+ return _loadDracoDecoder.apply(this, arguments);
89
+ }
90
+ function _loadDracoDecoder() {
91
+ _loadDracoDecoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(options) {
92
+ var DracoDecoderModule, wasmBinary, _yield$Promise$all, _yield$Promise$all2;
93
+ return _regenerator.default.wrap(function _callee3$(_context3) {
94
+ while (1) switch (_context3.prev = _context3.next) {
95
+ case 0:
96
+ _context3.t0 = options.draco && options.draco.decoderType;
97
+ _context3.next = _context3.t0 === 'js' ? 3 : _context3.t0 === 'wasm' ? 7 : 7;
98
+ break;
99
+ case 3:
100
+ _context3.next = 5;
101
+ return (0, _workerUtils.loadLibrary)(DRACO_JS_DECODER_URL, 'draco', options);
102
+ case 5:
103
+ DracoDecoderModule = _context3.sent;
104
+ return _context3.abrupt("break", 21);
105
+ case 7:
106
+ _context3.t1 = Promise;
107
+ _context3.next = 10;
108
+ return (0, _workerUtils.loadLibrary)(DRACO_WASM_WRAPPER_URL, 'draco', options);
109
+ case 10:
110
+ _context3.t2 = _context3.sent;
111
+ _context3.next = 13;
112
+ return (0, _workerUtils.loadLibrary)(DRACO_WASM_DECODER_URL, 'draco', options);
113
+ case 13:
114
+ _context3.t3 = _context3.sent;
115
+ _context3.t4 = [_context3.t2, _context3.t3];
116
+ _context3.next = 17;
117
+ return _context3.t1.all.call(_context3.t1, _context3.t4);
118
+ case 17:
119
+ _yield$Promise$all = _context3.sent;
120
+ _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
121
+ DracoDecoderModule = _yield$Promise$all2[0];
122
+ wasmBinary = _yield$Promise$all2[1];
123
+ case 21:
124
+ DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
125
+ _context3.next = 24;
126
+ return initializeDracoDecoder(DracoDecoderModule, wasmBinary);
127
+ case 24:
128
+ return _context3.abrupt("return", _context3.sent);
129
+ case 25:
130
+ case "end":
131
+ return _context3.stop();
132
+ }
133
+ }, _callee3);
134
+ }));
135
+ return _loadDracoDecoder.apply(this, arguments);
136
+ }
137
+ function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
138
+ var options = {};
139
+ if (wasmBinary) {
140
+ options.wasmBinary = wasmBinary;
141
+ }
142
+ return new Promise(function (resolve) {
143
+ DracoDecoderModule(_objectSpread(_objectSpread({}, options), {}, {
144
+ onModuleLoaded: function onModuleLoaded(draco) {
145
+ return resolve({
146
+ draco: draco
147
+ });
148
+ }
149
+ }));
150
+ });
151
+ }
152
+ function loadDracoEncoder(_x4) {
153
+ return _loadDracoEncoder.apply(this, arguments);
154
+ }
155
+ function _loadDracoEncoder() {
156
+ _loadDracoEncoder = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(options) {
157
+ var DracoEncoderModule;
158
+ return _regenerator.default.wrap(function _callee4$(_context4) {
159
+ while (1) switch (_context4.prev = _context4.next) {
160
+ case 0:
161
+ _context4.next = 2;
162
+ return (0, _workerUtils.loadLibrary)(DRACO_ENCODER_URL, 'draco', options);
163
+ case 2:
164
+ DracoEncoderModule = _context4.sent;
165
+ DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
166
+ return _context4.abrupt("return", new Promise(function (resolve) {
167
+ DracoEncoderModule({
168
+ onModuleLoaded: function onModuleLoaded(draco) {
169
+ return resolve({
170
+ draco: draco
171
+ });
172
+ }
173
+ });
174
+ }));
175
+ case 5:
176
+ case "end":
177
+ return _context4.stop();
178
+ }
179
+ }, _callee4);
180
+ }));
181
+ return _loadDracoEncoder.apply(this, arguments);
182
+ }
183
+ //# sourceMappingURL=draco-module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draco-module-loader.js","names":["_workerUtils","require","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_JS_DECODER_URL","DRACO_WASM_WRAPPER_URL","DRACO_WASM_DECODER_URL","DRACO_ENCODER_URL","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.5';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nconst DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;\nconst DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;\nconst DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;\n\nconst DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise =\n loadDecoderPromise ||\n modules.draco3d.createDecoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise =\n loadEncoderPromise ||\n modules.draco3d.createEncoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary(DRACO_JS_DECODER_URL, 'draco', options);\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(DRACO_WASM_WRAPPER_URL, 'draco', options),\n await loadLibrary(DRACO_WASM_DECODER_URL, 'draco', options)\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options: {wasmBinary?: any} = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary(DRACO_ENCODER_URL, 'draco', options);\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,435 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _schema = require("@loaders.gl/schema");
14
+ var _getDracoSchema = require("./utils/get-draco-schema");
15
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
16
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
+ 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; }
19
+ 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; }
20
+ var GEOMETRY_TYPE = {
21
+ TRIANGULAR_MESH: 0,
22
+ POINT_CLOUD: 1
23
+ };
24
+ var DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {
25
+ POSITION: 'POSITION',
26
+ NORMAL: 'NORMAL',
27
+ COLOR: 'COLOR_0',
28
+ TEX_COORD: 'TEXCOORD_0'
29
+ };
30
+ var DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {
31
+ 1: Int8Array,
32
+ 2: Uint8Array,
33
+ 3: Int16Array,
34
+ 4: Uint16Array,
35
+ 5: Int32Array,
36
+ 6: Uint32Array,
37
+ 9: Float32Array
38
+ };
39
+ var INDEX_ITEM_SIZE = 4;
40
+ var DracoParser = function () {
41
+ function DracoParser(draco) {
42
+ (0, _classCallCheck2.default)(this, DracoParser);
43
+ (0, _defineProperty2.default)(this, "draco", void 0);
44
+ (0, _defineProperty2.default)(this, "decoder", void 0);
45
+ (0, _defineProperty2.default)(this, "metadataQuerier", void 0);
46
+ this.draco = draco;
47
+ this.decoder = new this.draco.Decoder();
48
+ this.metadataQuerier = new this.draco.MetadataQuerier();
49
+ }
50
+ (0, _createClass2.default)(DracoParser, [{
51
+ key: "destroy",
52
+ value: function destroy() {
53
+ this.draco.destroy(this.decoder);
54
+ this.draco.destroy(this.metadataQuerier);
55
+ }
56
+ }, {
57
+ key: "parseSync",
58
+ value: function parseSync(arrayBuffer) {
59
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
60
+ var buffer = new this.draco.DecoderBuffer();
61
+ buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);
62
+ this._disableAttributeTransforms(options);
63
+ var geometry_type = this.decoder.GetEncodedGeometryType(buffer);
64
+ var dracoGeometry = geometry_type === this.draco.TRIANGULAR_MESH ? new this.draco.Mesh() : new this.draco.PointCloud();
65
+ try {
66
+ var dracoStatus;
67
+ switch (geometry_type) {
68
+ case this.draco.TRIANGULAR_MESH:
69
+ dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry);
70
+ break;
71
+ case this.draco.POINT_CLOUD:
72
+ dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);
73
+ break;
74
+ default:
75
+ throw new Error('DRACO: Unknown geometry type.');
76
+ }
77
+ if (!dracoStatus.ok() || !dracoGeometry.ptr) {
78
+ var message = "DRACO decompression failed: ".concat(dracoStatus.error_msg());
79
+ throw new Error(message);
80
+ }
81
+ var loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);
82
+ var geometry = this._getMeshData(dracoGeometry, loaderData, options);
83
+ var boundingBox = (0, _schema.getMeshBoundingBox)(geometry.attributes);
84
+ var schema = (0, _getDracoSchema.getDracoSchema)(geometry.attributes, loaderData, geometry.indices);
85
+ var data = _objectSpread(_objectSpread({
86
+ loader: 'draco',
87
+ loaderData: loaderData,
88
+ header: {
89
+ vertexCount: dracoGeometry.num_points(),
90
+ boundingBox: boundingBox
91
+ }
92
+ }, geometry), {}, {
93
+ schema: schema
94
+ });
95
+ return data;
96
+ } finally {
97
+ this.draco.destroy(buffer);
98
+ if (dracoGeometry) {
99
+ this.draco.destroy(dracoGeometry);
100
+ }
101
+ }
102
+ }
103
+ }, {
104
+ key: "_getDracoLoaderData",
105
+ value: function _getDracoLoaderData(dracoGeometry, geometry_type, options) {
106
+ var metadata = this._getTopLevelMetadata(dracoGeometry);
107
+ var attributes = this._getDracoAttributes(dracoGeometry, options);
108
+ return {
109
+ geometry_type: geometry_type,
110
+ num_attributes: dracoGeometry.num_attributes(),
111
+ num_points: dracoGeometry.num_points(),
112
+ num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,
113
+ metadata: metadata,
114
+ attributes: attributes
115
+ };
116
+ }
117
+ }, {
118
+ key: "_getDracoAttributes",
119
+ value: function _getDracoAttributes(dracoGeometry, options) {
120
+ var dracoAttributes = {};
121
+ for (var attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {
122
+ var dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);
123
+ var metadata = this._getAttributeMetadata(dracoGeometry, attributeId);
124
+ dracoAttributes[dracoAttribute.unique_id()] = {
125
+ unique_id: dracoAttribute.unique_id(),
126
+ attribute_type: dracoAttribute.attribute_type(),
127
+ data_type: dracoAttribute.data_type(),
128
+ num_components: dracoAttribute.num_components(),
129
+ byte_offset: dracoAttribute.byte_offset(),
130
+ byte_stride: dracoAttribute.byte_stride(),
131
+ normalized: dracoAttribute.normalized(),
132
+ attribute_index: attributeId,
133
+ metadata: metadata
134
+ };
135
+ var quantization = this._getQuantizationTransform(dracoAttribute, options);
136
+ if (quantization) {
137
+ dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;
138
+ }
139
+ var octahedron = this._getOctahedronTransform(dracoAttribute, options);
140
+ if (octahedron) {
141
+ dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;
142
+ }
143
+ }
144
+ return dracoAttributes;
145
+ }
146
+ }, {
147
+ key: "_getMeshData",
148
+ value: function _getMeshData(dracoGeometry, loaderData, options) {
149
+ var attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);
150
+ var positionAttribute = attributes.POSITION;
151
+ if (!positionAttribute) {
152
+ throw new Error('DRACO: No position attribute found.');
153
+ }
154
+ if (dracoGeometry instanceof this.draco.Mesh) {
155
+ switch (options.topology) {
156
+ case 'triangle-strip':
157
+ return {
158
+ topology: 'triangle-strip',
159
+ mode: 4,
160
+ attributes: attributes,
161
+ indices: {
162
+ value: this._getTriangleStripIndices(dracoGeometry),
163
+ size: 1
164
+ }
165
+ };
166
+ case 'triangle-list':
167
+ default:
168
+ return {
169
+ topology: 'triangle-list',
170
+ mode: 5,
171
+ attributes: attributes,
172
+ indices: {
173
+ value: this._getTriangleListIndices(dracoGeometry),
174
+ size: 1
175
+ }
176
+ };
177
+ }
178
+ }
179
+ return {
180
+ topology: 'point-list',
181
+ mode: 0,
182
+ attributes: attributes
183
+ };
184
+ }
185
+ }, {
186
+ key: "_getMeshAttributes",
187
+ value: function _getMeshAttributes(loaderData, dracoGeometry, options) {
188
+ var attributes = {};
189
+ for (var _i = 0, _Object$values = Object.values(loaderData.attributes); _i < _Object$values.length; _i++) {
190
+ var loaderAttribute = _Object$values[_i];
191
+ var _attributeName = this._deduceAttributeName(loaderAttribute, options);
192
+ loaderAttribute.name = _attributeName;
193
+ var _this$_getAttributeVa = this._getAttributeValues(dracoGeometry, loaderAttribute),
194
+ value = _this$_getAttributeVa.value,
195
+ size = _this$_getAttributeVa.size;
196
+ attributes[_attributeName] = {
197
+ value: value,
198
+ size: size,
199
+ byteOffset: loaderAttribute.byte_offset,
200
+ byteStride: loaderAttribute.byte_stride,
201
+ normalized: loaderAttribute.normalized
202
+ };
203
+ }
204
+ return attributes;
205
+ }
206
+ }, {
207
+ key: "_getTriangleListIndices",
208
+ value: function _getTriangleListIndices(dracoGeometry) {
209
+ var numFaces = dracoGeometry.num_faces();
210
+ var numIndices = numFaces * 3;
211
+ var byteLength = numIndices * INDEX_ITEM_SIZE;
212
+ var ptr = this.draco._malloc(byteLength);
213
+ try {
214
+ this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);
215
+ return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();
216
+ } finally {
217
+ this.draco._free(ptr);
218
+ }
219
+ }
220
+ }, {
221
+ key: "_getTriangleStripIndices",
222
+ value: function _getTriangleStripIndices(dracoGeometry) {
223
+ var dracoArray = new this.draco.DracoInt32Array();
224
+ try {
225
+ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);
226
+ return getUint32Array(dracoArray);
227
+ } finally {
228
+ this.draco.destroy(dracoArray);
229
+ }
230
+ }
231
+ }, {
232
+ key: "_getAttributeValues",
233
+ value: function _getAttributeValues(dracoGeometry, attribute) {
234
+ var TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];
235
+ var numComponents = attribute.num_components;
236
+ var numPoints = dracoGeometry.num_points();
237
+ var numValues = numPoints * numComponents;
238
+ var byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;
239
+ var dataType = getDracoDataType(this.draco, TypedArrayCtor);
240
+ var value;
241
+ var ptr = this.draco._malloc(byteLength);
242
+ try {
243
+ var dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);
244
+ this.decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, dracoAttribute, dataType, byteLength, ptr);
245
+ value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();
246
+ } finally {
247
+ this.draco._free(ptr);
248
+ }
249
+ return {
250
+ value: value,
251
+ size: numComponents
252
+ };
253
+ }
254
+ }, {
255
+ key: "_deduceAttributeName",
256
+ value: function _deduceAttributeName(attribute, options) {
257
+ var uniqueId = attribute.unique_id;
258
+ for (var _i2 = 0, _Object$entries = Object.entries(options.extraAttributes || {}); _i2 < _Object$entries.length; _i2++) {
259
+ var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i2], 2),
260
+ _attributeName2 = _Object$entries$_i[0],
261
+ attributeUniqueId = _Object$entries$_i[1];
262
+ if (attributeUniqueId === uniqueId) {
263
+ return _attributeName2;
264
+ }
265
+ }
266
+ var thisAttributeType = attribute.attribute_type;
267
+ for (var dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {
268
+ var attributeType = this.draco[dracoAttributeConstant];
269
+ if (attributeType === thisAttributeType) {
270
+ return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];
271
+ }
272
+ }
273
+ var entryName = options.attributeNameEntry || 'name';
274
+ if (attribute.metadata[entryName]) {
275
+ return attribute.metadata[entryName].string;
276
+ }
277
+ return "CUSTOM_ATTRIBUTE_".concat(uniqueId);
278
+ }
279
+ }, {
280
+ key: "_getTopLevelMetadata",
281
+ value: function _getTopLevelMetadata(dracoGeometry) {
282
+ var dracoMetadata = this.decoder.GetMetadata(dracoGeometry);
283
+ return this._getDracoMetadata(dracoMetadata);
284
+ }
285
+ }, {
286
+ key: "_getAttributeMetadata",
287
+ value: function _getAttributeMetadata(dracoGeometry, attributeId) {
288
+ var dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);
289
+ return this._getDracoMetadata(dracoMetadata);
290
+ }
291
+ }, {
292
+ key: "_getDracoMetadata",
293
+ value: function _getDracoMetadata(dracoMetadata) {
294
+ if (!dracoMetadata || !dracoMetadata.ptr) {
295
+ return {};
296
+ }
297
+ var result = {};
298
+ var numEntries = this.metadataQuerier.NumEntries(dracoMetadata);
299
+ for (var entryIndex = 0; entryIndex < numEntries; entryIndex++) {
300
+ var entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);
301
+ result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);
302
+ }
303
+ return result;
304
+ }
305
+ }, {
306
+ key: "_getDracoMetadataField",
307
+ value: function _getDracoMetadataField(dracoMetadata, entryName) {
308
+ var dracoArray = new this.draco.DracoInt32Array();
309
+ try {
310
+ this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);
311
+ var intArray = getInt32Array(dracoArray);
312
+ return {
313
+ int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),
314
+ string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),
315
+ double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),
316
+ intArray: intArray
317
+ };
318
+ } finally {
319
+ this.draco.destroy(dracoArray);
320
+ }
321
+ }
322
+ }, {
323
+ key: "_disableAttributeTransforms",
324
+ value: function _disableAttributeTransforms(options) {
325
+ var _options$quantizedAtt = options.quantizedAttributes,
326
+ quantizedAttributes = _options$quantizedAtt === void 0 ? [] : _options$quantizedAtt,
327
+ _options$octahedronAt = options.octahedronAttributes,
328
+ octahedronAttributes = _options$octahedronAt === void 0 ? [] : _options$octahedronAt;
329
+ var skipAttributes = [].concat((0, _toConsumableArray2.default)(quantizedAttributes), (0, _toConsumableArray2.default)(octahedronAttributes));
330
+ var _iterator = _createForOfIteratorHelper(skipAttributes),
331
+ _step;
332
+ try {
333
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
334
+ var dracoAttributeName = _step.value;
335
+ this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);
336
+ }
337
+ } catch (err) {
338
+ _iterator.e(err);
339
+ } finally {
340
+ _iterator.f();
341
+ }
342
+ }
343
+ }, {
344
+ key: "_getQuantizationTransform",
345
+ value: function _getQuantizationTransform(dracoAttribute, options) {
346
+ var _this = this;
347
+ var _options$quantizedAtt2 = options.quantizedAttributes,
348
+ quantizedAttributes = _options$quantizedAtt2 === void 0 ? [] : _options$quantizedAtt2;
349
+ var attribute_type = dracoAttribute.attribute_type();
350
+ var skip = quantizedAttributes.map(function (type) {
351
+ return _this.decoder[type];
352
+ }).includes(attribute_type);
353
+ if (skip) {
354
+ var transform = new this.draco.AttributeQuantizationTransform();
355
+ try {
356
+ if (transform.InitFromAttribute(dracoAttribute)) {
357
+ return {
358
+ quantization_bits: transform.quantization_bits(),
359
+ range: transform.range(),
360
+ min_values: new Float32Array([1, 2, 3]).map(function (i) {
361
+ return transform.min_value(i);
362
+ })
363
+ };
364
+ }
365
+ } finally {
366
+ this.draco.destroy(transform);
367
+ }
368
+ }
369
+ return null;
370
+ }
371
+ }, {
372
+ key: "_getOctahedronTransform",
373
+ value: function _getOctahedronTransform(dracoAttribute, options) {
374
+ var _this2 = this;
375
+ var _options$octahedronAt2 = options.octahedronAttributes,
376
+ octahedronAttributes = _options$octahedronAt2 === void 0 ? [] : _options$octahedronAt2;
377
+ var attribute_type = dracoAttribute.attribute_type();
378
+ var octahedron = octahedronAttributes.map(function (type) {
379
+ return _this2.decoder[type];
380
+ }).includes(attribute_type);
381
+ if (octahedron) {
382
+ var transform = new this.draco.AttributeQuantizationTransform();
383
+ try {
384
+ if (transform.InitFromAttribute(dracoAttribute)) {
385
+ return {
386
+ quantization_bits: transform.quantization_bits()
387
+ };
388
+ }
389
+ } finally {
390
+ this.draco.destroy(transform);
391
+ }
392
+ }
393
+ return null;
394
+ }
395
+ }]);
396
+ return DracoParser;
397
+ }();
398
+ exports.default = DracoParser;
399
+ function getDracoDataType(draco, attributeType) {
400
+ switch (attributeType) {
401
+ case Float32Array:
402
+ return draco.DT_FLOAT32;
403
+ case Int8Array:
404
+ return draco.DT_INT8;
405
+ case Int16Array:
406
+ return draco.DT_INT16;
407
+ case Int32Array:
408
+ return draco.DT_INT32;
409
+ case Uint8Array:
410
+ return draco.DT_UINT8;
411
+ case Uint16Array:
412
+ return draco.DT_UINT16;
413
+ case Uint32Array:
414
+ return draco.DT_UINT32;
415
+ default:
416
+ return draco.DT_INVALID;
417
+ }
418
+ }
419
+ function getInt32Array(dracoArray) {
420
+ var numValues = dracoArray.size();
421
+ var intArray = new Int32Array(numValues);
422
+ for (var i = 0; i < numValues; i++) {
423
+ intArray[i] = dracoArray.GetValue(i);
424
+ }
425
+ return intArray;
426
+ }
427
+ function getUint32Array(dracoArray) {
428
+ var numValues = dracoArray.size();
429
+ var intArray = new Int32Array(numValues);
430
+ for (var i = 0; i < numValues; i++) {
431
+ intArray[i] = dracoArray.GetValue(i);
432
+ }
433
+ return intArray;
434
+ }
435
+ //# sourceMappingURL=draco-parser.js.map