@colijnit/configurator 259.1.2 → 259.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"colijnit-configurator.umd.js","sources":["../../node_modules/tslib/tslib.es6.mjs","../../src/utils/object.utils.ts","../../src/utils/threed.utils.ts","../../src/utils/scene-utils.ts","../../src/model/variation-settings.ts","../../src/model/material.ts","../../src/utils/image.utils.ts","../../src/utils/asset.utils.ts","../../src/model/variation.ts","../../src/utils/variation-utils.ts","../../src/helper/variation-helper.ts","../../src/app/services/configurator.service.ts","../../src/app/utils/object.utils.ts","../../src/app/builder.ts","../../src/app/components/answers/answers.component.ts","../../src/app/components/answers/answer/answer.component.ts","../../src/app/directives/visibility-observer-master.directive.ts","../../src/app/directives/visibility-observer.directive.ts","../../src/app/components/shared/loader/loader.component.ts","../../src/app/components/shared/shared.module.ts","../../src/app/components/answers/answers.module.ts","../../src/app/components/selections/selections.component.ts","../../src/app/components/selections/selections.module.ts","../../src/colijnit-configurator.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import {Material, Mesh, Object3D} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose();\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose();\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n this.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import * as THREE from \"three\";\nimport {ObjectUtils} from \"./object.utils\";\nimport {FileUtils} from \"./file.utils\";\n\nexport class ThreedUtils {\n\n private _objectCache: Map<string, THREE.Object3D> = new Map();\n\n public clearCache(): void {\n const objs: THREE.Object3D[] = Array.from(this._objectCache.values());\n objs.forEach(o => ObjectUtils.DisposeObject(o));\n this._objectCache.clear();\n }\n\n public download3DSource(fileName: string, assetPath: string): Promise<THREE.Object3D> {\n return new Promise(async (resolve: Function, reject: Function) => {\n fileName = fileName.replace('.unity3d', '');\n let lookupFileName: string = fileName + (fileName.indexOf('.glb') < 0 ? '.glb' : '');\n if (this._objectCache.has(lookupFileName)) {\n resolve(this._objectCache.get(lookupFileName));\n return;\n }\n this.loadGlbSource(lookupFileName)\n .then((obj: THREE.Object3D) => {\n this._objectCache.set(lookupFileName, obj);\n resolve(obj);\n })\n .catch(() => {\n reject(`GLB source not found! (${lookupFileName})`);\n });\n });\n }\n\n public readFileAsText(file: File): Promise<string> {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onload = (e: any) => resolve(e.target.result);\n fileReader.onerror = error => reject(error);\n fileReader.readAsText(file);\n });\n }\n\n public async loadJsonModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const json: string = await this._readJsonFile(filePath);\n const loader = new THREE.ObjectLoader();\n loader.crossOrigin = 'Anonymous';\n return new Promise((resolve, reject) => {\n try {\n const obj = loader.parse(json);\n this._objectCache.set(filePath, obj);\n resolve(obj);\n } catch (e) {\n reject(null);\n }\n });\n }\n\n public async loadJsonObjectModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const loader = new THREE.ObjectLoader();\n loader.setCrossOrigin('Anonymous');\n loader.setResourcePath('');\n return new Promise((resolve, reject) => {\n loader.load(filePath,\n (object: any) => {\n const obj: THREE.Object3D = (object.type === 'Scene' && object.children[0].type === 'Object3D') ? object.children[0] : object;\n this._objectCache.set(filePath, obj);\n resolve(obj as THREE.Object3D);\n },\n xhr => null,\n error => reject(error)\n );\n });\n }\n\n public async loadGlbModel(file: string, cleanUp: boolean = true): Promise<THREE.Object3D> {\n if (this._objectCache.has(file)) {\n return Promise.resolve(this._objectCache.get(file));\n }\n if (!window.hasOwnProperty('loadGLTF')) {\n console.error('loadGLTF not defined in window global');\n return null;\n }\n // const loader = new GLTFLoader();\n const obj: THREE.Object3D = await (window as any).loadGLTF(file);\n if (obj) {\n this._cleanedUpObjects(obj, cleanUp);\n this._objectCache.set(file, obj);\n return obj;\n } else {\n return null;\n }\n }\n\n public async loadGlbSource(file: string): Promise<THREE.Object3D> {\n const obj = await this.loadGlbModel(file, false);\n if (obj) {\n obj.children = obj.children.filter(c => !(c instanceof THREE.Camera));\n obj.children.sort((a, b) => a['name'] < b['name'] ? 1 : -1);\n obj.children.forEach((c: THREE.Object3D) => {\n c.traverse((t: THREE.Object3D) => {\n t.visible = !t.name.toLowerCase().startsWith('c_');\n });\n c.visible = false;\n });\n if (obj.children.length === 1 && obj.children[0] instanceof THREE.Group) { // flatten children\n const children: any = obj.children[0].children.slice();\n const name: string = obj.children[0].name;\n obj.children.length = 0;\n const parent: THREE.Object3D = new THREE.Object3D();\n parent.name = name;\n parent.children = children;\n obj.add(parent);\n }\n }\n return obj;\n }\n\n public async textureFromUrl(url: string): Promise<any> {\n // url = this._includeBaseUrl(url);\n return new Promise((resolve, reject) => {\n const textureLoader = new THREE.TextureLoader();\n // textureLoader.setBaseU(this._settingsService.settings.assetPath);\n textureLoader.load(url,\n (texture: THREE.Texture) => {\n texture.wrapT = THREE.RepeatWrapping;\n texture.wrapS = THREE.RepeatWrapping;\n texture.repeat.set(1, 1);\n texture.needsUpdate = true;\n return resolve(texture);\n },\n null,\n reject\n );\n });\n }\n\n private _cleanedUpObjects(object: THREE.Object3D, cleanUp: boolean = true): THREE.Object3D {\n let obj: THREE.Object3D = new THREE.Object3D();\n object.children.forEach((c: THREE.Object3D) => {\n if (!(c instanceof THREE.Camera)) {\n if (cleanUp && c instanceof THREE.Group || (c.children.length === 1 && c.children[0] instanceof THREE.Group)) {\n this._addGroupChildrenToObject(c, obj);\n } else if ((cleanUp && !(c instanceof THREE.Mesh)) || (!(c instanceof THREE.Mesh) && !c.name && c.children.length > 0)) {\n c.children.forEach((child) => {\n child.translateY(c.position.y);\n });\n c.translateY(-c.position.y);\n if (obj.children.length > 0) {\n obj.add(c.clone());\n } else {\n obj = c.clone();\n }\n } else {\n // if (c.position.y > 0 || c.position.y < 0) {\n // c.children.forEach((child) => {\n // child.translateY(c.position.y);\n // });\n // c.translateY(-c.position.y);\n // }\n obj.add(c.clone());\n }\n }\n });\n const boundingBox = new THREE.Box3().setFromObject(obj);\n const bbCenterPivot = new THREE.Vector3();\n boundingBox.getCenter(bbCenterPivot);\n const delta: THREE.Vector3 = new THREE.Vector3().add(bbCenterPivot).negate();\n obj.children.forEach((cc) => {\n cc.position.add(delta);\n });\n return obj;\n }\n\n private _addGroupChildrenToObject(group: THREE.Object3D, obj: THREE.Object3D, cleanUp: boolean = true): void {\n group.children.forEach((gc: THREE.Object3D) => {\n if (cleanUp && gc instanceof THREE.Group) {\n this._addGroupChildrenToObject(gc, obj);\n } else {\n // gc.translateX(-group.position.x);\n gc.translateY(group.position.y);\n // gc.translateZ(-group.position.z);\n obj.add(gc.clone());\n }\n });\n }\n\n private _iterateChildren(children: THREE.Object3D[], callback: (child: THREE.Mesh) => {}): void {\n for (let i = 0; i < children.length; i++) {\n const child: THREE.Object3D = children[i];\n if (child instanceof THREE.Mesh) {\n callback(child);\n } else {\n this._iterateChildren(child.children, callback);\n }\n }\n }\n\n private async _readJsonFile(filePath: string): Promise<any> {\n try {\n const response = await fetch(filePath);\n if (!response.ok) {\n return '';\n } else {\n let empty = false;\n await response.clone().text().then((value) => {\n if (value === '') {\n empty = true;\n }\n });\n return empty ? {} : response.json();\n }\n } catch (e) {\n return '';\n }\n }\n\n}\n","import * as THREE from 'three';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\n\r\nexport class SceneUtils {\r\n\r\n public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n part1: any, part2: any, isFirstElement: boolean, createAddableFn?: Function): boolean {\r\n let addable: any;\r\n if (createAddableFn) {\r\n addable = part2;\r\n part2 = createAddableFn(addable);\r\n }\r\n if (part1 && part2) {\r\n let con1: THREE.Object3D;\r\n let con2: THREE.Object3D;\r\n // if part2 is an addable and decoConnection is present, then no need to iterate through connectors\r\n if (addable && addable instanceof Selection && addable.decoConnection) {\r\n con1 = part1.children.find(c => c.name === addable.decoConnection);\r\n if (!con1) {\r\n return false;\r\n }\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < part1.children.length; i++) {\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con1 = part1.children[i];\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n // part1: any, part2: any, createAddableFn?: Function): boolean {\r\n // let addable: any;\r\n // if (createAddableFn) {\r\n // addable = part2;\r\n // part2 = createAddableFn(addable);\r\n // }\r\n // for (let i = 0; i < part1.children.length; i++) {\r\n // for (let ii = 0; ii < part2.children.length; ii++) {\r\n // const con1: THREE.Object3D = part1.children[i];\r\n // const con2: THREE.Object3D = part2.children[ii];\r\n // // if these connectors can connect connect them\r\n // if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(con1, con2)) {\r\n // // if addable, continue this loop with a new addable\r\n // if (addable) {\r\n // const newPart2: THREE.Object3D = createAddableFn(addable, part2, part1);\r\n // // reference of part2 changed, so refresh con2\r\n // this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n // } else {\r\n // return this.SelectorConnect(scene, parent, con1, con2);\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return false;\r\n // }\r\n\r\n public static Convert3DPointToScreenPoint(point: THREE.Vector3, camera: THREE.Camera, width: number, height: number): THREE.Vector2 {\r\n if (!point) {\r\n return new THREE.Vector2();\r\n }\r\n const vector: THREE.Vector3 = point.clone().project(camera);\r\n vector.x = (vector.x + 1) / 2 * width;\r\n vector.y = -(vector.y - 1) / 2 * height;\r\n return new THREE.Vector2(vector.x, vector.y);\r\n }\r\n\r\n\r\n public static CanSelectorConnect(\r\n consPart1: THREE.Object3D[], con1: THREE.Object3D | any, con2: THREE.Object3D | any, startWithMale?: boolean): boolean {\r\n const con1Name: string = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') ? con1.name : con1.connector;\r\n const con2Name: string = (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con2.name : con2.connector;\r\n const sameParent: boolean = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') &&\r\n (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con1.parent === con2.parent : false;\r\n const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n parts2: string[] = con2Name.toUpperCase().split('_');\r\n if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n return connectable;\r\n }\r\n return false;\r\n }\r\n\r\n // public static CanSelectorConnect(con1: THREE.Object3D | any, con2: THREE.Object3D | any): boolean {\r\n // const con1Name: string = con1 instanceof THREE.Object3D ? con1.name : con1.connector;\r\n // const con2Name: string = con2 instanceof THREE.Object3D ? con2.name : con2.connector;\r\n // const sameParent: boolean = con1 instanceof THREE.Object3D && con2 instanceof THREE.Object3D ? con1.parent === con2.parent : false;\r\n // const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n // parts2: string[] = con2Name.toUpperCase().split('_');\r\n // if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n // const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n // parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n // return connectable;\r\n // }\r\n // return false;\r\n // }\r\n\r\n private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n if (!scene || !parent) {\r\n return false;\r\n }\r\n con1['connectedTo'] = con2.parent.name;\r\n con2['connectedTo'] = con1.parent.name;\r\n\r\n const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n\r\n parent.updateMatrixWorld();\r\n motherRotation.copy(parent.rotation);\r\n parent.getWorldPosition(motherPosition);\r\n\r\n parent.rotation.set(0, 0, 0);\r\n parent.position.set(0, 0, 0);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n con1.getWorldQuaternion(con1Quat);\r\n const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n con2.getWorldQuaternion(con2Quat);\r\n const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n con1.parent.getWorldQuaternion(con1QuatParent);\r\n const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n con2.parent.getWorldQuaternion(con2QuatParent);\r\n\r\n const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n con1Quat.invert(),\r\n con2Quat\r\n ).multiply(\r\n new THREE.Quaternion().multiplyQuaternions(\r\n con1QuatParent,\r\n con1QuatParent\r\n )\r\n );\r\n\r\n con2.parent.quaternion.copy(rotation);\r\n // Update because the matrix has been tempered with\r\n scene.updateMatrixWorld(true);\r\n\r\n // Move the connectors towards eachother\r\n const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n con1.getWorldPosition(con1Pos);\r\n const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n con2.getWorldPosition(con2Pos);\r\n\r\n const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n con2.parent.position.x += move.x;\r\n con2.parent.position.y += move.y;\r\n con2.parent.position.z += move.z;\r\n\r\n // reset parent's objects rotation and position\r\n parent.rotation.copy(motherRotation);\r\n parent.position.copy(motherPosition);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n // Set the connected flag\r\n con1['connected'] = true;\r\n con2['connected'] = true;\r\n return true;\r\n }\r\n\r\n // private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n // if (!scene || !parent) {\r\n // return false;\r\n // }\r\n // con1['connectedTo'] = con2.parent.name;\r\n // con2['connectedTo'] = con1.parent.name;\r\n //\r\n // const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n // const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n // motherRotation.copy(parent.rotation);\r\n // parent.getWorldPosition(motherPosition);\r\n //\r\n // parent.rotation.set(0, 0, 0);\r\n // parent.position.set(0, 0, 0);\r\n //\r\n // const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.getWorldQuaternion(con1Quat);\r\n // const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.getWorldQuaternion(con2Quat);\r\n // const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.parent.getWorldQuaternion(con1QuatParent);\r\n // const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.parent.getWorldQuaternion(con2QuatParent);\r\n //\r\n // const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n // con1Quat.invert(),\r\n // con2Quat\r\n // ).multiply(\r\n // new THREE.Quaternion().multiplyQuaternions(\r\n // con1QuatParent,\r\n // con1QuatParent\r\n // )\r\n // );\r\n //\r\n // con2.parent.quaternion.copy(rotation);\r\n // // Update because the matrix has been tempered with\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Move the connectors towards eachother\r\n // const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con1.getWorldPosition(con1Pos);\r\n // const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con2.getWorldPosition(con2Pos);\r\n //\r\n // const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n // con2.parent.position.x += move.x;\r\n // con2.parent.position.y += move.y;\r\n // con2.parent.position.z += move.z;\r\n //\r\n // // reset parent's objects rotation and position\r\n // parent.rotation.copy(motherRotation);\r\n // parent.position.copy(motherPosition);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Set the connected flag\r\n // con1['connected'] = true;\r\n // con2['connected'] = true;\r\n // return true;\r\n // }\r\n\r\n}\r\n","import {BehaviorSubject, Subject} from 'rxjs';\n\nexport class VariationSettingsSettings {\n repeatx: number;\n repeaty: number;\n roughness: number;\n metalness: number;\n}\n\nexport class VariationSettings {\n public id: string;\n public settings: VariationSettingsSettings = new VariationSettingsSettings();\n public texture: string;\n public textureFilename: string;\n public normal: string;\n public normalFilename: string;\n public ao: string;\n public aoFilename: string;\n public metalness: string;\n public metalnessFilename: string;\n public roughness: string;\n public roughnessFilename: string;\n public orm: string;\n public ormFilename: string;\n public displacement: string;\n public displacementValue: number;\n public displacementFilename: string;\n public sheen: number;\n public sheenColor: string;\n public sheenColorMap: string;\n public sheenColorMapFilename: string;\n public transmissionMap: string;\n public transmissionMapFilename: string;\n public sheenRoughness: number;\n public sheenRoughnessMap: string;\n public sheenRoughnessMapFilename: string;\n public emissive: string;\n public emissiveFilename: string;\n public emissiveIntensity: number;\n public emissiveValue: string;\n public opacity: number;\n public transparent: boolean;\n public envMap: string;\n public envMapFilename: string;\n public envMapIntensity: number;\n public reflectivity: number;\n public side: number;\n public transmission: number;\n public ior: number;\n public thickness: number;\n public specularIntensity: number;\n\n // for pre-saved materials downloaded as zip\n public material: any;\n\n public loading: boolean = false;\n public loaded: BehaviorSubject<VariationSettings> = new BehaviorSubject<VariationSettings>(undefined);\n\n public copyFrom(settings: VariationSettings): void {\n this.settings = settings.settings;\n this.texture = settings.texture;\n this.textureFilename = settings.textureFilename;\n this.normal = settings.normal;\n this.normalFilename = settings.normalFilename;\n this.ao = settings.ao;\n this.aoFilename = settings.aoFilename;\n this.metalness = settings.metalness;\n this.metalnessFilename = settings.metalnessFilename;\n this.roughness = settings.roughness;\n this.roughnessFilename = settings.roughnessFilename;\n this.orm = settings.orm;\n this.ormFilename = settings.ormFilename;\n this.displacement = settings.displacement;\n this.displacementValue = settings.displacementValue;\n this.displacementFilename = settings.displacementFilename;\n this.sheen = settings.sheen;\n this.sheenColor = settings.sheenColor;\n this.sheenColorMap = settings.sheenColorMap;\n this.sheenColorMapFilename = settings.sheenColorMapFilename;\n this.transmissionMap = settings.transmissionMap;\n this.transmissionMapFilename = settings.transmissionMapFilename;\n this.sheenRoughness = settings.sheenRoughness;\n this.sheenRoughnessMap = settings.sheenRoughnessMap;\n this.sheenRoughnessMapFilename = settings.sheenRoughnessMapFilename;\n this.emissive = settings.emissive;\n this.emissiveFilename = settings.emissiveFilename;\n this.emissiveIntensity = settings.emissiveIntensity;\n this.emissiveValue = settings.emissiveValue;\n this.opacity = settings.opacity;\n this.transparent = settings.transparent;\n this.envMap = settings.envMap;\n this.envMapFilename = settings.envMapFilename;\n this.envMapIntensity = settings.envMapIntensity;\n this.reflectivity = settings.reflectivity;\n this.side = settings.side;\n this.transmission = settings.transmission;\n this.ior = settings.ior;\n this.thickness = settings.thickness;\n this.specularIntensity = settings.specularIntensity;\n this.material = settings.material;\n }\n\n}\n","import {Color, Texture} from 'three';\n\nexport class Material {\n public name: string;\n public schema: string;\n public specular: Color = new Color(0.3, 0.3, 0.3);\n public shininess = 0;\n // public roughness = 1;\n // public metalness = 0.5;\n public normal: Texture;\n public texture: Texture;\n public ao: Texture;\n public metalness: Texture;\n public roughness: Texture;\n public repeatX = 4;\n public repeatY = 4;\n public loaded = false;\n public metalnessValue: number;\n public roughnessValue: number;\n public displacement: Texture;\n public displacementValue: number;\n public sheen: number;\n public sheenColor: Color | string | number;\n public sheenColorMap: Texture | null;\n public sheenRoughness: number;\n public sheenRoughnessMap: Texture | null;\n public emissive: Texture;\n public emissiveValue: Color | string | number;\n public emissiveIntensityValue: number;\n public envMap: Texture;\n public envMapIntensity: number;\n public opacity: number;\n public transparent: boolean;\n public reflectivity: number;\n public side: number;\n public ior: number;\n public transmission: number;\n public thickness: number;\n public specularIntensity: number;\n public transmissionMap: Texture | null;\n\n public clearcoatMap: Texture | null;\n public clearcoatRoughnessMap: Texture | null;\n}\n","import * as THREE from 'three';\nimport {Material} from '../model/material';\n\n// @dynamic\nexport class ImageUtils {\n\n public static textures: Map<string, THREE.Texture> = new Map();\n\n public static CreateTextureFromBase64(id: string, base64: string, material: Material, defaultFlip: boolean = false): Promise<THREE.Texture> {\n return new Promise<THREE.Texture>(async (resolve) => {\n if (ImageUtils.textures.has(id)) {\n resolve(ImageUtils.textures.get(id));\n } else {\n if (!base64) {\n resolve(new THREE.Texture());\n } else {\n if (window.hasOwnProperty('textureLoader')) {\n resolve(await (window as any).textureLoader(base64));\n } else {\n const loader: THREE.TextureLoader = new THREE.TextureLoader();\n loader.load(base64, (texture: THREE.Texture) => {\n texture.anisotropy = 16;\n texture.wrapS = THREE.RepeatWrapping;\n texture.wrapT = THREE.RepeatWrapping;\n texture.repeat = new THREE.Vector2(material ? material.repeatX : 1, material ? material.repeatY : 1);\n texture.flipY = defaultFlip;\n texture.needsUpdate = true;\n ImageUtils.textures.set(id, texture);\n resolve(texture);\n },\n () => {\n },\n () => {\n resolve(new THREE.Texture());\n });\n }\n }\n }\n });\n }\n\n public static getDocBodyWithMimeTypeDefinition(fileName: string, documentBody: string): string {\n if (documentBody === null) {\n return documentBody;\n }\n const fileExtension: string = fileName.substr(fileName.lastIndexOf('.') + 1);\n switch (fileExtension.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n return 'data:image/jpg;base64,' + documentBody;\n case 'png':\n return 'data:image/png;base64,' + documentBody;\n case 'gif':\n return 'data:image/gif;base64,' + documentBody;\n case 'bmp':\n return 'data:image/bmp;base64,' + documentBody;\n default:\n return 'data:image/png;base64,' + documentBody;\n }\n }\n\n public static getFixedImageFilepathUrl(imageFilepathUrl: string): string {\n return imageFilepathUrl.replace('/content/', '/content43/');\n }\n\n public static ClearCache(): void {\n ImageUtils.textures.forEach(value => {\n value.dispose();\n });\n ImageUtils.textures.clear();\n }\n}\n","import {Material} from '../model/material';\nimport {ImageUtils} from './image.utils';\nimport {VariationSettings} from '../model/variation-settings';\nimport {Color, SRGBColorSpace} from 'three';\n\nexport class FurnitureMaterial extends Material {\n\n public textureFilename?: string;\n public normalFilename?: string;\n public aoFilename?: string;\n public metalnessFilename?: string;\n public roughnessFilename?: string;\n public displacementFilename?: string;\n public envMapFilename?: string;\n public emissiveFileName?: string;\n public sheenColorMapFileName?: string;\n public sheenRoughnessMapFileName?: string;\n public transmissionMapFileName?: string;\n\n}\n\nexport class AssetUtils {\n\n public static async CreateMaterialFromAsset(asset: VariationSettings): Promise<Material> {\n const material: FurnitureMaterial = new Material();\n try {\n if (!asset) {\n return material;\n }\n if (asset.settings) {\n AssetUtils.setSettingsOfMaterial(material, asset.settings);\n }\n if (asset.texture) {\n material.texture = await ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);\n material.texture.colorSpace = SRGBColorSpace;\n material.textureFilename = asset.textureFilename;\n }\n if (asset.normal) {\n material.normal = await ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);\n material.normalFilename = asset.normalFilename;\n }\n if (asset.orm) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_orm', asset.orm, material);\n material.roughness = material.ao;\n material.metalness = material.ao;\n material.aoFilename = asset.ormFilename;\n material.roughnessFilename = asset.ormFilename;\n material.metalnessFilename = asset.ormFilename;\n } else {\n if (asset.ao) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);\n material.aoFilename = asset.aoFilename;\n }\n if (asset.metalness) {\n material.metalness = await ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);\n material.metalnessFilename = asset.metalnessFilename;\n }\n if (asset.roughness) {\n material.roughness = await ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);\n material.roughnessFilename = asset.roughnessFilename;\n }\n }\n if (asset.displacement) {\n material.displacement = await ImageUtils.CreateTextureFromBase64(asset.id + '_displacement', asset.displacement, material);\n material.displacementFilename = asset.displacementFilename;\n }\n if (asset.envMap) {\n material.envMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_env', asset.envMap, material, true);\n material.envMapFilename = asset.envMapFilename;\n }\n if (asset.sheenColorMap) {\n material.sheenColorMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_color', asset.sheenColorMap, material);\n material.sheenColorMapFileName = asset.sheenColorMapFilename;\n }\n if (asset.sheenRoughnessMap) {\n material.sheenRoughnessMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_roughness', asset.sheenRoughnessMap, material);\n material.sheenRoughnessMapFileName = asset.sheenRoughnessMapFilename;\n }\n if (asset.transmissionMap) {\n material.transmissionMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_transmission', asset.transmissionMap, material);\n material.transmissionMapFileName = asset.transmissionMapFilename;\n }\n if (asset.emissive) {\n material.emissive = await ImageUtils.CreateTextureFromBase64(asset.id + '_emissive', asset.emissive, material);\n material.emissiveFileName = asset.emissiveFilename;\n }\n material.sheen = asset.sheen;\n material.emissiveIntensityValue = asset.emissiveIntensity;\n material.emissiveValue = asset.emissiveValue;\n material.side = asset.side;\n material.sheenColor = asset.sheenColor;\n material.sheenRoughness = asset.sheenRoughness;\n material.opacity = asset.opacity;\n material.transparent = asset.transparent;\n material.envMapIntensity = asset.envMapIntensity;\n material.reflectivity = asset.reflectivity;\n material.displacementValue = asset.displacementValue;\n material.transmission = asset.transmission;\n material.ior = asset.ior;\n material.thickness = asset.thickness;\n material.specularIntensity = asset.specularIntensity;\n } catch (e) {\n console.error(e);\n }\n return material;\n }\n\n public static setSettingsOfMaterial(material: Material, settings: any): void {\n const shininess = parseFloat(settings['power']);\n if (!isNaN(shininess)) {\n material.shininess = shininess;\n // material.roughness = 1 - (shininess / 100);\n }\n\n const level = parseFloat(settings['level']);\n if (!isNaN(level)) {\n material.specular = new Color(level, level, level);\n }\n\n const repeatObjectUsed: boolean = settings.hasOwnProperty('repeat');\n const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);\n if (!isNaN(repeatx)) {\n material.repeatX = repeatx;\n }\n\n const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);\n if (!isNaN(repeaty)) {\n material.repeatY = repeaty;\n }\n\n const metalness = parseFloat(settings['metalness']);\n if (!isNaN(metalness)) {\n material.metalnessValue = Math.min(1, metalness);\n }\n\n const roughness = parseFloat(settings['roughness']);\n if (!isNaN(roughness)) {\n material.roughnessValue = Math.min(1, roughness);\n }\n }\n}\n","import {Material} from './material';\n\nexport class Variation {\n public decoId: number;\n public brandId: string;\n public gameObjectName: string;\n public node: any;\n public optionText: string;\n public supplierArticleNr: string;\n public materialId: string;\n public material: any;\n}\n","import {VariationSettings} from '../model/variation-settings';\r\n// @ts-ignore\r\nimport JSZip from 'jszip';\r\nimport {Color, Material, MaterialLoader, Mesh, Object3D, SRGBColorSpace} from 'three';\r\n\r\n// @dynamic\r\nexport class VariationUtils {\r\n private static MaterialCache: Map<string, any> = new Map();\r\n\r\n public static ClearCache(): void {\r\n this.MaterialCache.clear();\r\n }\r\n\r\n public static async LoadVariation(assetPath: string, fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n\r\n if (!fileName.includes('ione3d')) {\r\n fileName = fileName.concat('.ione3d');\r\n }\r\n\r\n const id: string = fileName.substring(0, fileName.lastIndexOf('.ione3d'));\r\n\r\n if (!assetPath.endsWith('/')) {\r\n assetPath += '/';\r\n }\r\n\r\n if (!window.hasOwnProperty('downloadVariation')) {\r\n console.error('downloadVariation not defined in window global');\r\n throw new Error('downloadVariation not defined in window global');\r\n }\r\n\r\n if (this.MaterialCache.has(id)) {\r\n return this.MaterialCache.get(id);\r\n }\r\n\r\n try {\r\n const file = await (window as any).downloadVariation(\r\n `${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`\r\n );\r\n const settings: VariationSettings = await VariationUtils.GetVariationSettingsFromFile(id, file);\r\n this.MaterialCache.set(id, settings);\r\n return settings;\r\n } catch (err) {\r\n console.error('Error loading variation:', err);\r\n throw err;\r\n }\r\n }\r\n // public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {\r\n // return new Promise((resolve: Function) => {\r\n // if (!material) {\r\n // resolve(null);\r\n // }\r\n // if (this.MaterialCache.has(material.name)) {\r\n // resolve(this.MaterialCache.get(material.name).clone());\r\n // } else {\r\n // VariationUtils.LoadVariation(variationFolder, material.name, false).then((settings: VariationSettings) => {\r\n // if (settings) {\r\n // AssetUtils.CreateMaterialFromAsset(settings).then((materialObj: Material) => {\r\n // const materialParams: MeshStandardMaterialParameters = {};\r\n // materialParams.name = material.name;\r\n // materialParams.map = materialObj.texture;\r\n // materialParams.normalMap = materialObj.normal;\r\n // materialParams.aoMap = materialObj.ao;\r\n // materialParams.roughnessMap = materialObj.roughness;\r\n // materialParams.metalnessMap = materialObj.metalness;\r\n // materialParams.roughness = 1;\r\n // materialParams.metalness = 1;\r\n // const pbrMat: MeshStandardMaterial = new MeshStandardMaterial(materialParams);\r\n // this.MaterialCache.set(material.name, pbrMat);\r\n // resolve(pbrMat.clone());\r\n // });\r\n // } else {\r\n // resolve(material);\r\n // }\r\n // });\r\n // }\r\n // });\r\n // }\r\n\r\n private static async GetVariationSettingsFromFile(id: string, compressedFile: any): Promise<VariationSettings> {\r\n if (!compressedFile) {\r\n return null;\r\n }\r\n const zipContent = await VariationUtils.GetZipContent(compressedFile);\r\n const variationSettings: VariationSettings = new VariationSettings();\r\n let index;\r\n variationSettings.id = id;\r\n\r\n if (zipContent) {\r\n if (zipContent.files['material.glb']) {\r\n const material: string = await zipContent.files['material.glb'].async('arraybuffer');\r\n variationSettings.material = await VariationUtils.LoadMaterialFromGlb(material);\r\n } else {\r\n if (zipContent.files['index.json']) {\r\n const indexFile: string = await zipContent.files['index.json'].async('string');\r\n index = JSON.parse(indexFile);\r\n }\r\n if (index) {\r\n await VariationUtils.CreateSettingsBasedOnIndex(index, variationSettings, zipContent);\r\n } else {\r\n await VariationUtils.CreateSettingsBasedOnFileName(variationSettings, zipContent);\r\n }\r\n }\r\n }\r\n return variationSettings;\r\n }\r\n\r\n private static async CreateSettingsBasedOnIndex(index: any, variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n if (index.normalFile) {\r\n variationSettings.normal = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.normalFile], index.normalFile);\r\n variationSettings.normalFilename = index.normalFile;\r\n }\r\n if (index.diffuseFile) {\r\n variationSettings.texture = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.diffuseFile], index.diffuseFile);\r\n variationSettings.textureFilename = index.diffuseFile;\r\n }\r\n if (index.ormFile) {\r\n variationSettings.orm = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.ormFile], index.ormFile);\r\n variationSettings.ormFilename = index.ormFile;\r\n } else {\r\n if (index.aoFile) {\r\n variationSettings.ao = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.aoFile], index.aoFile);\r\n variationSettings.aoFilename = index.aoFile;\r\n }\r\n if (index.metalnessFile) {\r\n variationSettings.metalness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.metalnessFile], index.metalnessFile);\r\n variationSettings.metalnessFilename = index.metalnessFile;\r\n }\r\n if (index.roughnessFile) {\r\n variationSettings.roughness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.roughnessFile], index.roughnessFile);\r\n variationSettings.roughnessFilename = index.roughnessFile;\r\n }\r\n }\r\n if (index.displacementFile) {\r\n variationSettings.displacement = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.displacementFile], index.displacementFile);\r\n variationSettings.displacementFilename = index.displacementFile;\r\n }\r\n if (index.emissiveFile) {\r\n variationSettings.emissive = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.emissiveFile], index.emissiveFile);\r\n variationSettings.emissiveFilename = index.emissiveFile;\r\n }\r\n if (index.envMapFile) {\r\n variationSettings.envMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.envMapFile], index.envMapFile);\r\n variationSettings.envMapFilename = index.envMapFile;\r\n }\r\n if (index.sheenColorMapFile) {\r\n variationSettings.sheenColorMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenColorMapFile], index.sheenColorMapFile);\r\n variationSettings.sheenColorMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.sheenRoughnessMapFile) {\r\n variationSettings.sheenRoughnessMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenRoughnessMapFile], index.sheenRoughnessMapFile);\r\n variationSettings.sheenRoughnessMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.transmissionMapFile) {\r\n variationSettings.transmissionMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.transmissionMapFile], index.transmissionMapFile);\r\n variationSettings.transmissionMapFilename = index.transmissionMapFile;\r\n }\r\n if (index.repeat) {\r\n variationSettings.settings.repeatx = index.repeat.repeatx;\r\n variationSettings.settings.repeaty = index.repeat.repeaty;\r\n }\r\n variationSettings.settings.metalness = index.metalness;\r\n variationSettings.settings.roughness = index.roughness;\r\n\r\n if (index.sheen && typeof index.sheen === 'object') {\r\n variationSettings.sheen = 1;\r\n variationSettings.sheenColor = new Color(index.sheen.r, index.sheen.g, index.sheen.b).getHexString(SRGBColorSpace);\r\n } else {\r\n variationSettings.sheen = index.sheen;\r\n }\r\n if (index.sheenColor) {\r\n variationSettings.sheenColor = new Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.sheenRoughness = index.sheenRoughness;\r\n variationSettings.envMapIntensity = index.envMapIntensity;\r\n variationSettings.transparent = index.transparent;\r\n variationSettings.opacity = index.opacity;\r\n if (index.emissiveValue) {\r\n variationSettings.emissiveValue = new Color(index.emissiveValue.r, index.emissiveValue.g, index.emissiveValue.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.emissiveIntensity = index.emissiveIntensity;\r\n variationSettings.reflectivity = index.reflectivity;\r\n variationSettings.displacementValue = index.displacementValue;\r\n variationSettings.side = index.side;\r\n variationSettings.transmission = index.transmission;\r\n variationSettings.ior = index.ior;\r\n variationSettings.thickness = index.thickness;\r\n variationSettings.specularIntensity = index.specularIntensity;\r\n }\r\n\r\n private static async CreateSettingsBasedOnFileName(variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n const allLoaded: Promise<VariationSettings>[] = [];\r\n for (const fileName in zipContent.files) {\r\n if (zipContent.files.hasOwnProperty(fileName)) {\r\n const file: any = await zipContent.files[fileName];\r\n if (file.name.toLowerCase().indexOf('normal') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((normalFile: any) => {\r\n variationSettings.normal = `data:image/${this.GetBase64FileType(file.name)};base64,${normalFile}`;\r\n variationSettings.normalFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('ao') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((aoFile: any) => {\r\n variationSettings.ao = `data:image/${this.GetBase64FileType(file.name)};base64,${aoFile}`;\r\n variationSettings.aoFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('metalness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((metalnessFile: any) => {\r\n variationSettings.metalness = `data:image/${this.GetBase64FileType(file.name)};base64,${metalnessFile}`;\r\n variationSettings.metalnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('roughness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((roughnessFile: any) => {\r\n variationSettings.roughness = `data:image/${this.GetBase64FileType(file.name)};base64,${roughnessFile}`;\r\n variationSettings.roughnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('diffuse') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((diffuseFile: any) => {\r\n variationSettings.texture = `data:image/${this.GetBase64FileType(file.name)};base64,${diffuseFile}`;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('displacement') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((displacementFile: any) => {\r\n variationSettings.displacement = `data:image/${this.GetBase64FileType(file.name)};base64,${displacementFile}`;\r\n variationSettings.displacementFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('emissive') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((emissiveFile: any) => {\r\n variationSettings.emissive = `data:image/${this.GetBase64FileType(file.name)};base64,${emissiveFile}`;\r\n variationSettings.emissiveFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('envMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((envMapFile: any) => {\r\n variationSettings.envMap = `data:image/${this.GetBase64FileType(file.name)};base64,${envMapFile}`;\r\n variationSettings.envMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenColorMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenColorMapFile: any) => {\r\n variationSettings.sheenColorMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenColorMapFile}`;\r\n variationSettings.sheenColorMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenRoughnessMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenRoughnessMapFile: any) => {\r\n variationSettings.sheenRoughnessMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenRoughnessMapFile}`;\r\n variationSettings.sheenRoughnessMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('transmissionMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((transmissionMapFile: any) => {\r\n variationSettings.transmissionMap = `data:image/${this.GetBase64FileType(file.name)};base64,${transmissionMapFile}`;\r\n variationSettings.transmissionMapFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.jp') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((textureFile: any) => {\r\n variationSettings.texture = 'data:image/jpeg;base64,' + textureFile;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.json') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('string').then((settingsFile: any) => {\r\n const settingsFileObj = JSON.parse(settingsFile);\r\n for (const key in settingsFileObj) {\r\n if (settingsFileObj.hasOwnProperty(key)) {\r\n variationSettings.settings[key] = settingsFileObj[key];\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n await Promise.all(allLoaded);\r\n }\r\n\r\n private static LoadMaterialFromJson(material: any): Material {\r\n const loader = new MaterialLoader();\r\n if (material.textures) {\r\n const textures: {} = {};\r\n for (let i = 0; i < material.textures.length; i++) {\r\n textures[material.textures[i].uuid] = material.textures[i];\r\n }\r\n loader.setTextures(textures);\r\n }\r\n return loader.parse(material);\r\n }\r\n\r\n private static LoadMaterialFromGlb(material: any): Promise<Material> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!window.hasOwnProperty('loadGLTF')) {\r\n console.error('loadGLTF not defined in window global');\r\n return reject();\r\n }\r\n const obj: Object3D = await (window as any).loadGLTF(material, false);\r\n if (obj) {\r\n return resolve((obj.children[0] as Mesh).material);\r\n }\r\n });\r\n }\r\n\r\n private static LoadFileContentFromZip(zip: any, fileName: string, base64: boolean = true): Promise<string> {\r\n return new Promise((resolve: Function) => {\r\n if (zip && fileName) {\r\n zip.async(base64 ? 'base64' : 'string').then((fileContent: any) => {\r\n if (base64) {\r\n resolve(`data:image/${this.GetBase64FileType(fileName)};base64,${fileContent}`);\r\n } else {\r\n resolve(fileContent);\r\n }\r\n });\r\n } else {\r\n resolve(undefined);\r\n }\r\n });\r\n }\r\n\r\n private static FileIsImage(fileName: string): boolean {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'bmp':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static GetBase64FileType(fileName: string): string {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n return 'jpeg';\r\n case 'png':\r\n return 'png';\r\n case 'bmp':\r\n return 'bmp';\r\n default:\r\n return 'jpeg';\r\n }\r\n }\r\n\r\n // Get the content\r\n private static async GetZipContent(file): Promise<any> {\r\n try {\r\n const jszip = new JSZip();\r\n return await jszip.loadAsync(file);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {VariationSettings} from '../model/variation-settings';\r\nimport {AssetUtils} from '../utils/asset.utils';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Variation} from '../model/variation';\r\nimport {VariationUtils} from '../utils/variation-utils';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport * as THREE from 'three';\r\nimport {\r\n Color,\r\n DoubleSide,\r\n EquirectangularReflectionMapping,\r\n Mesh,\r\n MeshPhongMaterial, MeshPhysicalMaterial,\r\n MeshPhysicalMaterialParameters, MeshStandardMaterial, MeshStandardMaterialParameters,\r\n NearestFilter,\r\n Object3D\r\n} from 'three';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {Material} from '../model/material';\r\n\r\nexport class VariationHelper {\r\n\r\n public assetPath: string;\r\n public debug: Function;\r\n\r\n private _variations: VariationSettings[] = [];\r\n\r\n private _lastKnownVariations: Map<string, Variation[]> = new Map();\r\n\r\n public clearCache(): void {\r\n const variationMap: Variation[][] = Array.from(this._lastKnownVariations.values());\r\n variationMap.forEach((variations) => {\r\n variations.forEach((variation) => {\r\n try {\r\n if (variation.material) {\r\n if (variation.material.texture) {\r\n variation.material.texture.dispose();\r\n }\r\n if (variation.material.normal) {\r\n variation.material.normal.dispose();\r\n }\r\n if (variation.material.metalness) {\r\n variation.material.metalness.dispose();\r\n }\r\n if (variation.material.roughness) {\r\n variation.material.roughness.dispose();\r\n }\r\n if (variation.material.ao) {\r\n variation.material.ao.dispose();\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n });\r\n });\r\n VariationUtils.ClearCache();\r\n ImageUtils.ClearCache();\r\n }\r\n\r\n public async loadPart(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n if (parts[i].decoNode && parts[i].decoNode.gameObjectName && parts[i].decoNode.type === DecoNodeType.Part) {\r\n const partSettings: VariationSettings =\r\n await VariationUtils.LoadVariation(this.assetPath, parts[i].decoNode.gameObjectName || parts[i].decoId);\r\n if (partSettings) {\r\n const partVariation: Variation = new Variation();\r\n partVariation.decoId = parseFloat(parts[i].decoNode.id);\r\n partVariation.brandId = parts[i].decoNode.brandId;\r\n partVariation.gameObjectName = parts[i].decoNode.gameObjectName;\r\n partVariation.material = await AssetUtils.CreateMaterialFromAsset(partSettings);\r\n // parts[i].variation = partVariation;\r\n this._applyMaterialPart(obj, partVariation, parts[i].node, usePbr);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n public async loadVariation(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n const variations: DecoNode[] = parts[i].variations;\r\n if (!variations || variations.length === 0) {\r\n if (this._getLastKnownVariations(parts[i].nodeId)) {\r\n parts[i].variations = this._getLastKnownVariations(parts[i].nodeId);\r\n this._applyVariations(obj, parts[i], usePbr);\r\n continue;\r\n } else {\r\n continue;\r\n }\r\n }\r\n const lastKnownVariations: Variation[] = [];\r\n const variationPromise: Promise<any>[] = [];\r\n for (let j = 0; j < variations.length; j++) {\r\n variationPromise.push(\r\n this.loadTheVariation(variations[j].gameObjectName || parts[i].decoId)\r\n .then((variationSettings: VariationSettings) => {\r\n const newVariation: Variation = new Variation();\r\n newVariation.decoId = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).decoId : parseFloat(variations[j].id);\r\n newVariation.node = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).node : variations[j].nodeId;\r\n newVariation.brandId = variations[j].brandId;\r\n newVariation.optionText = (variations[j] as any).optionText;\r\n newVariation.gameObjectName = variations[j].gameObjectName;\r\n newVariation.supplierArticleNr = (variations[j] as any).supplierArticleNr;\r\n newVariation.materialId = (variations[j] as any).materialId;\r\n newVariation.material = variationSettings ? variationSettings.material : null;\r\n lastKnownVariations.push(newVariation);\r\n })\r\n );\r\n }\r\n await Promise.all(variationPromise);\r\n this._setLastKnownVariations(`${parts[i].nodeId}_${parts[i].node}`, lastKnownVariations);\r\n parts[i].variations = lastKnownVariations;\r\n this._applyVariations(obj, parts[i], usePbr);\r\n }\r\n } catch (e) {\r\n this._log(e.message);\r\n }\r\n }\r\n\r\n public get(id: string): VariationSettings {\r\n const len: number = this._variations.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._variations[i].id && this._variations[i].id === id) {\r\n return this._variations[i];\r\n }\r\n }\r\n }\r\n\r\n public set(variations: VariationSettings): void {\r\n const idx: number = this._variations.findIndex(v => v.id === variations.id);\r\n if (idx > -1) {\r\n this._variations[idx] = variations;\r\n } else {\r\n this._variations.push(variations);\r\n }\r\n }\r\n\r\n public preloadVariations(fileNames: string[]): void {\r\n for (let i = 0; i < fileNames.length; i++) {\r\n const fileName: string = fileNames[i];\r\n if (fileName && !this.get(fileName)) {\r\n const settings: VariationSettings = new VariationSettings();\r\n settings.id = fileName;\r\n settings.loading = true;\r\n this._variations.push(settings);\r\n VariationUtils.LoadVariation(this.assetPath, fileName)\r\n .then((variationSettings: VariationSettings) => {\r\n settings.loading = false;\r\n if (variationSettings) {\r\n // this.set(variationSettings);\r\n settings.copyFrom(variationSettings);\r\n }\r\n settings.loaded.next(settings);\r\n })\r\n .catch((err) => {\r\n console.error(`Error loading variation ${fileName}:`, err);\r\n settings.loading = false;\r\n settings.loaded.next(null);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public async loadTheVariation(fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n const settings: VariationSettings = this.get(fileName);\r\n if (!settings) {\r\n return null;\r\n }\r\n if (settings.loading) {\r\n const sett = await this._waitForVariationToLoad(settings);\r\n await this._loadMaterialFromSettings(sett);\r\n return sett;\r\n } else {\r\n await this._loadMaterialFromSettings(settings);\r\n return settings;\r\n }\r\n }\r\n\r\n private async _loadMaterialFromSettings(settings: VariationSettings): Promise<void> {\r\n if (settings) {\r\n if (!settings.material) {\r\n settings.material = await AssetUtils.CreateMaterialFromAsset(settings);\r\n }\r\n }\r\n }\r\n\r\n private _waitForVariationToLoad(settings: VariationSettings): Promise<VariationSettings> {\r\n return new Promise((resolve: Function) => {\r\n settings.loaded.pipe(filter((value): value is VariationSettings => value !== undefined), take(1)).subscribe((value) => {\r\n resolve(value);\r\n });\r\n });\r\n }\r\n\r\n private _getChildrenFilterByProp(obj: Object3D, userDataObjectProp: string, prop: string, value: any): Object3D[] {\r\n return obj.children.filter((child) => {\r\n return child.userData &&\r\n child.userData.hasOwnProperty(userDataObjectProp) &&\r\n child.userData[userDataObjectProp].hasOwnProperty(prop) &&\r\n child.userData[userDataObjectProp][prop] === value;\r\n });\r\n }\r\n\r\n private _applyMaterialPart(obj: Object3D, partMaterial: any, nodeId: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', nodeId);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && partMaterial) {\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let j = 0, jlen: number = mesh.material.length; j < jlen; j++) {\r\n if (mesh.material[j].name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material[j] = this._setMeshMaterialFromVariation(mesh.material[j].name, partMaterial, usePbr);\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, partMaterial, usePbr);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _applyVariations(obj: Object3D, part: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', part.node);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && part.variations && part.variations.length > 0 && mesh.name.toLowerCase().indexOf('c_')) {\r\n for (let j = 0; j < part.variations.length; j++) {\r\n const variation: Variation = part.variations[j];\r\n if (variation.material) {\r\n const materialToSearch: string = !!variation.materialId ? variation.materialId.toLowerCase() : 'default';\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let m = 0, mlen: number = mesh.material.length; m < mlen; m++) {\r\n if (mesh.material[m].name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material[m] = variation.material;\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material[m] = this._setMeshMaterialFromVariation(mesh.material[m].name, variation, usePbr);\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material = variation.material;\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, variation, usePbr);\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _setMeshMaterialFromVariation(name: string, variation: Variation, usePbr: boolean = false): THREE.Material {\r\n const material = variation.material;\r\n if (material.texture) {\r\n material.texture.needsUpdate = true;\r\n material.texture.mapping = EquirectangularReflectionMapping;\r\n }\r\n if (!usePbr) {\r\n const newMaterial: MeshPhongMaterial = new MeshPhongMaterial({\r\n name: name,\r\n shininess: material.shininess,\r\n specular: material.specular,\r\n map: material.texture,\r\n normalMap: material.normal\r\n });\r\n newMaterial.color.setRGB(0.8, 0.8, 0.8);\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n }\r\n if (material.sheen || material.sheenColor || material.reflectivity || material.transmission) { // TODO: Proper check for all unique physical material properties\r\n const params: MeshPhysicalMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01,\r\n clearcoatMap: material.clearcoatMap ? material.clearcoatMap : null,\r\n clearcoatRoughnessMap: material.clearcoatRoughnessMap ? material.clearcoatRoughnessMap : null,\r\n attenuationDistance: Infinity\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.reflectivity) {\r\n params.reflectivity = material.reflectivity;\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshPhysicalMaterial = new MeshPhysicalMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n if (material.sheen) {\r\n newMaterial.sheen = material.sheen;\r\n }\r\n\r\n if (material.sheenColor) {\r\n newMaterial.sheenColor = this._createValidColor(material.sheenColor);\r\n } else {\r\n // Add fallback for blender render\r\n newMaterial.sheenColor = new Color(1, 1, 1);\r\n }\r\n\r\n if (material.sheenRoughness) {\r\n newMaterial.sheenRoughness = material.sheenRoughness;\r\n }\r\n if (material.sheenColorMap) {\r\n newMaterial.sheenColorMap = material.sheenColorMap;\r\n newMaterial.sheenColorMap.needsUpdate = true;\r\n }\r\n if (material.sheenRoughnessMap) {\r\n newMaterial.sheenRoughnessMap = material.sheenRoughnessMap;\r\n newMaterial.sheenRoughnessMap.needsUpdate = true;\r\n }\r\n if (material.transmission) {\r\n newMaterial.transmission = material.transmission;\r\n }\r\n if (material.ior !== undefined && material.ior !== null) {\r\n newMaterial.ior = material.ior;\r\n }\r\n if (material.thickness !== undefined && material.thickness !== null) {\r\n newMaterial.thickness = material.thickness;\r\n }\r\n if (material.specularIntensity !== undefined && material.specularIntensity !== null) {\r\n newMaterial.specularIntensity = material.specularIntensity;\r\n }\r\n if (material.transmissionMap) {\r\n newMaterial.transmissionMap = material.transmissionMap;\r\n newMaterial.transmissionMap.needsUpdate = true;\r\n }\r\n\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n } else {\r\n const params: MeshStandardMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshStandardMaterial = new MeshStandardMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n newMaterial.needsUpdate = true;\r\n\r\n return newMaterial;\r\n }\r\n }\r\n\r\n private _setLastKnownVariations(id: string, variation: Variation[]): void {\r\n this._lastKnownVariations.set(id, variation);\r\n }\r\n\r\n private _getLastKnownVariations(id: string): Variation[] {\r\n if (this._lastKnownVariations.has(id)) {\r\n return this._lastKnownVariations.get(id);\r\n }\r\n return null;\r\n }\r\n\r\n private _createValidColor(color: Color | string | number): Color {\r\n if (typeof color === 'string') {\r\n if (/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(color)) {\r\n return new Color(`#${color.replace('#', '')}`);\r\n }\r\n } else if (color instanceof Color || color.constructor.name === 'Color') {\r\n return color as Color;\r\n } else {\r\n try {\r\n return new Color(color);\r\n } catch (e) {\r\n return new Color();\r\n }\r\n }\r\n\r\n return new Color();\r\n }\r\n\r\n private _log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import {Configurator} from '@colijnit/configuratorapi/build/configurator';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\nimport {notNill} from '@colijnit/configuratorapi/build/utils/function/not-nill.function';\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\nimport {isNill} from '@colijnit/configuratorapi/build/utils/function/is-nill.function';\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\n\nexport class ConfiguratorService {\n\n private _configuratorApi: Configurator;\n\n public initApi(options: Options): void {\n this._configuratorApi = new Configurator(options);\n }\n\n public async initNodeInstance(goodId: number): Promise<DataServiceResponseData> {\n return await this._configuratorApi.initNodeInstance(goodId);\n }\n\n public async setInstanceToConfigure(id: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.setInstanceToConfigure(id, showLoader);\n }\n\n public async getGoodIdFromSku(sku: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getGoodIdFromSku(sku, showLoader);\n }\n\n public async getArticleQuickSel(goodId: number, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getArticleQuickSel(goodId, showLoader);\n }\n\n public async getSelections(showLoader: boolean = false, publicationCode: number = 2): Promise<DataServiceResponseData> {\n const selections: DataServiceResponseData = await this._configuratorApi.getSelections(showLoader);\n selections.resultObjects.filter((s: Selection) => {\n (isNill(s.hierarchicalPublicationCode) || ((s.hierarchicalPublicationCode & publicationCode) > 0)) && (\n (s.nodeType === NodeType.Question && (((s.questionPublicationCode & publicationCode) > 0) || isNill(s.questionPublicationCode))) ||\n (s.nodeType === NodeType.Answer && (((s.answerPublicationCode & publicationCode) > 0) || isNill(s.answerPublicationCode))));\n });\n return selections;\n }\n\n public async getDecos(showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getDecos(showLoader);\n }\n\n public async getQuestionAndAnswers(showLoader: boolean = false, publicationCode: number = 2): Promise<QuestionAndAnswers> {\n const questionAndAnswers: QuestionAndAnswers = await this._configuratorApi.getQuestionAndAnswers(showLoader);\n questionAndAnswers.answers.filter((answer: Answer) => {\n (notNill(answer.hierarchicalPublicationCode) && (answer.hierarchicalPublicationCode & publicationCode) === 0) ||\n (answer.type === NodeType.Question && (answer.questionPublicationCode & publicationCode) === 0 && notNill(answer.questionPublicationCode)) ||\n (answer.type === NodeType.Answer && (answer.publicationCode & publicationCode) === 0 && notNill(answer.publicationCode));\n });\n return questionAndAnswers;\n }\n\n public async getSingleImage(nodeId: number | string, publication: number, includeMimetype: boolean, thumb: boolean, showLoader: boolean): Promise<DataServiceResponseData> {\n if (!nodeId) {\n return null;\n }\n return await this._configuratorApi.getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader);\n }\n\n public async selectSelection(selection: Selection, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectSelection(selection, showLoader);\n }\n\n public async selectAnswer(answer: Answer, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectAnswer(answer, showLoader);\n }\n\n}\n","import {Euler, Material, Matrix4, Mesh, Object3D, Vector2, Vector3} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n ObjectUtils.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose(); // disposes any programs associated with the material\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose(); // disposes any programs associated with the material\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n}\r\n","import * as THREE from 'three';\r\nimport {Scene} from 'three';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\nimport {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {ThreedUtils} from '../utils/threed.utils';\r\nimport {DecoNodeKind} from '@colijnit/configuratorapi/build/enum/deco-node-kind.enum';\r\nimport {SceneUtils} from '../utils/scene-utils';\r\nimport {VariationHelper} from '../helper/variation-helper';\r\nimport {Article} from '@colijnit/configuratorapi/build/model/article';\r\nimport {ConfiguratorService} from './services/configurator.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport {ObjectUtils} from './utils/object.utils';\r\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\r\nimport {BusinessObjectFactory} from '@colijnit/ioneconnector/build/service/business-object-factory';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class Builder {\r\n\r\n public selectionsReceived: BehaviorSubject<Selection[]> = new BehaviorSubject<Selection[]>([]);\r\n public articleLoaded: BehaviorSubject<Article> = new BehaviorSubject<Article>(undefined);\r\n public decosReceived: BehaviorSubject<DecoNode[]> = new BehaviorSubject<DecoNode[]>([]);\r\n public answersReceived: BehaviorSubject<Answer[]> = new BehaviorSubject<Answer[]>([]);\r\n public modelLoaded: BehaviorSubject<THREE.Object3D> = new BehaviorSubject<THREE.Object3D>(null);\r\n public set debug(value: Function) {\r\n if (value) {\r\n this._debug = value;\r\n if (this._variationHelper) {\r\n this._variationHelper.debug = this._debug;\r\n }\r\n }\r\n }\r\n public get debug(): Function {\r\n return this._debug;\r\n }\r\n\r\n private _scene: THREE.Scene;\r\n private _instanceId: string;\r\n private _sku: string;\r\n private _goodId: number;\r\n private _selections: Selection[] = [];\r\n private _answers: Answer[] = [];\r\n private _decos: DecoNode[] = [];\r\n private _placedAdjustables: any[] = [];\r\n private _placedAddables: any[] = [];\r\n private _adjustables: any[] = [];\r\n private _addables: any[] = [];\r\n\r\n private _debug: Function;\r\n\r\n private _imageCache: Map<number, string> = new Map();\r\n\r\n private _boFactory: BusinessObjectFactory;\r\n private _source: THREE.Object3D;\r\n private _threedUtils: ThreedUtils;\r\n private _variationHelper: VariationHelper;\r\n private _articleCache: Map<string, Article> = new Map();\r\n private _configuratorService: ConfiguratorService;\r\n\r\n constructor() {\r\n }\r\n\r\n public init(scene: Scene, options?: Options) {\r\n this._boFactory = new BusinessObjectFactory();\r\n this._threedUtils = new ThreedUtils();\r\n this._variationHelper = new VariationHelper();\r\n this._variationHelper.debug = this._debug;\r\n\r\n if (!scene) {\r\n throw 'No scene object provided!';\r\n }\r\n this._configuratorService = new ConfiguratorService();\r\n // this._imageCacheService = new ImageCacheService();\r\n if (options) {\r\n this._configuratorService.initApi(options);\r\n }\r\n this._scene = scene;\r\n }\r\n\r\n public async buildModel(sku?: string, instanceId?: string, goodId?: number): Promise<THREE.Object3D> {\r\n if (!this._scene) {\r\n return;\r\n }\r\n try {\r\n await this._setInstanceId(sku, instanceId, goodId);\r\n await this._prepareConfiguration(this._sku, this._goodId);\r\n if (this._source) {\r\n await this._configuratorService.setInstanceToConfigure(this._instanceId);\r\n const promises: Promise<any>[] = [];\r\n this._reset();\r\n promises.push(this.getQuestionAndAnswers());\r\n promises.push(this._getSelections(this._instanceId));\r\n promises.push(this._getDecos());\r\n await Promise.all(promises);\r\n if (this._answers.length > 0) {\r\n return;\r\n }\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n return build;\r\n } else {\r\n throw 'GLB source not found!';\r\n }\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n public async buildModelFromData(selections: Selection[], decos: DecoNode[], assetUrl: string, cdnUrl: string, schema: string): Promise<THREE.Object3D> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!this._scene) {\r\n reject('no scene provided!');\r\n }\r\n try {\r\n this._log('start build');\r\n await this._downloadAsset(assetUrl, cdnUrl, schema);\r\n if (selections && selections.length > 1 && decos && decos.length > 0 && this._source) {\r\n this._reset();\r\n this._selections = selections;\r\n this._decos = decos;\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n this._cleanUp();\r\n this._log('finish build');\r\n resolve(build);\r\n } else {\r\n reject('Unsufficient data provided!');\r\n }\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n public initNodeInstance(goodId: number): Promise<any> {\r\n return this._configuratorService.initNodeInstance(goodId);\r\n }\r\n\r\n public destroy(): void {\r\n this._threedUtils.clearCache();\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n public async selectSelection(selection: Selection): Promise<void> {\r\n await this._configuratorService.selectSelection(selection, false);\r\n await this.getQuestionAndAnswers();\r\n }\r\n\r\n public async getQuestionAndAnswers(publicationCode?: number): Promise<void> {\r\n const questionsAndAnswers: QuestionAndAnswers = await this._configuratorService.getQuestionAndAnswers(false, publicationCode);\r\n this._answers = questionsAndAnswers.answers;\r\n this.answersReceived.next(questionsAndAnswers.answers);\r\n }\r\n\r\n public async selectAnswer(answer: Answer): Promise<void> {\r\n await this._configuratorService.selectAnswer(answer, false);\r\n await this.getQuestionAndAnswers();\r\n if (this._answers.length === 0) {\r\n this._build();\r\n }\r\n }\r\n\r\n public getImageForSelectionOrAnswer(object: Selection | Answer): Promise<string> {\r\n const includeMimeType: boolean = true, thumb: boolean = true;\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (object && object.nodeId) {\r\n if (!this._imageCache.has(object.nodeId)) {\r\n return this._configuratorService.getSingleImage(object.nodeId, 4, includeMimeType, thumb, true)\r\n .then((responseData: DataServiceResponseData) => {\r\n const base64: string = this._handleResponseData(includeMimeType, thumb, responseData);\r\n this._imageCache.set(object.nodeId, base64);\r\n resolve(base64);\r\n }).catch(() => {\r\n reject();\r\n });\r\n } else {\r\n resolve(this._imageCache.get(object.nodeId));\r\n }\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n public _cleanUp(): void {\r\n this._sku = undefined;\r\n this._goodId = undefined;\r\n this._instanceId = undefined;\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n private _handleResponseData(includeMimetype: boolean, thumb: boolean, responseData: DataServiceResponseData): string {\r\n if (responseData && responseData.resultObject) {\r\n if (responseData.resultObject.filePath !== null && responseData.resultObject.filePath !== \"\") {\r\n return ImageUtils.getFixedImageFilepathUrl(responseData.resultObject.filePath);\r\n } else {\r\n if (includeMimetype) {\r\n return ImageUtils.getDocBodyWithMimeTypeDefinition(responseData.resultObject.fileName,\r\n thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody);\r\n } else {\r\n return thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody;\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n private _preloadMaterials(): void {\r\n this._variationHelper.preloadVariations(\r\n this._decos\r\n .filter(d => d.gameObjectName && d.type === DecoNodeType.Variation)\r\n .map(d => d.gameObjectName));\r\n }\r\n\r\n private async _setInstanceId(sku: string, instanceId?: string, goodId?: number): Promise<void> {\r\n if (!instanceId && !this._instanceId) {\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku);\r\n }\r\n this._goodId = goodId;\r\n const result: DataServiceResponseData = await this.initNodeInstance(this._goodId);\r\n if (result && result.resultObject) {\r\n this._instanceId = result.resultObject;\r\n } else {\r\n throw 'Failed to initialize node instance';\r\n }\r\n } else if (!this._instanceId) {\r\n this._instanceId = instanceId;\r\n }\r\n if (!this._sku) {\r\n this._sku = sku;\r\n }\r\n }\r\n\r\n private async _prepareConfiguration(sku: string, goodId?: number): Promise<void> {\r\n const article: Article = await this._getArticle(sku, goodId);\r\n if (article && article.assetUrl) {\r\n if (article.contentDeliveryUrl) {\r\n this._variationHelper.assetPath =\r\n article.contentDeliveryUrl +\r\n (article.contentDeliveryUrl.endsWith('/') ? '' : '/') +\r\n (article.distSchema ? article.distSchema : 'UP_DBA');\r\n }\r\n await this._downloadAsset(article.assetUrl, article.contentDeliveryUrl, article.distSchema);\r\n }\r\n }\r\n\r\n private async _downloadAsset(assetUrl: string, cdnUrl: string, schema: string): Promise<void> {\r\n this._source = await this._threedUtils.download3DSource(assetUrl, cdnUrl)\r\n .catch((error) => {\r\n throw error;\r\n });\r\n if (cdnUrl) {\r\n this._variationHelper.assetPath =\r\n cdnUrl +\r\n (cdnUrl.endsWith('/') ? '' : '/') +\r\n (schema ? schema : 'UP_DBA');\r\n }\r\n }\r\n\r\n private async _build(): Promise<THREE.Object3D> {\r\n const adjustables: Selection[] = this._getAdjustables();\r\n if (adjustables && adjustables.length === 0 && this._selections && this._selections.length > 0) { // check if article has a gameObject\r\n if (this._selections[0].nodeType === NodeType.Article && this._selections[0].gameObject) {\r\n adjustables.push(this._selections[0]);\r\n }\r\n }\r\n if (adjustables && adjustables.length > 0) {\r\n const obj: THREE.Object3D = new THREE.Object3D();\r\n obj.visible = false; // no need to render visualy\r\n this._scene.add(obj);\r\n let connected = false;\r\n this._log('build main model');\r\n for (let i = 0, len: number = adjustables.length; i < len; i++) {\r\n const adjustable: THREE.Object3D = this._createAdjustable(obj, adjustables[i]);\r\n if (adjustable) {\r\n for (let ii = 0, lenii: number = this._placedAdjustables.length; ii < lenii; ii++) {\r\n if (SceneUtils.TrySelectorConnection(this._scene,\r\n obj, this._placedAdjustables[ii], adjustable, i === 1)) {\r\n this._placedAdjustables[ii].visible = true;\r\n adjustable.visible = true;\r\n connected = true;\r\n break;\r\n }\r\n connected = false;\r\n }\r\n }\r\n if (!connected && this._placedAdjustables.length > 1) {\r\n console.warn('No connection found for: ', adjustable.name);\r\n }\r\n }\r\n this._log('place addables');\r\n this._placeAddables(obj);\r\n this._log('update pivot');\r\n this._updatePivot(obj);\r\n this._log('load variations');\r\n await this._loadVariations(obj);\r\n // this._variationHelper.clearCache();\r\n this._log('remove from scene');\r\n this._scene.remove(obj);\r\n ObjectUtils.DisposeObject(this._source);\r\n // this._cleanUp();\r\n this._log('ready!');\r\n this.modelLoaded.next(obj);\r\n return obj;\r\n } else {\r\n throw 'No adjustables found!';\r\n // this._building = false;\r\n // if (this.selections.length < 2) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoSelections});\r\n // } else if (this.decos.size === 0) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoDecoNodes});\r\n // } else {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_ADJUSTABLES', description: 'NO_ADJUSTABLES_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoAdjustables});\r\n // }\r\n }\r\n }\r\n\r\n private _prepareTheSelections(): void {\r\n const selections = this._selections.slice();\r\n const selectionOfArticle: Selection = selections.find(s => s.nodeType === NodeType.Article);\r\n const adjustableSelections: Selection[] = selections.filter(s => s.addAdjust === '2');\r\n const isArticleWithMaterial: boolean =\r\n adjustableSelections.length === 0 &&\r\n selectionOfArticle.gameObject &&\r\n selectionOfArticle.gameObject.length > 0;\r\n // get generic variations\r\n const globalVariations: DecoNode[] = this._selections\r\n .filter(s => (s.generic || adjustableSelections.length === 1) && (s.decoNode as any).variation && !s.decoNode.type)\r\n .map((value: Selection, index: number, array: Selection[]) => {\r\n // find selection of variation\r\n const sel: Selection = this._selections.find(s => s.artNodeIdDeco === (value.decoNode as any).variation.parentId);\r\n if (sel) {\r\n (value.decoNode as any).variation.supplierArticleNr = sel.supplierArticleNr;\r\n }\r\n (value.decoNode as any).variation.materialId = this._getMaterialIdFromParent(value.node);\r\n return (value.decoNode as any).variation;\r\n });\r\n // commented out for the moment\r\n // globalVariations.forEach(g => {\r\n // const parentIdx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.parentId);\r\n // if (parentIdx) { // remove parent selection\r\n // selections.splice(parentIdx, 1);\r\n // }\r\n // const idx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.id);\r\n // if (idx) { // move generic variations to top\r\n // const selection = selections[idx];\r\n // selections.splice(idx, 1);\r\n // selections.unshift(selection);\r\n // }\r\n // });\r\n\r\n // const usedVariations: FurniturePartVariation[] = [];\r\n let globalVariationsRewrite: boolean = true;\r\n\r\n const len: number = selections.length;\r\n let lastAdded: Selection;\r\n let lastAdjustable: Selection;\r\n let newPart: boolean = false;\r\n let previousPresLevel: number = -1;\r\n let positioning: any;\r\n let optionText: string;\r\n for (let i = 0; i < len; i++) {\r\n const selection: Selection = selections[i];\r\n if (selection.presentationLevel === 1) {\r\n positioning = selection.hdecoPositioning;\r\n optionText = selection.question;\r\n }\r\n if (selection.presentationLevel > previousPresLevel) {\r\n selection.hdecoPositioning = selection.hdecoPositioning || positioning;\r\n }\r\n if (selection.decoNode) {\r\n if (selection.decoNode.type === DecoNodeType.Variation) {\r\n const decoNode = selection.decoNode;\r\n (decoNode as any).optionText = optionText;\r\n // find selection of variation and set materialId in case of multimaterial\r\n (decoNode as any).materialId = this._getMaterialIdFromParent(decoNode.nodeId);\r\n if (lastAdded) {\r\n if (newPart) {\r\n if ((decoNode as any).materialId) {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n } else {\r\n lastAdded.variations = [decoNode];\r\n }\r\n } else {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n }\r\n newPart = false;\r\n } else {\r\n if (globalVariationsRewrite) {\r\n globalVariations.length = 0;\r\n globalVariationsRewrite = false;\r\n }\r\n if (!globalVariations.find(v => v.id === decoNode.id)) {\r\n globalVariations.push(decoNode);\r\n }\r\n }\r\n // const variation: FurniturePartVariation = new FurniturePartVariation();\r\n // variation.BrandId = selection.decoNode.brandId;\r\n // variation.Description = selection.decoNode.gameObjectName;\r\n // variation.MaterialId = (selection.decoNode as any).materialId;\r\n // variation.SupplierArticleNr = (selection.decoNode as any).supplierArticleNr;\r\n // usedVariations.push(variation);\r\n } else if ((selection.decoNode.type === DecoNodeType.Part &&\r\n typeof selection.decoNode.gameObjectName === 'string' &&\r\n selection.decoNode.gameObjectName.length) || (isArticleWithMaterial)) {\r\n if (selection.decoNode.kind === DecoNodeKind.Adjustable || (isArticleWithMaterial)) {\r\n selection.variations = globalVariations;\r\n this._adjustables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n lastAdjustable = selection;\r\n } else if (selection.decoNode.kind === DecoNodeKind.Addable) {\r\n selection.variations = lastAdjustable ? lastAdjustable.variations : globalVariations;\r\n if (lastAdjustable) {\r\n lastAdjustable.addables.push(selection);\r\n }\r\n this._addables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n }\r\n }\r\n }\r\n previousPresLevel = selection.presentationLevel;\r\n }\r\n // this._upsertFurniture(this.activeInstance,\r\n // {Variations: usedVariations});\r\n }\r\n\r\n /**\r\n * Returns the materialId of the parent up the tree until presentionlevel 1 is reached\r\n * @param id\r\n * @private\r\n */\r\n private _getMaterialIdFromParent(id: number): string {\r\n const idx: number = this._selections.findIndex(s => s.node === id);\r\n let currentLevel: number = 999;\r\n if (idx > -1) {\r\n for (let i = idx; i > 0; i--) {\r\n const selection = this._selections[i];\r\n if (selection.presentationLevel >= currentLevel) {\r\n break;\r\n }\r\n currentLevel = selection.presentationLevel;\r\n if (selection.hdecoGameObject) {\r\n return selection.hdecoGameObject;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _createAdjustable(parent: THREE.Object3D, adj: Selection): THREE.Object3D {\r\n let obj: any = this._source ? this._source.getObjectByName(adj.decoNode.gameObjectName || adj.gameObject) : null;\r\n if (!obj) {\r\n // in case of glb files, the importer removes dots from names\r\n const name = adj.decoNode.gameObjectName.replace(/[.]/g, '');\r\n obj = this._source ? this._source.getObjectByName(name) : null;\r\n if (!obj) {\r\n console.warn(`No object with name ${adj.decoNode.gameObjectName} found!`);\r\n return null;\r\n }\r\n }\r\n let adjustable: any = obj.clone();\r\n adjustable.name = this._createUniqueName(parent, obj);\r\n adjustable.userData.selection = adj;\r\n adjustable.position.set(0, 0, 0);\r\n adjustable.traverse(c => {\r\n c.visible = !c.name.toLowerCase().startsWith('c_');\r\n });\r\n parent.add(adjustable);\r\n // the object being added to the customFloorGroup is being recreated so we loose the reference\r\n // therefor we need to retrieve the created object again\r\n adjustable = parent.getObjectByName(adjustable.name);\r\n this._placedAdjustables.push(adjustable);\r\n return adjustable;\r\n }\r\n\r\n private _createAddable(parent: THREE.Object3D, add: Selection, part2?: any, part1?: any): THREE.Object3D {\r\n const obj: any = this._source.getObjectByName(add.decoNode.gameObjectName);\r\n if (!obj) {\r\n return null;\r\n }\r\n // const selection: Selection = this._getSelectionFromId(adj.artNodeIdDeco);\r\n const addable: any = obj.clone();\r\n addable.name = this._createUniqueName(parent, obj);\r\n addable.userData.selection = add;\r\n addable.position.set(0, 0, 0);\r\n addable.visible = true;\r\n if (part1 && part2) {\r\n parent.add(addable);\r\n this._placedAddables.push(addable);\r\n return addable;\r\n }\r\n return addable;\r\n }\r\n\r\n private _placeAddables(parent: THREE.Object3D): void {\r\n const len: number = this._placedAdjustables.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._placedAdjustables[i].userData.hasOwnProperty('selection') && this._placedAdjustables[i].userData.selection) {\r\n const adjustableSelection: Selection = this._placedAdjustables[i].userData.selection;\r\n if (adjustableSelection) {\r\n const lena: number = adjustableSelection.addables.length;\r\n let conAddable: any;\r\n for (let ia = 0; ia < lena; ia++) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, this._placedAdjustables[i], adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n if (conAddable) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, conAddable, adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n }\r\n conAddable = this._placedAddables[this._placedAddables.length - 1];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _createUniqueName(parent: THREE.Object3D, obj: THREE.Object3D): string {\r\n let iteration = 0;\r\n let name = obj.name;\r\n let existingObj = parent.getObjectByName(name);\r\n while (existingObj) {\r\n iteration++;\r\n name = obj.name + (iteration !== 0 ? ('_' + iteration) : '');\r\n existingObj = parent.getObjectByName(name);\r\n }\r\n return name;\r\n }\r\n\r\n private async _getGoodIdFromSku(sku: string): Promise<number> {\r\n const response: DataServiceResponseData = await this._configuratorService.getGoodIdFromSku(sku, false);\r\n if (response.validationResult.success && response.resultObject) {\r\n return response.resultObject;\r\n }\r\n }\r\n\r\n private async _getArticle(sku: string, goodId: number): Promise<Article> {\r\n if (this._articleCache.has(sku)) {\r\n this.articleLoaded.next(this._articleCache.get(sku));\r\n return this._articleCache.get(sku);\r\n }\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku)\r\n .catch((error) => {\r\n throw `Article with sku ${sku} not found!`;\r\n });\r\n }\r\n let article: Article;\r\n const articleResponse: DataServiceResponseData = await this._configuratorService.getArticleQuickSel(goodId, false);\r\n if (articleResponse.validationResult.success && articleResponse.resultObject) {\r\n if (articleResponse.resultObject.hasOwnProperty('oArticle')) {\r\n const obj = Array.isArray(articleResponse.resultObject['oArticle']) ? articleResponse.resultObject['oArticle'][0] : articleResponse.resultObject['oArticle'];\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, obj);\r\n } else {\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, articleResponse.resultObject);\r\n }\r\n }\r\n this._articleCache.set(sku, article);\r\n this.articleLoaded.next(article);\r\n return article;\r\n }\r\n\r\n private async _getSelections(instanceId: string, publicationCode?: number): Promise<void> {\r\n this._selections = [];\r\n const selectionResponse: DataServiceResponseData = await this._configuratorService.getSelections(false, publicationCode);\r\n if (selectionResponse.resultObjects && selectionResponse.resultObjects.length > 0) {\r\n this._selections = <Selection[]>this._boFactory.makeBOArrayFromRawBackendDataArray(Selection, selectionResponse.resultObjects);\r\n this._selections.forEach(s => s.instanceId = instanceId);\r\n // const filtered: Selection[] = this._selections.filter(s => s.nodeType !== NodeType.Article && s.presentationLevel === 1);\r\n this.selectionsReceived.next(this._selections);\r\n } else {\r\n throw 'No selections found!';\r\n }\r\n }\r\n\r\n private async _getDecos(): Promise<void> {\r\n this._decos = [];\r\n const decosResponse: DataServiceResponseData = await this._configuratorService.getDecos(false);\r\n if (decosResponse.resultObjects && decosResponse.resultObjects.length > 0) {\r\n this._decos = <DecoNode[]>this._boFactory.makeBOArrayFromRawBackendDataArray(DecoNode, decosResponse.resultObjects);\r\n this.decosReceived.next(this._decos);\r\n } else {\r\n throw 'No deconodes found!';\r\n }\r\n }\r\n\r\n private _linkSelectionsAndDecos(): void {\r\n const len: number = this._selections.length;\r\n for (let i = 0; i < len; i++) {\r\n // const id: string = this.selections[i].artNodeIdDeco;\r\n let deco: any = this._decos.find(d => d.nodeId === this._selections[i].node);\r\n if (!deco) {\r\n deco = new DecoNode();\r\n }\r\n if (deco.type !== DecoNodeType.Variation) {\r\n const variation: any = this._getVariations().find(v => v.parentId === this._selections[i].artNodeIdDeco);\r\n if (variation) {\r\n deco.variation = variation;\r\n }\r\n }\r\n this._selections[i].decoNode = deco;\r\n }\r\n }\r\n\r\n private _getVariations(): DecoNode[] {\r\n return this._decos.filter((deco: DecoNode) => {\r\n return deco.type === DecoNodeType.Variation;\r\n });\r\n }\r\n\r\n private async _loadVariations(obj: THREE.Object3D): Promise<void> {\r\n this._log('load variation for parts');\r\n await this._variationHelper.loadPart(obj, this._adjustables, true);\r\n this._log('load variation for adjustables');\r\n await this._variationHelper.loadVariation(obj, this._adjustables, true);\r\n this._log('load variation for addables');\r\n await this._variationHelper.loadVariation(obj, this._addables, true);\r\n this._log('load variation clear cache');\r\n this._variationHelper.clearCache();\r\n this._log('load variations done');\r\n }\r\n\r\n private _getAdjustables(): Selection[] {\r\n return this._selections.filter(s => {\r\n const node: DecoNode = s.decoNode;\r\n return node && node.gameObjectName && node.type === DecoNodeType.Part && node.kind === DecoNodeKind.Adjustable;\r\n });\r\n }\r\n\r\n private _updatePivot(obj: THREE.Object3D) {\r\n const boundingBox = new THREE.Box3().setFromObject(obj);\r\n const bbCenterPivot = new THREE.Vector3();\r\n boundingBox.getCenter(bbCenterPivot);\r\n const delta: THREE.Vector3 = new THREE.Vector3().sub(bbCenterPivot).setY(Math.abs(Math.min(boundingBox.min.y, 0)));\r\n\r\n obj.children.forEach((child: any) => {\r\n child.position.add(delta);\r\n });\r\n obj.updateWorldMatrix(false, true);\r\n }\r\n\r\n private _reset(): void {\r\n this._placedAddables.length = 0;\r\n this._placedAdjustables.length = 0;\r\n this._adjustables.length = 0;\r\n this._addables.length = 0;\r\n // this._prepareTheSelections();\r\n }\r\n\r\n private _log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {Answer} from \"@colijnit/configuratorapi/build/model/answer\";\r\n\r\n@Component({\r\n selector: \"answers\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-answers-slideout\">\r\n <h2 class=\"answers-title\" [textContent]=\"selectionTitle\"></h2>\r\n <div class=\"answers-container\" visibilityObserverMaster>\r\n <answer *ngFor=\"let answer of answers\"\r\n (click)=\"answerClick.emit(answer)\"\r\n [answer]=\"answer\"\r\n visibilityObserver\r\n #intersection=\"intersection\"\r\n [observerEnabled]=\"true\"\r\n [showing]=\"intersection.isIntersecting\"\r\n ></answer>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ]\r\n})\r\n\r\nexport class AnswersComponent {\r\n @Input()\r\n public answers: Answer[] = [];\r\n\r\n @Input()\r\n public selectionTitle: string;\r\n\r\n @Output()\r\n public answerClick: EventEmitter<Answer> = new EventEmitter<Answer>();\r\n\r\n constructor() {}\r\n\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ImageCacheService} from '../../../services/image-cache.service';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Builder} from \"../../../builder\";\n\n@Component({\n selector: 'answer',\n template: `\n <div class=\"ione-configurator\">\n <div class=\"answer-wrapper\">\n <div class=\"answer-content\" @answerAppear>\n <div class=\"answer-thumbnail\">\n <rp-loader *ngIf=\"answer.imageData === ''\"></rp-loader>\n <img *ngIf=\"answer.imageData !== '' && answer.imageData !== null\" class=\"answer-img\" [src]=\"answer.imageData\">\n </div>\n <div class=\"answer-title-wrapper\">\n <span class=\"answer-title\" [textContent]=\"answer.commercialAnswer\"></span>\n </div>\n <div class=\"price\">\n <span class=\"price-value\"></span>\n </div>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n '../../../../style/shared.scss'\n ],\n animations: [\n trigger('answerAppear', [\n state('void', style({'background': '#dbdbdb'})),\n state('white', style({'background': 'white'})),\n transition('void <=> *', animate(500))\n ])\n ]\n})\nexport class AnswerComponent implements OnInit {\n @Input()\n public answer: Answer;\n\n @Input()\n public set showing(value: boolean) {\n this.answer.imageData = '';\n if (value && this.answer.answer !== 'Skip / Cancel') {\n this._loadThumbnail(this.answer);\n } else {\n this.answer.imageData = null;\n }\n }\n\n constructor(private _builder: Builder) { }\n\n public ngOnInit(): void {\n }\n\n private async _loadThumbnail(answer: Answer): Promise<void> {\n await this._builder.getImageForSelectionOrAnswer(answer).then((imageSrc: string) => {\n answer.imageData = imageSrc === \"\" ? null : imageSrc;\n });\n }\n}\n","// Import the core angular services.\nimport {Directive, OnDestroy} from '@angular/core';\n\n@Directive({\n selector: '[visibilityObserverMaster]'\n})\nexport class VisibilityObserverMasterDirective implements OnDestroy {\n\n private _mapping: Map<Element, Function>;\n private _observer: IntersectionObserver;\n\n // I initialize the intersection observer parent directive.\n constructor() {\n\n // As each observable child attaches itself to the parent observer, we need to\n // map Elements to Callbacks so that when an Element's intersection changes,\n // we'll know which callback to invoke. For this, we'll use an ES6 Map.\n this._mapping = new Map();\n\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n\n for (const entry of entries) {\n\n const callback = this._mapping.get(entry.target);\n if (callback) {\n callback(entry.isIntersecting);\n }\n }\n\n },\n {\n // This classifies the \"intersection\" as being a bit outside the\n // viewport. The intent here is give the elements a little time to react\n // to the change before the element is actually visible to the user.\n rootMargin: '300px 0px 300px 0px'\n }\n );\n\n }\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._mapping.clear();\n this._observer.disconnect();\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I add the given Element for intersection observation. When the intersection status\n // changes, the given callback is invoked with the new status.\n public add(element: HTMLElement, callback: Function): void {\n\n this._mapping.set(element, callback);\n this._observer.observe(element);\n\n }\n\n // I remove the given Element from intersection observation.\n public remove(element: HTMLElement): void {\n\n this._mapping.delete(element);\n this._observer.unobserve(element);\n\n }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {VisibilityObserverMasterDirective} from './visibility-observer-master.directive';\n\n@Directive({\n selector: '[visibilityObserver]',\n exportAs: 'intersection'\n})\nexport class VisibilityObserverDirective implements OnDestroy, OnInit {\n\n @Input()\n public observerEnabled: boolean = false;\n\n public isIntersecting: boolean;\n // These are just some human-friendly constants to make the HTML template a bit more\n // readable when being consumed as part of SWTCH/CASE statements.\n public IS_INTERSECTING: boolean = true;\n public IS_NOT_INTERSECTING: boolean = false;\n\n private _elementRef: ElementRef;\n private _parent: VisibilityObserverMasterDirective;\n\n // I initialize the intersection observer directive.\n constructor(\n parent: VisibilityObserverMasterDirective,\n elementRef: ElementRef\n ) {\n\n this._parent = parent;\n this._elementRef = elementRef;\n\n // By default, we're going to assume that the host element is NOT intersecting.\n // Then, we'll use the IntersectionObserver to asynchronously check for changes\n // in viewport visibility.\n this.isIntersecting = false;\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._parent.remove(this._elementRef.nativeElement);\n this._elementRef = undefined;\n\n }\n\n\n // I get called once after the inputs have been bound for the first time.\n public ngOnInit(): void {\n\n // In this demo, instead of using an IntersectionObserver per Element, we're\n // going to use a shared observer in the parent element. However, we're still\n // going to use a CALLBACK style approach so that we're only reducing the number\n // of IntersectionObserver instances, not the number of Function calls.\n if (this.observerEnabled) {\n this._parent.add(\n this._elementRef.nativeElement,\n (isIntersecting: boolean) => {\n\n this.isIntersecting = isIntersecting;\n if (this.isIntersecting) {\n this._parent.remove(this._elementRef.nativeElement);\n }\n\n }\n );\n }\n\n }\n\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'rp-loader',\n template: `\n <div class=\"loader-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" stroke=\"#3760a1\">\n <g fill=\"none\" fill-rule=\"evenodd\" stroke-width=\"3\">\n <circle class=\"ripple1\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n <circle class=\"ripple2\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n </g>\n </svg>\n </div>\n `,\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {LoaderComponent} from './loader/loader.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n LoaderComponent\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class SharedModule { }\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AnswersComponent} from \"./answers.component\";\r\nimport { AnswerComponent } from './answer/answer.component';\r\nimport {VisibilityObserverDirective} from '../../directives/visibility-observer.directive';\r\nimport {VisibilityObserverMasterDirective} from '../../directives/visibility-observer-master.directive';\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n AnswersComponent,\r\n AnswerComponent,\r\n VisibilityObserverDirective,\r\n VisibilityObserverMasterDirective\r\n ],\r\n exports: [\r\n AnswersComponent\r\n ]\r\n})\r\nexport class AnswersModule {\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Selection} from \"@colijnit/configuratorapi/build/model/selection\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {ImageCacheService} from '../../services/image-cache.service';\r\nimport {Builder} from \"../../builder\";\r\n\r\nclass SelectionViewModel {\r\n public selection: Selection;\r\n public children: Selection[] = [];\r\n public expanded: boolean = false;\r\n public thumbnail: string = '';\r\n}\r\n\r\n@Component({\r\n selector: \"selections\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-selections-summary\">\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-title\" [textContent]=\"'Configuratie'\"></h2>\r\n <!--<button>-->\r\n <!---->\r\n <!--</button>-->\r\n </header>\r\n <div class=\"selections-content\">\r\n <ng-container *ngFor=\"let selectionViewModel of selectionViewModels\">\r\n\r\n <div class=\"co-summary-line\" (click)=\"selectSelection(selectionViewModel.selection, $event)\">\r\n <div class=\"selection-thumbnail\">\r\n <rp-loader *ngIf=\"selectionViewModel.thumbnail === ''\"></rp-loader>\r\n <img visibilityObserver *ngIf=\"selectionViewModel.thumbnail !== '' && selectionViewModel.thumbnail !== null\" class=\"selection-img\" [src]=\"selectionViewModel.thumbnail\">\r\n </div>\r\n <div class=\"titles\">\r\n <div class=\"title-wrapper\">\r\n <label class=\"question\" [textContent]=\"selectionViewModel.selection.question\"></label>\r\n <span class=\"answer\" [textContent]=\"selectionViewModel.selection.answer\"></span>\r\n <div *ngIf=\"selectionViewModel.children.length > 0 && selectionViewModel.expanded\" @showHideChildren>\r\n <div class=\"child-selection\" *ngFor=\"let selection of selectionViewModel.children\"\r\n (click)=\"selectSelection(selection, $event)\"\r\n >\r\n <label class=\"question\" [textContent]=\"selection.commercialQuestion\"></label>\r\n <span class=\"answer\" [textContent]=\"selection.answer\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"price-wrapper\">\r\n <span class=\"price-value\"></span>\r\n </div>\r\n\r\n <div class=\"collapse-wrapper\">\r\n <div class=\"collapse-content\">\r\n <div class=\"collapse-handle\" [class.expanded]=\"selectionViewModel.expanded\"\r\n *ngIf=\"selectionViewModel.children.length > 0\" (click)=\"expandClicked(selectionViewModel, $event)\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ],\r\n animations: [\r\n trigger('showHideChildren', [\r\n state('void', style({'height': '0'})),\r\n state('*', style({'height': '*'})),\r\n transition('void <=> *', animate(200))\r\n ])\r\n ]\r\n})\r\n\r\nexport class SelectionsComponent {\r\n @Input()\r\n public set selections(value: Selection[]) {\r\n this._prepareSelections(value);\r\n this._loadThumbnails();\r\n }\r\n\r\n public selectionViewModels: SelectionViewModel[] = [];\r\n\r\n @Output()\r\n public selectionClick: EventEmitter<Selection> = new EventEmitter<Selection>();\r\n\r\n constructor(private _builder: Builder) {}\r\n\r\n public expandClicked(selectionViewModel: SelectionViewModel, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n selectionViewModel.expanded = !selectionViewModel.expanded;\r\n }\r\n\r\n public selectSelection(selection: Selection, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n this.selectionClick.next(selection);\r\n }\r\n\r\n private async _loadThumbnails(): Promise<void> {\r\n if (this.selectionViewModels.length > 0) {\r\n this.selectionViewModels.forEach(async (viewModel: SelectionViewModel) => {\r\n await this._builder.getImageForSelectionOrAnswer(viewModel.selection).then((imageSrc: string) => {\r\n viewModel.thumbnail = imageSrc === \"\" ? null : imageSrc;\r\n });\r\n });\r\n }\r\n }\r\n\r\n private _prepareSelections(value: Selection[]): void {\r\n this.selectionViewModels.length = 0;\r\n let selectionViewModel: SelectionViewModel;\r\n value.forEach(s => {\r\n if (s.presentationLevel === 1) {\r\n selectionViewModel = new SelectionViewModel();\r\n selectionViewModel.selection = s;\r\n this.selectionViewModels.push(selectionViewModel);\r\n } else if (s.presentationLevel > 1) {\r\n if (selectionViewModel) {\r\n selectionViewModel.children.push(s);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SelectionsComponent} from \"./selections.component\";\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n SelectionsComponent\r\n ],\r\n exports: [\r\n SelectionsComponent\r\n ]\r\n})\r\nexport class SelectionsModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {AnswerComponent as ɵc} from './app/components/answers/answer/answer.component';\nexport {LoaderComponent as ɵb} from './app/components/shared/loader/loader.component';\nexport {SharedModule as ɵa} from './app/components/shared/shared.module';\nexport {VisibilityObserverMasterDirective as ɵe} from './app/directives/visibility-observer-master.directive';\nexport {VisibilityObserverDirective as ɵd} from './app/directives/visibility-observer.directive';"],"names":["ObjectUtils","Mesh","THREE","Selection","BehaviorSubject","Color","SRGBColorSpace","MaterialLoader","JSZip","DecoNodeType","filter","take","EquirectangularReflectionMapping","MeshPhongMaterial","NearestFilter","DoubleSide","MeshPhysicalMaterial","MeshStandardMaterial","Configurator","isNill","NodeType","notNill","BusinessObjectFactory","DecoNodeKind","article","Article","DecoNode","Injectable","EventEmitter","Component","Input","Output","trigger","state","style","transition","animate","Directive","ElementRef","NgModule","CommonModule"],"mappings":"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"}
1
+ {"version":3,"file":"colijnit-configurator.umd.js","sources":["../../node_modules/tslib/tslib.es6.mjs","../../src/utils/object.utils.ts","../../src/utils/threed.utils.ts","../../src/utils/scene-utils.ts","../../src/model/variation-settings.ts","../../src/model/material.ts","../../src/utils/base-utils.ts","../../src/utils/image.utils.ts","../../src/utils/asset.utils.ts","../../src/model/variation.ts","../../src/utils/variation-utils.ts","../../src/helper/variation-helper.ts","../../src/app/services/configurator.service.ts","../../src/app/utils/object.utils.ts","../../src/app/builder.ts","../../src/app/components/answers/answers.component.ts","../../src/app/components/answers/answer/answer.component.ts","../../src/app/directives/visibility-observer-master.directive.ts","../../src/app/directives/visibility-observer.directive.ts","../../src/app/components/shared/loader/loader.component.ts","../../src/app/components/shared/shared.module.ts","../../src/app/components/answers/answers.module.ts","../../src/app/components/selections/selections.component.ts","../../src/app/components/selections/selections.module.ts","../../src/colijnit-configurator.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import {Material, Mesh, Object3D} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose();\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose();\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n this.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import * as THREE from \"three\";\nimport {ObjectUtils} from \"./object.utils\";\nimport {FileUtils} from \"./file.utils\";\n\nexport class ThreedUtils {\n\n private _objectCache: Map<string, THREE.Object3D> = new Map();\n\n public clearCache(): void {\n const objs: THREE.Object3D[] = Array.from(this._objectCache.values());\n objs.forEach(o => ObjectUtils.DisposeObject(o));\n this._objectCache.clear();\n }\n\n public download3DSource(fileName: string, assetPath: string): Promise<THREE.Object3D> {\n return new Promise(async (resolve: Function, reject: Function) => {\n fileName = fileName.replace('.unity3d', '');\n let lookupFileName: string = fileName + (fileName.indexOf('.glb') < 0 ? '.glb' : '');\n if (this._objectCache.has(lookupFileName)) {\n resolve(this._objectCache.get(lookupFileName));\n return;\n }\n this.loadGlbSource(lookupFileName)\n .then((obj: THREE.Object3D) => {\n this._objectCache.set(lookupFileName, obj);\n resolve(obj);\n })\n .catch(() => {\n reject(`GLB source not found! (${lookupFileName})`);\n });\n });\n }\n\n public readFileAsText(file: File): Promise<string> {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onload = (e: any) => resolve(e.target.result);\n fileReader.onerror = error => reject(error);\n fileReader.readAsText(file);\n });\n }\n\n public async loadJsonModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const json: string = await this._readJsonFile(filePath);\n const loader = new THREE.ObjectLoader();\n loader.crossOrigin = 'Anonymous';\n return new Promise((resolve, reject) => {\n try {\n const obj = loader.parse(json);\n this._objectCache.set(filePath, obj);\n resolve(obj);\n } catch (e) {\n reject(null);\n }\n });\n }\n\n public async loadJsonObjectModel(filePath: string): Promise<any> {\n if (this._objectCache.has(filePath)) {\n return Promise.resolve(this._objectCache.get(filePath));\n }\n const loader = new THREE.ObjectLoader();\n loader.setCrossOrigin('Anonymous');\n loader.setResourcePath('');\n return new Promise((resolve, reject) => {\n loader.load(filePath,\n (object: any) => {\n const obj: THREE.Object3D = (object.type === 'Scene' && object.children[0].type === 'Object3D') ? object.children[0] : object;\n this._objectCache.set(filePath, obj);\n resolve(obj as THREE.Object3D);\n },\n xhr => null,\n error => reject(error)\n );\n });\n }\n\n public async loadGlbModel(file: string, cleanUp: boolean = true): Promise<THREE.Object3D> {\n if (this._objectCache.has(file)) {\n return Promise.resolve(this._objectCache.get(file));\n }\n if (!window.hasOwnProperty('loadGLTF')) {\n console.error('loadGLTF not defined in window global');\n return null;\n }\n // const loader = new GLTFLoader();\n const obj: THREE.Object3D = await (window as any).loadGLTF(file);\n if (obj) {\n this._cleanedUpObjects(obj, cleanUp);\n this._objectCache.set(file, obj);\n return obj;\n } else {\n return null;\n }\n }\n\n public async loadGlbSource(file: string): Promise<THREE.Object3D> {\n const obj = await this.loadGlbModel(file, false);\n if (obj) {\n obj.children = obj.children.filter(c => !(c instanceof THREE.Camera));\n obj.children.sort((a, b) => a['name'] < b['name'] ? 1 : -1);\n obj.children.forEach((c: THREE.Object3D) => {\n c.traverse((t: THREE.Object3D) => {\n t.visible = !t.name.toLowerCase().startsWith('c_');\n });\n c.visible = false;\n });\n if (obj.children.length === 1 && obj.children[0] instanceof THREE.Group) { // flatten children\n const children: any = obj.children[0].children.slice();\n const name: string = obj.children[0].name;\n obj.children.length = 0;\n const parent: THREE.Object3D = new THREE.Object3D();\n parent.name = name;\n parent.children = children;\n obj.add(parent);\n }\n }\n return obj;\n }\n\n public async textureFromUrl(url: string): Promise<any> {\n // url = this._includeBaseUrl(url);\n return new Promise((resolve, reject) => {\n const textureLoader = new THREE.TextureLoader();\n // textureLoader.setBaseU(this._settingsService.settings.assetPath);\n textureLoader.load(url,\n (texture: THREE.Texture) => {\n texture.wrapT = THREE.RepeatWrapping;\n texture.wrapS = THREE.RepeatWrapping;\n texture.repeat.set(1, 1);\n texture.needsUpdate = true;\n return resolve(texture);\n },\n null,\n reject\n );\n });\n }\n\n private _cleanedUpObjects(object: THREE.Object3D, cleanUp: boolean = true): THREE.Object3D {\n let obj: THREE.Object3D = new THREE.Object3D();\n object.children.forEach((c: THREE.Object3D) => {\n if (!(c instanceof THREE.Camera)) {\n if (cleanUp && c instanceof THREE.Group || (c.children.length === 1 && c.children[0] instanceof THREE.Group)) {\n this._addGroupChildrenToObject(c, obj);\n } else if ((cleanUp && !(c instanceof THREE.Mesh)) || (!(c instanceof THREE.Mesh) && !c.name && c.children.length > 0)) {\n c.children.forEach((child) => {\n child.translateY(c.position.y);\n });\n c.translateY(-c.position.y);\n if (obj.children.length > 0) {\n obj.add(c.clone());\n } else {\n obj = c.clone();\n }\n } else {\n // if (c.position.y > 0 || c.position.y < 0) {\n // c.children.forEach((child) => {\n // child.translateY(c.position.y);\n // });\n // c.translateY(-c.position.y);\n // }\n obj.add(c.clone());\n }\n }\n });\n const boundingBox = new THREE.Box3().setFromObject(obj);\n const bbCenterPivot = new THREE.Vector3();\n boundingBox.getCenter(bbCenterPivot);\n const delta: THREE.Vector3 = new THREE.Vector3().add(bbCenterPivot).negate();\n obj.children.forEach((cc) => {\n cc.position.add(delta);\n });\n return obj;\n }\n\n private _addGroupChildrenToObject(group: THREE.Object3D, obj: THREE.Object3D, cleanUp: boolean = true): void {\n group.children.forEach((gc: THREE.Object3D) => {\n if (cleanUp && gc instanceof THREE.Group) {\n this._addGroupChildrenToObject(gc, obj);\n } else {\n // gc.translateX(-group.position.x);\n gc.translateY(group.position.y);\n // gc.translateZ(-group.position.z);\n obj.add(gc.clone());\n }\n });\n }\n\n private _iterateChildren(children: THREE.Object3D[], callback: (child: THREE.Mesh) => {}): void {\n for (let i = 0; i < children.length; i++) {\n const child: THREE.Object3D = children[i];\n if (child instanceof THREE.Mesh) {\n callback(child);\n } else {\n this._iterateChildren(child.children, callback);\n }\n }\n }\n\n private async _readJsonFile(filePath: string): Promise<any> {\n try {\n const response = await fetch(filePath);\n if (!response.ok) {\n return '';\n } else {\n let empty = false;\n await response.clone().text().then((value) => {\n if (value === '') {\n empty = true;\n }\n });\n return empty ? {} : response.json();\n }\n } catch (e) {\n return '';\n }\n }\n\n}\n","import * as THREE from 'three';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\n\r\nexport class SceneUtils {\r\n\r\n public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n part1: any, part2: any, isFirstElement: boolean, createAddableFn?: Function): boolean {\r\n let addable: any;\r\n if (createAddableFn) {\r\n addable = part2;\r\n part2 = createAddableFn(addable);\r\n }\r\n if (part1 && part2) {\r\n let con1: THREE.Object3D;\r\n let con2: THREE.Object3D;\r\n // if part2 is an addable and decoConnection is present, then no need to iterate through connectors\r\n if (addable && addable instanceof Selection && addable.decoConnection) {\r\n con1 = part1.children.find(c => c.name === addable.decoConnection);\r\n if (!con1) {\r\n return false;\r\n }\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < part1.children.length; i++) {\r\n for (let ii = 0; ii < part2.children.length; ii++) {\r\n con1 = part1.children[i];\r\n con2 = part2.children[ii];\r\n // if these connectors can connect connect them\r\n if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(part1.children, con1, con2, isFirstElement)) {\r\n // if addable, continue this loop with a new addable\r\n if (addable) {\r\n const newPart2: any = createAddableFn(addable, part2, part1);\r\n // reference of part2 changed, so refresh con2\r\n this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n } else {\r\n return this.SelectorConnect(scene, parent, con1, con2);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // public static TrySelectorConnection(scene: THREE.Scene, parent: THREE.Object3D,\r\n // part1: any, part2: any, createAddableFn?: Function): boolean {\r\n // let addable: any;\r\n // if (createAddableFn) {\r\n // addable = part2;\r\n // part2 = createAddableFn(addable);\r\n // }\r\n // for (let i = 0; i < part1.children.length; i++) {\r\n // for (let ii = 0; ii < part2.children.length; ii++) {\r\n // const con1: THREE.Object3D = part1.children[i];\r\n // const con2: THREE.Object3D = part2.children[ii];\r\n // // if these connectors can connect connect them\r\n // if (!con1['connected'] && !con2['connected'] && this.CanSelectorConnect(con1, con2)) {\r\n // // if addable, continue this loop with a new addable\r\n // if (addable) {\r\n // const newPart2: THREE.Object3D = createAddableFn(addable, part2, part1);\r\n // // reference of part2 changed, so refresh con2\r\n // this.SelectorConnect(scene, parent, con1, newPart2.children[ii]);\r\n // } else {\r\n // return this.SelectorConnect(scene, parent, con1, con2);\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return false;\r\n // }\r\n\r\n public static Convert3DPointToScreenPoint(point: THREE.Vector3, camera: THREE.Camera, width: number, height: number): THREE.Vector2 {\r\n if (!point) {\r\n return new THREE.Vector2();\r\n }\r\n const vector: THREE.Vector3 = point.clone().project(camera);\r\n vector.x = (vector.x + 1) / 2 * width;\r\n vector.y = -(vector.y - 1) / 2 * height;\r\n return new THREE.Vector2(vector.x, vector.y);\r\n }\r\n\r\n\r\n public static CanSelectorConnect(\r\n consPart1: THREE.Object3D[], con1: THREE.Object3D | any, con2: THREE.Object3D | any, startWithMale?: boolean): boolean {\r\n const con1Name: string = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') ? con1.name : con1.connector;\r\n const con2Name: string = (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con2.name : con2.connector;\r\n const sameParent: boolean = (con1.constructor.name === 'Mesh' || con1.constructor.name === 'Object3D') &&\r\n (con2.constructor.name === 'Mesh' || con2.constructor.name === 'Object3D') ? con1.parent === con2.parent : false;\r\n if (!con1Name || !con2Name) {\r\n return false;\r\n }\r\n const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n parts2: string[] = con2Name.toUpperCase().split('_');\r\n if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n return connectable;\r\n }\r\n return false;\r\n }\r\n\r\n // public static CanSelectorConnect(con1: THREE.Object3D | any, con2: THREE.Object3D | any): boolean {\r\n // const con1Name: string = con1 instanceof THREE.Object3D ? con1.name : con1.connector;\r\n // const con2Name: string = con2 instanceof THREE.Object3D ? con2.name : con2.connector;\r\n // const sameParent: boolean = con1 instanceof THREE.Object3D && con2 instanceof THREE.Object3D ? con1.parent === con2.parent : false;\r\n // const parts1: string[] = con1Name.toUpperCase().split('_'),\r\n // parts2: string[] = con2Name.toUpperCase().split('_');\r\n // if (parts1.length >= 3 && parts2.length >= 3 && !sameParent) {\r\n // const connectable: boolean = parts1[0] === 'C' && parts2[0] === 'C' &&\r\n // parts1[1] === parts2[1] && parts1[2] !== parts2[2];\r\n // return connectable;\r\n // }\r\n // return false;\r\n // }\r\n\r\n private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n if (!scene || !parent) {\r\n return false;\r\n }\r\n con1['connectedTo'] = con2 && con2.parent ? con2.parent.name : '';\r\n con2['connectedTo'] = con1 && con1.parent ? con1.parent.name : '';\r\n\r\n const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n\r\n parent.updateMatrixWorld();\r\n motherRotation.copy(parent.rotation);\r\n parent.getWorldPosition(motherPosition);\r\n\r\n parent.rotation.set(0, 0, 0);\r\n parent.position.set(0, 0, 0);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n if (con1) {\r\n con1.getWorldQuaternion(con1Quat);\r\n }\r\n const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n if (con2) {\r\n con2.getWorldQuaternion(con2Quat);\r\n }\r\n const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n if (con1 && con1.parent) {\r\n con1.parent.getWorldQuaternion(con1QuatParent);\r\n }\r\n const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n if (con2 && con2.parent) {\r\n con2.parent.getWorldQuaternion(con2QuatParent);\r\n }\r\n\r\n const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n con1Quat.invert(),\r\n con2Quat\r\n ).multiply(\r\n new THREE.Quaternion().multiplyQuaternions(\r\n con1QuatParent,\r\n con1QuatParent\r\n )\r\n );\r\n if (con2 && con2.parent) {\r\n con2.parent.quaternion.copy(rotation);\r\n }\r\n // Update because the matrix has been tempered with\r\n scene.updateMatrixWorld(true);\r\n\r\n // Move the connectors towards eachother\r\n const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n if (con1) {\r\n con1.getWorldPosition(con1Pos);\r\n }\r\n const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n if (con2) {\r\n con2.getWorldPosition(con2Pos);\r\n }\r\n\r\n const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n if (con2 && con2.parent) {\r\n con2.parent.position.x += move.x;\r\n con2.parent.position.y += move.y;\r\n con2.parent.position.z += move.z;\r\n }\r\n\r\n // reset parent's objects rotation and position\r\n parent.rotation.copy(motherRotation);\r\n parent.position.copy(motherPosition);\r\n\r\n scene.updateMatrixWorld(true);\r\n\r\n // Set the connected flag\r\n if (con1) {\r\n con1['connected'] = true;\r\n }\r\n if (con2) {\r\n con2['connected'] = true;\r\n }\r\n return true;\r\n }\r\n\r\n // private static SelectorConnect(scene: THREE.Scene, parent: THREE.Object3D, con1: THREE.Object3D, con2: THREE.Object3D): boolean {\r\n // if (!scene || !parent) {\r\n // return false;\r\n // }\r\n // con1['connectedTo'] = con2.parent.name;\r\n // con2['connectedTo'] = con1.parent.name;\r\n //\r\n // const motherRotation: THREE.Euler = new THREE.Euler(0, 0, 0);\r\n // const motherPosition: THREE.Vector3 = new THREE.Vector3(0, 0, 0);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n // motherRotation.copy(parent.rotation);\r\n // parent.getWorldPosition(motherPosition);\r\n //\r\n // parent.rotation.set(0, 0, 0);\r\n // parent.position.set(0, 0, 0);\r\n //\r\n // const con1Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.getWorldQuaternion(con1Quat);\r\n // const con2Quat: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.getWorldQuaternion(con2Quat);\r\n // const con1QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con1.parent.getWorldQuaternion(con1QuatParent);\r\n // const con2QuatParent: THREE.Quaternion = new THREE.Quaternion();\r\n // con2.parent.getWorldQuaternion(con2QuatParent);\r\n //\r\n // const rotation: THREE.Quaternion = new THREE.Quaternion().multiplyQuaternions(\r\n // con1Quat.invert(),\r\n // con2Quat\r\n // ).multiply(\r\n // new THREE.Quaternion().multiplyQuaternions(\r\n // con1QuatParent,\r\n // con1QuatParent\r\n // )\r\n // );\r\n //\r\n // con2.parent.quaternion.copy(rotation);\r\n // // Update because the matrix has been tempered with\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Move the connectors towards eachother\r\n // const con1Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con1.getWorldPosition(con1Pos);\r\n // const con2Pos: THREE.Vector3 = new THREE.Vector3();\r\n // con2.getWorldPosition(con2Pos);\r\n //\r\n // const move: THREE.Vector3 = con1Pos.sub(con2Pos);\r\n // con2.parent.position.x += move.x;\r\n // con2.parent.position.y += move.y;\r\n // con2.parent.position.z += move.z;\r\n //\r\n // // reset parent's objects rotation and position\r\n // parent.rotation.copy(motherRotation);\r\n // parent.position.copy(motherPosition);\r\n //\r\n // scene.updateMatrixWorld(true);\r\n //\r\n // // Set the connected flag\r\n // con1['connected'] = true;\r\n // con2['connected'] = true;\r\n // return true;\r\n // }\r\n\r\n}\r\n","import {BehaviorSubject, Subject} from 'rxjs';\n\nexport class VariationSettingsSettings {\n repeatx: number;\n repeaty: number;\n roughness: number;\n metalness: number;\n}\n\nexport class VariationSettings {\n public id: string;\n public settings: VariationSettingsSettings = new VariationSettingsSettings();\n public texture: string;\n public textureFilename: string;\n public normal: string;\n public normalFilename: string;\n public ao: string;\n public aoFilename: string;\n public metalness: string;\n public metalnessFilename: string;\n public roughness: string;\n public roughnessFilename: string;\n public orm: string;\n public ormFilename: string;\n public displacement: string;\n public displacementValue: number;\n public displacementFilename: string;\n public sheen: number;\n public sheenColor: string;\n public sheenColorMap: string;\n public sheenColorMapFilename: string;\n public transmissionMap: string;\n public transmissionMapFilename: string;\n public sheenRoughness: number;\n public sheenRoughnessMap: string;\n public sheenRoughnessMapFilename: string;\n public emissive: string;\n public emissiveFilename: string;\n public emissiveIntensity: number;\n public emissiveValue: string;\n public opacity: number;\n public transparent: boolean;\n public envMap: string;\n public envMapFilename: string;\n public envMapIntensity: number;\n public reflectivity: number;\n public side: number;\n public transmission: number;\n public ior: number;\n public thickness: number;\n public specularIntensity: number;\n\n // for pre-saved materials downloaded as zip\n public material: any;\n\n public loading: boolean = false;\n public loaded: BehaviorSubject<VariationSettings> = new BehaviorSubject<VariationSettings>(undefined);\n\n public copyFrom(settings: VariationSettings): void {\n this.settings = settings.settings;\n this.texture = settings.texture;\n this.textureFilename = settings.textureFilename;\n this.normal = settings.normal;\n this.normalFilename = settings.normalFilename;\n this.ao = settings.ao;\n this.aoFilename = settings.aoFilename;\n this.metalness = settings.metalness;\n this.metalnessFilename = settings.metalnessFilename;\n this.roughness = settings.roughness;\n this.roughnessFilename = settings.roughnessFilename;\n this.orm = settings.orm;\n this.ormFilename = settings.ormFilename;\n this.displacement = settings.displacement;\n this.displacementValue = settings.displacementValue;\n this.displacementFilename = settings.displacementFilename;\n this.sheen = settings.sheen;\n this.sheenColor = settings.sheenColor;\n this.sheenColorMap = settings.sheenColorMap;\n this.sheenColorMapFilename = settings.sheenColorMapFilename;\n this.transmissionMap = settings.transmissionMap;\n this.transmissionMapFilename = settings.transmissionMapFilename;\n this.sheenRoughness = settings.sheenRoughness;\n this.sheenRoughnessMap = settings.sheenRoughnessMap;\n this.sheenRoughnessMapFilename = settings.sheenRoughnessMapFilename;\n this.emissive = settings.emissive;\n this.emissiveFilename = settings.emissiveFilename;\n this.emissiveIntensity = settings.emissiveIntensity;\n this.emissiveValue = settings.emissiveValue;\n this.opacity = settings.opacity;\n this.transparent = settings.transparent;\n this.envMap = settings.envMap;\n this.envMapFilename = settings.envMapFilename;\n this.envMapIntensity = settings.envMapIntensity;\n this.reflectivity = settings.reflectivity;\n this.side = settings.side;\n this.transmission = settings.transmission;\n this.ior = settings.ior;\n this.thickness = settings.thickness;\n this.specularIntensity = settings.specularIntensity;\n this.material = settings.material;\n }\n\n}\n","import {Color, Texture} from 'three';\n\nexport class Material {\n public name: string;\n public schema: string;\n public specular: Color = new Color(0.3, 0.3, 0.3);\n public shininess = 0;\n // public roughness = 1;\n // public metalness = 0.5;\n public normal: Texture;\n public texture: Texture;\n public ao: Texture;\n public metalness: Texture;\n public roughness: Texture;\n public repeatX = 4;\n public repeatY = 4;\n public loaded = false;\n public metalnessValue: number;\n public roughnessValue: number;\n public displacement: Texture;\n public displacementValue: number;\n public sheen: number;\n public sheenColor: Color | string | number;\n public sheenColorMap: Texture | null;\n public sheenRoughness: number;\n public sheenRoughnessMap: Texture | null;\n public emissive: Texture;\n public emissiveValue: Color | string | number;\n public emissiveIntensityValue: number;\n public envMap: Texture;\n public envMapIntensity: number;\n public opacity: number;\n public transparent: boolean;\n public reflectivity: number;\n public side: number;\n public ior: number;\n public transmission: number;\n public thickness: number;\n public specularIntensity: number;\n public transmissionMap: Texture | null;\n\n public clearcoatMap: Texture | null;\n public clearcoatRoughnessMap: Texture | null;\n}\n","export class BaseUtils {\r\n public debug: Function;\r\n\r\n protected log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import * as THREE from 'three';\nimport {Material} from '../model/material';\nimport {BaseUtils} from './base-utils';\n\n// @dynamic\nexport class ImageUtils extends BaseUtils {\n\n public static textures: Map<string, THREE.Texture> = new Map();\n\n public static async CreateTextureFromBase64(id: string, base64: string, material: Material, defaultFlip: boolean = false): Promise<THREE.Texture> {\n if (ImageUtils.textures.has(id)) {\n return ImageUtils.textures.get(id);\n }\n try {\n if ((window as any).textureLoader) {\n const texture: THREE.Texture = await (window as any).textureLoader(base64, material);\n ImageUtils.textures.set(id, texture);\n return texture;\n }\n const loader = new THREE.TextureLoader();\n const texture: THREE.Texture = await new Promise((resolve, reject) => {\n loader.load(\n base64,\n resolve,\n undefined,\n (err) => reject(err)\n );\n });\n texture.anisotropy = 16;\n texture.wrapS = THREE.RepeatWrapping;\n texture.wrapT = THREE.RepeatWrapping;\n texture.repeat = new THREE.Vector2(\n material?.repeatX ?? 1,\n material?.repeatY ?? 1\n );\n texture.flipY = defaultFlip;\n texture.needsUpdate = true;\n\n ImageUtils.textures.set(id, texture);\n return texture;\n } catch (err) {\n return null;\n }\n }\n\n public static getDocBodyWithMimeTypeDefinition(fileName: string, documentBody: string): string {\n if (documentBody === null) {\n return documentBody;\n }\n const fileExtension: string = fileName.substr(fileName.lastIndexOf('.') + 1);\n switch (fileExtension.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n return 'data:image/jpg;base64,' + documentBody;\n case 'png':\n return 'data:image/png;base64,' + documentBody;\n case 'gif':\n return 'data:image/gif;base64,' + documentBody;\n case 'bmp':\n return 'data:image/bmp;base64,' + documentBody;\n default:\n return 'data:image/png;base64,' + documentBody;\n }\n }\n\n public static getFixedImageFilepathUrl(imageFilepathUrl: string): string {\n return imageFilepathUrl.replace('/content/', '/content43/');\n }\n\n public static ClearCache(): void {\n ImageUtils.textures.forEach(value => {\n value.dispose();\n });\n ImageUtils.textures.clear();\n }\n\n}\n","import {Material} from '../model/material';\nimport {ImageUtils} from './image.utils';\nimport {VariationSettings} from '../model/variation-settings';\nimport {Color, SRGBColorSpace} from 'three';\n\nexport class FurnitureMaterial extends Material {\n\n public textureFilename?: string;\n public normalFilename?: string;\n public aoFilename?: string;\n public metalnessFilename?: string;\n public roughnessFilename?: string;\n public displacementFilename?: string;\n public envMapFilename?: string;\n public emissiveFileName?: string;\n public sheenColorMapFileName?: string;\n public sheenRoughnessMapFileName?: string;\n public transmissionMapFileName?: string;\n\n}\n\nexport class AssetUtils {\n\n public static async CreateMaterialFromAsset(asset: VariationSettings): Promise<Material> {\n const material: FurnitureMaterial = new Material();\n try {\n if (!asset) {\n return material;\n }\n if (asset.settings) {\n AssetUtils.setSettingsOfMaterial(material, asset.settings);\n }\n if (asset.texture) {\n material.texture = await ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);\n material.texture.colorSpace = SRGBColorSpace;\n material.textureFilename = asset.textureFilename;\n }\n if (asset.normal) {\n material.normal = await ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);\n material.normalFilename = asset.normalFilename;\n }\n if (asset.orm) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_orm', asset.orm, material);\n material.roughness = material.ao;\n material.metalness = material.ao;\n material.aoFilename = asset.ormFilename;\n material.roughnessFilename = asset.ormFilename;\n material.metalnessFilename = asset.ormFilename;\n } else {\n if (asset.ao) {\n material.ao = await ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);\n material.aoFilename = asset.aoFilename;\n }\n if (asset.metalness) {\n material.metalness = await ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);\n material.metalnessFilename = asset.metalnessFilename;\n }\n if (asset.roughness) {\n material.roughness = await ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);\n material.roughnessFilename = asset.roughnessFilename;\n }\n }\n if (asset.displacement) {\n material.displacement = await ImageUtils.CreateTextureFromBase64(asset.id + '_displacement', asset.displacement, material);\n material.displacementFilename = asset.displacementFilename;\n }\n if (asset.envMap) {\n material.envMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_env', asset.envMap, material, true);\n material.envMapFilename = asset.envMapFilename;\n }\n if (asset.sheenColorMap) {\n material.sheenColorMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_color', asset.sheenColorMap, material);\n material.sheenColorMapFileName = asset.sheenColorMapFilename;\n }\n if (asset.sheenRoughnessMap) {\n material.sheenRoughnessMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_sheen_roughness', asset.sheenRoughnessMap, material);\n material.sheenRoughnessMapFileName = asset.sheenRoughnessMapFilename;\n }\n if (asset.transmissionMap) {\n material.transmissionMap = await ImageUtils.CreateTextureFromBase64(asset.id + '_transmission', asset.transmissionMap, material);\n material.transmissionMapFileName = asset.transmissionMapFilename;\n }\n if (asset.emissive) {\n material.emissive = await ImageUtils.CreateTextureFromBase64(asset.id + '_emissive', asset.emissive, material);\n material.emissiveFileName = asset.emissiveFilename;\n }\n material.sheen = asset.sheen;\n material.emissiveIntensityValue = asset.emissiveIntensity;\n material.emissiveValue = asset.emissiveValue;\n material.side = asset.side;\n material.sheenColor = asset.sheenColor;\n material.sheenRoughness = asset.sheenRoughness;\n material.opacity = asset.opacity;\n material.transparent = asset.transparent;\n material.envMapIntensity = asset.envMapIntensity;\n material.reflectivity = asset.reflectivity;\n material.displacementValue = asset.displacementValue;\n material.transmission = asset.transmission;\n material.ior = asset.ior;\n material.thickness = asset.thickness;\n material.specularIntensity = asset.specularIntensity;\n } catch (e) {\n console.error(e);\n }\n return material;\n }\n\n public static setSettingsOfMaterial(material: Material, settings: any): void {\n const shininess = parseFloat(settings['power']);\n if (!isNaN(shininess)) {\n material.shininess = shininess;\n // material.roughness = 1 - (shininess / 100);\n }\n\n const level = parseFloat(settings['level']);\n if (!isNaN(level)) {\n material.specular = new Color(level, level, level);\n }\n\n const repeatObjectUsed: boolean = settings.hasOwnProperty('repeat');\n const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);\n if (!isNaN(repeatx)) {\n material.repeatX = repeatx;\n }\n\n const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);\n if (!isNaN(repeaty)) {\n material.repeatY = repeaty;\n }\n\n const metalness = parseFloat(settings['metalness']);\n if (!isNaN(metalness)) {\n material.metalnessValue = Math.min(1, metalness);\n }\n\n const roughness = parseFloat(settings['roughness']);\n if (!isNaN(roughness)) {\n material.roughnessValue = Math.min(1, roughness);\n }\n }\n}\n","import {Material} from './material';\n\nexport class Variation {\n public decoId: number;\n public brandId: string;\n public gameObjectName: string;\n public node: any;\n public optionText: string;\n public supplierArticleNr: string;\n public materialId: string;\n public material: any;\n}\n","import {VariationSettings} from '../model/variation-settings';\r\n// @ts-ignore\r\nimport JSZip from 'jszip';\r\nimport {Color, Material, MaterialLoader, Mesh, Object3D, SRGBColorSpace} from 'three';\r\n\r\n// @dynamic\r\nexport class VariationUtils {\r\n private static MaterialCache: Map<string, any> = new Map();\r\n\r\n public static ClearCache(): void {\r\n this.MaterialCache.clear();\r\n }\r\n\r\n public static async LoadVariation(assetPath: string, fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n\r\n if (!fileName.includes('ione3d')) {\r\n fileName = fileName.concat('.ione3d');\r\n }\r\n\r\n const id: string = fileName.substring(0, fileName.lastIndexOf('.ione3d'));\r\n\r\n if (!assetPath.endsWith('/')) {\r\n assetPath += '/';\r\n }\r\n\r\n if (!window.hasOwnProperty('downloadVariation')) {\r\n console.error('downloadVariation not defined in window global');\r\n throw new Error('downloadVariation not defined in window global');\r\n }\r\n\r\n if (this.MaterialCache.has(id)) {\r\n return this.MaterialCache.get(id);\r\n }\r\n\r\n try {\r\n const file = await (window as any).downloadVariation(\r\n `${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`\r\n );\r\n\r\n const settings: VariationSettings = await VariationUtils.GetVariationSettingsFromFile(id, file);\r\n this.MaterialCache.set(id, settings);\r\n return settings;\r\n } catch (err) {\r\n console.error('Error loading variation:', err);\r\n throw err;\r\n }\r\n }\r\n // public static GetMaterialFromName(variationFolder: string, material: any): Promise<MeshStandardMaterial> {\r\n // return new Promise((resolve: Function) => {\r\n // if (!material) {\r\n // resolve(null);\r\n // }\r\n // if (this.MaterialCache.has(material.name)) {\r\n // resolve(this.MaterialCache.get(material.name).clone());\r\n // } else {\r\n // VariationUtils.LoadVariation(variationFolder, material.name, false).then((settings: VariationSettings) => {\r\n // if (settings) {\r\n // AssetUtils.CreateMaterialFromAsset(settings).then((materialObj: Material) => {\r\n // const materialParams: MeshStandardMaterialParameters = {};\r\n // materialParams.name = material.name;\r\n // materialParams.map = materialObj.texture;\r\n // materialParams.normalMap = materialObj.normal;\r\n // materialParams.aoMap = materialObj.ao;\r\n // materialParams.roughnessMap = materialObj.roughness;\r\n // materialParams.metalnessMap = materialObj.metalness;\r\n // materialParams.roughness = 1;\r\n // materialParams.metalness = 1;\r\n // const pbrMat: MeshStandardMaterial = new MeshStandardMaterial(materialParams);\r\n // this.MaterialCache.set(material.name, pbrMat);\r\n // resolve(pbrMat.clone());\r\n // });\r\n // } else {\r\n // resolve(material);\r\n // }\r\n // });\r\n // }\r\n // });\r\n // }\r\n\r\n private static async GetVariationSettingsFromFile(id: string, compressedFile: any): Promise<VariationSettings> {\r\n if (!compressedFile) {\r\n return null;\r\n }\r\n const zipContent = await VariationUtils.GetZipContent(compressedFile);\r\n const variationSettings: VariationSettings = new VariationSettings();\r\n let index;\r\n variationSettings.id = id;\r\n\r\n if (zipContent) {\r\n if (zipContent.files['material.glb']) {\r\n const material: string = await zipContent.files['material.glb'].async('arraybuffer');\r\n variationSettings.material = await VariationUtils.LoadMaterialFromGlb(material);\r\n } else {\r\n if (zipContent.files['index.json']) {\r\n const indexFile: string = await zipContent.files['index.json'].async('string');\r\n index = JSON.parse(indexFile);\r\n }\r\n if (index) {\r\n await VariationUtils.CreateSettingsBasedOnIndex(index, variationSettings, zipContent);\r\n } else {\r\n await VariationUtils.CreateSettingsBasedOnFileName(variationSettings, zipContent);\r\n }\r\n }\r\n }\r\n return variationSettings;\r\n }\r\n\r\n private static async CreateSettingsBasedOnIndex(index: any, variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n if (index.normalFile) {\r\n variationSettings.normal = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.normalFile], index.normalFile);\r\n variationSettings.normalFilename = index.normalFile;\r\n }\r\n if (index.diffuseFile) {\r\n variationSettings.texture = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.diffuseFile], index.diffuseFile);\r\n variationSettings.textureFilename = index.diffuseFile;\r\n }\r\n if (index.ormFile) {\r\n variationSettings.orm = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.ormFile], index.ormFile);\r\n variationSettings.ormFilename = index.ormFile;\r\n } else {\r\n if (index.aoFile) {\r\n variationSettings.ao = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.aoFile], index.aoFile);\r\n variationSettings.aoFilename = index.aoFile;\r\n }\r\n if (index.metalnessFile) {\r\n variationSettings.metalness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.metalnessFile], index.metalnessFile);\r\n variationSettings.metalnessFilename = index.metalnessFile;\r\n }\r\n if (index.roughnessFile) {\r\n variationSettings.roughness = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.roughnessFile], index.roughnessFile);\r\n variationSettings.roughnessFilename = index.roughnessFile;\r\n }\r\n }\r\n if (index.displacementFile) {\r\n variationSettings.displacement = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.displacementFile], index.displacementFile);\r\n variationSettings.displacementFilename = index.displacementFile;\r\n }\r\n if (index.emissiveFile) {\r\n variationSettings.emissive = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.emissiveFile], index.emissiveFile);\r\n variationSettings.emissiveFilename = index.emissiveFile;\r\n }\r\n if (index.envMapFile) {\r\n variationSettings.envMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.envMapFile], index.envMapFile);\r\n variationSettings.envMapFilename = index.envMapFile;\r\n }\r\n if (index.sheenColorMapFile) {\r\n variationSettings.sheenColorMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenColorMapFile], index.sheenColorMapFile);\r\n variationSettings.sheenColorMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.sheenRoughnessMapFile) {\r\n variationSettings.sheenRoughnessMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.sheenRoughnessMapFile], index.sheenRoughnessMapFile);\r\n variationSettings.sheenRoughnessMapFilename = index.sheenColorMapFile;\r\n }\r\n if (index.transmissionMapFile) {\r\n variationSettings.transmissionMap = await VariationUtils.LoadFileContentFromZip(zipContent.files[index.transmissionMapFile], index.transmissionMapFile);\r\n variationSettings.transmissionMapFilename = index.transmissionMapFile;\r\n }\r\n if (index.repeat) {\r\n variationSettings.settings.repeatx = index.repeat.repeatx;\r\n variationSettings.settings.repeaty = index.repeat.repeaty;\r\n }\r\n variationSettings.settings.metalness = index.metalness;\r\n variationSettings.settings.roughness = index.roughness;\r\n\r\n if (index.sheen && typeof index.sheen === 'object') {\r\n variationSettings.sheen = 1;\r\n variationSettings.sheenColor = new Color(index.sheen.r, index.sheen.g, index.sheen.b).getHexString(SRGBColorSpace);\r\n } else {\r\n variationSettings.sheen = index.sheen;\r\n }\r\n if (index.sheenColor) {\r\n variationSettings.sheenColor = new Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.sheenRoughness = index.sheenRoughness;\r\n variationSettings.envMapIntensity = index.envMapIntensity;\r\n variationSettings.transparent = index.transparent;\r\n variationSettings.opacity = index.opacity;\r\n if (index.emissiveValue) {\r\n variationSettings.emissiveValue = new Color(index.emissiveValue.r, index.emissiveValue.g, index.emissiveValue.b).getHexString(SRGBColorSpace);\r\n }\r\n variationSettings.emissiveIntensity = index.emissiveIntensity;\r\n variationSettings.reflectivity = index.reflectivity;\r\n variationSettings.displacementValue = index.displacementValue;\r\n variationSettings.side = index.side;\r\n variationSettings.transmission = index.transmission;\r\n variationSettings.ior = index.ior;\r\n variationSettings.thickness = index.thickness;\r\n variationSettings.specularIntensity = index.specularIntensity;\r\n }\r\n\r\n private static async CreateSettingsBasedOnFileName(variationSettings: VariationSettings, zipContent: any): Promise<void> {\r\n const allLoaded: Promise<VariationSettings>[] = [];\r\n for (const fileName in zipContent.files) {\r\n if (zipContent.files.hasOwnProperty(fileName)) {\r\n const file: any = await zipContent.files[fileName];\r\n if (file.name.toLowerCase().indexOf('normal') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((normalFile: any) => {\r\n variationSettings.normal = `data:image/${this.GetBase64FileType(file.name)};base64,${normalFile}`;\r\n variationSettings.normalFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('ao') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((aoFile: any) => {\r\n variationSettings.ao = `data:image/${this.GetBase64FileType(file.name)};base64,${aoFile}`;\r\n variationSettings.aoFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('metalness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((metalnessFile: any) => {\r\n variationSettings.metalness = `data:image/${this.GetBase64FileType(file.name)};base64,${metalnessFile}`;\r\n variationSettings.metalnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('roughness') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((roughnessFile: any) => {\r\n variationSettings.roughness = `data:image/${this.GetBase64FileType(file.name)};base64,${roughnessFile}`;\r\n variationSettings.roughnessFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('diffuse') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((diffuseFile: any) => {\r\n variationSettings.texture = `data:image/${this.GetBase64FileType(file.name)};base64,${diffuseFile}`;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('displacement') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((displacementFile: any) => {\r\n variationSettings.displacement = `data:image/${this.GetBase64FileType(file.name)};base64,${displacementFile}`;\r\n variationSettings.displacementFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('emissive') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((emissiveFile: any) => {\r\n variationSettings.emissive = `data:image/${this.GetBase64FileType(file.name)};base64,${emissiveFile}`;\r\n variationSettings.emissiveFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('envMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((envMapFile: any) => {\r\n variationSettings.envMap = `data:image/${this.GetBase64FileType(file.name)};base64,${envMapFile}`;\r\n variationSettings.envMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenColorMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenColorMapFile: any) => {\r\n variationSettings.sheenColorMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenColorMapFile}`;\r\n variationSettings.sheenColorMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('sheenRoughnessMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((sheenRoughnessMapFile: any) => {\r\n variationSettings.sheenRoughnessMap = `data:image/${this.GetBase64FileType(file.name)};base64,${sheenRoughnessMapFile}`;\r\n variationSettings.sheenRoughnessMapFilename = fileName;\r\n }));\r\n } else if (file.name.toLowerCase().indexOf('transmissionMap') > -1 && this.FileIsImage(file.name)) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((transmissionMapFile: any) => {\r\n variationSettings.transmissionMap = `data:image/${this.GetBase64FileType(file.name)};base64,${transmissionMapFile}`;\r\n variationSettings.transmissionMapFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.jp') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('base64').then((textureFile: any) => {\r\n variationSettings.texture = 'data:image/jpeg;base64,' + textureFile;\r\n variationSettings.textureFilename = fileName;\r\n }));\r\n } else if (file.name.indexOf('.json') > -1) {\r\n allLoaded.push(zipContent.files[fileName].async('string').then((settingsFile: any) => {\r\n const settingsFileObj = JSON.parse(settingsFile);\r\n for (const key in settingsFileObj) {\r\n if (settingsFileObj.hasOwnProperty(key)) {\r\n variationSettings.settings[key] = settingsFileObj[key];\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n await Promise.all(allLoaded);\r\n }\r\n\r\n private static LoadMaterialFromJson(material: any): Material {\r\n const loader = new MaterialLoader();\r\n if (material.textures) {\r\n const textures: {} = {};\r\n for (let i = 0; i < material.textures.length; i++) {\r\n textures[material.textures[i].uuid] = material.textures[i];\r\n }\r\n loader.setTextures(textures);\r\n }\r\n return loader.parse(material);\r\n }\r\n\r\n private static LoadMaterialFromGlb(material: any): Promise<Material> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!window.hasOwnProperty('loadGLTF')) {\r\n console.error('loadGLTF not defined in window global');\r\n return reject();\r\n }\r\n const obj: Object3D = await (window as any).loadGLTF(material, false);\r\n if (obj) {\r\n return resolve((obj.children[0] as Mesh).material);\r\n }\r\n });\r\n }\r\n\r\n private static LoadFileContentFromZip(zip: any, fileName: string, base64: boolean = true): Promise<string> {\r\n return new Promise((resolve: Function) => {\r\n if (zip && fileName) {\r\n zip.async(base64 ? 'base64' : 'string').then((fileContent: any) => {\r\n if (base64) {\r\n resolve(`data:image/${this.GetBase64FileType(fileName)};base64,${fileContent}`);\r\n } else {\r\n resolve(fileContent);\r\n }\r\n });\r\n } else {\r\n resolve(undefined);\r\n }\r\n });\r\n }\r\n\r\n private static FileIsImage(fileName: string): boolean {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'bmp':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private static GetBase64FileType(fileName: string): string {\r\n const ext: string = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length).toLowerCase();\r\n switch (ext) {\r\n case 'jpg':\r\n case 'jpeg':\r\n return 'jpeg';\r\n case 'png':\r\n return 'png';\r\n case 'bmp':\r\n return 'bmp';\r\n default:\r\n return 'jpeg';\r\n }\r\n }\r\n\r\n // Get the content\r\n private static async GetZipContent(file): Promise<any> {\r\n try {\r\n const jszip = new JSZip();\r\n return await jszip.loadAsync(file);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {VariationSettings} from '../model/variation-settings';\r\nimport {AssetUtils} from '../utils/asset.utils';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Variation} from '../model/variation';\r\nimport {VariationUtils} from '../utils/variation-utils';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport * as THREE from 'three';\r\nimport {\r\n Color,\r\n DoubleSide,\r\n EquirectangularReflectionMapping,\r\n Mesh,\r\n MeshPhongMaterial, MeshPhysicalMaterial,\r\n MeshPhysicalMaterialParameters, MeshStandardMaterial, MeshStandardMaterialParameters,\r\n NearestFilter,\r\n Object3D\r\n} from 'three';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {Material} from '../model/material';\r\nimport {BaseUtils} from '../utils/base-utils';\r\n\r\nexport class VariationHelper extends BaseUtils {\r\n\r\n public assetPath: string;\r\n\r\n private _variations: VariationSettings[] = [];\r\n\r\n private _lastKnownVariations: Map<string, Variation[]> = new Map();\r\n\r\n public clearCache(): void {\r\n const variationMap: Variation[][] = Array.from(this._lastKnownVariations.values());\r\n variationMap.forEach((variations) => {\r\n variations.forEach((variation) => {\r\n try {\r\n if (variation.material) {\r\n if (variation.material.texture) {\r\n variation.material.texture.dispose();\r\n }\r\n if (variation.material.normal) {\r\n variation.material.normal.dispose();\r\n }\r\n if (variation.material.metalness) {\r\n variation.material.metalness.dispose();\r\n }\r\n if (variation.material.roughness) {\r\n variation.material.roughness.dispose();\r\n }\r\n if (variation.material.ao) {\r\n variation.material.ao.dispose();\r\n }\r\n }\r\n } catch (e) {\r\n }\r\n });\r\n });\r\n VariationUtils.ClearCache();\r\n ImageUtils.ClearCache();\r\n }\r\n\r\n public async loadPart(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n if (parts[i].decoNode && parts[i].decoNode.gameObjectName && parts[i].decoNode.type === DecoNodeType.Part) {\r\n const partSettings: VariationSettings =\r\n await VariationUtils.LoadVariation(this.assetPath, parts[i].decoNode.gameObjectName || parts[i].decoId);\r\n if (partSettings) {\r\n const partVariation: Variation = new Variation();\r\n partVariation.decoId = parseFloat(parts[i].decoNode.id);\r\n partVariation.brandId = parts[i].decoNode.brandId;\r\n partVariation.gameObjectName = parts[i].decoNode.gameObjectName;\r\n partVariation.material = await AssetUtils.CreateMaterialFromAsset(partSettings);\r\n // parts[i].variation = partVariation;\r\n this._applyMaterialPart(obj, partVariation, parts[i].node, usePbr);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n public async loadVariation(obj: Object3D, parts: any[], usePbr: boolean = false): Promise<void> {\r\n try {\r\n const len: number = parts.length;\r\n for (let i = 0; i < len; i++) {\r\n const variations: DecoNode[] = parts[i].variations;\r\n if (!variations || variations.length === 0) {\r\n if (this._getLastKnownVariations(parts[i].nodeId)) {\r\n parts[i].variations = this._getLastKnownVariations(parts[i].nodeId);\r\n this._applyVariations(obj, parts[i], usePbr);\r\n continue;\r\n } else {\r\n continue;\r\n }\r\n }\r\n const lastKnownVariations: Variation[] = [];\r\n const variationPromise: Promise<any>[] = [];\r\n for (let j = 0; j < variations.length; j++) {\r\n variationPromise.push(\r\n this.loadTheVariation(variations[j].gameObjectName || parts[i].decoId)\r\n .then((variationSettings: VariationSettings) => {\r\n const newVariation: Variation = new Variation();\r\n newVariation.decoId = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).decoId : parseFloat(variations[j].id);\r\n newVariation.node = variations[j].constructor.name === 'Variation' ? (variations[j] as unknown as Variation).node : variations[j].nodeId;\r\n newVariation.brandId = variations[j].brandId;\r\n newVariation.optionText = (variations[j] as any).optionText;\r\n newVariation.gameObjectName = variations[j].gameObjectName;\r\n newVariation.supplierArticleNr = (variations[j] as any).supplierArticleNr;\r\n newVariation.materialId = (variations[j] as any).materialId;\r\n newVariation.material = variationSettings ? variationSettings.material : null;\r\n lastKnownVariations.push(newVariation);\r\n })\r\n );\r\n }\r\n await Promise.all(variationPromise);\r\n this._setLastKnownVariations(`${parts[i].nodeId}_${parts[i].node}`, lastKnownVariations);\r\n parts[i].variations = lastKnownVariations;\r\n this._applyVariations(obj, parts[i], usePbr);\r\n }\r\n } catch (e) {\r\n this.log(e.message);\r\n }\r\n }\r\n\r\n public get(id: string): VariationSettings {\r\n const len: number = this._variations.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._variations[i].id && this._variations[i].id === id) {\r\n return this._variations[i];\r\n }\r\n }\r\n }\r\n\r\n public set(variations: VariationSettings): void {\r\n const idx: number = this._variations.findIndex(v => v.id === variations.id);\r\n if (idx > -1) {\r\n this._variations[idx] = variations;\r\n } else {\r\n this._variations.push(variations);\r\n }\r\n }\r\n\r\n public preloadVariations(fileNames: string[]): void {\r\n for (let i = 0; i < fileNames.length; i++) {\r\n const fileName: string = fileNames[i];\r\n if (fileName && !this.get(fileName)) {\r\n const settings: VariationSettings = new VariationSettings();\r\n settings.id = fileName;\r\n settings.loading = true;\r\n this._variations.push(settings);\r\n VariationUtils.LoadVariation(this.assetPath, fileName)\r\n .then((variationSettings: VariationSettings) => {\r\n settings.loading = false;\r\n if (variationSettings) {\r\n // this.set(variationSettings);\r\n settings.copyFrom(variationSettings);\r\n }\r\n settings.loaded.next(settings);\r\n })\r\n .catch((err) => {\r\n console.error(`Error loading variation ${fileName}:`, err);\r\n settings.loading = false;\r\n settings.loaded.next(null);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public async loadTheVariation(fileName: string): Promise<VariationSettings> {\r\n if (!fileName) {\r\n return null;\r\n }\r\n const settings: VariationSettings = this.get(fileName);\r\n if (!settings) {\r\n return null;\r\n }\r\n if (settings.loading) {\r\n const sett = await this._waitForVariationToLoad(settings);\r\n await this._loadMaterialFromSettings(sett);\r\n return sett;\r\n } else {\r\n await this._loadMaterialFromSettings(settings);\r\n return settings;\r\n }\r\n }\r\n\r\n private async _loadMaterialFromSettings(settings: VariationSettings): Promise<void> {\r\n if (settings) {\r\n if (!settings.material) {\r\n settings.material = await AssetUtils.CreateMaterialFromAsset(settings);\r\n }\r\n }\r\n }\r\n\r\n private _waitForVariationToLoad(settings: VariationSettings): Promise<VariationSettings> {\r\n return new Promise((resolve: Function) => {\r\n settings.loaded.pipe(filter((value): value is VariationSettings => value !== undefined), take(1)).subscribe((value) => {\r\n resolve(value);\r\n });\r\n });\r\n }\r\n\r\n private _getChildrenFilterByProp(obj: Object3D, userDataObjectProp: string, prop: string, value: any): Object3D[] {\r\n return obj.children.filter((child) => {\r\n return child.userData &&\r\n child.userData.hasOwnProperty(userDataObjectProp) &&\r\n child.userData[userDataObjectProp].hasOwnProperty(prop) &&\r\n child.userData[userDataObjectProp][prop] === value;\r\n });\r\n }\r\n\r\n private _applyMaterialPart(obj: Object3D, partMaterial: any, nodeId: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', nodeId);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && partMaterial) {\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let j = 0, jlen: number = mesh.material.length; j < jlen; j++) {\r\n if (mesh.material[j].name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material[j] = this._setMeshMaterialFromVariation(mesh.material[j].name, partMaterial, usePbr);\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf('fixed_frame') !== -1) {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, partMaterial, usePbr);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _applyVariations(obj: Object3D, part: any, usePbr: boolean = false): void {\r\n const children = this._getChildrenFilterByProp(obj, 'selection', 'node', part.node);\r\n const len: number = children.length;\r\n for (let i: number = 0; i < len; i++) {\r\n const child = children[i];\r\n if (child !== null && child !== undefined) {\r\n child.traverse((mesh: any) => {\r\n if ((mesh instanceof Mesh || mesh.constructor.name === 'Mesh') && part.variations && part.variations.length > 0 && mesh.name.toLowerCase().indexOf('c_')) {\r\n for (let j = 0; j < part.variations.length; j++) {\r\n const variation: Variation = part.variations[j];\r\n if (variation.material) {\r\n const materialToSearch: string = !!variation.materialId ? variation.materialId.toLowerCase() : 'default';\r\n if (Array.isArray(mesh.material)) { // multimaterial support\r\n for (let m = 0, mlen: number = mesh.material.length; m < mlen; m++) {\r\n if (mesh.material[m].name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material[m] = variation.material;\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material[m] = this._setMeshMaterialFromVariation(mesh.material[m].name, variation, usePbr);\r\n if (mesh.material[m].name && (mesh.material[m].name === 'Fixed_Glass' || mesh.material[m].name === 'Default_Glass')) {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name && mesh.material.name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n if ((variation.material instanceof Material || variation.material.constructor.name === 'Material') && variation.material.isMaterial) {\r\n // it's a THREE.Material\r\n mesh.material = variation.material;\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n } else {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, variation, usePbr);\r\n if (mesh.material.name === 'Fixed_Glass' || mesh.material.name === 'Default_Glass') {\r\n mesh.castShadow = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _setMeshMaterialFromVariation(name: string, variation: Variation, usePbr: boolean = false): THREE.Material {\r\n const material = variation.material;\r\n if (material.texture) {\r\n material.texture.needsUpdate = true;\r\n material.texture.mapping = EquirectangularReflectionMapping;\r\n }\r\n if (!usePbr) {\r\n const newMaterial: MeshPhongMaterial = new MeshPhongMaterial({\r\n name: name,\r\n shininess: material.shininess,\r\n specular: material.specular,\r\n map: material.texture,\r\n normalMap: material.normal\r\n });\r\n newMaterial.color.setRGB(0.8, 0.8, 0.8);\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n }\r\n if (material.sheen || material.sheenColor || material.reflectivity || material.transmission) { // TODO: Proper check for all unique physical material properties\r\n const params: MeshPhysicalMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01,\r\n clearcoatMap: material.clearcoatMap ? material.clearcoatMap : null,\r\n clearcoatRoughnessMap: material.clearcoatRoughnessMap ? material.clearcoatRoughnessMap : null,\r\n attenuationDistance: Infinity\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.reflectivity) {\r\n params.reflectivity = material.reflectivity;\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshPhysicalMaterial = new MeshPhysicalMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n if (material.sheen) {\r\n newMaterial.sheen = material.sheen;\r\n }\r\n\r\n if (material.sheenColor) {\r\n newMaterial.sheenColor = this._createValidColor(material.sheenColor);\r\n } else {\r\n // Add fallback for blender render\r\n newMaterial.sheenColor = new Color(1, 1, 1);\r\n }\r\n\r\n if (material.sheenRoughness) {\r\n newMaterial.sheenRoughness = material.sheenRoughness;\r\n }\r\n if (material.sheenColorMap) {\r\n newMaterial.sheenColorMap = material.sheenColorMap;\r\n newMaterial.sheenColorMap.needsUpdate = true;\r\n }\r\n if (material.sheenRoughnessMap) {\r\n newMaterial.sheenRoughnessMap = material.sheenRoughnessMap;\r\n newMaterial.sheenRoughnessMap.needsUpdate = true;\r\n }\r\n if (material.transmission) {\r\n newMaterial.transmission = material.transmission;\r\n }\r\n if (material.ior !== undefined && material.ior !== null) {\r\n newMaterial.ior = material.ior;\r\n }\r\n if (material.thickness !== undefined && material.thickness !== null) {\r\n newMaterial.thickness = material.thickness;\r\n }\r\n if (material.specularIntensity !== undefined && material.specularIntensity !== null) {\r\n newMaterial.specularIntensity = material.specularIntensity;\r\n }\r\n if (material.transmissionMap) {\r\n newMaterial.transmissionMap = material.transmissionMap;\r\n newMaterial.transmissionMap.needsUpdate = true;\r\n }\r\n\r\n newMaterial.needsUpdate = true;\r\n return newMaterial;\r\n } else {\r\n const params: MeshStandardMaterialParameters = {\r\n // side: material.side ? material.side : FrontSide,\r\n name: name,\r\n roughness: material.roughnessValue !== undefined && material.roughnessValue !== null ? material.roughnessValue : 1,\r\n metalness: material.metalnessValue !== undefined && material.metalnessValue !== null ? material.metalnessValue : 0,\r\n envMapIntensity: material.envMapIntensity ? material.envMapIntensity : 0.01\r\n // wireframe: true,\r\n // opacity: 0.3,\r\n // transparent: true,\r\n };\r\n if (material.displacementValue) {\r\n params.displacementScale = material.displacementValue;\r\n }\r\n if (material.opacity) {\r\n params.opacity = material.opacity;\r\n }\r\n if (material.transparent) {\r\n params.transparent = material.transparent;\r\n }\r\n if (material.emissiveValue) {\r\n params.emissive = material.emissiveValue;\r\n }\r\n if (material.emissiveIntensityValue) {\r\n params.emissiveIntensity = material.emissiveIntensityValue;\r\n }\r\n if (material.texture) {\r\n params.map = material.texture;\r\n params.map.needsUpdate = true;\r\n }\r\n if (material.ao) {\r\n params.aoMap = material.ao;\r\n params.aoMap.needsUpdate = true;\r\n }\r\n if (material.roughness) {\r\n params.roughnessMap = material.roughness;\r\n params.roughnessMap.needsUpdate = true;\r\n // material.roughness.magFilter = NearestFilter;\r\n }\r\n if (material.metalness) {\r\n params.metalnessMap = material.metalness;\r\n params.metalnessMap.needsUpdate = true;\r\n }\r\n if (material.normal) {\r\n params.normalMap = material.normal;\r\n params.normalMap.needsUpdate = true;\r\n }\r\n if (material.displacement) {\r\n params.displacementMap = material.displacement;\r\n params.displacementMap.needsUpdate = true;\r\n }\r\n if (material.emissive) {\r\n params.emissiveMap = material.emissive;\r\n params.emissiveMap.needsUpdate = true;\r\n }\r\n if (material.envMap) {\r\n if (material.envMapIntensity != null || 0) {\r\n params.envMap = material.envMap;\r\n params.envMap.needsUpdate = true;\r\n material.envMap.mapping = EquirectangularReflectionMapping;\r\n material.envMap.minFilter = NearestFilter;\r\n material.envMap.magFilter = NearestFilter;\r\n }\r\n }\r\n if (material.side) {\r\n params.side = material.side;\r\n } else {\r\n params.side = DoubleSide;\r\n }\r\n\r\n const newMaterial: MeshStandardMaterial = new MeshStandardMaterial(params);\r\n newMaterial.color.setRGB(1, 1, 1);\r\n newMaterial.needsUpdate = true;\r\n\r\n return newMaterial;\r\n }\r\n }\r\n\r\n private _setLastKnownVariations(id: string, variation: Variation[]): void {\r\n this._lastKnownVariations.set(id, variation);\r\n }\r\n\r\n private _getLastKnownVariations(id: string): Variation[] {\r\n if (this._lastKnownVariations.has(id)) {\r\n return this._lastKnownVariations.get(id);\r\n }\r\n return null;\r\n }\r\n\r\n private _createValidColor(color: Color | string | number): Color {\r\n if (typeof color === 'string') {\r\n if (/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(color)) {\r\n return new Color(`#${color.replace('#', '')}`);\r\n }\r\n } else if (color instanceof Color || color.constructor.name === 'Color') {\r\n return color as Color;\r\n } else {\r\n try {\r\n return new Color(color);\r\n } catch (e) {\r\n return new Color();\r\n }\r\n }\r\n\r\n return new Color();\r\n }\r\n}\r\n","import {Configurator} from '@colijnit/configuratorapi/build/configurator';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\nimport {notNill} from '@colijnit/configuratorapi/build/utils/function/not-nill.function';\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\nimport {isNill} from '@colijnit/configuratorapi/build/utils/function/is-nill.function';\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\n\nexport class ConfiguratorService {\n\n private _configuratorApi: Configurator;\n\n public initApi(options: Options): void {\n this._configuratorApi = new Configurator(options);\n }\n\n public async initNodeInstance(goodId: number): Promise<DataServiceResponseData> {\n return await this._configuratorApi.initNodeInstance(goodId);\n }\n\n public async setInstanceToConfigure(id: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.setInstanceToConfigure(id, showLoader);\n }\n\n public async getGoodIdFromSku(sku: string, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getGoodIdFromSku(sku, showLoader);\n }\n\n public async getArticleQuickSel(goodId: number, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getArticleQuickSel(goodId, showLoader);\n }\n\n public async getSelections(showLoader: boolean = false, publicationCode: number = 2): Promise<DataServiceResponseData> {\n let selections: DataServiceResponseData = await this._configuratorApi.getSelections(showLoader);\n if (selections && selections.resultObjects) {\n selections.resultObjects.filter((s: Selection) => {\n (isNill(s.hierarchicalPublicationCode) || ((s.hierarchicalPublicationCode & publicationCode) > 0)) && (\n (s.nodeType === NodeType.Question && (((s.questionPublicationCode & publicationCode) > 0) || isNill(s.questionPublicationCode))) ||\n (s.nodeType === NodeType.Answer && (((s.answerPublicationCode & publicationCode) > 0) || isNill(s.answerPublicationCode))));\n });\n }\n return selections;\n }\n\n public async getDecos(showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.getDecos(showLoader);\n }\n\n public async getQuestionAndAnswers(showLoader: boolean = false, publicationCode: number = 2): Promise<QuestionAndAnswers> {\n const questionAndAnswers: QuestionAndAnswers = await this._configuratorApi.getQuestionAndAnswers(showLoader);\n if (questionAndAnswers && questionAndAnswers.answers) {\n questionAndAnswers.answers.filter((answer: Answer) => {\n (notNill(answer.hierarchicalPublicationCode) && (answer.hierarchicalPublicationCode & publicationCode) === 0) ||\n (answer.type === NodeType.Question && (answer.questionPublicationCode & publicationCode) === 0 && notNill(answer.questionPublicationCode)) ||\n (answer.type === NodeType.Answer && (answer.publicationCode & publicationCode) === 0 && notNill(answer.publicationCode));\n });\n }\n return questionAndAnswers;\n }\n\n public async getSingleImage(nodeId: number | string, publication: number, includeMimetype: boolean, thumb: boolean, showLoader: boolean): Promise<DataServiceResponseData> {\n if (!nodeId) {\n return null;\n }\n return await this._configuratorApi.getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader);\n }\n\n public async selectSelection(selection: Selection, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectSelection(selection, showLoader);\n }\n\n public async selectAnswer(answer: Answer, showLoader: boolean = false): Promise<DataServiceResponseData> {\n return await this._configuratorApi.selectAnswer(answer, showLoader);\n }\n\n}\n","import {Euler, Material, Matrix4, Mesh, Object3D, Vector2, Vector3} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n if (node) {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n ObjectUtils.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n }\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose(); // disposes any programs associated with the material\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose(); // disposes any programs associated with the material\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n}\r\n","import * as THREE from 'three';\r\nimport {Scene} from 'three';\r\nimport {DecoNode} from '@colijnit/configuratorapi/build/model/deco-node';\r\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\r\nimport {DecoNodeType} from '@colijnit/configuratorapi/build/enum/deco-node-type.enum';\r\nimport {ThreedUtils} from '../utils/threed.utils';\r\nimport {DecoNodeKind} from '@colijnit/configuratorapi/build/enum/deco-node-kind.enum';\r\nimport {SceneUtils} from '../utils/scene-utils';\r\nimport {VariationHelper} from '../helper/variation-helper';\r\nimport {Article} from '@colijnit/configuratorapi/build/model/article';\r\nimport {ConfiguratorService} from './services/configurator.service';\r\nimport {Injectable} from '@angular/core';\r\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\r\nimport {ImageUtils} from '../utils/image.utils';\r\nimport {ObjectUtils} from './utils/object.utils';\r\nimport {NodeType} from '@colijnit/configuratorapi/build/enum/node-type.enum';\r\nimport {BusinessObjectFactory} from '@colijnit/ioneconnector/build/service/business-object-factory';\r\nimport {Options} from '@colijnit/ioneconnector/build/model/options';\r\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class Builder {\r\n\r\n public selectionsReceived: BehaviorSubject<Selection[]> = new BehaviorSubject<Selection[]>([]);\r\n public articleLoaded: BehaviorSubject<Article> = new BehaviorSubject<Article>(undefined);\r\n public decosReceived: BehaviorSubject<DecoNode[]> = new BehaviorSubject<DecoNode[]>([]);\r\n public answersReceived: BehaviorSubject<Answer[]> = new BehaviorSubject<Answer[]>([]);\r\n public modelLoaded: BehaviorSubject<THREE.Object3D> = new BehaviorSubject<THREE.Object3D>(null);\r\n public set debug(value: Function) {\r\n if (value) {\r\n this._debug = value;\r\n if (this._variationHelper) {\r\n this._variationHelper.debug = this._debug;\r\n }\r\n }\r\n }\r\n public get debug(): Function {\r\n return this._debug;\r\n }\r\n\r\n private _scene: THREE.Scene;\r\n private _instanceId: string;\r\n private _sku: string;\r\n private _goodId: number;\r\n private _selections: Selection[] = [];\r\n private _answers: Answer[] = [];\r\n private _decos: DecoNode[] = [];\r\n private _placedAdjustables: any[] = [];\r\n private _placedAddables: any[] = [];\r\n private _adjustables: any[] = [];\r\n private _addables: any[] = [];\r\n\r\n private _debug: Function;\r\n\r\n private _imageCache: Map<number, string> = new Map();\r\n\r\n private _boFactory: BusinessObjectFactory;\r\n private _source: THREE.Object3D;\r\n private _threedUtils: ThreedUtils;\r\n private _variationHelper: VariationHelper;\r\n private _articleCache: Map<string, Article> = new Map();\r\n private _configuratorService: ConfiguratorService;\r\n\r\n constructor() {\r\n }\r\n\r\n public init(scene: Scene, options?: Options) {\r\n this._boFactory = new BusinessObjectFactory();\r\n this._threedUtils = new ThreedUtils();\r\n this._variationHelper = new VariationHelper();\r\n this._variationHelper.debug = this._debug;\r\n\r\n if (!scene) {\r\n throw 'No scene object provided!';\r\n }\r\n this._configuratorService = new ConfiguratorService();\r\n // this._imageCacheService = new ImageCacheService();\r\n if (options) {\r\n this._configuratorService.initApi(options);\r\n }\r\n this._scene = scene;\r\n }\r\n\r\n public async buildModel(sku?: string, instanceId?: string, goodId?: number): Promise<THREE.Object3D> {\r\n if (!this._scene) {\r\n return;\r\n }\r\n try {\r\n await this._setInstanceId(sku, instanceId, goodId);\r\n await this._prepareConfiguration(this._sku, this._goodId);\r\n if (this._source) {\r\n await this._configuratorService.setInstanceToConfigure(this._instanceId);\r\n const promises: Promise<any>[] = [];\r\n this._reset();\r\n promises.push(this.getQuestionAndAnswers());\r\n promises.push(this._getSelections(this._instanceId));\r\n promises.push(this._getDecos());\r\n await Promise.all(promises);\r\n if (this._answers.length > 0) {\r\n return;\r\n }\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n return build;\r\n } else {\r\n throw 'GLB source not found!';\r\n }\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n public async buildModelFromData(selections: Selection[], decos: DecoNode[], assetUrl: string, cdnUrl: string, schema: string): Promise<THREE.Object3D> {\r\n return new Promise(async (resolve: Function, reject: Function) => {\r\n if (!this._scene) {\r\n reject('no scene provided!');\r\n }\r\n try {\r\n this._log('start build');\r\n await this._downloadAsset(assetUrl, cdnUrl, schema);\r\n if (selections && selections.length > 1 && decos && decos.length > 0 && this._source) {\r\n this._reset();\r\n this._selections = selections;\r\n this._decos = decos;\r\n this._linkSelectionsAndDecos();\r\n this._prepareTheSelections();\r\n this._preloadMaterials();\r\n const build = await this._build();\r\n this._cleanUp();\r\n this._log('finish build');\r\n resolve(build);\r\n } else {\r\n reject('Unsufficient data provided!');\r\n }\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n public initNodeInstance(goodId: number): Promise<any> {\r\n return this._configuratorService.initNodeInstance(goodId);\r\n }\r\n\r\n public destroy(): void {\r\n this._threedUtils.clearCache();\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n public async selectSelection(selection: Selection): Promise<void> {\r\n await this._configuratorService.selectSelection(selection, false);\r\n await this.getQuestionAndAnswers();\r\n }\r\n\r\n public async getQuestionAndAnswers(publicationCode?: number): Promise<void> {\r\n const questionsAndAnswers: QuestionAndAnswers = await this._configuratorService.getQuestionAndAnswers(false, publicationCode);\r\n this._answers = questionsAndAnswers && questionsAndAnswers.answers ? questionsAndAnswers.answers : [];\r\n this.answersReceived.next(this._answers);\r\n }\r\n\r\n public async selectAnswer(answer: Answer): Promise<void> {\r\n await this._configuratorService.selectAnswer(answer, false);\r\n await this.getQuestionAndAnswers();\r\n if (this._answers && this._answers.length === 0) {\r\n this._build();\r\n }\r\n }\r\n\r\n public getImageForSelectionOrAnswer(object: Selection | Answer): Promise<string> {\r\n const includeMimeType: boolean = true, thumb: boolean = true;\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (object && object.nodeId) {\r\n if (!this._imageCache.has(object.nodeId)) {\r\n return this._configuratorService.getSingleImage(object.nodeId, 4, includeMimeType, thumb, true)\r\n .then((responseData: DataServiceResponseData) => {\r\n const base64: string = this._handleResponseData(includeMimeType, thumb, responseData);\r\n this._imageCache.set(object.nodeId, base64);\r\n resolve(base64);\r\n }).catch(() => {\r\n reject();\r\n });\r\n } else {\r\n resolve(this._imageCache.get(object.nodeId));\r\n }\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n public _cleanUp(): void {\r\n this._sku = undefined;\r\n this._goodId = undefined;\r\n this._instanceId = undefined;\r\n this._variationHelper.clearCache();\r\n }\r\n\r\n private _handleResponseData(includeMimetype: boolean, thumb: boolean, responseData: DataServiceResponseData): string {\r\n if (responseData && responseData.resultObject) {\r\n if (responseData.resultObject.filePath !== null && responseData.resultObject.filePath !== \"\") {\r\n return ImageUtils.getFixedImageFilepathUrl(responseData.resultObject.filePath);\r\n } else {\r\n if (includeMimetype) {\r\n return ImageUtils.getDocBodyWithMimeTypeDefinition(responseData.resultObject.fileName,\r\n thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody);\r\n } else {\r\n return thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody;\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n private _preloadMaterials(): void {\r\n if (this._decos && this._decos.length) {\r\n const materials: string[] = [...new Set(\r\n this._decos\r\n .filter(d => d.gameObjectName && d.type === DecoNodeType.Variation)\r\n .map(d => d.gameObjectName)\r\n )];\r\n this._variationHelper.preloadVariations(materials);\r\n }\r\n }\r\n\r\n private async _setInstanceId(sku: string, instanceId?: string, goodId?: number): Promise<void> {\r\n if (!instanceId && !this._instanceId) {\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku);\r\n }\r\n this._goodId = goodId;\r\n const result: DataServiceResponseData = await this.initNodeInstance(this._goodId);\r\n if (result && result.resultObject) {\r\n this._instanceId = result.resultObject;\r\n } else {\r\n throw 'Failed to initialize node instance';\r\n }\r\n } else if (!this._instanceId) {\r\n this._instanceId = instanceId;\r\n }\r\n if (!this._sku) {\r\n this._sku = sku;\r\n }\r\n }\r\n\r\n private async _prepareConfiguration(sku: string, goodId?: number): Promise<void> {\r\n const article: Article = await this._getArticle(sku, goodId);\r\n if (article && article.assetUrl) {\r\n if (article.contentDeliveryUrl) {\r\n this._variationHelper.assetPath =\r\n article.contentDeliveryUrl +\r\n (article.contentDeliveryUrl.endsWith('/') ? '' : '/') +\r\n (article.distSchema ? article.distSchema : 'UP_DBA');\r\n }\r\n await this._downloadAsset(article.assetUrl, article.contentDeliveryUrl, article.distSchema);\r\n }\r\n }\r\n\r\n private async _downloadAsset(assetUrl: string, cdnUrl: string, schema: string): Promise<void> {\r\n this._source = await this._threedUtils.download3DSource(assetUrl, cdnUrl)\r\n .catch((error) => {\r\n throw error;\r\n });\r\n if (cdnUrl) {\r\n this._variationHelper.assetPath =\r\n cdnUrl +\r\n (cdnUrl.endsWith('/') ? '' : '/') +\r\n (schema ? schema : 'UP_DBA');\r\n }\r\n }\r\n\r\n private async _build(): Promise<THREE.Object3D> {\r\n const adjustables: Selection[] = this._getAdjustables();\r\n if (adjustables && adjustables.length === 0 && this._selections && this._selections.length > 0) { // check if article has a gameObject\r\n if (this._selections[0].nodeType === NodeType.Article && this._selections[0].gameObject) {\r\n adjustables.push(this._selections[0]);\r\n }\r\n }\r\n if (adjustables && adjustables.length > 0) {\r\n const obj: THREE.Object3D = new THREE.Object3D();\r\n obj.visible = false; // no need to render visualy\r\n this._scene.add(obj);\r\n let connected = false;\r\n this._log('build main model');\r\n for (let i = 0, len: number = adjustables.length; i < len; i++) {\r\n const adjustable: THREE.Object3D = this._createAdjustable(obj, adjustables[i]);\r\n if (adjustable) {\r\n for (let ii = 0, lenii: number = this._placedAdjustables.length; ii < lenii; ii++) {\r\n if (SceneUtils.TrySelectorConnection(this._scene,\r\n obj, this._placedAdjustables[ii], adjustable, i === 1)) {\r\n this._placedAdjustables[ii].visible = true;\r\n adjustable.visible = true;\r\n connected = true;\r\n break;\r\n }\r\n connected = false;\r\n }\r\n }\r\n if (!connected && this._placedAdjustables.length > 1) {\r\n console.warn('No connection found for: ', adjustable.name);\r\n }\r\n }\r\n this._log('place addables');\r\n this._placeAddables(obj);\r\n this._log('update pivot');\r\n this._updatePivot(obj);\r\n this._log('load variations');\r\n await this._loadVariations(obj);\r\n // this._variationHelper.clearCache();\r\n this._log('remove from scene');\r\n this._scene.remove(obj);\r\n ObjectUtils.DisposeObject(this._source);\r\n // this._cleanUp();\r\n this._log('ready!');\r\n this.modelLoaded.next(obj);\r\n return obj;\r\n } else {\r\n throw 'No adjustables found!';\r\n // this._building = false;\r\n // if (this.selections.length < 2) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoSelections});\r\n // } else if (this.decos.size === 0) {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_SELECTIONS_OR_DECOS', description: 'NO_SELECTIONS_OR_DECOS_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoDecoNodes});\r\n // } else {\r\n // this._errorService.addError(this.activeInstance, {message: 'NO_ADJUSTABLES', description: 'NO_ADJUSTABLES_INFO'});\r\n // this.buildFinished.next({instanceId: this.activeInstance, resultType: ResultType.NoAdjustables});\r\n // }\r\n }\r\n }\r\n\r\n private _prepareTheSelections(): void {\r\n if (!this._selections || !this._selections.length) {\r\n return;\r\n }\r\n const selections = this._selections.slice();\r\n const selectionOfArticle: Selection = selections.find(s => s.nodeType === NodeType.Article);\r\n const adjustableSelections: Selection[] = selections.filter(s => s.addAdjust === '2');\r\n const isArticleWithMaterial: boolean =\r\n adjustableSelections.length === 0 &&\r\n selectionOfArticle.gameObject &&\r\n selectionOfArticle.gameObject.length > 0;\r\n // get generic variations\r\n const globalVariations: DecoNode[] = this._selections\r\n .filter(s => (s.generic || adjustableSelections.length === 1) && (s.decoNode as any).variation && !s.decoNode.type)\r\n .map((value: Selection, index: number, array: Selection[]) => {\r\n // find selection of variation\r\n const sel: Selection = this._selections.find(s => s.artNodeIdDeco === (value.decoNode as any).variation.parentId);\r\n if (sel) {\r\n (value.decoNode as any).variation.supplierArticleNr = sel.supplierArticleNr;\r\n }\r\n (value.decoNode as any).variation.materialId = this._getMaterialIdFromParent(value.node);\r\n return (value.decoNode as any).variation;\r\n });\r\n // commented out for the moment\r\n // globalVariations.forEach(g => {\r\n // const parentIdx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.parentId);\r\n // if (parentIdx) { // remove parent selection\r\n // selections.splice(parentIdx, 1);\r\n // }\r\n // const idx = selections.findIndex(s => s.decoNode && s.decoNode.id === g.id);\r\n // if (idx) { // move generic variations to top\r\n // const selection = selections[idx];\r\n // selections.splice(idx, 1);\r\n // selections.unshift(selection);\r\n // }\r\n // });\r\n\r\n // const usedVariations: FurniturePartVariation[] = [];\r\n let globalVariationsRewrite: boolean = true;\r\n\r\n const len: number = selections.length;\r\n let lastAdded: Selection;\r\n let lastAdjustable: Selection;\r\n let newPart: boolean = false;\r\n let previousPresLevel: number = -1;\r\n let positioning: any;\r\n let optionText: string;\r\n for (let i = 0; i < len; i++) {\r\n const selection: Selection = selections[i];\r\n if (selection.presentationLevel === 1) {\r\n positioning = selection.hdecoPositioning;\r\n optionText = selection.question;\r\n }\r\n if (selection.presentationLevel > previousPresLevel) {\r\n selection.hdecoPositioning = selection.hdecoPositioning || positioning;\r\n }\r\n if (selection.decoNode) {\r\n if (selection.decoNode.type === DecoNodeType.Variation) {\r\n const decoNode = selection.decoNode;\r\n (decoNode as any).optionText = optionText;\r\n // find selection of variation and set materialId in case of multimaterial\r\n (decoNode as any).materialId = this._getMaterialIdFromParent(decoNode.nodeId);\r\n if (lastAdded) {\r\n if (newPart) {\r\n if ((decoNode as any).materialId) {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n } else {\r\n lastAdded.variations = [decoNode];\r\n }\r\n } else {\r\n if (!lastAdded.variations.find(v => v.id === decoNode.id)) {\r\n lastAdded.variations.push(decoNode);\r\n }\r\n }\r\n newPart = false;\r\n } else {\r\n if (globalVariationsRewrite) {\r\n globalVariations.length = 0;\r\n globalVariationsRewrite = false;\r\n }\r\n if (!globalVariations.find(v => v.id === decoNode.id)) {\r\n globalVariations.push(decoNode);\r\n }\r\n }\r\n // const variation: FurniturePartVariation = new FurniturePartVariation();\r\n // variation.BrandId = selection.decoNode.brandId;\r\n // variation.Description = selection.decoNode.gameObjectName;\r\n // variation.MaterialId = (selection.decoNode as any).materialId;\r\n // variation.SupplierArticleNr = (selection.decoNode as any).supplierArticleNr;\r\n // usedVariations.push(variation);\r\n } else if ((selection.decoNode.type === DecoNodeType.Part &&\r\n typeof selection.decoNode.gameObjectName === 'string' &&\r\n selection.decoNode.gameObjectName.length) || (isArticleWithMaterial)) {\r\n if (selection.decoNode.kind === DecoNodeKind.Adjustable || (isArticleWithMaterial)) {\r\n selection.variations = globalVariations;\r\n this._adjustables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n lastAdjustable = selection;\r\n } else if (selection.decoNode.kind === DecoNodeKind.Addable) {\r\n selection.variations = lastAdjustable ? lastAdjustable.variations : globalVariations;\r\n if (lastAdjustable) {\r\n lastAdjustable.addables.push(selection);\r\n }\r\n this._addables.push(selection);\r\n if (!lastAdded || (lastAdded.nodeId !== selection.nodeId || lastAdded.node !== selection.node)) {\r\n newPart = true;\r\n }\r\n lastAdded = selection;\r\n }\r\n }\r\n }\r\n previousPresLevel = selection.presentationLevel;\r\n }\r\n // this._upsertFurniture(this.activeInstance,\r\n // {Variations: usedVariations});\r\n }\r\n\r\n /**\r\n * Returns the materialId of the parent up the tree until presentionlevel 1 is reached\r\n * @param id\r\n * @private\r\n */\r\n private _getMaterialIdFromParent(id: number): string {\r\n if (this._selections) {\r\n const idx: number = this._selections.findIndex(s => s.node === id);\r\n let currentLevel: number = 999;\r\n if (idx > -1) {\r\n for (let i = idx; i > 0; i--) {\r\n const selection = this._selections[i];\r\n if (selection.presentationLevel >= currentLevel) {\r\n break;\r\n }\r\n currentLevel = selection.presentationLevel;\r\n if (selection.hdecoGameObject) {\r\n return selection.hdecoGameObject;\r\n }\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _createAdjustable(parent: THREE.Object3D, adj: Selection): THREE.Object3D {\r\n let obj: any = this._source ? this._source.getObjectByName(adj.decoNode.gameObjectName || adj.gameObject) : null;\r\n if (!obj) {\r\n // in case of glb files, the importer removes dots from names\r\n const name = adj.decoNode.gameObjectName.replace(/[.]/g, '');\r\n obj = this._source ? this._source.getObjectByName(name) : null;\r\n if (!obj) {\r\n console.warn(`No object with name ${adj.decoNode.gameObjectName} found!`);\r\n return null;\r\n }\r\n }\r\n let adjustable: any = obj.clone();\r\n adjustable.name = this._createUniqueName(parent, obj);\r\n adjustable.userData.selection = adj;\r\n adjustable.position.set(0, 0, 0);\r\n adjustable.traverse(c => {\r\n c.visible = !c.name.toLowerCase().startsWith('c_');\r\n });\r\n parent.add(adjustable);\r\n // the object being added to the customFloorGroup is being recreated so we loose the reference\r\n // therefor we need to retrieve the created object again\r\n adjustable = parent.getObjectByName(adjustable.name);\r\n this._placedAdjustables.push(adjustable);\r\n return adjustable;\r\n }\r\n\r\n private _createAddable(parent: THREE.Object3D, add: Selection, part2?: any, part1?: any): THREE.Object3D {\r\n const obj: any = this._source.getObjectByName(add.decoNode.gameObjectName);\r\n if (!obj) {\r\n return null;\r\n }\r\n // const selection: Selection = this._getSelectionFromId(adj.artNodeIdDeco);\r\n const addable: any = obj.clone();\r\n addable.name = this._createUniqueName(parent, obj);\r\n addable.userData.selection = add;\r\n addable.position.set(0, 0, 0);\r\n addable.visible = true;\r\n if (part1 && part2) {\r\n parent.add(addable);\r\n this._placedAddables.push(addable);\r\n return addable;\r\n }\r\n return addable;\r\n }\r\n\r\n private _placeAddables(parent: THREE.Object3D): void {\r\n const len: number = this._placedAdjustables.length;\r\n for (let i = 0; i < len; i++) {\r\n if (this._placedAdjustables[i].userData.hasOwnProperty('selection') && this._placedAdjustables[i].userData.selection) {\r\n const adjustableSelection: Selection = this._placedAdjustables[i].userData.selection;\r\n if (adjustableSelection) {\r\n const lena: number = adjustableSelection.addables.length;\r\n let conAddable: any;\r\n for (let ia = 0; ia < lena; ia++) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, this._placedAdjustables[i], adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n if (conAddable) {\r\n SceneUtils.TrySelectorConnection(this._scene,\r\n parent, conAddable, adjustableSelection.addables[ia], false,\r\n (add, part2?, part1?) => this._createAddable(parent, add, part2, part1));\r\n }\r\n conAddable = this._placedAddables[this._placedAddables.length - 1];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _createUniqueName(parent: THREE.Object3D, obj: THREE.Object3D): string {\r\n let iteration = 0;\r\n let name = obj.name;\r\n let existingObj = parent.getObjectByName(name);\r\n while (existingObj) {\r\n iteration++;\r\n name = obj.name + (iteration !== 0 ? ('_' + iteration) : '');\r\n existingObj = parent.getObjectByName(name);\r\n }\r\n return name;\r\n }\r\n\r\n private async _getGoodIdFromSku(sku: string): Promise<number> {\r\n const response: DataServiceResponseData = await this._configuratorService.getGoodIdFromSku(sku, false);\r\n if (response && response.validationResult && response.validationResult.success && response.resultObject) {\r\n return response.resultObject;\r\n }\r\n }\r\n\r\n private async _getArticle(sku: string, goodId: number): Promise<Article> {\r\n if (this._articleCache.has(sku)) {\r\n this.articleLoaded.next(this._articleCache.get(sku));\r\n return this._articleCache.get(sku);\r\n }\r\n if (!goodId) {\r\n goodId = await this._getGoodIdFromSku(sku)\r\n .catch((error) => {\r\n throw `Article with sku ${sku} not found!`;\r\n });\r\n }\r\n let article: Article;\r\n const articleResponse: DataServiceResponseData = await this._configuratorService.getArticleQuickSel(goodId, false);\r\n if (articleResponse && articleResponse.validationResult && articleResponse.validationResult.success && articleResponse.resultObject) {\r\n if (articleResponse.resultObject.hasOwnProperty('oArticle')) {\r\n const obj = Array.isArray(articleResponse.resultObject['oArticle']) ? articleResponse.resultObject['oArticle'][0] : articleResponse.resultObject['oArticle'];\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, obj);\r\n } else {\r\n article = <Article>this._boFactory.makeWithRawBackendData(Article, articleResponse.resultObject);\r\n }\r\n }\r\n this._articleCache.set(sku, article);\r\n this.articleLoaded.next(article);\r\n return article;\r\n }\r\n\r\n private async _getSelections(instanceId: string, publicationCode?: number): Promise<void> {\r\n this._selections = [];\r\n const selectionResponse: DataServiceResponseData = await this._configuratorService.getSelections(false, publicationCode);\r\n if (selectionResponse && selectionResponse.resultObjects && selectionResponse.resultObjects.length > 0) {\r\n this._selections = <Selection[]>this._boFactory.makeBOArrayFromRawBackendDataArray(Selection, selectionResponse.resultObjects);\r\n this._selections.forEach(s => s.instanceId = instanceId);\r\n // const filtered: Selection[] = this._selections.filter(s => s.nodeType !== NodeType.Article && s.presentationLevel === 1);\r\n this.selectionsReceived.next(this._selections);\r\n } else {\r\n throw 'No selections found!';\r\n }\r\n }\r\n\r\n private async _getDecos(): Promise<void> {\r\n this._decos = [];\r\n const decosResponse: DataServiceResponseData = await this._configuratorService.getDecos(false);\r\n if (decosResponse && decosResponse.resultObjects && decosResponse.resultObjects.length > 0) {\r\n this._decos = <DecoNode[]>this._boFactory.makeBOArrayFromRawBackendDataArray(DecoNode, decosResponse.resultObjects);\r\n this.decosReceived.next(this._decos);\r\n } else {\r\n throw 'No deconodes found!';\r\n }\r\n }\r\n\r\n private _linkSelectionsAndDecos(): void {\r\n if (!this._selections || !this._selections.length) {\r\n return;\r\n }\r\n const len: number = this._selections.length;\r\n for (let i = 0; i < len; i++) {\r\n // const id: string = this.selections[i].artNodeIdDeco;\r\n let deco: any = this._decos.find(d => d.nodeId === this._selections[i].node);\r\n if (!deco) {\r\n deco = new DecoNode();\r\n }\r\n if (deco.type !== DecoNodeType.Variation) {\r\n const variation: any = this._getVariations().find(v => v.parentId === this._selections[i].artNodeIdDeco);\r\n if (variation) {\r\n deco.variation = variation;\r\n }\r\n }\r\n this._selections[i].decoNode = deco;\r\n }\r\n }\r\n\r\n private _getVariations(): DecoNode[] {\r\n if (this._decos && this._decos.length) {\r\n return this._decos.filter((deco: DecoNode) => {\r\n return deco.type === DecoNodeType.Variation;\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n private async _loadVariations(obj: THREE.Object3D): Promise<void> {\r\n this._log('load variation for parts');\r\n await this._variationHelper.loadPart(obj, this._adjustables, true);\r\n this._log('load variation for adjustables');\r\n await this._variationHelper.loadVariation(obj, this._adjustables, true);\r\n this._log('load variation for addables');\r\n await this._variationHelper.loadVariation(obj, this._addables, true);\r\n this._log('load variation clear cache');\r\n this._variationHelper.clearCache();\r\n this._log('load variations done');\r\n }\r\n\r\n private _getAdjustables(): Selection[] {\r\n if (!this._selections || !this._selections.length) {\r\n return [];\r\n }\r\n return this._selections.filter(s => {\r\n const node: DecoNode = s.decoNode;\r\n return node && node.gameObjectName && node.type === DecoNodeType.Part && node.kind === DecoNodeKind.Adjustable;\r\n });\r\n }\r\n\r\n private _updatePivot(obj: THREE.Object3D) {\r\n const boundingBox = new THREE.Box3().setFromObject(obj);\r\n const bbCenterPivot = new THREE.Vector3();\r\n boundingBox.getCenter(bbCenterPivot);\r\n const delta: THREE.Vector3 = new THREE.Vector3().sub(bbCenterPivot).setY(Math.abs(Math.min(boundingBox.min.y, 0)));\r\n\r\n obj.children.forEach((child: any) => {\r\n child.position.add(delta);\r\n });\r\n obj.updateWorldMatrix(false, true);\r\n }\r\n\r\n private _reset(): void {\r\n this._placedAddables.length = 0;\r\n this._placedAdjustables.length = 0;\r\n this._adjustables.length = 0;\r\n this._addables.length = 0;\r\n // this._prepareTheSelections();\r\n }\r\n\r\n private _log(message: string): void {\r\n if (this.debug) {\r\n this.debug(message);\r\n console.log(new Date(), message);\r\n }\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {Answer} from \"@colijnit/configuratorapi/build/model/answer\";\r\n\r\n@Component({\r\n selector: \"answers\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-answers-slideout\">\r\n <h2 class=\"answers-title\" [textContent]=\"selectionTitle\"></h2>\r\n <div class=\"answers-container\" visibilityObserverMaster>\r\n <answer *ngFor=\"let answer of answers\"\r\n (click)=\"answerClick.emit(answer)\"\r\n [answer]=\"answer\"\r\n visibilityObserver\r\n #intersection=\"intersection\"\r\n [observerEnabled]=\"true\"\r\n [showing]=\"intersection.isIntersecting\"\r\n ></answer>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ]\r\n})\r\n\r\nexport class AnswersComponent {\r\n @Input()\r\n public answers: Answer[] = [];\r\n\r\n @Input()\r\n public selectionTitle: string;\r\n\r\n @Output()\r\n public answerClick: EventEmitter<Answer> = new EventEmitter<Answer>();\r\n\r\n constructor() {}\r\n\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ImageCacheService} from '../../../services/image-cache.service';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Builder} from \"../../../builder\";\n\n@Component({\n selector: 'answer',\n template: `\n <div class=\"ione-configurator\">\n <div class=\"answer-wrapper\">\n <div class=\"answer-content\" @answerAppear>\n <div class=\"answer-thumbnail\">\n <rp-loader *ngIf=\"answer.imageData === ''\"></rp-loader>\n <img *ngIf=\"answer.imageData !== '' && answer.imageData !== null\" class=\"answer-img\" [src]=\"answer.imageData\">\n </div>\n <div class=\"answer-title-wrapper\">\n <span class=\"answer-title\" [textContent]=\"answer.commercialAnswer\"></span>\n </div>\n <div class=\"price\">\n <span class=\"price-value\"></span>\n </div>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\n '../../../../style/shared.scss'\n ],\n animations: [\n trigger('answerAppear', [\n state('void', style({'background': '#dbdbdb'})),\n state('white', style({'background': 'white'})),\n transition('void <=> *', animate(500))\n ])\n ]\n})\nexport class AnswerComponent implements OnInit {\n @Input()\n public answer: Answer;\n\n @Input()\n public set showing(value: boolean) {\n this.answer.imageData = '';\n if (value && this.answer.answer !== 'Skip / Cancel') {\n this._loadThumbnail(this.answer);\n } else {\n this.answer.imageData = null;\n }\n }\n\n constructor(private _builder: Builder) { }\n\n public ngOnInit(): void {\n }\n\n private async _loadThumbnail(answer: Answer): Promise<void> {\n await this._builder.getImageForSelectionOrAnswer(answer).then((imageSrc: string) => {\n answer.imageData = imageSrc === \"\" ? null : imageSrc;\n });\n }\n}\n","// Import the core angular services.\nimport {Directive, OnDestroy} from '@angular/core';\n\n@Directive({\n selector: '[visibilityObserverMaster]'\n})\nexport class VisibilityObserverMasterDirective implements OnDestroy {\n\n private _mapping: Map<Element, Function>;\n private _observer: IntersectionObserver;\n\n // I initialize the intersection observer parent directive.\n constructor() {\n\n // As each observable child attaches itself to the parent observer, we need to\n // map Elements to Callbacks so that when an Element's intersection changes,\n // we'll know which callback to invoke. For this, we'll use an ES6 Map.\n this._mapping = new Map();\n\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n\n for (const entry of entries) {\n\n const callback = this._mapping.get(entry.target);\n if (callback) {\n callback(entry.isIntersecting);\n }\n }\n\n },\n {\n // This classifies the \"intersection\" as being a bit outside the\n // viewport. The intent here is give the elements a little time to react\n // to the change before the element is actually visible to the user.\n rootMargin: '300px 0px 300px 0px'\n }\n );\n\n }\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._mapping.clear();\n this._observer.disconnect();\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I add the given Element for intersection observation. When the intersection status\n // changes, the given callback is invoked with the new status.\n public add(element: HTMLElement, callback: Function): void {\n\n this._mapping.set(element, callback);\n this._observer.observe(element);\n\n }\n\n // I remove the given Element from intersection observation.\n public remove(element: HTMLElement): void {\n\n this._mapping.delete(element);\n this._observer.unobserve(element);\n\n }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {VisibilityObserverMasterDirective} from './visibility-observer-master.directive';\n\n@Directive({\n selector: '[visibilityObserver]',\n exportAs: 'intersection'\n})\nexport class VisibilityObserverDirective implements OnDestroy, OnInit {\n\n @Input()\n public observerEnabled: boolean = false;\n\n public isIntersecting: boolean;\n // These are just some human-friendly constants to make the HTML template a bit more\n // readable when being consumed as part of SWTCH/CASE statements.\n public IS_INTERSECTING: boolean = true;\n public IS_NOT_INTERSECTING: boolean = false;\n\n private _elementRef: ElementRef;\n private _parent: VisibilityObserverMasterDirective;\n\n // I initialize the intersection observer directive.\n constructor(\n parent: VisibilityObserverMasterDirective,\n elementRef: ElementRef\n ) {\n\n this._parent = parent;\n this._elementRef = elementRef;\n\n // By default, we're going to assume that the host element is NOT intersecting.\n // Then, we'll use the IntersectionObserver to asynchronously check for changes\n // in viewport visibility.\n this.isIntersecting = false;\n\n }\n\n // ---\n // PUBLIC METHODS.\n // ---\n\n // I get called once when the host element is being destroyed.\n public ngOnDestroy(): void {\n\n this._parent.remove(this._elementRef.nativeElement);\n this._elementRef = undefined;\n\n }\n\n\n // I get called once after the inputs have been bound for the first time.\n public ngOnInit(): void {\n\n // In this demo, instead of using an IntersectionObserver per Element, we're\n // going to use a shared observer in the parent element. However, we're still\n // going to use a CALLBACK style approach so that we're only reducing the number\n // of IntersectionObserver instances, not the number of Function calls.\n if (this.observerEnabled) {\n this._parent.add(\n this._elementRef.nativeElement,\n (isIntersecting: boolean) => {\n\n this.isIntersecting = isIntersecting;\n if (this.isIntersecting) {\n this._parent.remove(this._elementRef.nativeElement);\n }\n\n }\n );\n }\n\n }\n\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'rp-loader',\n template: `\n <div class=\"loader-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" stroke=\"#3760a1\">\n <g fill=\"none\" fill-rule=\"evenodd\" stroke-width=\"3\">\n <circle class=\"ripple1\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n <circle class=\"ripple2\" cx=\"22\" cy=\"22\" r=\"19\">\n </circle>\n </g>\n </svg>\n </div>\n `,\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {LoaderComponent} from './loader/loader.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n LoaderComponent\n ],\n exports: [\n LoaderComponent\n ]\n})\nexport class SharedModule { }\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AnswersComponent} from \"./answers.component\";\r\nimport { AnswerComponent } from './answer/answer.component';\r\nimport {VisibilityObserverDirective} from '../../directives/visibility-observer.directive';\r\nimport {VisibilityObserverMasterDirective} from '../../directives/visibility-observer-master.directive';\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n AnswersComponent,\r\n AnswerComponent,\r\n VisibilityObserverDirective,\r\n VisibilityObserverMasterDirective\r\n ],\r\n exports: [\r\n AnswersComponent\r\n ]\r\n})\r\nexport class AnswersModule {\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {Selection} from \"@colijnit/configuratorapi/build/model/selection\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {ImageCacheService} from '../../services/image-cache.service';\r\nimport {Builder} from \"../../builder\";\r\n\r\nclass SelectionViewModel {\r\n public selection: Selection;\r\n public children: Selection[] = [];\r\n public expanded: boolean = false;\r\n public thumbnail: string = '';\r\n}\r\n\r\n@Component({\r\n selector: \"selections\",\r\n template: `\r\n <div class=\"ione-configurator\">\r\n <div class=\"rp-selections-summary\">\r\n <header class=\"drawer__header\">\r\n <h2 class=\"mat-title\" [textContent]=\"'Configuratie'\"></h2>\r\n <!--<button>-->\r\n <!---->\r\n <!--</button>-->\r\n </header>\r\n <div class=\"selections-content\">\r\n <ng-container *ngFor=\"let selectionViewModel of selectionViewModels\">\r\n\r\n <div class=\"co-summary-line\" (click)=\"selectSelection(selectionViewModel.selection, $event)\">\r\n <div class=\"selection-thumbnail\">\r\n <rp-loader *ngIf=\"selectionViewModel.thumbnail === ''\"></rp-loader>\r\n <img visibilityObserver *ngIf=\"selectionViewModel.thumbnail !== '' && selectionViewModel.thumbnail !== null\" class=\"selection-img\" [src]=\"selectionViewModel.thumbnail\">\r\n </div>\r\n <div class=\"titles\">\r\n <div class=\"title-wrapper\">\r\n <label class=\"question\" [textContent]=\"selectionViewModel.selection.question\"></label>\r\n <span class=\"answer\" [textContent]=\"selectionViewModel.selection.answer\"></span>\r\n <div *ngIf=\"selectionViewModel.children.length > 0 && selectionViewModel.expanded\" @showHideChildren>\r\n <div class=\"child-selection\" *ngFor=\"let selection of selectionViewModel.children\"\r\n (click)=\"selectSelection(selection, $event)\"\r\n >\r\n <label class=\"question\" [textContent]=\"selection.commercialQuestion\"></label>\r\n <span class=\"answer\" [textContent]=\"selection.answer\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"price-wrapper\">\r\n <span class=\"price-value\"></span>\r\n </div>\r\n\r\n <div class=\"collapse-wrapper\">\r\n <div class=\"collapse-content\">\r\n <div class=\"collapse-handle\" [class.expanded]=\"selectionViewModel.expanded\"\r\n *ngIf=\"selectionViewModel.children.length > 0\" (click)=\"expandClicked(selectionViewModel, $event)\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: [\r\n '../../../style/shared.scss'\r\n ],\r\n animations: [\r\n trigger('showHideChildren', [\r\n state('void', style({'height': '0'})),\r\n state('*', style({'height': '*'})),\r\n transition('void <=> *', animate(200))\r\n ])\r\n ]\r\n})\r\n\r\nexport class SelectionsComponent {\r\n @Input()\r\n public set selections(value: Selection[]) {\r\n this._prepareSelections(value);\r\n this._loadThumbnails();\r\n }\r\n\r\n @Output()\r\n public selectionClick: EventEmitter<Selection> = new EventEmitter<Selection>();\r\n\r\n public selectionViewModels: SelectionViewModel[] = [];\r\n\r\n constructor(private _builder: Builder) {}\r\n\r\n public expandClicked(selectionViewModel: SelectionViewModel, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n selectionViewModel.expanded = !selectionViewModel.expanded;\r\n }\r\n\r\n public selectSelection(selection: Selection, mouseEvent: MouseEvent): void {\r\n mouseEvent.preventDefault();\r\n mouseEvent.stopImmediatePropagation();\r\n this.selectionClick.next(selection);\r\n }\r\n\r\n private async _loadThumbnails(): Promise<void> {\r\n if (this.selectionViewModels.length > 0) {\r\n this.selectionViewModels.forEach(async (viewModel: SelectionViewModel) => {\r\n await this._builder.getImageForSelectionOrAnswer(viewModel.selection).then((imageSrc: string) => {\r\n viewModel.thumbnail = imageSrc === \"\" ? null : imageSrc;\r\n });\r\n });\r\n }\r\n }\r\n\r\n private _prepareSelections(value: Selection[]): void {\r\n this.selectionViewModels.length = 0;\r\n let selectionViewModel: SelectionViewModel;\r\n value.forEach(s => {\r\n if (s.presentationLevel === 1) {\r\n selectionViewModel = new SelectionViewModel();\r\n selectionViewModel.selection = s;\r\n this.selectionViewModels.push(selectionViewModel);\r\n } else if (s.presentationLevel > 1) {\r\n if (selectionViewModel) {\r\n selectionViewModel.children.push(s);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SelectionsComponent} from \"./selections.component\";\r\nimport {SharedModule} from '../shared/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n SelectionsComponent\r\n ],\r\n exports: [\r\n SelectionsComponent\r\n ]\r\n})\r\nexport class SelectionsModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {AnswerComponent as ɵc} from './app/components/answers/answer/answer.component';\nexport {LoaderComponent as ɵb} from './app/components/shared/loader/loader.component';\nexport {SharedModule as ɵa} from './app/components/shared/shared.module';\nexport {VisibilityObserverMasterDirective as ɵe} from './app/directives/visibility-observer-master.directive';\nexport {VisibilityObserverDirective as ɵd} from './app/directives/visibility-observer.directive';"],"names":["ObjectUtils","Mesh","THREE","Selection","BehaviorSubject","Color","SRGBColorSpace","MaterialLoader","JSZip","DecoNodeType","filter","take","EquirectangularReflectionMapping","MeshPhongMaterial","NearestFilter","DoubleSide","MeshPhysicalMaterial","MeshStandardMaterial","Configurator","isNill","NodeType","notNill","BusinessObjectFactory","DecoNodeKind","article","Article","DecoNode","Injectable","EventEmitter","Component","Input","Output","trigger","state","style","transition","animate","Directive","ElementRef","NgModule","CommonModule"],"mappings":"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"}