@colijnit/configurator 1.0.21 → 1.0.22

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 (158) hide show
  1. package/app/builder.d.ts +53 -0
  2. package/app/components/answers/answer/answer.component.d.ts +11 -0
  3. package/app/components/answers/answers.component.d.ts +8 -0
  4. package/app/components/answers/answers.module.d.ts +2 -0
  5. package/app/components/selections/selections.component.d.ts +22 -0
  6. package/app/components/selections/selections.module.d.ts +2 -0
  7. package/app/components/shared/loader/loader.component.d.ts +2 -0
  8. package/app/components/shared/shared.module.d.ts +2 -0
  9. package/app/directives/visibility-observer-master.directive.d.ts +9 -0
  10. package/app/directives/visibility-observer.directive.d.ts +13 -0
  11. package/app/services/configurator.service.d.ts +22 -0
  12. package/app/services/image-cache.service.d.ts +10 -0
  13. package/app/services/locator.service.d.ts +4 -0
  14. package/bundles/colijnit-configurator.umd.js +2745 -0
  15. package/bundles/colijnit-configurator.umd.js.map +1 -0
  16. package/bundles/colijnit-configurator.umd.min.js +17 -0
  17. package/bundles/colijnit-configurator.umd.min.js.map +1 -0
  18. package/colijnit-configurator.d.ts +10 -0
  19. package/colijnit-configurator.metadata.json +1 -0
  20. package/esm2015/app/builder.js +477 -0
  21. package/esm2015/app/components/answers/answer/answer.component.js +69 -0
  22. package/esm2015/app/components/answers/answers.component.js +43 -0
  23. package/esm2015/app/components/answers/answers.module.js +29 -0
  24. package/esm2015/app/components/selections/selections.component.js +134 -0
  25. package/esm2015/app/components/selections/selections.module.js +23 -0
  26. package/esm2015/app/components/shared/loader/loader.component.js +24 -0
  27. package/esm2015/app/components/shared/shared.module.js +21 -0
  28. package/esm2015/app/directives/visibility-observer-master.directive.js +51 -0
  29. package/esm2015/app/directives/visibility-observer.directive.js +57 -0
  30. package/esm2015/app/services/configurator.service.js +94 -0
  31. package/esm2015/app/services/image-cache.service.js +66 -0
  32. package/esm2015/app/services/locator.service.js +10 -0
  33. package/esm2015/colijnit-configurator.js +11 -0
  34. package/esm2015/helper/variation-helper.js +216 -0
  35. package/esm2015/model/material.js +11 -0
  36. package/esm2015/model/variation-settings.js +6 -0
  37. package/esm2015/model/variation.js +3 -0
  38. package/esm2015/public_api.js +7 -0
  39. package/esm2015/utils/asset.utils.js +74 -0
  40. package/esm2015/utils/file.utils.js +139 -0
  41. package/esm2015/utils/image.utils.js +52 -0
  42. package/esm2015/utils/object.utils.js +49 -0
  43. package/esm2015/utils/scene-utils.js +94 -0
  44. package/esm2015/utils/threed.utils.js +222 -0
  45. package/esm2015/utils/variation-utils.js +224 -0
  46. package/esm5/app/builder.js +591 -0
  47. package/esm5/app/components/answers/answer/answer.component.js +64 -0
  48. package/esm5/app/components/answers/answers.component.js +27 -0
  49. package/esm5/app/components/answers/answers.module.js +32 -0
  50. package/esm5/app/components/selections/selections.component.js +104 -0
  51. package/esm5/app/components/selections/selections.module.js +26 -0
  52. package/esm5/app/components/shared/loader/loader.component.js +16 -0
  53. package/esm5/app/components/shared/shared.module.js +24 -0
  54. package/esm5/app/directives/visibility-observer-master.directive.js +64 -0
  55. package/esm5/app/directives/visibility-observer.directive.js +59 -0
  56. package/esm5/app/services/configurator.service.js +160 -0
  57. package/esm5/app/services/image-cache.service.js +69 -0
  58. package/esm5/app/services/locator.service.js +13 -0
  59. package/esm5/colijnit-configurator.js +11 -0
  60. package/esm5/helper/variation-helper.js +268 -0
  61. package/esm5/model/material.js +13 -0
  62. package/esm5/model/variation-settings.js +8 -0
  63. package/esm5/model/variation.js +7 -0
  64. package/esm5/public_api.js +7 -0
  65. package/esm5/utils/asset.utils.js +106 -0
  66. package/esm5/utils/file.utils.js +151 -0
  67. package/esm5/utils/image.utils.js +56 -0
  68. package/esm5/utils/object.utils.js +56 -0
  69. package/esm5/utils/scene-utils.js +98 -0
  70. package/esm5/utils/threed.utils.js +279 -0
  71. package/esm5/utils/variation-utils.js +327 -0
  72. package/fesm2015/colijnit-configurator.js +2109 -0
  73. package/fesm2015/colijnit-configurator.js.map +1 -0
  74. package/fesm5/colijnit-configurator.js +2527 -0
  75. package/fesm5/colijnit-configurator.js.map +1 -0
  76. package/helper/variation-helper.d.ts +14 -0
  77. package/model/material.d.ts +17 -0
  78. package/model/variation-settings.d.ts +14 -0
  79. package/model/variation.d.ts +10 -0
  80. package/package.json +12 -45
  81. package/{src/public_api.ts → public_api.d.ts} +6 -6
  82. package/utils/asset.utils.d.ts +13 -0
  83. package/utils/file.utils.d.ts +27 -0
  84. package/utils/image.utils.d.ts +8 -0
  85. package/utils/object.utils.d.ts +7 -0
  86. package/utils/scene-utils.d.ts +7 -0
  87. package/utils/threed.utils.d.ts +16 -0
  88. package/utils/variation-utils.d.ts +12 -0
  89. package/.idea/Configurator.iml +0 -12
  90. package/.idea/codeStyles/Project.xml +0 -21
  91. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  92. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  93. package/.idea/misc.xml +0 -9
  94. package/.idea/modules.xml +0 -8
  95. package/.idea/vcs.xml +0 -6
  96. package/angular.json +0 -193
  97. package/configurator.iml +0 -11
  98. package/dist/configurator/index.html +0 -14
  99. package/dist/configurator/main-es2015.js +0 -3129
  100. package/dist/configurator/main-es2015.js.map +0 -1
  101. package/dist/configurator/main-es5.js +0 -5482
  102. package/dist/configurator/main-es5.js.map +0 -1
  103. package/dist/configurator/polyfills-es2015.js +0 -4520
  104. package/dist/configurator/polyfills-es2015.js.map +0 -1
  105. package/dist/configurator/polyfills-es5.js +0 -18375
  106. package/dist/configurator/polyfills-es5.js.map +0 -1
  107. package/dist/configurator/runtime-es2015.js +0 -155
  108. package/dist/configurator/runtime-es2015.js.map +0 -1
  109. package/dist/configurator/runtime-es5.js +0 -155
  110. package/dist/configurator/runtime-es5.js.map +0 -1
  111. package/dist/configurator/styles-es2015.js +0 -450
  112. package/dist/configurator/styles-es2015.js.map +0 -1
  113. package/dist/configurator/styles-es5.js +0 -432
  114. package/dist/configurator/styles-es5.js.map +0 -1
  115. package/dist/configurator/vendor-es2015.js +0 -155551
  116. package/dist/configurator/vendor-es2015.js.map +0 -1
  117. package/dist/configurator/vendor-es5.js +0 -183588
  118. package/dist/configurator/vendor-es5.js.map +0 -1
  119. package/ng-package.json +0 -9
  120. package/src/app/app.component.ts +0 -222
  121. package/src/app/app.module.ts +0 -34
  122. package/src/app/builder.ts +0 -480
  123. package/src/app/components/answers/answer/answer.component.ts +0 -61
  124. package/src/app/components/answers/answers.component.ts +0 -41
  125. package/src/app/components/answers/answers.module.ts +0 -26
  126. package/src/app/components/selections/selections.component.ts +0 -131
  127. package/src/app/components/selections/selections.module.ts +0 -20
  128. package/src/app/components/shared/loader/loader.component.scss +0 -33
  129. package/src/app/components/shared/loader/loader.component.ts +0 -20
  130. package/src/app/components/shared/shared.module.ts +0 -16
  131. package/src/app/directives/visibility-observer-master.directive.ts +0 -71
  132. package/src/app/directives/visibility-observer.directive.ts +0 -74
  133. package/src/app/services/configurator.service.ts +0 -86
  134. package/src/app/services/image-cache.service.ts +0 -56
  135. package/src/app/services/locator.service.ts +0 -6
  136. package/src/environments/environment.prod.ts +0 -3
  137. package/src/environments/environment.ts +0 -8
  138. package/src/helper/variation-helper.ts +0 -220
  139. package/src/index.html +0 -14
  140. package/src/main.ts +0 -11
  141. package/src/model/material.ts +0 -22
  142. package/src/model/variation-settings.ts +0 -14
  143. package/src/model/variation.ts +0 -11
  144. package/src/polyfills.ts +0 -73
  145. package/src/style/shared.scss +0 -173
  146. package/src/style/styles.scss +0 -45
  147. package/src/tsconfig.app.json +0 -16
  148. package/src/tsconfig.spec.json +0 -19
  149. package/src/utils/asset.utils.ts +0 -88
  150. package/src/utils/file.utils.ts +0 -156
  151. package/src/utils/file.utils.unit.test.ts +0 -8
  152. package/src/utils/image.utils.ts +0 -54
  153. package/src/utils/object.utils.ts +0 -52
  154. package/src/utils/scene-utils.ts +0 -119
  155. package/src/utils/threed.utils.ts +0 -219
  156. package/src/utils/variation-utils.ts +0 -216
  157. package/tsconfig.json +0 -23
  158. package/tslint.json +0 -132
