redhotmagma-visualization 1.28.5 → 1.29.2

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 (88) hide show
  1. package/AlignTargetProvider.js +129 -0
  2. package/CommonUtils/Deferred.js +135 -0
  3. package/CommonUtils/Observable.js +126 -0
  4. package/CommonUtils/PropertyObserver.js +61 -0
  5. package/CommonUtils/SyncCurrentFunction.js +59 -0
  6. package/CommonUtils/SyncObservableEvent.js +19 -0
  7. package/CommonUtils/pointerEvent.js +415 -0
  8. package/Constants.js +23 -0
  9. package/DevApp.js +1049 -0
  10. package/ExposedModules.js +26 -0
  11. package/FallbackVisualization.js +26 -0
  12. package/PrintingEffects/ColorEmbossingEffect.js +58 -0
  13. package/PrintingEffects/DomingEffect.js +150 -0
  14. package/PrintingEffects/EmbossingEffect.js +65 -0
  15. package/PrintingEffects/EmbroideryEffect.js +541 -0
  16. package/PrintingEffects/EngravingEffect.js +65 -0
  17. package/PrintingEffects/PrintingEffects.js +117 -0
  18. package/PrintingEffects/PrintingEffectsUtils.js +53 -0
  19. package/PrintingEffects/resources/embroidery_multiply.jpg +0 -0
  20. package/PrintingEffects/resources/embroidery_screen.jpg +0 -0
  21. package/README.md +11 -4
  22. package/React/ReactBase.js +111 -0
  23. package/Three/Controls/OrbitControls.js +745 -0
  24. package/Three/Exporters/glTFExporter.js +48 -0
  25. package/Three/Loaders/ColladaLoader.js +2916 -0
  26. package/Three/Loaders/MTLLoader.js +449 -0
  27. package/Three/Loaders/OBJLoader.js +548 -0
  28. package/Three/Three2D.js +1790 -0
  29. package/Three/Three2DLayers.js +504 -0
  30. package/Three/Three3D.js +1412 -0
  31. package/Three/Three3DScene.js +1432 -0
  32. package/Three/ThreeBase.js +724 -0
  33. package/Utils/DesignArea/getDesignAreaCanvasSize.js +32 -0
  34. package/Utils/TextureBuilder/createTextureBuilder.js +334 -0
  35. package/Utils/TextureBuilder/textureBuilderFunctions.js +87 -0
  36. package/Utils/alignToElement.js +58 -0
  37. package/Utils/createAlphaMapFromAlphaChannel.js +50 -0
  38. package/Utils/createCache.js +46 -0
  39. package/Utils/createCanvas.js +29 -0
  40. package/Utils/createImageRepository.js +124 -0
  41. package/Utils/disposeMaterial.js +41 -0
  42. package/Utils/getImageSize.js +15 -0
  43. package/Utils/imagePreloader.js +76 -0
  44. package/Utils/initTextureCanvas.js +49 -0
  45. package/Utils/isMobileDevice.js +19 -0
  46. package/Utils/optimizeTextureImage.js +73 -0
  47. package/Utils/rememberCameraViewOffset.js +21 -0
  48. package/Utils/removeObject.js +22 -0
  49. package/Utils/restrictCameraMovement.js +45 -0
  50. package/Utils/setOrthographicCameraSize.js +16 -0
  51. package/Utils/updateFitSizeToElement.js +39 -0
  52. package/VisualizationContainer.js +279 -0
  53. package/VisualizationInterface.js +298 -0
  54. package/VisualizationProvider.js +38 -0
  55. package/__mocks__/exportedSample.svg +45 -0
  56. package/index.js +16 -0
  57. package/package.json +10 -70
  58. package/scripts/cpPublic.js +9 -12
  59. package/scripts/cpPublicLocal.js +30 -0
  60. package/src/CommonUtils/Observable.js +1 -0
  61. package/src/CommonUtils/pointerEvent.js +2 -1
  62. package/src/DevApp.js +2 -1
  63. package/src/FallbackVisualization.js +1 -5
  64. package/src/PrintingEffects/DomingEffect.js +1 -0
  65. package/src/PrintingEffects/EmbroideryEffect.js +3 -2
  66. package/src/React/ReactBase.js +1 -1
  67. package/src/Three/Controls/OrbitControls.js +2 -0
  68. package/src/Three/Loaders/ColladaLoader.js +111 -294
  69. package/src/Three/Loaders/MTLLoader.js +2 -0
  70. package/src/Three/Loaders/OBJLoader.js +2 -0
  71. package/src/Three/Three2D.js +18 -11
  72. package/src/Three/Three3D.js +9 -1
  73. package/src/Three/ThreeBase.js +14 -2
  74. package/src/Utils/DesignArea/getDesignAreaCanvasSize.js +1 -0
  75. package/src/Utils/TextureBuilder/createTextureBuilder.js +2 -0
  76. package/src/Utils/imagePreloader.js +1 -0
  77. package/src/Utils/initTextureCanvas.js +3 -0
  78. package/src/Utils/isMobileDevice.js +2 -0
  79. package/src/Utils/optimizeTextureImage.js +1 -0
  80. package/src/VisualizationContainer.js +3 -1
  81. package/src/VisualizationInterface.js +10 -1
  82. package/visualizationAdapterCreator.js +76 -0
  83. package/babel.config.js +0 -41
  84. package/scripts/cpPath.js +0 -151
  85. package/scripts/moveLibToPackageRoot.js +0 -44
  86. package/scripts/utils/fileSystem.js +0 -69
  87. package/scripts/utils/process.js +0 -19
  88. package/tsconfig.json +0 -22
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var THREE_imp = _interopRequireWildcard(require("three"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ /* eslint-disable */
17
+ // original source: three/examples/js/loaders/MTLLoader
18
+ var THREE = THREE_imp; // important: update file from here if needed
19
+
20
+ /**
21
+ * Loads a Wavefront .mtl file specifying materials
22
+ *
23
+ * @author angelxuanchang
24
+ */
25
+
26
+ THREE.MTLLoader = function (manager) {
27
+ THREE.Loader.call(this, manager);
28
+ };
29
+
30
+ THREE.MTLLoader.prototype = {
31
+ constructor: THREE.MTLLoader,
32
+ crossOrigin: "anonymous",
33
+
34
+ /**
35
+ * Loads and parses a MTL asset from a URL.
36
+ *
37
+ * @param {String} url - URL to the MTL file.
38
+ * @param {Function} [onLoad] - Callback invoked with the loaded object.
39
+ * @param {Function} [onProgress] - Callback for download progress.
40
+ * @param {Function} [onError] - Callback for download errors.
41
+ *
42
+ * @see setPath setResourcePath
43
+ *
44
+ * @note In order for relative texture references to resolve correctly
45
+ * you must call setResourcePath() explicitly prior to load.
46
+ */
47
+ load: function load(url, onLoad, onProgress, onError) {
48
+ var scope = this;
49
+ var path = this.path === undefined ? THREE.LoaderUtils.extractUrlBase(url) : this.path;
50
+ var loader = new THREE.FileLoader(this.manager);
51
+ loader.setPath(this.path);
52
+ loader.load(url, function (text) {
53
+ onLoad(scope.parse(text, path));
54
+ }, onProgress, onError);
55
+ },
56
+
57
+ /**
58
+ * Set base path for resolving references.
59
+ * If set this path will be prepended to each loaded and found reference.
60
+ *
61
+ * @see setResourcePath
62
+ * @param {String} path
63
+ * @return {THREE.MTLLoader}
64
+ *
65
+ * @example
66
+ * mtlLoader.setPath( 'assets/obj/' );
67
+ * mtlLoader.load( 'my.mtl', ... );
68
+ */
69
+ setPath: function setPath(path) {
70
+ this.path = path;
71
+ return this;
72
+ },
73
+
74
+ /**
75
+ * Set base path for additional resources like textures.
76
+ *
77
+ * @see setPath
78
+ * @param {String} path
79
+ * @return {THREE.MTLLoader}
80
+ *
81
+ * @example
82
+ * mtlLoader.setPath( 'assets/obj/' );
83
+ * mtlLoader.setResourcePath( 'assets/textures/' );
84
+ * mtlLoader.load( 'my.mtl', ... );
85
+ */
86
+ setResourcePath: function setResourcePath(path) {
87
+ this.resourcePath = path;
88
+ return this;
89
+ },
90
+ setTexturePath: function setTexturePath(path) {
91
+ console.warn("THREE.MTLLoader: .setTexturePath() has been renamed to .setResourcePath().");
92
+ return this.setResourcePath(path);
93
+ },
94
+ setCrossOrigin: function setCrossOrigin(value) {
95
+ this.crossOrigin = value;
96
+ return this;
97
+ },
98
+ setMaterialOptions: function setMaterialOptions(value) {
99
+ this.materialOptions = value;
100
+ return this;
101
+ },
102
+
103
+ /**
104
+ * Parses a MTL file.
105
+ *
106
+ * @param {String} text - Content of MTL file
107
+ * @return {THREE.MTLLoader.MaterialCreator}
108
+ *
109
+ * @see setPath setResourcePath
110
+ *
111
+ * @note In order for relative texture references to resolve correctly
112
+ * you must call setResourcePath() explicitly prior to parse.
113
+ */
114
+ parse: function parse(text, path) {
115
+ var lines = text.split("\n");
116
+ var info = {};
117
+ var delimiter_pattern = /\s+/;
118
+ var materialsInfo = {};
119
+
120
+ for (var i = 0; i < lines.length; i++) {
121
+ var line = lines[i];
122
+ line = line.trim();
123
+
124
+ if (line.length === 0 || line.charAt(0) === "#") {
125
+ // Blank line or comment ignore
126
+ continue;
127
+ }
128
+
129
+ var pos = line.indexOf(" ");
130
+ var key = pos >= 0 ? line.substring(0, pos) : line;
131
+ key = key.toLowerCase();
132
+ var value = pos >= 0 ? line.substring(pos + 1) : "";
133
+ value = value.trim();
134
+
135
+ if (key === "newmtl") {
136
+ // New material
137
+ info = {
138
+ name: value
139
+ };
140
+ materialsInfo[value] = info;
141
+ } else {
142
+ if (key === "ka" || key === "kd" || key === "ks" || key === "ke") {
143
+ var ss = value.split(delimiter_pattern, 3);
144
+ info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];
145
+ } else {
146
+ info[key] = value;
147
+ }
148
+ }
149
+ }
150
+
151
+ var materialCreator = new THREE.MTLLoader.MaterialCreator(this.resourcePath || path, this.materialOptions);
152
+ materialCreator.setCrossOrigin(this.crossOrigin);
153
+ materialCreator.setManager(this.manager);
154
+ materialCreator.setMaterials(materialsInfo);
155
+ return materialCreator;
156
+ }
157
+ };
158
+ /**
159
+ * Create a new THREE-MTLLoader.MaterialCreator
160
+ * @param baseUrl - Url relative to which textures are loaded
161
+ * @param options - Set of options on how to construct the materials
162
+ * side: Which side to apply the material
163
+ * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
164
+ * wrap: What type of wrapping to apply for textures
165
+ * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
166
+ * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
167
+ * Default: false, assumed to be already normalized
168
+ * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
169
+ * Default: false
170
+ * @constructor
171
+ */
172
+
173
+ THREE.MTLLoader.MaterialCreator = function (baseUrl, options) {
174
+ this.baseUrl = baseUrl || "";
175
+ this.options = options;
176
+ this.materialsInfo = {};
177
+ this.materials = {};
178
+ this.materialsArray = [];
179
+ this.nameLookup = {};
180
+ this.side = this.options && this.options.side ? this.options.side : THREE.FrontSide;
181
+ this.wrap = this.options && this.options.wrap ? this.options.wrap : THREE.RepeatWrapping;
182
+ };
183
+
184
+ THREE.MTLLoader.MaterialCreator.prototype = {
185
+ constructor: THREE.MTLLoader.MaterialCreator,
186
+ crossOrigin: "anonymous",
187
+ setCrossOrigin: function setCrossOrigin(value) {
188
+ this.crossOrigin = value;
189
+ return this;
190
+ },
191
+ setManager: function setManager(value) {
192
+ this.manager = value;
193
+ },
194
+ setMaterials: function setMaterials(materialsInfo) {
195
+ this.materialsInfo = this.convert(materialsInfo);
196
+ this.materials = {};
197
+ this.materialsArray = [];
198
+ this.nameLookup = {};
199
+ },
200
+ convert: function convert(materialsInfo) {
201
+ if (!this.options) return materialsInfo;
202
+ var converted = {};
203
+
204
+ for (var mn in materialsInfo) {
205
+ // Convert materials info into normalized form based on options
206
+ var mat = materialsInfo[mn];
207
+ var covmat = {};
208
+ converted[mn] = covmat;
209
+
210
+ for (var prop in mat) {
211
+ var save = true;
212
+ var value = mat[prop];
213
+ var lprop = prop.toLowerCase();
214
+
215
+ switch (lprop) {
216
+ case "kd":
217
+ case "ka":
218
+ case "ks":
219
+ // Diffuse color (color under white light) using RGB values
220
+ if (this.options && this.options.normalizeRGB) {
221
+ value = [value[0] / 255, value[1] / 255, value[2] / 255];
222
+ }
223
+
224
+ if (this.options && this.options.ignoreZeroRGBs) {
225
+ if (value[0] === 0 && value[1] === 0 && value[2] === 0) {
226
+ // ignore
227
+ save = false;
228
+ }
229
+ }
230
+
231
+ break;
232
+
233
+ default:
234
+ break;
235
+ }
236
+
237
+ if (save) {
238
+ covmat[lprop] = value;
239
+ }
240
+ }
241
+ }
242
+
243
+ return converted;
244
+ },
245
+ preload: function preload() {
246
+ for (var mn in this.materialsInfo) {
247
+ this.create(mn);
248
+ }
249
+ },
250
+ getIndex: function getIndex(materialName) {
251
+ return this.nameLookup[materialName];
252
+ },
253
+ getAsArray: function getAsArray() {
254
+ var index = 0;
255
+
256
+ for (var mn in this.materialsInfo) {
257
+ this.materialsArray[index] = this.create(mn);
258
+ this.nameLookup[mn] = index;
259
+ index++;
260
+ }
261
+
262
+ return this.materialsArray;
263
+ },
264
+ create: function create(materialName) {
265
+ if (this.materials[materialName] === undefined) {
266
+ this.createMaterial_(materialName);
267
+ }
268
+
269
+ return this.materials[materialName];
270
+ },
271
+ createMaterial_: function createMaterial_(materialName) {
272
+ // Create material
273
+ var scope = this;
274
+ var mat = this.materialsInfo[materialName];
275
+ var params = {
276
+ name: materialName,
277
+ side: this.side
278
+ };
279
+
280
+ function resolveURL(baseUrl, url) {
281
+ if (typeof url !== "string" || url === "") return ""; // Absolute URL
282
+
283
+ if (/^https?:\/\//i.test(url)) return url;
284
+ return baseUrl + url;
285
+ }
286
+
287
+ function setMapForType(mapType, value) {
288
+ if (params[mapType]) return; // Keep the first encountered texture
289
+
290
+ var texParams = scope.getTextureParams(value, params);
291
+ var map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url));
292
+ map.repeat.copy(texParams.scale);
293
+ map.offset.copy(texParams.offset);
294
+ map.wrapS = scope.wrap;
295
+ map.wrapT = scope.wrap;
296
+ params[mapType] = map;
297
+ }
298
+
299
+ for (var prop in mat) {
300
+ var value = mat[prop];
301
+ var n;
302
+ if (value === "") continue;
303
+
304
+ switch (prop.toLowerCase()) {
305
+ // Ns is material specular exponent
306
+ case "kd":
307
+ // Diffuse color (color under white light) using RGB values
308
+ params.color = new THREE.Color().fromArray(value);
309
+ break;
310
+
311
+ case "ks":
312
+ // Specular color (color when light is reflected from shiny surface) using RGB values
313
+ params.specular = new THREE.Color().fromArray(value);
314
+ break;
315
+
316
+ case "ke":
317
+ // Emissive using RGB values
318
+ params.emissive = new THREE.Color().fromArray(value);
319
+ break;
320
+
321
+ case "map_kd":
322
+ // Diffuse texture map
323
+ setMapForType("map", value);
324
+ break;
325
+
326
+ case "map_ks":
327
+ // Specular map
328
+ setMapForType("specularMap", value);
329
+ break;
330
+
331
+ case "map_ke":
332
+ // Emissive map
333
+ setMapForType("emissiveMap", value);
334
+ break;
335
+
336
+ case "norm":
337
+ setMapForType("normalMap", value);
338
+ break;
339
+
340
+ case "map_bump":
341
+ case "bump":
342
+ // Bump texture map
343
+ setMapForType("bumpMap", value);
344
+ break;
345
+
346
+ case "map_d":
347
+ // Alpha map
348
+ setMapForType("alphaMap", value);
349
+ params.transparent = true;
350
+ break;
351
+
352
+ case "map_pm":
353
+ // Metalness map
354
+ setMapForType("metalnessMap", value); // fine-tune the metalness value if needed
355
+ //params.metalness = 0.2;
356
+
357
+ break;
358
+
359
+ case "map_pr":
360
+ // Roughness map
361
+ setMapForType("roughnessMap", value); // fine-tune the roughness value if needed
362
+ //params.roughness = 0.1;
363
+
364
+ break;
365
+
366
+ case "ns":
367
+ // The specular exponent (defines the focus of the specular highlight)
368
+ // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
369
+ params.shininess = parseFloat(value);
370
+ break;
371
+
372
+ case "d":
373
+ n = parseFloat(value);
374
+
375
+ if (n < 1) {
376
+ params.opacity = n;
377
+ params.transparent = true;
378
+ }
379
+
380
+ break;
381
+
382
+ case "tr":
383
+ n = parseFloat(value);
384
+ if (this.options && this.options.invertTrProperty) n = 1 - n;
385
+
386
+ if (n > 0) {
387
+ params.opacity = 1 - n;
388
+ params.transparent = true;
389
+ }
390
+
391
+ break;
392
+
393
+ default:
394
+ break;
395
+ }
396
+ }
397
+
398
+ this.materials[materialName] = new THREE.MeshStandardMaterial(params);
399
+ return this.materials[materialName];
400
+ },
401
+ getTextureParams: function getTextureParams(value, matParams) {
402
+ var texParams = {
403
+ scale: new THREE.Vector2(1, 1),
404
+ offset: new THREE.Vector2(0, 0)
405
+ };
406
+ var items = value.split(/\s+/);
407
+ var pos;
408
+ pos = items.indexOf("-bm");
409
+
410
+ if (pos >= 0) {
411
+ matParams.bumpScale = parseFloat(items[pos + 1]);
412
+ items.splice(pos, 2);
413
+ }
414
+
415
+ pos = items.indexOf("-s");
416
+
417
+ if (pos >= 0) {
418
+ texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
419
+ items.splice(pos, 4); // we expect 3 parameters here!
420
+ }
421
+
422
+ pos = items.indexOf("-o");
423
+
424
+ if (pos >= 0) {
425
+ texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
426
+ items.splice(pos, 4); // we expect 3 parameters here!
427
+ }
428
+
429
+ texParams.url = items.join(" ").trim();
430
+ return texParams;
431
+ },
432
+ loadTexture: function loadTexture(url, mapping, onLoad, onProgress, onError) {
433
+ var texture;
434
+ var manager = this.manager !== undefined ? this.manager : THREE.DefaultLoadingManager;
435
+ var loader = manager.getHandler(url);
436
+
437
+ if (loader === null) {
438
+ loader = new THREE.TextureLoader(manager);
439
+ }
440
+
441
+ if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin);
442
+ texture = loader.load(url, onLoad, onProgress, onError);
443
+ if (mapping !== undefined) texture.mapping = mapping;
444
+ return texture;
445
+ }
446
+ }; // important: don't forget to export it
447
+
448
+ var _default = THREE.MTLLoader;
449
+ exports["default"] = _default;