@colijnit/configurator 1.0.16 → 1.0.18
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.
- package/app/builder.d.ts +53 -53
- package/app/components/answers/answer/answer.component.d.ts +11 -11
- package/app/components/answers/answers.component.d.ts +8 -8
- package/app/components/answers/answers.module.d.ts +2 -2
- package/app/components/selections/selections.component.d.ts +22 -22
- package/app/components/selections/selections.module.d.ts +2 -2
- package/app/components/shared/loader/loader.component.d.ts +2 -2
- package/app/components/shared/shared.module.d.ts +2 -2
- package/app/directives/visibility-observer-master.directive.d.ts +9 -9
- package/app/directives/visibility-observer.directive.d.ts +13 -13
- package/app/services/configurator.service.d.ts +22 -22
- package/app/services/image-cache.service.d.ts +10 -10
- package/app/services/locator.service.d.ts +4 -4
- package/bundles/colijnit-configurator.umd.js +2455 -2455
- package/bundles/colijnit-configurator.umd.js.map +1 -1
- package/bundles/colijnit-configurator.umd.min.js +2 -2
- package/bundles/colijnit-configurator.umd.min.js.map +1 -1
- package/colijnit-configurator.d.ts +10 -10
- package/colijnit-configurator.metadata.json +1 -1
- package/esm2015/app/builder.js +477 -477
- package/esm2015/app/components/answers/answer/answer.component.js +66 -61
- package/esm2015/app/components/answers/answers.component.js +40 -37
- package/esm2015/app/components/answers/answers.module.js +28 -28
- package/esm2015/app/components/selections/selections.component.js +128 -108
- package/esm2015/app/components/selections/selections.module.js +22 -22
- package/esm2015/app/components/shared/loader/loader.component.js +12 -12
- package/esm2015/app/components/shared/shared.module.js +20 -20
- package/esm2015/app/directives/visibility-observer-master.directive.js +50 -50
- package/esm2015/app/directives/visibility-observer.directive.js +56 -56
- package/esm2015/app/services/configurator.service.js +94 -94
- package/esm2015/app/services/image-cache.service.js +66 -66
- package/esm2015/app/services/locator.service.js +9 -9
- package/esm2015/colijnit-configurator.js +10 -10
- package/esm2015/helper/variation-helper.js +215 -215
- package/esm2015/model/material.js +10 -10
- package/esm2015/model/variation-settings.js +5 -5
- package/esm2015/model/variation.js +2 -2
- package/esm2015/public_api.js +6 -6
- package/esm2015/utils/asset.utils.js +73 -73
- package/esm2015/utils/file.utils.js +138 -138
- package/esm2015/utils/image.utils.js +51 -51
- package/esm2015/utils/object.utils.js +48 -48
- package/esm2015/utils/scene-utils.js +93 -93
- package/esm2015/utils/threed.utils.js +221 -221
- package/esm2015/utils/variation-utils.js +223 -223
- package/esm5/app/builder.js +591 -591
- package/esm5/app/components/answers/answer/answer.component.js +64 -64
- package/esm5/app/components/answers/answers.component.js +27 -27
- package/esm5/app/components/answers/answers.module.js +31 -31
- package/esm5/app/components/selections/selections.component.js +104 -104
- package/esm5/app/components/selections/selections.module.js +25 -25
- package/esm5/app/components/shared/loader/loader.component.js +15 -15
- package/esm5/app/components/shared/shared.module.js +23 -23
- package/esm5/app/directives/visibility-observer-master.directive.js +63 -63
- package/esm5/app/directives/visibility-observer.directive.js +58 -58
- package/esm5/app/services/configurator.service.js +160 -160
- package/esm5/app/services/image-cache.service.js +69 -69
- package/esm5/app/services/locator.service.js +12 -12
- package/esm5/colijnit-configurator.js +10 -10
- package/esm5/helper/variation-helper.js +267 -267
- package/esm5/model/material.js +12 -12
- package/esm5/model/variation-settings.js +7 -7
- package/esm5/model/variation.js +6 -6
- package/esm5/public_api.js +6 -6
- package/esm5/utils/asset.utils.js +105 -105
- package/esm5/utils/file.utils.js +150 -150
- package/esm5/utils/image.utils.js +55 -55
- package/esm5/utils/object.utils.js +55 -55
- package/esm5/utils/scene-utils.js +97 -97
- package/esm5/utils/threed.utils.js +278 -278
- package/esm5/utils/variation-utils.js +326 -326
- package/fesm2015/colijnit-configurator.js +2016 -1988
- package/fesm2015/colijnit-configurator.js.map +1 -1
- package/fesm5/colijnit-configurator.js +2457 -2457
- package/fesm5/colijnit-configurator.js.map +1 -1
- package/helper/variation-helper.d.ts +14 -14
- package/model/material.d.ts +17 -17
- package/model/variation-settings.d.ts +14 -14
- package/model/variation.d.ts +10 -10
- package/package.json +3 -2
- package/public_api.d.ts +6 -6
- package/utils/asset.utils.d.ts +13 -13
- package/utils/file.utils.d.ts +27 -27
- package/utils/image.utils.d.ts +8 -8
- package/utils/object.utils.d.ts +7 -7
- package/utils/scene-utils.d.ts +7 -7
- package/utils/threed.utils.d.ts +16 -16
- package/utils/variation-utils.d.ts +12 -12
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
import { __awaiter } 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
|
-
export class FurnitureMaterial extends Material {
|
|
7
|
-
}
|
|
8
|
-
export class AssetUtils {
|
|
9
|
-
static CreateMaterialFromAsset(asset) {
|
|
10
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
-
const material = new Material();
|
|
12
|
-
if (!asset) {
|
|
13
|
-
return material;
|
|
14
|
-
}
|
|
15
|
-
if (asset.settings) {
|
|
16
|
-
AssetUtils.setSettingsOfMaterial(material, asset.settings);
|
|
17
|
-
}
|
|
18
|
-
if (asset.texture) {
|
|
19
|
-
material.texture = yield ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);
|
|
20
|
-
material.texture.encoding = sRGBEncoding;
|
|
21
|
-
material.textureFilename = asset.textureFilename;
|
|
22
|
-
}
|
|
23
|
-
if (asset.normal) {
|
|
24
|
-
material.normal = yield ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);
|
|
25
|
-
material.normalFilename = asset.normalFilename;
|
|
26
|
-
// material.normal.anisotropy = 1;
|
|
27
|
-
// material.normal.repeat.set(1, 1);
|
|
28
|
-
// material.normal.flipY = false;
|
|
29
|
-
}
|
|
30
|
-
if (asset.ao) {
|
|
31
|
-
material.ao = yield ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);
|
|
32
|
-
material.aoFilename = asset.aoFilename;
|
|
33
|
-
}
|
|
34
|
-
if (asset.metalness) {
|
|
35
|
-
material.metalness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);
|
|
36
|
-
material.metalnessFilename = asset.metalnessFilename;
|
|
37
|
-
}
|
|
38
|
-
if (asset.roughness) {
|
|
39
|
-
material.roughness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);
|
|
40
|
-
material.roughnessFilename = asset.roughnessFilename;
|
|
41
|
-
}
|
|
42
|
-
return material;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
static setSettingsOfMaterial(material, settings) {
|
|
46
|
-
const shininess = parseFloat(settings['power']);
|
|
47
|
-
if (!isNaN(shininess)) {
|
|
48
|
-
material.shininess = shininess;
|
|
49
|
-
// material.roughness = 1 - (shininess / 100);
|
|
50
|
-
}
|
|
51
|
-
const level = parseFloat(settings['level']);
|
|
52
|
-
if (!isNaN(level)) {
|
|
53
|
-
material.specular = new THREE.Color(level, level, level);
|
|
54
|
-
}
|
|
55
|
-
const repeatObjectUsed = settings.hasOwnProperty('repeat');
|
|
56
|
-
const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);
|
|
57
|
-
if (!isNaN(repeatx)) {
|
|
58
|
-
material.repeatX = Math.max(1, repeatx);
|
|
59
|
-
}
|
|
60
|
-
const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);
|
|
61
|
-
if (!isNaN(repeaty)) {
|
|
62
|
-
material.repeatY = Math.max(1, repeaty);
|
|
63
|
-
}
|
|
64
|
-
const metalness = parseFloat(settings['metalness']);
|
|
65
|
-
if (!isNaN(metalness)) {
|
|
66
|
-
material.metalnessValue = Math.min(1, metalness);
|
|
67
|
-
}
|
|
68
|
-
const roughness = parseFloat(settings['roughness']);
|
|
69
|
-
if (!isNaN(roughness)) {
|
|
70
|
-
material.roughnessValue = Math.min(1, roughness);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
1
|
+
import { __awaiter } 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
|
+
export class FurnitureMaterial extends Material {
|
|
7
|
+
}
|
|
8
|
+
export class AssetUtils {
|
|
9
|
+
static CreateMaterialFromAsset(asset) {
|
|
10
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
+
const material = new Material();
|
|
12
|
+
if (!asset) {
|
|
13
|
+
return material;
|
|
14
|
+
}
|
|
15
|
+
if (asset.settings) {
|
|
16
|
+
AssetUtils.setSettingsOfMaterial(material, asset.settings);
|
|
17
|
+
}
|
|
18
|
+
if (asset.texture) {
|
|
19
|
+
material.texture = yield ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);
|
|
20
|
+
material.texture.encoding = sRGBEncoding;
|
|
21
|
+
material.textureFilename = asset.textureFilename;
|
|
22
|
+
}
|
|
23
|
+
if (asset.normal) {
|
|
24
|
+
material.normal = yield ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);
|
|
25
|
+
material.normalFilename = asset.normalFilename;
|
|
26
|
+
// material.normal.anisotropy = 1;
|
|
27
|
+
// material.normal.repeat.set(1, 1);
|
|
28
|
+
// material.normal.flipY = false;
|
|
29
|
+
}
|
|
30
|
+
if (asset.ao) {
|
|
31
|
+
material.ao = yield ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);
|
|
32
|
+
material.aoFilename = asset.aoFilename;
|
|
33
|
+
}
|
|
34
|
+
if (asset.metalness) {
|
|
35
|
+
material.metalness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);
|
|
36
|
+
material.metalnessFilename = asset.metalnessFilename;
|
|
37
|
+
}
|
|
38
|
+
if (asset.roughness) {
|
|
39
|
+
material.roughness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);
|
|
40
|
+
material.roughnessFilename = asset.roughnessFilename;
|
|
41
|
+
}
|
|
42
|
+
return material;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
static setSettingsOfMaterial(material, settings) {
|
|
46
|
+
const shininess = parseFloat(settings['power']);
|
|
47
|
+
if (!isNaN(shininess)) {
|
|
48
|
+
material.shininess = shininess;
|
|
49
|
+
// material.roughness = 1 - (shininess / 100);
|
|
50
|
+
}
|
|
51
|
+
const level = parseFloat(settings['level']);
|
|
52
|
+
if (!isNaN(level)) {
|
|
53
|
+
material.specular = new THREE.Color(level, level, level);
|
|
54
|
+
}
|
|
55
|
+
const repeatObjectUsed = settings.hasOwnProperty('repeat');
|
|
56
|
+
const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);
|
|
57
|
+
if (!isNaN(repeatx)) {
|
|
58
|
+
material.repeatX = Math.max(1, repeatx);
|
|
59
|
+
}
|
|
60
|
+
const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);
|
|
61
|
+
if (!isNaN(repeaty)) {
|
|
62
|
+
material.repeatY = Math.max(1, repeaty);
|
|
63
|
+
}
|
|
64
|
+
const metalness = parseFloat(settings['metalness']);
|
|
65
|
+
if (!isNaN(metalness)) {
|
|
66
|
+
material.metalnessValue = Math.min(1, metalness);
|
|
67
|
+
}
|
|
68
|
+
const roughness = parseFloat(settings['roughness']);
|
|
69
|
+
if (!isNaN(roughness)) {
|
|
70
|
+
material.roughnessValue = Math.min(1, roughness);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
74
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvYXNzZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHbkMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7Q0FROUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUVkLE1BQU0sQ0FBTyx1QkFBdUIsQ0FBQyxLQUF3Qjs7WUFDbEUsTUFBTSxRQUFRLEdBQXNCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsVUFBVSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO2dCQUV6QyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDbEQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxV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Q0FBQztTQUN6QztRQUVELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQixRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuaW1wb3J0IHtJbWFnZVV0aWxzfSBmcm9tICcuL2ltYWdlLnV0aWxzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7c1JHQkVuY29kaW5nfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3MnO1xuXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWF0ZXJpYWwgZXh0ZW5kcyBNYXRlcmlhbCB7XG5cbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG5vcm1hbEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgYW9GaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzc0ZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0VXRpbHMge1xuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgQ3JlYXRlTWF0ZXJpYWxGcm9tQXNzZXQoYXNzZXQ6IFZhcmlhdGlvblNldHRpbmdzKTogUHJvbWlzZTxNYXRlcmlhbD4ge1xuICAgIGNvbnN0IG1hdGVyaWFsOiBGdXJuaXR1cmVNYXRlcmlhbCA9IG5ldyBNYXRlcmlhbCgpO1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybiBtYXRlcmlhbDtcbiAgICB9XG4gICAgaWYgKGFzc2V0LnNldHRpbmdzKSB7XG4gICAgICBBc3NldFV0aWxzLnNldFNldHRpbmdzT2ZNYXRlcmlhbChtYXRlcmlhbCwgYXNzZXQuc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAoYXNzZXQudGV4dHVyZSkge1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZSA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX3RleHR1cmUnLCBhc3NldC50ZXh0dXJlLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC50ZXh0dXJlLmVuY29kaW5nID0gc1JHQkVuY29kaW5nO1xuXG4gICAgICBtYXRlcmlhbC50ZXh0dXJlRmlsZW5hbWUgPSBhc3NldC50ZXh0dXJlRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5ub3JtYWwpIHtcbiAgICAgIG1hdGVyaWFsLm5vcm1hbCA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX25vcm1hbCcsIGFzc2V0Lm5vcm1hbCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwubm9ybWFsRmlsZW5hbWUgPSBhc3NldC5ub3JtYWxGaWxlbmFtZTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5hbmlzb3Ryb3B5ID0gMTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5yZXBlYXQuc2V0KDEsIDEpO1xuICAgICAgLy8gbWF0ZXJpYWwubm9ybWFsLmZsaXBZID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhc3NldC5hbykge1xuICAgICAgbWF0ZXJpYWwuYW8gPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19hbycsIGFzc2V0LmFvLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5hb0ZpbGVuYW1lID0gYXNzZXQuYW9GaWxlbmFtZTtcbiAgICB9XG4gICAgaWYgKGFzc2V0Lm1ldGFsbmVzcykge1xuICAgICAgbWF0ZXJpYWwubWV0YWxuZXNzID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfbWV0YWxuZXNzJywgYXNzZXQubWV0YWxuZXNzLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NGaWxlbmFtZSA9IGFzc2V0Lm1ldGFsbmVzc0ZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQucm91Z2huZXNzKSB7XG4gICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19yb3VnaG5lc3MnLCBhc3NldC5yb3VnaG5lc3MsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLnJvdWdobmVzc0ZpbGVuYW1lID0gYXNzZXQucm91Z2huZXNzRmlsZW5hbWU7XG4gICAgfVxuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0U2V0dGluZ3NPZk1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCwgc2V0dGluZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNoaW5pbmVzcyA9IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3Bvd2VyJ10pO1xuICAgIGlmICghaXNOYU4oc2hpbmluZXNzKSkge1xuICAgICAgbWF0ZXJpYWwuc2hpbmluZXNzID0gc2hpbmluZXNzO1xuICAgICAgLy8gbWF0ZXJpYWwucm91Z2huZXNzID0gMSAtIChzaGluaW5lc3MgLyAxMDApO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVsID0gcGFyc2VGbG9hdChzZXR0aW5nc1snbGV2ZWwnXSk7XG4gICAgaWYgKCFpc05hTihsZXZlbCkpIHtcbiAgICAgIG1hdGVyaWFsLnNwZWN1bGFyID0gbmV3IFRIUkVFLkNvbG9yKGxldmVsLCBsZXZlbCwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdE9iamVjdFVzZWQ6IGJvb2xlYW4gPSBzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgncmVwZWF0Jyk7XG4gICAgY29uc3QgcmVwZWF0eCA9IHJlcGVhdE9iamVjdFVzZWQgPyBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXQnXVsncmVwZWF0eCddKSA6IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdHgnXSk7XG4gICAgaWYgKCFpc05hTihyZXBlYXR4KSkge1xuICAgICAgbWF0ZXJpYWwucmVwZWF0WCA9IE1hdGgubWF4KDEsIHJlcGVhdHgpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdHkgPSByZXBlYXRPYmplY3RVc2VkID8gcGFyc2VGbG9hdChzZXR0aW5nc1sncmVwZWF0J11bJ3JlcGVhdHknXSkgOiBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXR5J10pO1xuICAgIGlmICghaXNOYU4ocmVwZWF0eSkpIHtcbiAgICAgIG1hdGVyaWFsLnJlcGVhdFkgPSBNYXRoLm1heCgxLCByZXBlYXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhbG5lc3MgPSBwYXJzZUZsb2F0KHNldHRpbmdzWydtZXRhbG5lc3MnXSk7XG4gICAgaWYgKCFpc05hTihtZXRhbG5lc3MpKSB7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA9IE1hdGgubWluKDEsIG1ldGFsbmVzcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91Z2huZXNzID0gcGFyc2VGbG9hdChzZXR0aW5nc1sncm91Z2huZXNzJ10pO1xuICAgIGlmICghaXNOYU4ocm91Z2huZXNzKSkge1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPSBNYXRoLm1pbigxLCByb3VnaG5lc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
// Static utility functions holder related to files.
|
|
4
|
-
// @dynamic
|
|
5
|
-
export class FileUtils {
|
|
6
|
-
// Returns the given dataUri string stripped of the mimetype part.
|
|
7
|
-
static StripMimeStringFromDataUri(dataUri) {
|
|
8
|
-
if (!dataUri) {
|
|
9
|
-
return '';
|
|
10
|
-
}
|
|
11
|
-
const mimeString = this.GetMimeStringFromDataUri(dataUri);
|
|
12
|
-
return dataUri.substr(mimeString.length + 1);
|
|
13
|
-
}
|
|
14
|
-
static GetMimeStringFromDataUri(dataUri) {
|
|
15
|
-
if (!dataUri) {
|
|
16
|
-
return '';
|
|
17
|
-
}
|
|
18
|
-
return dataUri.split(',')[0];
|
|
19
|
-
}
|
|
20
|
-
static FileExists(url, assetPath) {
|
|
21
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const result = yield axios({
|
|
23
|
-
method: 'get',
|
|
24
|
-
url: `${assetPath}getFiles.php?assetUrl=${url}`,
|
|
25
|
-
responseType: "json"
|
|
26
|
-
});
|
|
27
|
-
return !!result.data;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* There is some discrepancy regarding locations of h3d objects
|
|
32
|
-
* Therefor we need to (temporarily?!) fix the content url
|
|
33
|
-
* Also we need to change some additionals
|
|
34
|
-
*/
|
|
35
|
-
static FixUrl(assetUrl) {
|
|
36
|
-
if (!assetUrl) {
|
|
37
|
-
return '';
|
|
38
|
-
}
|
|
39
|
-
let fixedUrl = assetUrl;
|
|
40
|
-
if (!fixedUrl.endsWith('glb') && !fixedUrl.endsWith('obj') && !fixedUrl.endsWith('glb.gz') && !fixedUrl.endsWith('obj.gz')) {
|
|
41
|
-
fixedUrl = FileUtils.FixUnityUrl(fixedUrl);
|
|
42
|
-
}
|
|
43
|
-
fixedUrl = fixedUrl.replace('/content/', '/content43/');
|
|
44
|
-
return fixedUrl;
|
|
45
|
-
}
|
|
46
|
-
static FixGlbUrl(assetUrl) {
|
|
47
|
-
if (!assetUrl) {
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
let fixedUrl = assetUrl;
|
|
51
|
-
if (assetUrl.indexOf('_webplayer') === -1) {
|
|
52
|
-
fixedUrl = assetUrl.concat('_webplayer');
|
|
53
|
-
}
|
|
54
|
-
fixedUrl = fixedUrl.replace('/content/', '/content43/');
|
|
55
|
-
if (!fixedUrl.endsWith('.glb')) {
|
|
56
|
-
fixedUrl = fixedUrl.concat('.glb');
|
|
57
|
-
}
|
|
58
|
-
return fixedUrl;
|
|
59
|
-
}
|
|
60
|
-
// Return the mimetype of the given filename.
|
|
61
|
-
static MimeTypeFromFilename(fileName) {
|
|
62
|
-
const regEx = /(?:\.([^.]+))?$/; // regex to find extension
|
|
63
|
-
const extension = regEx.exec(fileName)[1];
|
|
64
|
-
switch (extension) {
|
|
65
|
-
case 'jpg':
|
|
66
|
-
case 'jpeg':
|
|
67
|
-
return 'image/jpeg';
|
|
68
|
-
case 'png':
|
|
69
|
-
return 'image/png';
|
|
70
|
-
case 'bmp':
|
|
71
|
-
return 'image/bmp';
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Downloads the given file to the users default download location.
|
|
76
|
-
* @param fileName With or without extension
|
|
77
|
-
* @param content File content as a string
|
|
78
|
-
* @param [mimeType = 'text/plain']
|
|
79
|
-
*/
|
|
80
|
-
static DownloadFile(fileName, content, mimeType = 'text/plain') {
|
|
81
|
-
const element = document.createElement('a');
|
|
82
|
-
element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(content));
|
|
83
|
-
element.setAttribute('download', fileName);
|
|
84
|
-
element.style.display = 'none';
|
|
85
|
-
document.body.appendChild(element);
|
|
86
|
-
element.click();
|
|
87
|
-
document.body.removeChild(element);
|
|
88
|
-
}
|
|
89
|
-
// Returns the contents of given file as a text string.
|
|
90
|
-
static ReadAsText(file) {
|
|
91
|
-
return new Promise((resolve) => {
|
|
92
|
-
const reader = new FileReader();
|
|
93
|
-
reader.readAsText(file);
|
|
94
|
-
reader.onloadend = (event) => {
|
|
95
|
-
if (event.target.readyState === 2) {
|
|
96
|
-
resolve(event.target.result);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
static GetExtensionFromDataUri(dataUri) {
|
|
102
|
-
return dataUri.replace(/(data:image\/)(.*?)(;base64.*)/gi, '$2');
|
|
103
|
-
}
|
|
104
|
-
static CreateDownloadFileNameFromBase64(dataUri) {
|
|
105
|
-
const ext = this.GetExtensionFromDataUri(dataUri);
|
|
106
|
-
return 'preview.' + ext;
|
|
107
|
-
}
|
|
108
|
-
static DownloadFromDataUri(dataUri, fileName) {
|
|
109
|
-
const link = document.createElement('a');
|
|
110
|
-
link.download = fileName;
|
|
111
|
-
link.href = dataUri;
|
|
112
|
-
document.body.appendChild(link);
|
|
113
|
-
link.click();
|
|
114
|
-
document.body.removeChild(link);
|
|
115
|
-
}
|
|
116
|
-
// todo remove once Connector deals with mimetypes and this method isn't used anymore
|
|
117
|
-
static DocumentBodyToDataUri(documentBody, mimeType) {
|
|
118
|
-
if (!!documentBody) {
|
|
119
|
-
return 'data:' + mimeType + ';base64,' + documentBody;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
return '';
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
static FixUnityUrl(url) {
|
|
126
|
-
if (url.indexOf('_webplayer') === -1) {
|
|
127
|
-
url = url.concat('_webplayer.ione3d');
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
url = url.replace('_webplayer', '_webplayer.ione3d');
|
|
131
|
-
}
|
|
132
|
-
if (!url.endsWith('.gz')) {
|
|
133
|
-
url = url.concat('.gz');
|
|
134
|
-
}
|
|
135
|
-
return url.replace('.unity3d', '');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
FileUtils._cachedTextureUploads = new Map();
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
// Static utility functions holder related to files.
|
|
4
|
+
// @dynamic
|
|
5
|
+
export class FileUtils {
|
|
6
|
+
// Returns the given dataUri string stripped of the mimetype part.
|
|
7
|
+
static StripMimeStringFromDataUri(dataUri) {
|
|
8
|
+
if (!dataUri) {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
const mimeString = this.GetMimeStringFromDataUri(dataUri);
|
|
12
|
+
return dataUri.substr(mimeString.length + 1);
|
|
13
|
+
}
|
|
14
|
+
static GetMimeStringFromDataUri(dataUri) {
|
|
15
|
+
if (!dataUri) {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
return dataUri.split(',')[0];
|
|
19
|
+
}
|
|
20
|
+
static FileExists(url, assetPath) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const result = yield axios({
|
|
23
|
+
method: 'get',
|
|
24
|
+
url: `${assetPath}getFiles.php?assetUrl=${url}`,
|
|
25
|
+
responseType: "json"
|
|
26
|
+
});
|
|
27
|
+
return !!result.data;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* There is some discrepancy regarding locations of h3d objects
|
|
32
|
+
* Therefor we need to (temporarily?!) fix the content url
|
|
33
|
+
* Also we need to change some additionals
|
|
34
|
+
*/
|
|
35
|
+
static FixUrl(assetUrl) {
|
|
36
|
+
if (!assetUrl) {
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
let fixedUrl = assetUrl;
|
|
40
|
+
if (!fixedUrl.endsWith('glb') && !fixedUrl.endsWith('obj') && !fixedUrl.endsWith('glb.gz') && !fixedUrl.endsWith('obj.gz')) {
|
|
41
|
+
fixedUrl = FileUtils.FixUnityUrl(fixedUrl);
|
|
42
|
+
}
|
|
43
|
+
fixedUrl = fixedUrl.replace('/content/', '/content43/');
|
|
44
|
+
return fixedUrl;
|
|
45
|
+
}
|
|
46
|
+
static FixGlbUrl(assetUrl) {
|
|
47
|
+
if (!assetUrl) {
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
50
|
+
let fixedUrl = assetUrl;
|
|
51
|
+
if (assetUrl.indexOf('_webplayer') === -1) {
|
|
52
|
+
fixedUrl = assetUrl.concat('_webplayer');
|
|
53
|
+
}
|
|
54
|
+
fixedUrl = fixedUrl.replace('/content/', '/content43/');
|
|
55
|
+
if (!fixedUrl.endsWith('.glb')) {
|
|
56
|
+
fixedUrl = fixedUrl.concat('.glb');
|
|
57
|
+
}
|
|
58
|
+
return fixedUrl;
|
|
59
|
+
}
|
|
60
|
+
// Return the mimetype of the given filename.
|
|
61
|
+
static MimeTypeFromFilename(fileName) {
|
|
62
|
+
const regEx = /(?:\.([^.]+))?$/; // regex to find extension
|
|
63
|
+
const extension = regEx.exec(fileName)[1];
|
|
64
|
+
switch (extension) {
|
|
65
|
+
case 'jpg':
|
|
66
|
+
case 'jpeg':
|
|
67
|
+
return 'image/jpeg';
|
|
68
|
+
case 'png':
|
|
69
|
+
return 'image/png';
|
|
70
|
+
case 'bmp':
|
|
71
|
+
return 'image/bmp';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Downloads the given file to the users default download location.
|
|
76
|
+
* @param fileName With or without extension
|
|
77
|
+
* @param content File content as a string
|
|
78
|
+
* @param [mimeType = 'text/plain']
|
|
79
|
+
*/
|
|
80
|
+
static DownloadFile(fileName, content, mimeType = 'text/plain') {
|
|
81
|
+
const element = document.createElement('a');
|
|
82
|
+
element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(content));
|
|
83
|
+
element.setAttribute('download', fileName);
|
|
84
|
+
element.style.display = 'none';
|
|
85
|
+
document.body.appendChild(element);
|
|
86
|
+
element.click();
|
|
87
|
+
document.body.removeChild(element);
|
|
88
|
+
}
|
|
89
|
+
// Returns the contents of given file as a text string.
|
|
90
|
+
static ReadAsText(file) {
|
|
91
|
+
return new Promise((resolve) => {
|
|
92
|
+
const reader = new FileReader();
|
|
93
|
+
reader.readAsText(file);
|
|
94
|
+
reader.onloadend = (event) => {
|
|
95
|
+
if (event.target.readyState === 2) {
|
|
96
|
+
resolve(event.target.result);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
static GetExtensionFromDataUri(dataUri) {
|
|
102
|
+
return dataUri.replace(/(data:image\/)(.*?)(;base64.*)/gi, '$2');
|
|
103
|
+
}
|
|
104
|
+
static CreateDownloadFileNameFromBase64(dataUri) {
|
|
105
|
+
const ext = this.GetExtensionFromDataUri(dataUri);
|
|
106
|
+
return 'preview.' + ext;
|
|
107
|
+
}
|
|
108
|
+
static DownloadFromDataUri(dataUri, fileName) {
|
|
109
|
+
const link = document.createElement('a');
|
|
110
|
+
link.download = fileName;
|
|
111
|
+
link.href = dataUri;
|
|
112
|
+
document.body.appendChild(link);
|
|
113
|
+
link.click();
|
|
114
|
+
document.body.removeChild(link);
|
|
115
|
+
}
|
|
116
|
+
// todo remove once Connector deals with mimetypes and this method isn't used anymore
|
|
117
|
+
static DocumentBodyToDataUri(documentBody, mimeType) {
|
|
118
|
+
if (!!documentBody) {
|
|
119
|
+
return 'data:' + mimeType + ';base64,' + documentBody;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return '';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
static FixUnityUrl(url) {
|
|
126
|
+
if (url.indexOf('_webplayer') === -1) {
|
|
127
|
+
url = url.concat('_webplayer.ione3d');
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
url = url.replace('_webplayer', '_webplayer.ione3d');
|
|
131
|
+
}
|
|
132
|
+
if (!url.endsWith('.gz')) {
|
|
133
|
+
url = url.concat('.gz');
|
|
134
|
+
}
|
|
135
|
+
return url.replace('.unity3d', '');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
FileUtils._cachedTextureUploads = new Map();
|
|
139
139
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJ1dGlscy9maWxlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsb0RBQW9EO0FBQ3BELFdBQVc7QUFDWCxNQUFNLE9BQU8sU0FBUztJQUlwQixrRUFBa0U7SUFDM0QsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE9BQWU7UUFDdEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFlO1FBQ3BELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQU8sVUFBVSxDQUFDLEdBQVcsRUFBRSxTQUFpQjs7WUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUM7Z0JBQ3pCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLEdBQUcsRUFBRSxHQUFHLFNBQVMseUJBQXlCLEdBQUcsRUFBRTtnQkFDL0MsWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixDQUFDO0tBQUE7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFnQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxF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U0FDWDtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDNUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O0FBckpjLCtCQUFxQixHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuLy8gU3RhdGljIHV0aWxpdHkgZnVuY3Rpb25zIGhvbGRlciByZWxhdGVkIHRvIGZpbGVzLlxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBGaWxlVXRpbHMge1xuXG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWRUZXh0dXJlVXBsb2FkczogTWFwPHN0cmluZywgT2JqZWN0PiA9IG5ldyBNYXAoKTtcblxuICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBkYXRhVXJpIHN0cmluZyBzdHJpcHBlZCBvZiB0aGUgbWltZXR5cGUgcGFydC5cbiAgcHVibGljIHN0YXRpYyBTdHJpcE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGF0YVVyaSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG1pbWVTdHJpbmc6IHN0cmluZyA9IHRoaXMuR2V0TWltZVN0cmluZ0Zyb21EYXRhVXJpKGRhdGFVcmkpO1xuICAgIHJldHVybiBkYXRhVXJpLnN1YnN0cihtaW1lU3RyaW5nLmxlbmd0aCArIDEpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXRNaW1lU3RyaW5nRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGFVcmkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVVyaS5zcGxpdCgnLCcpWzBdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBGaWxlRXhpc3RzKHVybDogc3RyaW5nLCBhc3NldFBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICB1cmw6IGAke2Fzc2V0UGF0aH1nZXRGaWxlcy5waHA/YXNzZXRVcmw9JHt1cmx9YCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBcImpzb25cIlxuICAgICAgfSlcbiAgICAgIHJldHVybiAhIXJlc3VsdC5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZXJlIGlzIHNvbWUgZGlzY3JlcGFuY3kgcmVnYXJkaW5nIGxvY2F0aW9ucyBvZiBoM2Qgb2JqZWN0c1xuICAgKiBUaGVyZWZvciB3ZSBuZWVkIHRvICh0ZW1wb3JhcmlseT8hKSBmaXggdGhlIGNvbnRlbnQgdXJsXG4gICAqIEFsc28gd2UgbmVlZCB0byBjaGFuZ2Ugc29tZSBhZGRpdGlvbmFsc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGaXhVcmwoYXNzZXRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFhc3NldFVybCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBsZXQgZml4ZWRVcmw6IHN0cmluZyA9IGFzc2V0VXJsO1xuICAgIGlmICghZml4ZWRVcmwuZW5kc1dpdGgoJ2dsYicpICYmICFmaXhlZFVybC5lbmRzV2l0aCgnb2JqJykgJiYgIWZpeGVkVXJsLmVuZHNXaXRoKCdnbGIuZ3onKSAmJiAhZml4ZWRVcmwuZW5kc1dpdGgoJ29iai5neicpKSB7XG4gICAgICBmaXhlZFVybCA9IEZpbGVVdGlscy5GaXhVbml0eVVybChmaXhlZFVybCk7XG4gICAgfVxuICAgIGZpeGVkVXJsID0gZml4ZWRVcmwucmVwbGFjZSgnL2NvbnRlbnQvJywgJy9jb250ZW50NDMvJyk7XG4gICAgcmV0dXJuIGZpeGVkVXJsO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBGaXhHbGJVcmwoYXNzZXRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFhc3NldFVybCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBsZXQgZml4ZWRVcmw6IHN0cmluZyA9IGFzc2V0VXJsO1xuICAgIGlmIChhc3NldFVybC5pbmRleE9mKCdfd2VicGxheWVyJykgPT09IC0xKSB7XG4gICAgICBmaXhlZFVybCA9IGFzc2V0VXJsLmNvbmNhdCgnX3dlYnBsYXllcicpO1xuICAgIH1cbiAgICBmaXhlZFVybCA9IGZpeGVkVXJsLnJlcGxhY2UoJy9jb250ZW50LycsICcvY29udGVudDQzLycpO1xuICAgIGlmICghZml4ZWRVcmwuZW5kc1dpdGgoJy5nbGInKSkge1xuICAgICAgZml4ZWRVcmwgPSBmaXhlZFVybC5jb25jYXQoJy5nbGInKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpeGVkVXJsO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSBtaW1ldHlwZSBvZiB0aGUgZ2l2ZW4gZmlsZW5hbWUuXG4gIHB1YmxpYyBzdGF0aWMgTWltZVR5cGVGcm9tRmlsZW5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVnRXg6IFJlZ0V4cCA9IC8oPzpcXC4oW14uXSspKT8kLzsgLy8gcmVnZXggdG8gZmluZCBleHRlbnNpb25cbiAgICBjb25zdCBleHRlbnNpb246IGFueSA9IHJlZ0V4LmV4ZWMoZmlsZU5hbWUpWzFdO1xuICAgIHN3aXRjaCAoZXh0ZW5zaW9uKSB7XG4gICAgICBjYXNlICdqcGcnOlxuICAgICAgY2FzZSAnanBlZyc6XG4gICAgICAgIHJldHVybiAnaW1hZ2UvanBlZyc7XG4gICAgICBjYXNlICdwbmcnOlxuICAgICAgICByZXR1cm4gJ2ltYWdlL3BuZyc7XG4gICAgICBjYXNlICdibXAnOlxuICAgICAgICByZXR1cm4gJ2ltYWdlL2JtcCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkcyB0aGUgZ2l2ZW4gZmlsZSB0byB0aGUgdXNlcnMgZGVmYXVsdCBkb3dubG9hZCBsb2NhdGlvbi5cbiAgICogQHBhcmFtIGZpbGVOYW1lIFdpdGggb3Igd2l0aG91dCBleHRlbnNpb25cbiAgICogQHBhcmFtIGNvbnRlbnQgRmlsZSBjb250ZW50IGFzIGEgc3RyaW5nXG4gICAqIEBwYXJhbSBbbWltZVR5cGUgPSAndGV4dC9wbGFpbiddXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERvd25sb2FkRmlsZShcbiAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBtaW1lVHlwZTogc3RyaW5nID0gJ3RleHQvcGxhaW4nXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6JyArIG1pbWVUeXBlICsgJztjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoY29udGVudCkpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcblxuICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuXG4gICAgZWxlbWVudC5jbGljaygpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGdpdmVuIGZpbGUgYXMgYSB0ZXh0IHN0cmluZy5cbiAgcHVibGljIHN0YXRpYyBSZWFkQXNUZXh0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PT0gMikge1xuICAgICAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIEdldEV4dGVuc2lvbkZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGFVcmkucmVwbGFjZSgvKGRhdGE6aW1hZ2VcXC8pKC4qPykoO2Jhc2U2NC4qKS9naSwgJyQyJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENyZWF0ZURvd25sb2FkRmlsZU5hbWVGcm9tQmFzZTY0KGRhdGFVcmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSB0aGlzLkdldEV4dGVuc2lvbkZyb21EYXRhVXJpKGRhdGFVcmkpO1xuICAgIHJldHVybiAncHJldmlldy4nICsgZXh0O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEb3dubG9hZEZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgbGluay5ocmVmID0gZGF0YVVyaTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICB9XG5cbiAgLy8gdG9kbyByZW1vdmUgb25jZSBDb25uZWN0b3IgZGVhbHMgd2l0aCBtaW1ldHlwZXMgYW5kIHRoaXMgbWV0aG9kIGlzbid0IHVzZWQgYW55bW9yZVxuICBwdWJsaWMgc3RhdGljIERvY3VtZW50Qm9keVRvRGF0YVVyaShkb2N1bWVudEJvZHk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCEhZG9jdW1lbnRCb2R5KSB7XG4gICAgICByZXR1cm4gJ2RhdGE6JyArIG1pbWVUeXBlICsgJztiYXNlNjQsJyArIGRvY3VtZW50Qm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIEZpeFVuaXR5VXJsKHVybCk6IHN0cmluZyB7XG4gICAgaWYgKHVybC5pbmRleE9mKCdfd2VicGxheWVyJykgPT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuY29uY2F0KCdfd2VicGxheWVyLmlvbmUzZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSB1cmwucmVwbGFjZSgnX3dlYnBsYXllcicsICdfd2VicGxheWVyLmlvbmUzZCcpO1xuICAgIH1cbiAgICBpZiAoIXVybC5lbmRzV2l0aCgnLmd6JykpIHtcbiAgICAgIHVybCA9IHVybC5jb25jYXQoJy5neicpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoJy51bml0eTNkJywgJycpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
// @dynamic
|
|
3
|
-
export class ImageUtils {
|
|
4
|
-
static CreateTextureFromBase64(id, base64, material) {
|
|
5
|
-
return new Promise((resolve) => {
|
|
6
|
-
if (ImageUtils.textures.has(id)) {
|
|
7
|
-
resolve(ImageUtils.textures.get(id));
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
if (!base64) {
|
|
11
|
-
resolve(new THREE.Texture());
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
const loader = new THREE.TextureLoader();
|
|
15
|
-
loader.load(base64, (texture) => {
|
|
16
|
-
texture.anisotropy = 16;
|
|
17
|
-
texture.wrapS = THREE.RepeatWrapping;
|
|
18
|
-
texture.wrapT = THREE.RepeatWrapping;
|
|
19
|
-
texture.repeat = new THREE.Vector2(material ? material.repeatX : 1, material ? material.repeatY : 1);
|
|
20
|
-
texture.needsUpdate = true;
|
|
21
|
-
ImageUtils.textures.set(id, texture);
|
|
22
|
-
resolve(texture);
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
static getDocBodyWithMimeTypeDefinition(fileName, documentBody) {
|
|
29
|
-
if (documentBody === null) {
|
|
30
|
-
return documentBody;
|
|
31
|
-
}
|
|
32
|
-
const fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1);
|
|
33
|
-
switch (fileExtension.toLowerCase()) {
|
|
34
|
-
case "jpg":
|
|
35
|
-
case "jpeg":
|
|
36
|
-
return "data:image/jpg;base64," + documentBody;
|
|
37
|
-
case "png":
|
|
38
|
-
return "data:image/png;base64," + documentBody;
|
|
39
|
-
case "gif":
|
|
40
|
-
return "data:image/gif;base64," + documentBody;
|
|
41
|
-
case "bmp":
|
|
42
|
-
return "data:image/bmp;base64," + documentBody;
|
|
43
|
-
default:
|
|
44
|
-
return "data:image/png;base64," + documentBody;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
static getFixedImageFilepathUrl(imageFilepathUrl) {
|
|
48
|
-
return imageFilepathUrl.replace("/content/", "/content43/");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
ImageUtils.textures = new Map();
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
// @dynamic
|
|
3
|
+
export class ImageUtils {
|
|
4
|
+
static CreateTextureFromBase64(id, base64, material) {
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
if (ImageUtils.textures.has(id)) {
|
|
7
|
+
resolve(ImageUtils.textures.get(id));
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
if (!base64) {
|
|
11
|
+
resolve(new THREE.Texture());
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const loader = new THREE.TextureLoader();
|
|
15
|
+
loader.load(base64, (texture) => {
|
|
16
|
+
texture.anisotropy = 16;
|
|
17
|
+
texture.wrapS = THREE.RepeatWrapping;
|
|
18
|
+
texture.wrapT = THREE.RepeatWrapping;
|
|
19
|
+
texture.repeat = new THREE.Vector2(material ? material.repeatX : 1, material ? material.repeatY : 1);
|
|
20
|
+
texture.needsUpdate = true;
|
|
21
|
+
ImageUtils.textures.set(id, texture);
|
|
22
|
+
resolve(texture);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
static getDocBodyWithMimeTypeDefinition(fileName, documentBody) {
|
|
29
|
+
if (documentBody === null) {
|
|
30
|
+
return documentBody;
|
|
31
|
+
}
|
|
32
|
+
const fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1);
|
|
33
|
+
switch (fileExtension.toLowerCase()) {
|
|
34
|
+
case "jpg":
|
|
35
|
+
case "jpeg":
|
|
36
|
+
return "data:image/jpg;base64," + documentBody;
|
|
37
|
+
case "png":
|
|
38
|
+
return "data:image/png;base64," + documentBody;
|
|
39
|
+
case "gif":
|
|
40
|
+
return "data:image/gif;base64," + documentBody;
|
|
41
|
+
case "bmp":
|
|
42
|
+
return "data:image/bmp;base64," + documentBody;
|
|
43
|
+
default:
|
|
44
|
+
return "data:image/png;base64," + documentBody;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static getFixedImageFilepathUrl(imageFilepathUrl) {
|
|
48
|
+
return imageFilepathUrl.replace("/content/", "/content43/");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ImageUtils.textures = new Map();
|
|
52
52
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvaW1hZ2UudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsV0FBVztBQUNYLE1BQU0sT0FBTyxVQUFVO0lBSWQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQVUsRUFBRSxNQUFjLEVBQUUsUUFBa0I7UUFDbEYsT0FBTyxJQUFJLE9BQU8sQ0FBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM1QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMvQixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNYLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUM5QjtxQkFBTTtvQkFDTCxNQUFNLE1BQU0sR0FBd0IsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBc0IsRUFBRSxFQUFFO3dCQUM3QyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO3dCQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO3dCQUMzQixVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxRQUFnQixFQUFFLFlBQW9CO1FBQ25GLElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtZQUN6QixPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELE1BQU0sYUFBYSxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RSxRQUFRLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNuQyxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztZQUNqRCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyx3QkFBd0IsR0FBRyxZQUFZLENBQUM7WUFDakQsS0FBSyxLQUFLO2dCQUNSLE9BQU8sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO1lBQ2pELEtBQUssS0FBSztnQkFDUixPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztZQUNqRDtnQkFDRSxPQUFPLHdCQUF3QixHQUFHLFlBQVksQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsd0JBQXdCLENBQUMsZ0JBQXdCO1FBQzdELE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQS9DYSxtQkFBUSxHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBJbWFnZVV0aWxzIHtcblxuICBwdWJsaWMgc3RhdGljIHRleHR1cmVzOiBNYXA8c3RyaW5nLCBUSFJFRS5UZXh0dXJlPiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgc3RhdGljIENyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGlkOiBzdHJpbmcsIGJhc2U2NDogc3RyaW5nLCBtYXRlcmlhbDogTWF0ZXJpYWwpOiBQcm9taXNlPFRIUkVFLlRleHR1cmU+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VEhSRUUuVGV4dHVyZT4oKHJlc29sdmUpID0+IHtcbiAgICAgIGlmIChJbWFnZVV0aWxzLnRleHR1cmVzLmhhcyhpZCkpIHtcbiAgICAgICAgcmVzb2x2ZShJbWFnZVV0aWxzLnRleHR1cmVzLmdldChpZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFiYXNlNjQpIHtcbiAgICAgICAgICByZXNvbHZlKG5ldyBUSFJFRS5UZXh0dXJlKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGxvYWRlcjogVEhSRUUuVGV4dHVyZUxvYWRlciA9IG5ldyBUSFJFRS5UZXh0dXJlTG9hZGVyKCk7XG4gICAgICAgICAgbG9hZGVyLmxvYWQoYmFzZTY0LCAodGV4dHVyZTogVEhSRUUuVGV4dHVyZSkgPT4ge1xuICAgICAgICAgICAgdGV4dHVyZS5hbmlzb3Ryb3B5ID0gMTY7XG4gICAgICAgICAgICB0ZXh0dXJlLndyYXBTID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7XG4gICAgICAgICAgICB0ZXh0dXJlLndyYXBUID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7XG4gICAgICAgICAgICB0ZXh0dXJlLnJlcGVhdCA9IG5ldyBUSFJFRS5WZWN0b3IyKG1hdGVyaWFsID8gbWF0ZXJpYWwucmVwZWF0WCA6IDEsIG1hdGVyaWFsID8gbWF0ZXJpYWwucmVwZWF0WSA6IDEpO1xuICAgICAgICAgICAgdGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICBJbWFnZVV0aWxzLnRleHR1cmVzLnNldChpZCwgdGV4dHVyZSk7XG4gICAgICAgICAgICByZXNvbHZlKHRleHR1cmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERvY0JvZHlXaXRoTWltZVR5cGVEZWZpbml0aW9uKGZpbGVOYW1lOiBzdHJpbmcsIGRvY3VtZW50Qm9keTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZG9jdW1lbnRCb2R5ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnRCb2R5O1xuICAgIH1cbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuICAgIHN3aXRjaCAoZmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwianBnXCI6XG4gICAgICBjYXNlIFwianBlZ1wiOlxuICAgICAgICByZXR1cm4gXCJkYXRhOmltYWdlL2pwZztiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHk7XG4gICAgICBjYXNlIFwicG5nXCI6XG4gICAgICAgIHJldHVybiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxcIiArIGRvY3VtZW50Qm9keTtcbiAgICAgIGNhc2UgXCJnaWZcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFwiICsgZG9jdW1lbnRCb2R5O1xuICAgICAgY2FzZSBcImJtcFwiOlxuICAgICAgICByZXR1cm4gXCJkYXRhOmltYWdlL2JtcDtiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGaXhlZEltYWdlRmlsZXBhdGhVcmwoaW1hZ2VGaWxlcGF0aFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW1hZ2VGaWxlcGF0aFVybC5yZXBsYWNlKFwiL2NvbnRlbnQvXCIsIFwiL2NvbnRlbnQ0My9cIik7XG4gIH1cbn1cbiJdfQ==
|