@@ -0,0 +1,7 @@
1
+ var Variation = /** @class */ (function () {
2
+ function Variation() {
3
+ }
4
+ return Variation;
5
+ }());
6
+ export { Variation };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbIm1vZGVsL3ZhcmlhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtJQUFBO0lBUUEsQ0FBQztJQUFELGdCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hdGVyaWFsfSBmcm9tICcuL21hdGVyaWFsJztcblxuZXhwb3J0IGNsYXNzIFZhcmlhdGlvbiB7XG4gIHB1YmxpYyBkZWNvSWQ6IG51bWJlcjtcbiAgcHVibGljIGJyYW5kSWQ6IHN0cmluZztcbiAgcHVibGljIGdhbWVPYmplY3ROYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBub2RlOiBhbnk7XG4gIHB1YmxpYyBzdXBwbGllckFydGljbGVOcjogc3RyaW5nO1xuICBwdWJsaWMgbWF0ZXJpYWxJZDogc3RyaW5nO1xuICBwdWJsaWMgbWF0ZXJpYWw6IE1hdGVyaWFsO1xufVxuIl19
@@ -0,0 +1,7 @@
1
+ export * from './app/builder';
2
+ export * from './app/services/configurator.service';
3
+ export * from './app/components/answers/answers.module';
4
+ export * from './app/components/answers/answers.component';
5
+ export * from './app/components/selections/selections.module';
6
+ export * from './app/components/selections/selections.component';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwL2J1aWxkZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2FwcC9zZXJ2aWNlcy9jb25maWd1cmF0b3Iuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvYW5zd2Vycy9hbnN3ZXJzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvYW5zd2Vycy9hbnN3ZXJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvc2VsZWN0aW9ucy9zZWxlY3Rpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvc2VsZWN0aW9ucy9zZWxlY3Rpb25zLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,106 @@
1
+ import { __awaiter, __extends, __generator } from "tslib";
2
+ import { Material } from '../model/material';
3
+ import { ImageUtils } from './image.utils';
4
+ import * as THREE from 'three';
5
+ import { sRGBEncoding } from 'three';
6
+ var FurnitureMaterial = /** @class */ (function (_super) {
7
+ __extends(FurnitureMaterial, _super);
8
+ function FurnitureMaterial() {
9
+ return _super !== null && _super.apply(this, arguments) || this;
10
+ }
11
+ return FurnitureMaterial;
12
+ }(Material));
13
+ export { FurnitureMaterial };
14
+ var AssetUtils = /** @class */ (function () {
15
+ function AssetUtils() {
16
+ }
17
+ AssetUtils.CreateMaterialFromAsset = function (asset) {
18
+ return __awaiter(this, void 0, void 0, function () {
19
+ var material, _a, _b, _c, _d, _e;
20
+ return __generator(this, function (_f) {
21
+ switch (_f.label) {
22
+ case 0:
23
+ material = new Material();
24
+ if (!asset) {
25
+ return [2 /*return*/, material];
26
+ }
27
+ if (asset.settings) {
28
+ AssetUtils.setSettingsOfMaterial(material, asset.settings);
29
+ }
30
+ if (!asset.texture) return [3 /*break*/, 2];
31
+ _a = material;
32
+ return [4 /*yield*/, ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material)];
33
+ case 1:
34
+ _a.texture = _f.sent();
35
+ material.texture.encoding = sRGBEncoding;
36
+ material.textureFilename = asset.textureFilename;
37
+ _f.label = 2;
38
+ case 2:
39
+ if (!asset.normal) return [3 /*break*/, 4];
40
+ _b = material;
41
+ return [4 /*yield*/, ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material)];
42
+ case 3:
43
+ _b.normal = _f.sent();
44
+ material.normalFilename = asset.normalFilename;
45
+ _f.label = 4;
46
+ case 4:
47
+ if (!asset.ao) return [3 /*break*/, 6];
48
+ _c = material;
49
+ return [4 /*yield*/, ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material)];
50
+ case 5:
51
+ _c.ao = _f.sent();
52
+ material.aoFilename = asset.aoFilename;
53
+ _f.label = 6;
54
+ case 6:
55
+ if (!asset.metalness) return [3 /*break*/, 8];
56
+ _d = material;
57
+ return [4 /*yield*/, ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material)];
58
+ case 7:
59
+ _d.metalness = _f.sent();
60
+ material.metalnessFilename = asset.metalnessFilename;
61
+ _f.label = 8;
62
+ case 8:
63
+ if (!asset.roughness) return [3 /*break*/, 10];
64
+ _e = material;
65
+ return [4 /*yield*/, ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material)];
66
+ case 9:
67
+ _e.roughness = _f.sent();
68
+ material.roughnessFilename = asset.roughnessFilename;
69
+ _f.label = 10;
70
+ case 10: return [2 /*return*/, material];
71
+ }
72
+ });
73
+ });
74
+ };
75
+ AssetUtils.setSettingsOfMaterial = function (material, settings) {
76
+ var shininess = parseFloat(settings['power']);
77
+ if (!isNaN(shininess)) {
78
+ material.shininess = shininess;
79
+ // material.roughness = 1 - (shininess / 100);
80
+ }
81
+ var level = parseFloat(settings['level']);
82
+ if (!isNaN(level)) {
83
+ material.specular = new THREE.Color(level, level, level);
84
+ }
85
+ var repeatObjectUsed = settings.hasOwnProperty('repeat');
86
+ var repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);
87
+ if (!isNaN(repeatx)) {
88
+ material.repeatX = Math.max(1, repeatx);
89
+ }
90
+ var repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);
91
+ if (!isNaN(repeaty)) {
92
+ material.repeatY = Math.max(1, repeaty);
93
+ }
94
+ var metalness = parseFloat(settings['metalness']);
95
+ if (!isNaN(metalness)) {
96
+ material.metalnessValue = Math.min(1, metalness);
97
+ }
98
+ var roughness = parseFloat(settings['roughness']);
99
+ if (!isNaN(roughness)) {
100
+ material.roughnessValue = Math.min(1, roughness);
101
+ }
102
+ };
103
+ return AssetUtils;
104
+ }());
105
+ export { AssetUtils };
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvYXNzZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHbkM7SUFBdUMscUNBQVE7SUFBL0M7O0lBUUEsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FBQyxBQVJELENBQXVDLFFBQVEsR0FROUM7O0FBRUQ7SUFBQTtJQXVFQSxDQUFDO0lBckVxQixrQ0FBdUIsR0FBM0MsVUFBNEMsS0FBd0I7Ozs7Ozt3QkFDNUQsUUFBUSxHQUFzQixJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNuRCxJQUFJLENBQUMsS0FBSyxFQUFFOzRCQUNWLHNCQUFPLFFBQVEsRUFBQzt5QkFDakI7d0JBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFOzRCQUNsQixVQUFVLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzt5QkFDNUQ7NkJBQ0csS0FBSyxDQUFDLE9BQU8sRUFBYix3QkFBYTt3QkFDZixLQUFBLFFBQVEsQ0FBQTt3QkFBVyxxQkFBTSxVQUFVLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBQTs7d0JBQTNHLEdBQVMsT0FBTyxHQUFHLFNBQXdGLENBQUM7d0JBQzVHLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQzt3QkFFekMsUUFBUSxDQUFDLGVBQWUsR0FBRyxLQUFLLENB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBdkVELElBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuaW1wb3J0IHtJbWFnZVV0aWxzfSBmcm9tICcuL2ltYWdlLnV0aWxzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7c1JHQkVuY29kaW5nfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3MnO1xuXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWF0ZXJpYWwgZXh0ZW5kcyBNYXRlcmlhbCB7XG5cbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG5vcm1hbEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgYW9GaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzc0ZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0VXRpbHMge1xuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgQ3JlYXRlTWF0ZXJpYWxGcm9tQXNzZXQoYXNzZXQ6IFZhcmlhdGlvblNldHRpbmdzKTogUHJvbWlzZTxNYXRlcmlhbD4ge1xuICAgIGNvbnN0IG1hdGVyaWFsOiBGdXJuaXR1cmVNYXRlcmlhbCA9IG5ldyBNYXRlcmlhbCgpO1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybiBtYXRlcmlhbDtcbiAgICB9XG4gICAgaWYgKGFzc2V0LnNldHRpbmdzKSB7XG4gICAgICBBc3NldFV0aWxzLnNldFNldHRpbmdzT2ZNYXRlcmlhbChtYXRlcmlhbCwgYXNzZXQuc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAoYXNzZXQudGV4dHVyZSkge1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZSA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX3RleHR1cmUnLCBhc3NldC50ZXh0dXJlLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC50ZXh0dXJlLmVuY29kaW5nID0gc1JHQkVuY29kaW5nO1xuXG4gICAgICBtYXRlcmlhbC50ZXh0dXJlRmlsZW5hbWUgPSBhc3NldC50ZXh0dXJlRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5ub3JtYWwpIHtcbiAgICAgIG1hdGVyaWFsLm5vcm1hbCA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX25vcm1hbCcsIGFzc2V0Lm5vcm1hbCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwubm9ybWFsRmlsZW5hbWUgPSBhc3NldC5ub3JtYWxGaWxlbmFtZTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5hbmlzb3Ryb3B5ID0gMTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5yZXBlYXQuc2V0KDEsIDEpO1xuICAgICAgLy8gbWF0ZXJpYWwubm9ybWFsLmZsaXBZID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhc3NldC5hbykge1xuICAgICAgbWF0ZXJpYWwuYW8gPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19hbycsIGFzc2V0LmFvLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5hb0ZpbGVuYW1lID0gYXNzZXQuYW9GaWxlbmFtZTtcbiAgICB9XG4gICAgaWYgKGFzc2V0Lm1ldGFsbmVzcykge1xuICAgICAgbWF0ZXJpYWwubWV0YWxuZXNzID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfbWV0YWxuZXNzJywgYXNzZXQubWV0YWxuZXNzLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NGaWxlbmFtZSA9IGFzc2V0Lm1ldGFsbmVzc0ZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQucm91Z2huZXNzKSB7XG4gICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19yb3VnaG5lc3MnLCBhc3NldC5yb3VnaG5lc3MsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLnJvdWdobmVzc0ZpbGVuYW1lID0gYXNzZXQucm91Z2huZXNzRmlsZW5hbWU7XG4gICAgfVxuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0U2V0dGluZ3NPZk1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCwgc2V0dGluZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNoaW5pbmVzcyA9IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3Bvd2VyJ10pO1xuICAgIGlmICghaXNOYU4oc2hpbmluZXNzKSkge1xuICAgICAgbWF0ZXJpYWwuc2hpbmluZXNzID0gc2hpbmluZXNzO1xuICAgICAgLy8gbWF0ZXJpYWwucm91Z2huZXNzID0gMSAtIChzaGluaW5lc3MgLyAxMDApO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVsID0gcGFyc2VGbG9hdChzZXR0aW5nc1snbGV2ZWwnXSk7XG4gICAgaWYgKCFpc05hTihsZXZlbCkpIHtcbiAgICAgIG1hdGVyaWFsLnNwZWN1bGFyID0gbmV3IFRIUkVFLkNvbG9yKGxldmVsLCBsZXZlbCwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdE9iamVjdFVzZWQ6IGJvb2xlYW4gPSBzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgncmVwZWF0Jyk7XG4gICAgY29uc3QgcmVwZWF0eCA9IHJlcGVhdE9iamVjdFVzZWQgPyBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXQnXVsncmVwZWF0eCddKSA6IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdHgnXSk7XG4gICAgaWYgKCFpc05hTihyZXBlYXR4KSkge1xuICAgICAgbWF0ZXJpYWwucmVwZWF0WCA9IE1hdGgubWF4KDEsIHJlcGVhdHgpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdHkgPSByZXBlYXRPYmplY3RVc2VkID8gcGFyc2VGbG9hdChzZXR0aW5nc1sncmVwZWF0J11bJ3JlcGVhdHknXSkgOiBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXR5J10pO1xuICAgIGlmICghaXNOYU4ocmVwZWF0eSkpIHtcbiAgICAgIG1hdGVyaWFsLnJlcGVhdFkgPSBNYXRoLm1heCgxLCByZXBlYXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhbG5lc3MgPSBwYXJzZUZsb2F0KHNldHRpbmdzWydtZXRhbG5lc3MnXSk7XG4gICAgaWYgKCFpc05hTihtZXRhbG5lc3MpKSB7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA9IE1hdGgubWluKDEsIG1ldGFsbmVzcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91Z2huZXNzID0gcGFyc2VGbG9hdChzZXR0aW5nc1sncm91Z2huZXNzJ10pO1xuICAgIGlmICghaXNOYU4ocm91Z2huZXNzKSkge1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPSBNYXRoLm1pbigxLCByb3VnaG5lc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,151 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import axios from "axios";
3
+ // Static utility functions holder related to files.
4
+ // @dynamic
5
+ var FileUtils = /** @class */ (function () {
6
+ function FileUtils() {
7
+ }
8
+ // Returns the given dataUri string stripped of the mimetype part.
9
+ FileUtils.StripMimeStringFromDataUri = function (dataUri) {
10
+ if (!dataUri) {
11
+ return '';
12
+ }
13
+ var mimeString = this.GetMimeStringFromDataUri(dataUri);
14
+ return dataUri.substr(mimeString.length + 1);
15
+ };
16
+ FileUtils.GetMimeStringFromDataUri = function (dataUri) {
17
+ if (!dataUri) {
18
+ return '';
19
+ }
20
+ return dataUri.split(',')[0];
21
+ };
22
+ FileUtils.FileExists = function (url, assetPath) {
23
+ return __awaiter(this, void 0, void 0, function () {
24
+ var result;
25
+ return __generator(this, function (_a) {
26
+ switch (_a.label) {
27
+ case 0: return [4 /*yield*/, axios({
28
+ method: 'get',
29
+ url: assetPath + "getFiles.php?assetUrl=" + url,
30
+ responseType: "json"
31
+ })];
32
+ case 1:
33
+ result = _a.sent();
34
+ return [2 /*return*/, !!result.data];
35
+ }
36
+ });
37
+ });
38
+ };
39
+ /**
40
+ * There is some discrepancy regarding locations of h3d objects
41
+ * Therefor we need to (temporarily?!) fix the content url
42
+ * Also we need to change some additionals
43
+ */
44
+ FileUtils.FixUrl = function (assetUrl) {
45
+ if (!assetUrl) {
46
+ return '';
47
+ }
48
+ var fixedUrl = assetUrl;
49
+ if (!fixedUrl.endsWith('glb') && !fixedUrl.endsWith('obj') && !fixedUrl.endsWith('glb.gz') && !fixedUrl.endsWith('obj.gz')) {
50
+ fixedUrl = FileUtils.FixUnityUrl(fixedUrl);
51
+ }
52
+ fixedUrl = fixedUrl.replace('/content/', '/content43/');
53
+ return fixedUrl;
54
+ };
55
+ FileUtils.FixGlbUrl = function (assetUrl) {
56
+ if (!assetUrl) {
57
+ return '';
58
+ }
59
+ var fixedUrl = assetUrl;
60
+ if (assetUrl.indexOf('_webplayer') === -1) {
61
+ fixedUrl = assetUrl.concat('_webplayer');
62
+ }
63
+ fixedUrl = fixedUrl.replace('/content/', '/content43/');
64
+ if (!fixedUrl.endsWith('.glb')) {
65
+ fixedUrl = fixedUrl.concat('.glb');
66
+ }
67
+ return fixedUrl;
68
+ };
69
+ // Return the mimetype of the given filename.
70
+ FileUtils.MimeTypeFromFilename = function (fileName) {
71
+ var regEx = /(?:\.([^.]+))?$/; // regex to find extension
72
+ var extension = regEx.exec(fileName)[1];
73
+ switch (extension) {
74
+ case 'jpg':
75
+ case 'jpeg':
76
+ return 'image/jpeg';
77
+ case 'png':
78
+ return 'image/png';
79
+ case 'bmp':
80
+ return 'image/bmp';
81
+ }
82
+ };
83
+ /**
84
+ * Downloads the given file to the users default download location.
85
+ * @param fileName With or without extension
86
+ * @param content File content as a string
87
+ * @param [mimeType = 'text/plain']
88
+ */
89
+ FileUtils.DownloadFile = function (fileName, content, mimeType) {
90
+ if (mimeType === void 0) { mimeType = 'text/plain'; }
91
+ var element = document.createElement('a');
92
+ element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(content));
93
+ element.setAttribute('download', fileName);
94
+ element.style.display = 'none';
95
+ document.body.appendChild(element);
96
+ element.click();
97
+ document.body.removeChild(element);
98
+ };
99
+ // Returns the contents of given file as a text string.
100
+ FileUtils.ReadAsText = function (file) {
101
+ return new Promise(function (resolve) {
102
+ var reader = new FileReader();
103
+ reader.readAsText(file);
104
+ reader.onloadend = function (event) {
105
+ if (event.target.readyState === 2) {
106
+ resolve(event.target.result);
107
+ }
108
+ };
109
+ });
110
+ };
111
+ FileUtils.GetExtensionFromDataUri = function (dataUri) {
112
+ return dataUri.replace(/(data:image\/)(.*?)(;base64.*)/gi, '$2');
113
+ };
114
+ FileUtils.CreateDownloadFileNameFromBase64 = function (dataUri) {
115
+ var ext = this.GetExtensionFromDataUri(dataUri);
116
+ return 'preview.' + ext;
117
+ };
118
+ FileUtils.DownloadFromDataUri = function (dataUri, fileName) {
119
+ var link = document.createElement('a');
120
+ link.download = fileName;
121
+ link.href = dataUri;
122
+ document.body.appendChild(link);
123
+ link.click();
124
+ document.body.removeChild(link);
125
+ };
126
+ // todo remove once Connector deals with mimetypes and this method isn't used anymore
127
+ FileUtils.DocumentBodyToDataUri = function (documentBody, mimeType) {
128
+ if (!!documentBody) {
129
+ return 'data:' + mimeType + ';base64,' + documentBody;
130
+ }
131
+ else {
132
+ return '';
133
+ }
134
+ };
135
+ FileUtils.FixUnityUrl = function (url) {
136
+ if (url.indexOf('_webplayer') === -1) {
137
+ url = url.concat('_webplayer.ione3d');
138
+ }
139
+ else {
140
+ url = url.replace('_webplayer', '_webplayer.ione3d');
141
+ }
142
+ if (!url.endsWith('.gz')) {
143
+ url = url.concat('.gz');
144
+ }
145
+ return url.replace('.unity3d', '');
146
+ };
147
+ FileUtils._cachedTextureUploads = new Map();
148
+ return FileUtils;
149
+ }());
150
+ export { FileUtils };
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJ1dGlscy9maWxlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsb0RBQW9EO0FBQ3BELFdBQVc7QUFDWDtJQUFBO0lBd0pBLENBQUM7SUFwSkMsa0VBQWtFO0lBQ3BELG9DQUEwQixHQUF4QyxVQUF5QyxPQUFlO1FBQ3RELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFYSxrQ0FBd0IsR0FBdEMsVUFBdUMsT0FBZTtRQUNwRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRW1CLG9CQUFVLEdBQTlCLFVBQStCLEdBQVcsRUFBRSxTQUFpQjs7Ozs7NEJBQzFDLHFCQUFNLEtBQUssQ0FBQzs0QkFDekIsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsR0FBRyxFQUFLLFNBQVMsOEJBQXlCLEdBQUs7NEJBQy9DLFlBQVksRUFBRSxNQUFNO3lCQUNyQixDQUFDLEVBQUE7O3dCQUpJLE1BQU0sR0FBRyxTQUliO3dCQUNGLHNCQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDOzs7O0tBQ3hCO0lBRUQ7Ozs7T0FJRztJQUNXLGdCQUFNLEdBQXBCLFVBQXFCLFFBQWdCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixP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QTJCLEdBQUc7UUFDNUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFySmMsK0JBQXFCLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFzSnhFLGdCQUFDO0NBQUEsQUF4SkQsSUF3SkM7U0F4SlksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbi8vIFN0YXRpYyB1dGlsaXR5IGZ1bmN0aW9ucyBob2xkZXIgcmVsYXRlZCB0byBmaWxlcy5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgRmlsZVV0aWxzIHtcblxuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkVGV4dHVyZVVwbG9hZHM6IE1hcDxzdHJpbmcsIE9iamVjdD4gPSBuZXcgTWFwKCk7XG5cbiAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4gZGF0YVVyaSBzdHJpbmcgc3RyaXBwZWQgb2YgdGhlIG1pbWV0eXBlIHBhcnQuXG4gIHB1YmxpYyBzdGF0aWMgU3RyaXBNaW1lU3RyaW5nRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGFVcmkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBtaW1lU3RyaW5nOiBzdHJpbmcgPSB0aGlzLkdldE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpKTtcbiAgICByZXR1cm4gZGF0YVVyaS5zdWJzdHIobWltZVN0cmluZy5sZW5ndGggKyAxKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0TWltZVN0cmluZ0Zyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRhVXJpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFVcmkuc3BsaXQoJywnKVswXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgRmlsZUV4aXN0cyh1cmw6IHN0cmluZywgYXNzZXRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgdXJsOiBgJHthc3NldFBhdGh9Z2V0RmlsZXMucGhwP2Fzc2V0VXJsPSR7dXJsfWAsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogXCJqc29uXCJcbiAgICAgIH0pXG4gICAgICByZXR1cm4gISFyZXN1bHQuZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGVyZSBpcyBzb21lIGRpc2NyZXBhbmN5IHJlZ2FyZGluZyBsb2NhdGlvbnMgb2YgaDNkIG9iamVjdHNcbiAgICogVGhlcmVmb3Igd2UgbmVlZCB0byAodGVtcG9yYXJpbHk/ISkgZml4IHRoZSBjb250ZW50IHVybFxuICAgKiBBbHNvIHdlIG5lZWQgdG8gY2hhbmdlIHNvbWUgYWRkaXRpb25hbHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRml4VXJsKGFzc2V0VXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghYXNzZXRVcmwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IGZpeGVkVXJsOiBzdHJpbmcgPSBhc3NldFVybDtcbiAgICBpZiAoIWZpeGVkVXJsLmVuZHNXaXRoKCdnbGInKSAmJiAhZml4ZWRVcmwuZW5kc1dpdGgoJ29iaicpICYmICFmaXhlZFVybC5lbmRzV2l0aCgnZ2xiLmd6JykgJiYgIWZpeGVkVXJsLmVuZHNXaXRoKCdvYmouZ3onKSkge1xuICAgICAgZml4ZWRVcmwgPSBGaWxlVXRpbHMuRml4VW5pdHlVcmwoZml4ZWRVcmwpO1xuICAgIH1cbiAgICBmaXhlZFVybCA9IGZpeGVkVXJsLnJlcGxhY2UoJy9jb250ZW50LycsICcvY29udGVudDQzLycpO1xuICAgIHJldHVybiBmaXhlZFVybDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgRml4R2xiVXJsKGFzc2V0VXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghYXNzZXRVcmwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IGZpeGVkVXJsOiBzdHJpbmcgPSBhc3NldFVybDtcbiAgICBpZiAoYXNzZXRVcmwuaW5kZXhPZignX3dlYnBsYXllcicpID09PSAtMSkge1xuICAgICAgZml4ZWRVcmwgPSBhc3NldFVybC5jb25jYXQoJ193ZWJwbGF5ZXInKTtcbiAgICB9XG4gICAgZml4ZWRVcmwgPSBmaXhlZFVybC5yZXBsYWNlKCcvY29udGVudC8nLCAnL2NvbnRlbnQ0My8nKTtcbiAgICBpZiAoIWZpeGVkVXJsLmVuZHNXaXRoKCcuZ2xiJykpIHtcbiAgICAgIGZpeGVkVXJsID0gZml4ZWRVcmwuY29uY2F0KCcuZ2xiJyk7XG4gICAgfVxuICAgIHJldHVybiBmaXhlZFVybDtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbWltZXR5cGUgb2YgdGhlIGdpdmVuIGZpbGVuYW1lLlxuICBwdWJsaWMgc3RhdGljIE1pbWVUeXBlRnJvbUZpbGVuYW1lKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlZ0V4OiBSZWdFeHAgPSAvKD86XFwuKFteLl0rKSk/JC87IC8vIHJlZ2V4IHRvIGZpbmQgZXh0ZW5zaW9uXG4gICAgY29uc3QgZXh0ZW5zaW9uOiBhbnkgPSByZWdFeC5leGVjKGZpbGVOYW1lKVsxXTtcbiAgICBzd2l0Y2ggKGV4dGVuc2lvbikge1xuICAgICAgY2FzZSAnanBnJzpcbiAgICAgIGNhc2UgJ2pwZWcnOlxuICAgICAgICByZXR1cm4gJ2ltYWdlL2pwZWcnO1xuICAgICAgY2FzZSAncG5nJzpcbiAgICAgICAgcmV0dXJuICdpbWFnZS9wbmcnO1xuICAgICAgY2FzZSAnYm1wJzpcbiAgICAgICAgcmV0dXJuICdpbWFnZS9ibXAnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZHMgdGhlIGdpdmVuIGZpbGUgdG8gdGhlIHVzZXJzIGRlZmF1bHQgZG93bmxvYWQgbG9jYXRpb24uXG4gICAqIEBwYXJhbSBmaWxlTmFtZSBXaXRoIG9yIHdpdGhvdXQgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSBjb250ZW50IEZpbGUgY29udGVudCBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gW21pbWVUeXBlID0gJ3RleHQvcGxhaW4nXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBEb3dubG9hZEZpbGUoXG4gICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgbWltZVR5cGU6IHN0cmluZyA9ICd0ZXh0L3BsYWluJ1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOicgKyBtaW1lVHlwZSArICc7Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG5cbiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIGVsZW1lbnQuY2xpY2soKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBnaXZlbiBmaWxlIGFzIGEgdGV4dCBzdHJpbmcuXG4gIHB1YmxpYyBzdGF0aWMgUmVhZEFzVGV4dChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT09IDIpIHtcbiAgICAgICAgICByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXRFeHRlbnNpb25Gcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRhVXJpLnJlcGxhY2UoLyhkYXRhOmltYWdlXFwvKSguKj8pKDtiYXNlNjQuKikvZ2ksICckMicpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBDcmVhdGVEb3dubG9hZEZpbGVOYW1lRnJvbUJhc2U2NChkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGV4dDogc3RyaW5nID0gdGhpcy5HZXRFeHRlbnNpb25Gcm9tRGF0YVVyaShkYXRhVXJpKTtcbiAgICByZXR1cm4gJ3ByZXZpZXcuJyArIGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgRG93bmxvYWRGcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBsaW5rOiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgIGxpbmsuaHJlZiA9IGRhdGFVcmk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgfVxuXG4gIC8vIHRvZG8gcmVtb3ZlIG9uY2UgQ29ubmVjdG9yIGRlYWxzIHdpdGggbWltZXR5cGVzIGFuZCB0aGlzIG1ldGhvZCBpc24ndCB1c2VkIGFueW1vcmVcbiAgcHVibGljIHN0YXRpYyBEb2N1bWVudEJvZHlUb0RhdGFVcmkoZG9jdW1lbnRCb2R5OiBzdHJpbmcsIG1pbWVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghIWRvY3VtZW50Qm9keSkge1xuICAgICAgcmV0dXJuICdkYXRhOicgKyBtaW1lVHlwZSArICc7YmFzZTY0LCcgKyBkb2N1bWVudEJvZHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBGaXhVbml0eVVybCh1cmwpOiBzdHJpbmcge1xuICAgIGlmICh1cmwuaW5kZXhPZignX3dlYnBsYXllcicpID09PSAtMSkge1xuICAgICAgdXJsID0gdXJsLmNvbmNhdCgnX3dlYnBsYXllci5pb25lM2QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ193ZWJwbGF5ZXInLCAnX3dlYnBsYXllci5pb25lM2QnKTtcbiAgICB9XG4gICAgaWYgKCF1cmwuZW5kc1dpdGgoJy5neicpKSB7XG4gICAgICB1cmwgPSB1cmwuY29uY2F0KCcuZ3onKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKCcudW5pdHkzZCcsICcnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,56 @@
1
+ import * as THREE from 'three';
2
+ // @dynamic
3
+ var ImageUtils = /** @class */ (function () {
4
+ function ImageUtils() {
5
+ }
6
+ ImageUtils.CreateTextureFromBase64 = function (id, base64, material) {
7
+ return new Promise(function (resolve) {
8
+ if (ImageUtils.textures.has(id)) {
9
+ resolve(ImageUtils.textures.get(id));
10
+ }
11
+ else {
12
+ if (!base64) {
13
+ resolve(new THREE.Texture());
14
+ }
15
+ else {
16
+ var loader = new THREE.TextureLoader();
17
+ loader.load(base64, function (texture) {
18
+ texture.anisotropy = 16;
19
+ texture.wrapS = THREE.RepeatWrapping;
20
+ texture.wrapT = THREE.RepeatWrapping;
21
+ texture.repeat = new THREE.Vector2(material ? material.repeatX : 1, material ? material.repeatY : 1);
22
+ texture.needsUpdate = true;
23
+ ImageUtils.textures.set(id, texture);
24
+ resolve(texture);
25
+ });
26
+ }
27
+ }
28
+ });
29
+ };
30
+ ImageUtils.getDocBodyWithMimeTypeDefinition = function (fileName, documentBody) {
31
+ if (documentBody === null) {
32
+ return documentBody;
33
+ }
34
+ var fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1);
35
+ switch (fileExtension.toLowerCase()) {
36
+ case "jpg":
37
+ case "jpeg":
38
+ return "data:image/jpg;base64," + documentBody;
39
+ case "png":
40
+ return "data:image/png;base64," + documentBody;
41
+ case "gif":
42
+ return "data:image/gif;base64," + documentBody;
43
+ case "bmp":
44
+ return "data:image/bmp;base64," + documentBody;
45
+ default:
46
+ return "data:image/png;base64," + documentBody;
47
+ }
48
+ };
49
+ ImageUtils.getFixedImageFilepathUrl = function (imageFilepathUrl) {
50
+ return imageFilepathUrl.replace("/content/", "/content43/");
51
+ };
52
+ ImageUtils.textures = new Map();
53
+ return ImageUtils;
54
+ }());
55
+ export { ImageUtils };
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvaW1hZ2UudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsV0FBVztBQUNYO0lBQUE7SUFrREEsQ0FBQztJQTlDZSxrQ0FBdUIsR0FBckMsVUFBc0MsRUFBVSxFQUFFLE1BQWMsRUFBRSxRQUFrQjtRQUNsRixPQUFPLElBQUksT0FBTyxDQUFnQixVQUFDLE9BQU87WUFDeEMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDWCxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDOUI7cUJBQU07b0JBQ0wsSUFBTSxNQUFNLEdBQXdCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM5RCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFDLE9BQXNCO3dCQUN6QyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO3dCQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3dCQUMzQixVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVhLDJDQUFnQyxHQUE5QyxVQUErQyxRQUFnQixFQUFFLFlBQW9CO1FBQ25GLElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtZQUN6QixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELElBQU0sYUFBYSxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RSxRQUFRLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNuQyxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztZQUNqRCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyx3QkFBd0IsR0FBRyxZQUFZLENBQUM7WUFDakQsS0FBSyxLQUFLO2dCQUNSLE9BQU8sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO1lBQ2pELEtBQUssS0FBSztnQkFDUixPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztZQUNqRDtnQkFDRSxPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFYSxtQ0FBd0IsR0FBdEMsVUFBdUMsZ0JBQXdCO1FBQzdELE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBL0NhLG1CQUFRLEdBQStCLElBQUksR0FBRyxFQUFFLENBQUM7SUFnRGpFLGlCQUFDO0NBQUEsQUFsREQsSUFrREM7U0FsRFksVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7TWF0ZXJpYWx9IGZyb20gJy4uL21vZGVsL21hdGVyaWFsJztcbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgSW1hZ2VVdGlscyB7XG5cbiAgcHVibGljIHN0YXRpYyB0ZXh0dXJlczogTWFwPHN0cmluZywgVEhSRUUuVGV4dHVyZT4gPSBuZXcgTWFwKCk7XG5cbiAgcHVibGljIHN0YXRpYyBDcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChpZDogc3RyaW5nLCBiYXNlNjQ6IHN0cmluZywgbWF0ZXJpYWw6IE1hdGVyaWFsKTogUHJvbWlzZTxUSFJFRS5UZXh0dXJlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRIUkVFLlRleHR1cmU+KChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoSW1hZ2VVdGlscy50ZXh0dXJlcy5oYXMoaWQpKSB7XG4gICAgICAgIHJlc29sdmUoSW1hZ2VVdGlscy50ZXh0dXJlcy5nZXQoaWQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghYmFzZTY0KSB7XG4gICAgICAgICAgcmVzb2x2ZShuZXcgVEhSRUUuVGV4dHVyZSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBsb2FkZXI6IFRIUkVFLlRleHR1cmVMb2FkZXIgPSBuZXcgVEhSRUUuVGV4dHVyZUxvYWRlcigpO1xuICAgICAgICAgIGxvYWRlci5sb2FkKGJhc2U2NCwgKHRleHR1cmU6IFRIUkVFLlRleHR1cmUpID0+IHtcbiAgICAgICAgICAgIHRleHR1cmUuYW5pc290cm9weSA9IDE2O1xuICAgICAgICAgICAgdGV4dHVyZS53cmFwUyA9IFRIUkVFLlJlcGVhdFdyYXBwaW5nO1xuICAgICAgICAgICAgdGV4dHVyZS53cmFwVCA9IFRIUkVFLlJlcGVhdFdyYXBwaW5nO1xuICAgICAgICAgICAgdGV4dHVyZS5yZXBlYXQgPSBuZXcgVEhSRUUuVmVjdG9yMihtYXRlcmlhbCA/IG1hdGVyaWFsLnJlcGVhdFggOiAxLCBtYXRlcmlhbCA/IG1hdGVyaWFsLnJlcGVhdFkgOiAxKTtcbiAgICAgICAgICAgIHRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgSW1hZ2VVdGlscy50ZXh0dXJlcy5zZXQoaWQsIHRleHR1cmUpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0ZXh0dXJlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXREb2NCb2R5V2l0aE1pbWVUeXBlRGVmaW5pdGlvbihmaWxlTmFtZTogc3RyaW5nLCBkb2N1bWVudEJvZHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGRvY3VtZW50Qm9keSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50Qm9keTtcbiAgICB9XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbjogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICBzd2l0Y2ggKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImpwZ1wiOlxuICAgICAgY2FzZSBcImpwZWdcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF0YTppbWFnZS9qcGc7YmFzZTY0LFwiICsgZG9jdW1lbnRCb2R5O1xuICAgICAgY2FzZSBcInBuZ1wiOlxuICAgICAgICByZXR1cm4gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHk7XG4gICAgICBjYXNlIFwiZ2lmXCI6XG4gICAgICAgIHJldHVybiBcImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxcIiArIGRvY3VtZW50Qm9keTtcbiAgICAgIGNhc2UgXCJibXBcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF0YTppbWFnZS9ibXA7YmFzZTY0LFwiICsgZG9jdW1lbnRCb2R5O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LFwiICsgZG9jdW1lbnRCb2R5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Rml4ZWRJbWFnZUZpbGVwYXRoVXJsKGltYWdlRmlsZXBhdGhVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGltYWdlRmlsZXBhdGhVcmwucmVwbGFjZShcIi9jb250ZW50L1wiLCBcIi9jb250ZW50NDMvXCIpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { Mesh } from "three";
2
+ var ObjectUtils = /** @class */ (function () {
3
+ function ObjectUtils() {
4
+ }
5
+ ObjectUtils.DisposeMaterial = function (material) {
6
+ var _this = this;
7
+ if (!material) {
8
+ return;
9
+ }
10
+ if (Array.isArray(material)) {
11
+ material.forEach(function (mtrl) {
12
+ _this.materialProps
13
+ .filter(function (mapType) { return mtrl[mapType]; })
14
+ .forEach(function (mapType) { return mtrl[mapType].dispose(); });
15
+ mtrl.dispose();
16
+ });
17
+ }
18
+ else {
19
+ this.materialProps
20
+ .filter(function (mapType) { return material[mapType] && material[mapType].dispose; })
21
+ .forEach(function (mapType) { return material[mapType].dispose(); });
22
+ if (material.dispose) {
23
+ material.dispose();
24
+ }
25
+ }
26
+ };
27
+ ObjectUtils.DisposeObject = function (object) {
28
+ var _this = this;
29
+ if (!object) {
30
+ return;
31
+ }
32
+ if (object.children.length) {
33
+ object.children.forEach(function (child) { return _this.DisposeObject(child); });
34
+ }
35
+ this.DisposeNode(object);
36
+ };
37
+ ObjectUtils.DisposeNode = function (node) {
38
+ var _this = this;
39
+ node.traverse(function (obj) {
40
+ if (obj instanceof Mesh) {
41
+ if (obj.geometry) {
42
+ obj.geometry.dispose();
43
+ }
44
+ _this.DisposeMaterial(obj.material);
45
+ }
46
+ if (typeof obj.dispose === 'function') {
47
+ // @ts-ignore
48
+ obj.dispose();
49
+ }
50
+ });
51
+ };
52
+ ObjectUtils.materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];
53
+ return ObjectUtils;
54
+ }());
55
+ export { ObjectUtils };
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbInV0aWxzL29iamVjdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsSUFBSSxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBRS9DO0lBQUE7SUFpREEsQ0FBQztJQTlDaUIsMkJBQWUsR0FBN0IsVUFBOEIsUUFBK0I7UUFBN0QsaUJBbUJDO1FBbEJHLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7Z0JBQ2pCLEtBQUksQ0FBQyxhQUFhO3FCQUNiLE1BQU0sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBYixDQUFhLENBQUM7cUJBQ2hDLE9BQU8sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWE7aUJBQ2IsTUFBTSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQTlDLENBQThDLENBQUM7aUJBQ2pFLE9BQU8sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBM0IsQ0FBMkIsQ0FBQyxDQUFDO1lBQ3JELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3RCO1NBQ0o7SUFDTCxDQUFDO0lBRWEseUJBQWEsR0FBM0IsVUFBNEIsTUFBdUI7UUFBbkQsaUJBUUM7UUFQRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQXpCLENBQXlCLENBQUMsQ0FBQztTQUMvRDtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVjLHVCQUFXLEdBQTFCLFVBQTJCLElBQXFCO1FBQWhELGlCQWFDO1FBWkcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFDLEdBQWE7WUFDeEIsSUFBSSxHQUFHLFlBQVksSUFBSSxFQUFFO2dCQUNyQixJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7b0JBQ2QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDMUI7Z0JBQ0QsS0FBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdEM7WUFDRCxJQUFJLE9BQVEsR0FBVyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7Z0JBQzVDLGFBQWE7Z0JBQ2IsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2pCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBOUNNLHlCQUFhLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBZ0R6SSxrQkFBQztDQUFBLEFBakRELElBaURDO1NBakRZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hdGVyaWFsLCBNZXNoLCBPYmplY3QzRH0gZnJvbSBcInRocmVlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG4gICAgc3RhdGljIG1hdGVyaWFsUHJvcHMgPSBbJ21hcCcsICdsaWdodE1hcCcsICdidW1wTWFwJywgJ25vcm1hbE1hcCcsICdzcGVjdWxhck1hcCcsICdlbnZNYXAnLCAnYW9NYXAnLCAncm91Z2huZXNzTWFwJywgJ21ldGFsbmVzc01hcCddO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgRGlzcG9zZU1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCB8IE1hdGVyaWFsW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIW1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWF0ZXJpYWwpKSB7XHJcbiAgICAgICAgICAgIG1hdGVyaWFsLmZvckVhY2gobXRybCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGVyaWFsUHJvcHNcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcFR5cGUgPT4gbXRybFttYXBUeXBlXSlcclxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChtYXBUeXBlID0+IG10cmxbbWFwVHlwZV0uZGlzcG9zZSgpKTtcclxuICAgICAgICAgICAgICAgIG10cmwuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1hdGVyaWFsUHJvcHNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIobWFwVHlwZSA9PiBtYXRlcmlhbFttYXBUeXBlXSAmJiBtYXRlcmlhbFttYXBUeXBlXS5kaXNwb3NlKVxyXG4gICAgICAgICAgICAgICAgLmZvckVhY2gobWFwVHlwZSA9PiBtYXRlcmlhbFttYXBUeXBlXS5kaXNwb3NlKCkpO1xyXG4gICAgICAgICAgICBpZiAobWF0ZXJpYWwuZGlzcG9zZSkge1xyXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgRGlzcG9zZU9iamVjdChvYmplY3Q6IE9iamVjdDNEIHwgTWVzaCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghb2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iamVjdC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgb2JqZWN0LmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gdGhpcy5EaXNwb3NlT2JqZWN0KGNoaWxkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuRGlzcG9zZU5vZGUob2JqZWN0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBEaXNwb3NlTm9kZShub2RlOiBPYmplY3QzRCB8IE1lc2gpOiB2b2lkIHtcclxuICAgICAgICBub2RlLnRyYXZlcnNlKChvYmo6IE9iamVjdDNEKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBNZXNoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmdlb21ldHJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JqLmdlb21ldHJ5LmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuRGlzcG9zZU1hdGVyaWFsKG9iai5tYXRlcmlhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAob2JqIGFzIGFueSkuZGlzcG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgb2JqLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,98 @@
1
+ import * as THREE from 'three';
2
+ var SceneUtils = /** @class */ (function () {
3
+ function SceneUtils() {
4
+ }
5
+ SceneUtils.TrySelectorConnection = function (scene, parent, part1, part2, createAddableFn) {
6
+ var addable;
7
+ if (createAddableFn) {
8
+ addable = part2;
9
+ part2 = createAddableFn(addable);
10
+ }
11
+ for (var i = 0; i < part1.children.length; i++) {
12
+ for (var ii = 0; ii < part2.children.length; ii++) {
13
+ var con1 = part1.children[i];
14
+ var con2 = part2.children[ii];
15
+ // if these connectors can connect connect them
16
+ if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(con1, con2)) {
17
+ // if addable, continue this loop with a new addable
18
+ if (addable) {
19
+ var newPart2 = createAddableFn(addable, part2, part1);
20
+ // reference of part2 changed, so refresh con2
21
+ this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);
22
+ }
23
+ else {
24
+ return this.SelectorConnect(scene, parent, con1, con2);
25
+ }
26
+ }
27
+ }
28
+ }
29
+ return false;
30
+ };
31
+ SceneUtils.Convert3DPointToScreenPoint = function (point, camera, width, height) {
32
+ if (!point) {
33
+ return new THREE.Vector2();
34
+ }
35
+ var vector = point.clone().project(camera);
36
+ vector.x = (vector.x + 1) / 2 * width;
37
+ vector.y = -(vector.y - 1) / 2 * height;
38
+ return new THREE.Vector2(vector.x, vector.y);
39
+ };
40
+ SceneUtils.CanSelectorConnect = function (con1, con2) {
41
+ var con1Name = con1 instanceof THREE.Object3D ? con1.name : con1.connector;
42
+ var con2Name = con2 instanceof THREE.Object3D ? con2.name : con2.connector;
43
+ var sameParent = con1 instanceof THREE.Object3D && con2 instanceof THREE.Object3D ? con1.parent === con2.parent : false;
44
+ var parts1 = con1Name.toUpperCase().split('_'), parts2 = con2Name.toUpperCase().split('_');
45
+ if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {
46
+ var connectable = parts1[0] === 'C' && parts2[0] === 'C' &&
47
+ parts1[1] === parts2[1] && parts1[2] !== parts2[2];
48
+ return connectable;
49
+ }
50
+ return false;
51
+ };
52
+ SceneUtils.SelectorConnect = function (scene, parent, con1, con2) {
53
+ if (!scene || !parent) {
54
+ return false;
55
+ }
56
+ con1['connectedTo'] = con2.parent.name;
57
+ con2['connectedTo'] = con1.parent.name;
58
+ var motherRotation = new THREE.Euler(0, 0, 0);
59
+ var motherPosition = new THREE.Vector3(0, 0, 0);
60
+ scene.updateMatrixWorld(true);
61
+ motherRotation.copy(parent.rotation);
62
+ parent.getWorldPosition(motherPosition);
63
+ parent.rotation.set(0, 0, 0);
64
+ parent.position.set(0, 0, 0);
65
+ var con1Quat = new THREE.Quaternion();
66
+ con1.getWorldQuaternion(con1Quat);
67
+ var con2Quat = new THREE.Quaternion();
68
+ con2.getWorldQuaternion(con2Quat);
69
+ var con1QuatParent = new THREE.Quaternion();
70
+ con1.parent.getWorldQuaternion(con1QuatParent);
71
+ var con2QuatParent = new THREE.Quaternion();
72
+ con2.parent.getWorldQuaternion(con2QuatParent);
73
+ var rotation = new THREE.Quaternion().multiplyQuaternions(con1Quat.invert(), con2Quat).multiply(new THREE.Quaternion().multiplyQuaternions(con1QuatParent, con1QuatParent));
74
+ con2.parent.quaternion.copy(rotation);
75
+ // Update because the matrix has been tempered with
76
+ scene.updateMatrixWorld(true);
77
+ // Move the connectors towards eachother
78
+ var con1Pos = new THREE.Vector3();
79
+ con1.getWorldPosition(con1Pos);
80
+ var con2Pos = new THREE.Vector3();
81
+ con2.getWorldPosition(con2Pos);
82
+ var move = con1Pos.sub(con2Pos);
83
+ con2.parent.position.x += move.x;
84
+ con2.parent.position.y += move.y;
85
+ con2.parent.position.z += move.z;
86
+ // reset parent's objects rotation and position
87
+ parent.rotation.copy(motherRotation);
88
+ parent.position.copy(motherPosition);
89
+ scene.updateMatrixWorld(true);
90
+ // Set the connected flag
91
+ con1['connected'] = true;
92
+ con2['connected'] = true;
93
+ return true;
94
+ };
95
+ return SceneUtils;
96
+ }());
97
+ export { SceneUtils };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUtdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvc2NlbmUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0I7SUFBQTtJQW9IQSxDQUFDO0lBbEhpQixnQ0FBcUIsR0FBbkMsVUFBb0MsS0FBa0IsRUFBRSxNQUFzQixFQUMxRSxLQUFVLEVBQUUsS0FBVSxFQUFFLGVBQTBCO1FBQ2xELElBQUksT0FBWSxDQUFDO1FBQ2pCLElBQUksZUFBZSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEIsS0FBSyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQztRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQy9DLElBQU0sSUFBSSxHQUFtQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxJQUFNLElBQUksR0FBbUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEQsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2pGLG9EQUFvRDtvQkFDcEQsSUFBSSxPQUFPLEVBQUU7d0JBQ1QsSUFBTSxRQUFRLEdBQW1CLGVBQWUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxF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QztRQUVyQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUwsaUJBQUM7QUFBRCxDQUFDLEFBcEhELElBb0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNjZW5lVXRpbHMge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgVHJ5U2VsZWN0b3JDb25uZWN0aW9uKHNjZW5lOiBUSFJFRS5TY2VuZSwgcGFyZW50OiBUSFJFRS5PYmplY3QzRCxcclxuICAgICAgICBwYXJ0MTogYW55LCBwYXJ0MjogYW55LCBjcmVhdGVBZGRhYmxlRm4/OiBGdW5jdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBhZGRhYmxlOiBhbnk7XHJcbiAgICAgICAgaWYgKGNyZWF0ZUFkZGFibGVGbikge1xyXG4gICAgICAgICAgICBhZGRhYmxlID0gcGFydDI7XHJcbiAgICAgICAgICAgIHBhcnQyID0gY3JlYXRlQWRkYWJsZUZuKGFkZGFibGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnQxLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCBwYXJ0Mi5jaGlsZHJlbi5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbjE6IFRIUkVFLk9iamVjdDNEID0gcGFydDEuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb24yOiBUSFJFRS5PYmplY3QzRCA9IHBhcnQyLmNoaWxkcmVuW2lpXTtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXNlIGNvbm5lY3RvcnMgY2FuIGNvbm5lY3QgY29ubmVjdCB0aGVtXHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbjFbJ2Nvbm5lY3RlZCddICYmICFjb24yWydjb25uZWN0ZWQnXSAmJiB0aGlzLkNhblNlbGVjdG9yQ29ubmVjdChjb24xLCBjb24yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFkZGFibGUsIGNvbnRpbnVlIHRoaXMgbG9vcCB3aXRoIGEgbmV3IGFkZGFibGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXJ0MjogVEhSRUUuT2JqZWN0M0QgPSBjcmVhdGVBZGRhYmxlRm4oYWRkYWJsZSwgcGFydDIsIHBhcnQxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVmZXJlbmNlIG9mIHBhcnQyIGNoYW5nZWQsIHNvIHJlZnJlc2ggY29uMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdG9yQ29ubmVjdChzY2VuZSwgcGFyZW50LCBjb24xLCBuZXdQYXJ0Mi5jaGlsZHJlbltpaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlNlbGVjdG9yQ29ubmVjdChzY2VuZSwgcGFyZW50LCBjb24xLCBjb24yKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29udmVydDNEUG9pbnRUb1NjcmVlblBvaW50KHBvaW50OiBUSFJFRS5WZWN0b3IzLCBjYW1lcmE6IFRIUkVFLkNhbWVyYSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBUSFJFRS5WZWN0b3IyIHtcclxuICAgICAgICBpZiAoIXBvaW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgVEhSRUUuVmVjdG9yMigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2ZWN0b3I6IFRIUkVFLlZlY3RvcjMgPSBwb2ludC5jbG9uZSgpLnByb2plY3QoY2FtZXJhKTtcclxuICAgICAgICB2ZWN0b3IueCA9ICh2ZWN0b3IueCArIDEpIC8gMiAqIHdpZHRoO1xyXG4gICAgICAgIHZlY3Rvci55ID0gLSh2ZWN0b3IueSAtIDEpIC8gMiAqIGhlaWdodDtcclxuICAgICAgICByZXR1cm4gbmV3IFRIUkVFLlZlY3RvcjIodmVjdG9yLngsIHZlY3Rvci55KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIENhblNlbGVjdG9yQ29ubmVjdChjb24xOiBUSFJFRS5PYmplY3QzRCB8IGFueSwgY29uMjogVEhSRUUuT2JqZWN0M0QgfCBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBjb24xTmFtZTogc3RyaW5nID0gY29uMSBpbnN0YW5jZW9mIFRIUkVFLk9iamVjdDNEID8gY29uMS5uYW1lIDogY29uMS5jb25uZWN0b3I7XHJcbiAgICAgICAgY29uc3QgY29uMk5hbWU6IHN0cmluZyA9IGNvbjIgaW5zdGFuY2VvZiBUSFJFRS5PYmplY3QzRCA/IGNvbjIubmFtZSA6IGNvbjIuY29ubmVjdG9yO1xyXG4gICAgICAgIGNvbnN0IHNhbWVQYXJlbnQ6IGJvb2xlYW4gPSBjb24xIGluc3RhbmNlb2YgVEhSRUUuT2JqZWN0M0QgJiYgY29uMiBpbnN0YW5jZW9mIFRIUkVFLk9iamVjdDNEID8gY29uMS5wYXJlbnQgPT09IGNvbjIucGFyZW50IDogZmFsc2U7XHJcbiAgICAgICAgY29uc3QgcGFydHMxOiBzdHJpbmdbXSA9IGNvbjFOYW1lLnRvVXBwZXJDYXNlKCkuc3BsaXQoJ18nKSxcclxuICAgICAgICAgICAgcGFydHMyOiBzdHJpbmdbXSA9IGNvbjJOYW1lLnRvVXBwZXJDYXNlKCkuc3BsaXQoJ18nKTtcclxuICAgICAgICBpZiAocGFydHMxLmxlbmd0aCA+PSAzICYmIHBhcnRzMi5sZW5ndGggPj0gMyAmJiAhc2FtZVBhcmVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb25uZWN0YWJsZTogYm9vbGVhbiA9IHBhcnRzMVswXSA9PT0gJ0MnICYmIHBhcnRzMlswXSA9PT0gJ0MnICYmXHJcbiAgICAgICAgICAgICAgICBwYXJ0czFbMV0gPT09IHBhcnRzMlsxXSAmJiBwYXJ0czFbMl0gIT09IHBhcnRzMlsyXTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3RhYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgU2VsZWN0b3JDb25uZWN0KHNjZW5lOiBUSFJFRS5TY2VuZSwgcGFyZW50OiBUSFJFRS5PYmplY3QzRCwgY29uMTogVEhSRUUuT2JqZWN0M0QsIGNvbjI6IFRIUkVFLk9iamVjdDNEKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFzY2VuZSB8fCAhcGFyZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uMVsnY29ubmVjdGVkVG8nXSA9IGNvbjIucGFyZW50Lm5hbWU7XHJcbiAgICAgICAgY29uMlsnY29ubmVjdGVkVG8nXSA9IGNvbjEucGFyZW50Lm5hbWU7XHJcblxyXG4gICAgICAgIGNvbnN0IG1vdGhlclJvdGF0aW9uOiBUSFJFRS5FdWxlciA9IG5ldyBUSFJFRS5FdWxlcigwLCAwLCAwKTtcclxuICAgICAgICBjb25zdCBtb3RoZXJQb3NpdGlvbjogVEhSRUUuVmVjdG9yMyA9IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDApO1xyXG5cclxuICAgICAgICBzY2VuZS51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcclxuICAgICAgICBtb3RoZXJSb3RhdGlvbi5jb3B5KHBhcmVudC5yb3RhdGlvbik7XHJcbiAgICAgICAgcGFyZW50LmdldFdvcmxkUG9zaXRpb24obW90aGVyUG9zaXRpb24pO1xyXG5cclxuICAgICAgICBwYXJlbnQucm90YXRpb24uc2V0KDAsIDAsIDApO1xyXG4gICAgICAgIHBhcmVudC5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbjFRdWF0OiBUSFJFRS5RdWF0ZXJuaW9uID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcclxuICAgICAgICBjb24xLmdldFdvcmxkUXVhdGVybmlvbihjb24xUXVhdCk7XHJcbiAgICAgICAgY29uc3QgY29uMlF1YXQ6IFRIUkVFLlF1YXRlcm5pb24gPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xyXG4gICAgICAgIGNvbjIuZ2V0V29ybGRRdWF0ZXJuaW9uKGNvbjJRdWF0KTtcclxuICAgICAgICBjb25zdCBjb24xUXVhdFBhcmVudDogVEhSRUUuUXVhdGVybmlvbiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XHJcbiAgICAgICAgY29uMS5wYXJlbnQuZ2V0V29ybGRRdWF0ZXJuaW9uKGNvbjFRdWF0UGFyZW50KTtcclxuICAgICAgICBjb25zdCBjb24yUXVhdFBhcmVudDogVEhSRUUuUXVhdGVybmlvbiA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XHJcbiAgICAgICAgY29uMi5wYXJlbnQuZ2V0V29ybGRRdWF0ZXJuaW9uKGNvbjJRdWF0UGFyZW50KTtcclxuXHJcbiAgICAgICAgY29uc3Qgcm90YXRpb246IFRIUkVFLlF1YXRlcm5pb24gPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpLm11bHRpcGx5UXVhdGVybmlvbnMoXHJcbiAgICAgICAgICAgIGNvbjFRdWF0LmludmVydCgpLFxyXG4gICAgICAgICAgICBjb24yUXVhdFxyXG4gICAgICAgICkubXVsdGlwbHkoXHJcbiAgICAgICAgICAgIG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCkubXVsdGlwbHlRdWF0ZXJuaW9ucyhcclxuICAgICAgICAgICAgICAgIGNvbjFRdWF0UGFyZW50LFxyXG4gICAgICAgICAgICAgICAgY29uMVF1YXRQYXJlbnRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbjIucGFyZW50LnF1YXRlcm5pb24uY29weShyb3RhdGlvbik7XHJcbiAgICAgICAgLy8gVXBkYXRlIGJlY2F1c2UgdGhlIG1hdHJpeCBoYXMgYmVlbiB0ZW1wZXJlZCB3aXRoXHJcbiAgICAgICAgc2NlbmUudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIE1vdmUgdGhlIGNvbm5lY3RvcnMgdG93YXJkcyBlYWNob3RoZXJcclxuICAgICAgICBjb25zdCBjb24xUG9zOiBUSFJFRS5WZWN0b3IzID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcclxuICAgICAgICBjb24xLmdldFdvcmxkUG9zaXRpb24oY29uMVBvcyk7XHJcbiAgICAgICAgY29uc3QgY29uMlBvczogVEhSRUUuVmVjdG9yMyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XHJcbiAgICAgICAgY29uMi5nZXRXb3JsZFBvc2l0aW9uKGNvbjJQb3MpO1xyXG5cclxuICAgICAgICBjb25zdCBtb3ZlOiBUSFJFRS5WZWN0b3IzID0gY29uMVBvcy5zdWIoY29uMlBvcyk7XHJcbiAgICAgICAgY29uMi5wYXJlbnQucG9zaXRpb24ueCArPSBtb3ZlLng7XHJcbiAgICAgICAgY29uMi5wYXJlbnQucG9zaXRpb24ueSArPSBtb3ZlLnk7XHJcbiAgICAgICAgY29uMi5wYXJlbnQucG9zaXRpb24ueiArPSBtb3ZlLno7XHJcblxyXG4gICAgICAgIC8vIHJlc2V0IHBhcmVudCdzIG9iamVjdHMgcm90YXRpb24gYW5kIHBvc2l0aW9uXHJcbiAgICAgICAgcGFyZW50LnJvdGF0aW9uLmNvcHkobW90aGVyUm90YXRpb24pO1xyXG4gICAgICAgIHBhcmVudC5wb3NpdGlvbi5jb3B5KG1vdGhlclBvc2l0aW9uKTtcclxuXHJcbiAgICAgICAgc2NlbmUudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgY29ubmVjdGVkIGZsYWdcclxuICAgICAgICBjb24xWydjb25uZWN0ZWQnXSA9IHRydWU7XHJcbiAgICAgICAgY29uMlsnY29ubmVjdGVkJ10gPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=