@colijnit/configurator 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/Configurator.iml +12 -0
- package/.idea/codeStyles/Project.xml +21 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +9 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/angular.json +193 -0
- package/configurator.iml +11 -0
- package/dist/configurator/index.html +14 -0
- package/dist/configurator/main-es2015.js +3129 -0
- package/dist/configurator/main-es2015.js.map +1 -0
- package/dist/configurator/main-es5.js +5482 -0
- package/dist/configurator/main-es5.js.map +1 -0
- package/dist/configurator/polyfills-es2015.js +4520 -0
- package/dist/configurator/polyfills-es2015.js.map +1 -0
- package/dist/configurator/polyfills-es5.js +18375 -0
- package/dist/configurator/polyfills-es5.js.map +1 -0
- package/dist/configurator/runtime-es2015.js +155 -0
- package/dist/configurator/runtime-es2015.js.map +1 -0
- package/dist/configurator/runtime-es5.js +155 -0
- package/dist/configurator/runtime-es5.js.map +1 -0
- package/dist/configurator/styles-es2015.js +450 -0
- package/dist/configurator/styles-es2015.js.map +1 -0
- package/dist/configurator/styles-es5.js +432 -0
- package/dist/configurator/styles-es5.js.map +1 -0
- package/dist/configurator/vendor-es2015.js +155551 -0
- package/dist/configurator/vendor-es2015.js.map +1 -0
- package/dist/configurator/vendor-es5.js +183588 -0
- package/dist/configurator/vendor-es5.js.map +1 -0
- package/ng-package.json +9 -0
- package/package.json +47 -14
- package/src/app/app.component.ts +222 -0
- package/src/app/app.module.ts +34 -0
- package/src/app/builder.ts +480 -0
- package/src/app/components/answers/answer/answer.component.ts +61 -0
- package/src/app/components/answers/answers.component.ts +41 -0
- package/src/app/components/answers/answers.module.ts +26 -0
- package/src/app/components/selections/selections.component.ts +131 -0
- package/src/app/components/selections/selections.module.ts +20 -0
- package/src/app/components/shared/loader/loader.component.scss +33 -0
- package/src/app/components/shared/loader/loader.component.ts +20 -0
- package/src/app/components/shared/shared.module.ts +16 -0
- package/src/app/directives/visibility-observer-master.directive.ts +71 -0
- package/src/app/directives/visibility-observer.directive.ts +74 -0
- package/src/app/services/configurator.service.ts +86 -0
- package/src/app/services/image-cache.service.ts +56 -0
- package/src/app/services/locator.service.ts +6 -0
- package/src/environments/environment.prod.ts +3 -0
- package/src/environments/environment.ts +8 -0
- package/src/helper/variation-helper.ts +220 -0
- package/src/index.html +14 -0
- package/src/main.ts +11 -0
- package/src/model/material.ts +22 -0
- package/src/model/variation-settings.ts +14 -0
- package/src/model/variation.ts +11 -0
- package/src/polyfills.ts +73 -0
- package/{public_api.d.ts → src/public_api.ts} +6 -6
- package/src/style/shared.scss +173 -0
- package/src/style/styles.scss +45 -0
- package/src/tsconfig.app.json +16 -0
- package/src/tsconfig.spec.json +19 -0
- package/src/utils/asset.utils.ts +88 -0
- package/src/utils/file.utils.ts +156 -0
- package/src/utils/file.utils.unit.test.ts +8 -0
- package/src/utils/image.utils.ts +54 -0
- package/src/utils/object.utils.ts +52 -0
- package/src/utils/scene-utils.ts +119 -0
- package/src/utils/threed.utils.ts +219 -0
- package/src/utils/variation-utils.ts +216 -0
- package/tsconfig.json +23 -0
- package/tslint.json +132 -0
- package/app/builder.d.ts +0 -53
- package/app/components/answers/answer/answer.component.d.ts +0 -11
- package/app/components/answers/answers.component.d.ts +0 -8
- package/app/components/answers/answers.module.d.ts +0 -2
- package/app/components/selections/selections.component.d.ts +0 -22
- package/app/components/selections/selections.module.d.ts +0 -2
- package/app/components/shared/loader/loader.component.d.ts +0 -2
- package/app/components/shared/shared.module.d.ts +0 -2
- package/app/directives/visibility-observer-master.directive.d.ts +0 -9
- package/app/directives/visibility-observer.directive.d.ts +0 -13
- package/app/services/configurator.service.d.ts +0 -22
- package/app/services/image-cache.service.d.ts +0 -10
- package/app/services/locator.service.d.ts +0 -4
- package/bundles/colijnit-configurator.umd.js +0 -2745
- package/bundles/colijnit-configurator.umd.js.map +0 -1
- package/bundles/colijnit-configurator.umd.min.js +0 -17
- package/bundles/colijnit-configurator.umd.min.js.map +0 -1
- package/colijnit-configurator.d.ts +0 -10
- package/colijnit-configurator.metadata.json +0 -1
- package/esm2015/app/builder.js +0 -477
- package/esm2015/app/components/answers/answer/answer.component.js +0 -69
- package/esm2015/app/components/answers/answers.component.js +0 -43
- package/esm2015/app/components/answers/answers.module.js +0 -29
- package/esm2015/app/components/selections/selections.component.js +0 -134
- package/esm2015/app/components/selections/selections.module.js +0 -23
- package/esm2015/app/components/shared/loader/loader.component.js +0 -24
- package/esm2015/app/components/shared/shared.module.js +0 -21
- package/esm2015/app/directives/visibility-observer-master.directive.js +0 -51
- package/esm2015/app/directives/visibility-observer.directive.js +0 -57
- package/esm2015/app/services/configurator.service.js +0 -94
- package/esm2015/app/services/image-cache.service.js +0 -66
- package/esm2015/app/services/locator.service.js +0 -10
- package/esm2015/colijnit-configurator.js +0 -11
- package/esm2015/helper/variation-helper.js +0 -216
- package/esm2015/model/material.js +0 -11
- package/esm2015/model/variation-settings.js +0 -6
- package/esm2015/model/variation.js +0 -3
- package/esm2015/public_api.js +0 -7
- package/esm2015/utils/asset.utils.js +0 -74
- package/esm2015/utils/file.utils.js +0 -139
- package/esm2015/utils/image.utils.js +0 -52
- package/esm2015/utils/object.utils.js +0 -49
- package/esm2015/utils/scene-utils.js +0 -94
- package/esm2015/utils/threed.utils.js +0 -222
- package/esm2015/utils/variation-utils.js +0 -224
- package/esm5/app/builder.js +0 -591
- package/esm5/app/components/answers/answer/answer.component.js +0 -64
- package/esm5/app/components/answers/answers.component.js +0 -27
- package/esm5/app/components/answers/answers.module.js +0 -32
- package/esm5/app/components/selections/selections.component.js +0 -104
- package/esm5/app/components/selections/selections.module.js +0 -26
- package/esm5/app/components/shared/loader/loader.component.js +0 -16
- package/esm5/app/components/shared/shared.module.js +0 -24
- package/esm5/app/directives/visibility-observer-master.directive.js +0 -64
- package/esm5/app/directives/visibility-observer.directive.js +0 -59
- package/esm5/app/services/configurator.service.js +0 -160
- package/esm5/app/services/image-cache.service.js +0 -69
- package/esm5/app/services/locator.service.js +0 -13
- package/esm5/colijnit-configurator.js +0 -11
- package/esm5/helper/variation-helper.js +0 -268
- package/esm5/model/material.js +0 -13
- package/esm5/model/variation-settings.js +0 -8
- package/esm5/model/variation.js +0 -7
- package/esm5/public_api.js +0 -7
- package/esm5/utils/asset.utils.js +0 -106
- package/esm5/utils/file.utils.js +0 -151
- package/esm5/utils/image.utils.js +0 -56
- package/esm5/utils/object.utils.js +0 -56
- package/esm5/utils/scene-utils.js +0 -98
- package/esm5/utils/threed.utils.js +0 -279
- package/esm5/utils/variation-utils.js +0 -327
- package/fesm2015/colijnit-configurator.js +0 -2109
- package/fesm2015/colijnit-configurator.js.map +0 -1
- package/fesm5/colijnit-configurator.js +0 -2527
- package/fesm5/colijnit-configurator.js.map +0 -1
- package/helper/variation-helper.d.ts +0 -14
- package/model/material.d.ts +0 -17
- package/model/variation-settings.d.ts +0 -14
- package/model/variation.d.ts +0 -10
- package/utils/asset.utils.d.ts +0 -13
- package/utils/file.utils.d.ts +0 -27
- package/utils/image.utils.d.ts +0 -8
- package/utils/object.utils.d.ts +0 -7
- package/utils/scene-utils.d.ts +0 -7
- package/utils/threed.utils.d.ts +0 -16
- package/utils/variation-utils.d.ts +0 -12
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colijnit-configurator.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","ng://@colijnit/configurator/utils/object.utils.ts","ng://@colijnit/configurator/utils/file.utils.ts","ng://@colijnit/configurator/utils/threed.utils.ts","ng://@colijnit/configurator/utils/scene-utils.ts","ng://@colijnit/configurator/model/material.ts","ng://@colijnit/configurator/utils/image.utils.ts","ng://@colijnit/configurator/utils/asset.utils.ts","ng://@colijnit/configurator/model/variation.ts","ng://@colijnit/configurator/model/variation-settings.ts","ng://@colijnit/configurator/utils/variation-utils.ts","ng://@colijnit/configurator/helper/variation-helper.ts","ng://@colijnit/configurator/app/services/locator.service.ts","ng://@colijnit/configurator/app/services/configurator.service.ts","ng://@colijnit/configurator/app/builder.ts","ng://@colijnit/configurator/app/components/answers/answers.component.ts","ng://@colijnit/configurator/app/services/image-cache.service.ts","ng://@colijnit/configurator/app/components/answers/answer/answer.component.ts","ng://@colijnit/configurator/app/directives/visibility-observer-master.directive.ts","ng://@colijnit/configurator/app/directives/visibility-observer.directive.ts","ng://@colijnit/configurator/app/components/shared/loader/loader.component.ts","ng://@colijnit/configurator/app/components/shared/shared.module.ts","ng://@colijnit/configurator/app/components/answers/answers.module.ts","ng://@colijnit/configurator/app/components/selections/selections.component.ts","ng://@colijnit/configurator/app/components/selections/selections.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\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 axios from \"axios\";\n// Static utility functions holder related to files.\n// @dynamic\nexport class FileUtils {\n\n private static _cachedTextureUploads: Map<string, Object> = new Map();\n\n // Returns the given dataUri string stripped of the mimetype part.\n public static StripMimeStringFromDataUri(dataUri: string): string {\n if (!dataUri) {\n return '';\n }\n\n const mimeString: string = this.GetMimeStringFromDataUri(dataUri);\n return dataUri.substr(mimeString.length + 1);\n }\n\n public static GetMimeStringFromDataUri(dataUri: string): string {\n if (!dataUri) {\n return '';\n }\n\n return dataUri.split(',')[0];\n }\n\n public static async FileExists(url: string, assetPath: string): Promise<boolean> {\n const result = await axios({\n method: 'get',\n url: `${assetPath}getFiles.php?assetUrl=${url}`,\n responseType: \"json\"\n })\n return !!result.data;\n }\n\n /**\n * There is some discrepancy regarding locations of h3d objects\n * Therefor we need to (temporarily?!) fix the content url\n * Also we need to change some additionals\n */\n public static FixUrl(assetUrl: string): string {\n if (!assetUrl) {\n return '';\n }\n let fixedUrl: string = assetUrl;\n if (!fixedUrl.endsWith('glb') && !fixedUrl.endsWith('obj') && !fixedUrl.endsWith('glb.gz') && !fixedUrl.endsWith('obj.gz')) {\n fixedUrl = FileUtils.FixUnityUrl(fixedUrl);\n }\n fixedUrl = fixedUrl.replace('/content/', '/content43/');\n return fixedUrl;\n }\n\n public static FixGlbUrl(assetUrl: string): string {\n if (!assetUrl) {\n return '';\n }\n let fixedUrl: string = assetUrl;\n if (assetUrl.indexOf('_webplayer') === -1) {\n fixedUrl = assetUrl.concat('_webplayer');\n }\n fixedUrl = fixedUrl.replace('/content/', '/content43/');\n if (!fixedUrl.endsWith('.glb')) {\n fixedUrl = fixedUrl.concat('.glb');\n }\n return fixedUrl;\n }\n\n // Return the mimetype of the given filename.\n public static MimeTypeFromFilename(fileName: string): string {\n const regEx: RegExp = /(?:\\.([^.]+))?$/; // regex to find extension\n const extension: any = regEx.exec(fileName)[1];\n switch (extension) {\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n case 'bmp':\n return 'image/bmp';\n }\n }\n\n /**\n * Downloads the given file to the users default download location.\n * @param fileName With or without extension\n * @param content File content as a string\n * @param [mimeType = 'text/plain']\n */\n public static DownloadFile(\n fileName: string,\n content: string,\n mimeType: string = 'text/plain'\n ): void {\n const element: HTMLAnchorElement = document.createElement('a');\n element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(content));\n element.setAttribute('download', fileName);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n // Returns the contents of given file as a text string.\n public static ReadAsText(file: File): Promise<string> {\n return new Promise<string>((resolve: Function) => {\n const reader: FileReader = new FileReader();\n reader.readAsText(file);\n reader.onloadend = (event: any) => {\n if (event.target.readyState === 2) {\n resolve(event.target.result);\n }\n };\n });\n }\n\n public static GetExtensionFromDataUri(dataUri: string): string {\n return dataUri.replace(/(data:image\\/)(.*?)(;base64.*)/gi, '$2');\n }\n\n public static CreateDownloadFileNameFromBase64(dataUri: string): string {\n const ext: string = this.GetExtensionFromDataUri(dataUri);\n return 'preview.' + ext;\n }\n\n public static DownloadFromDataUri(dataUri: string, fileName: string): void {\n const link: any = document.createElement('a');\n link.download = fileName;\n link.href = dataUri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n // todo remove once Connector deals with mimetypes and this method isn't used anymore\n public static DocumentBodyToDataUri(documentBody: string, mimeType: string): string {\n if (!!documentBody) {\n return 'data:' + mimeType + ';base64,' + documentBody;\n } else {\n return '';\n }\n }\n\n private static FixUnityUrl(url): string {\n if (url.indexOf('_webplayer') === -1) {\n url = url.concat('_webplayer.ione3d');\n } else {\n url = url.replace('_webplayer', '_webplayer.ione3d');\n }\n if (!url.endsWith('.gz')) {\n url = url.concat('.gz');\n }\n return url.replace('.unity3d', '');\n }\n}\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): 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 if (await FileUtils.FileExists(lookupFileName, 'https://cdn1.colijn-it.nl/content43/')) {\n this.loadGlbSource(lookupFileName).then((obj: THREE.Object3D) => {\n this._objectCache.set(lookupFileName, obj);\n resolve(obj);\n });\n } else {\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 obj.children.length = 0;\n obj.children = children;\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\n\r\nexport class SceneUtils {\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 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 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 * as THREE from 'three';\n\nexport class Material {\n\n public name: string;\n public schema: string;\n public specular: THREE.Color = new THREE.Color(0.3, 0.3, 0.3);\n public shininess = 0;\n // public roughness = 1;\n // public metalness = 0.5;\n public normal: THREE.Texture;\n public texture: THREE.Texture;\n public ao: THREE.Texture;\n public metalness: THREE.Texture;\n public roughness: THREE.Texture;\n public repeatX = 4;\n public repeatY = 4;\n public loaded = false;\n public metalnessValue: number;\n public roughnessValue: number;\n\n}\n","import * as THREE from 'three';\nimport {Material} from '../model/material';\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): Promise<THREE.Texture> {\n return new Promise<THREE.Texture>((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 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.needsUpdate = true;\n ImageUtils.textures.set(id, texture);\n resolve(texture);\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","import {Material} from '../model/material';\nimport {ImageUtils} from './image.utils';\nimport * as THREE from 'three';\nimport {sRGBEncoding} from 'three';\nimport {VariationSettings} from '../model/variation-settings';\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\n}\n\nexport class AssetUtils {\n\n public static async CreateMaterialFromAsset(asset: VariationSettings): Promise<Material> {\n const material: FurnitureMaterial = new Material();\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.encoding = sRGBEncoding;\n\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 // material.normal.anisotropy = 1;\n // material.normal.repeat.set(1, 1);\n // material.normal.flipY = false;\n }\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 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 THREE.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 = Math.max(1, repeatx);\n }\n\n const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);\n if (!isNaN(repeaty)) {\n material.repeatY = Math.max(1, 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 supplierArticleNr: string;\n public materialId: string;\n public material: Material;\n}\n","export class VariationSettings {\n public id: string;\n public settings: any = {};\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}\n","import * as JSZip from 'jszip';\r\nimport * as THREE from 'three';\r\nimport {FileUtils} from \"./file.utils\";\r\nimport {VariationSettings} from \"../model/variation-settings\";\r\nimport axios from \"axios\";\r\n\r\n// @dynamic\r\nexport class VariationUtils {\r\n private static MaterialCache: Map<string, THREE.MeshStandardMaterial> = new Map();\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 if (fileName.indexOf('ione3d') < 0) {\r\n fileName = fileName.concat('.ione3d');\r\n }\r\n const id: string = fileName.substr(0, fileName.lastIndexOf('.ione3d'));\r\n try {\r\n if (!assetPath.endsWith('/')) {\r\n assetPath += '/';\r\n }\r\n if (!window.hasOwnProperty('downloadVariation')) {\r\n console.error('downloadVariation not defined in window global');\r\n return null;\r\n }\r\n const file: any = await (window as any).downloadVariation(`${assetPath.replace('https://cdn1.colijn-it.nl/', '')}variation/${fileName}`);\r\n return await VariationUtils.GetVariationSettingsFromFile(id, file);\r\n } catch (err) {\r\n const mute = err;\r\n return null;\r\n }\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.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 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.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 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 variationSettings.settings =\r\n await VariationUtils.LoadFileContentFromZip(zipContent.files['repeat.json'], 'repeat.json', false) || {};\r\n Object.assign(variationSettings.settings, index.repeat);\r\n variationSettings.settings.metalness = index.metalness;\r\n variationSettings.settings.roughness = index.roughness;\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[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.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[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 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 const jszip = new JSZip();\r\n const content = await jszip.loadAsync(file);\r\n return content;\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 * as THREE from \"three\";\r\nimport {VariationUtils} from \"../utils/variation-utils\";\r\n\r\nexport class VariationHelper {\r\n\r\n public assetPath: string;\r\n\r\n private _lastKnownVariations: Map<string, Map<string, Variation[]>> = new Map();\r\n\r\n public clearCache(): void {\r\n const valueMap: Map<string, Variation[]>[] = Array.from(this._lastKnownVariations.values());\r\n for (let i = 0; i < valueMap.length; i++) {\r\n const values = Array.from(valueMap[i].values());\r\n values.forEach((variations) => {\r\n variations.forEach((variation) => {\r\n variation.material.texture.dispose();\r\n variation.material.normal.dispose();\r\n variation.material.metalness.dispose();\r\n variation.material.roughness.dispose();\r\n variation.material.ao.dispose();\r\n })\r\n });\r\n }\r\n }\r\n\r\n public async loadPart(obj: THREE.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(instanceId: string, obj: THREE.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(instanceId, parts[i].nodeId)) {\r\n parts[i].variations = this._getLastKnownVariations(instanceId, 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 for (let j = 0; j < variations.length; j++) {\r\n const variationSettings: VariationSettings =\r\n await VariationUtils.LoadVariation(this.assetPath, variations[j].gameObjectName || parts[i].decoId);\r\n const newVariation: Variation = new Variation();\r\n newVariation.decoId = parseFloat(variations[j].id);\r\n newVariation.brandId = variations[j].brandId;\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 = await AssetUtils.CreateMaterialFromAsset(variationSettings);\r\n lastKnownVariations.push(newVariation);\r\n }\r\n this._setLastKnownVariations(instanceId, parts[i].nodeId, lastKnownVariations);\r\n parts[i].variations = lastKnownVariations;\r\n this._applyVariations(obj, parts[i], usePbr);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n private _getChildrenFilterByProp(obj: THREE.Object3D, userDataObjectProp: string, prop: string, value: any): THREE.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: THREE.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) => {\r\n if (mesh instanceof THREE.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.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: THREE.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) => {\r\n if (mesh instanceof THREE.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 mesh.material[m] = this._setMeshMaterialFromVariation(mesh.material[m].name, variation, usePbr);\r\n }\r\n }\r\n } else {\r\n if (mesh.material.name.toLowerCase().indexOf(materialToSearch) !== -1) {\r\n mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, variation, usePbr);\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 if (variation.material.texture) {\r\n variation.material.texture.needsUpdate = true;\r\n }\r\n if (!usePbr) {\r\n const material: THREE.MeshPhongMaterial = new THREE.MeshPhongMaterial({\r\n name: name,\r\n shininess: variation.material.shininess,\r\n specular: variation.material.specular,\r\n map: variation.material.texture,\r\n normalMap: variation.material.normal\r\n });\r\n // material.color.setRGB(0.8, 0.8, 0.8);\r\n material.needsUpdate = true;\r\n return material;\r\n } else {\r\n const params: THREE.MeshStandardMaterialParameters = {\r\n // side: DoubleSide,\r\n name: name,\r\n roughness: variation.material.roughnessValue ? variation.material.roughnessValue : 1,\r\n metalness: variation.material.metalnessValue ? variation.material.metalnessValue : 0,\r\n // wireframe: true\r\n };\r\n if (variation.material.texture) {\r\n params.map = variation.material.texture;\r\n }\r\n if (variation.material.ao) {\r\n params.aoMap = variation.material.ao;\r\n }\r\n if (variation.material.roughness) {\r\n params.roughnessMap = variation.material.roughness;\r\n }\r\n if (variation.material.metalness) {\r\n params.metalnessMap = variation.material.metalness;\r\n }\r\n if (variation.material.normal) {\r\n params.normalMap = variation.material.normal;\r\n }\r\n const material: THREE.MeshStandardMaterial = new THREE.MeshStandardMaterial(params);\r\n material.color.setRGB(1, 1, 1);\r\n material.needsUpdate = true;\r\n return material;\r\n }\r\n }\r\n\r\n private _setLastKnownVariations(instanceId: string, id: string, variation: Variation[]): void {\r\n if (this._lastKnownVariations.has(instanceId)) {\r\n const variations = this._lastKnownVariations.get(instanceId);\r\n variations.set(id, variation);\r\n } else {\r\n const variations: Map<string, Variation[]> = new Map();\r\n this._lastKnownVariations.set(instanceId, variations.set(id, variation));\r\n }\r\n }\r\n\r\n private _getLastKnownVariations(instanceId: string, id: string): Variation[] {\r\n if (this._lastKnownVariations.has(instanceId)) {\r\n const variations = this._lastKnownVariations.get(instanceId);\r\n if (variations.has(id)) {\r\n return variations.get(id);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Injectable, Injector} from '@angular/core';\n\n@Injectable()\nexport class ServiceLocator {\n static injector: Injector = undefined;\n}\n","import {Injectable, Injector, OnDestroy} from '@angular/core';\nimport {Configurator} from '@colijnit/configuratorapi/build/configurator';\nimport {Subscription} from 'rxjs';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\nimport {QuestionAndAnswers} from \"@colijnit/configuratorapi/build/model/question-and-answers\";\nimport {ServiceLocator} from './locator.service';\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';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfiguratorService {\n\n private _configuratorApi: Configurator;\n\n constructor(private _injector: Injector) {\n if (!ServiceLocator.injector) {\n ServiceLocator.injector = _injector;\n }\n }\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 * as THREE from \"three\";\r\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\r\nimport {DataServiceResponseData} from \"@colijnit/ioneconnector/build/model/data-service-response-data\";\r\nimport {DecoNode} from \"@colijnit/configuratorapi/build/model/deco-node\";\r\nimport {BusinessObjectFactory} from \"@colijnit/ioneconnector/build/service/business-object-factory\";\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 {Scene} from 'three';\r\nimport {Injectable} from '@angular/core';\r\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {ServiceLocator} from './services/locator.service';\r\nimport {QuestionAndAnswers} from '@colijnit/configuratorapi/build/model/question-and-answers';\r\n\r\n@Injectable()\r\nexport class Builder {\r\n\r\n public selectionsReceived: BehaviorSubject<Selection[]> = new BehaviorSubject<Selection[]>([]);\r\n public answersReceived: BehaviorSubject<Answer[]> = new BehaviorSubject<Answer[]>([]);\r\n public modelLoaded: BehaviorSubject<THREE.Object3D> = new BehaviorSubject<THREE.Object3D>(null);\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 _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(scene: Scene, options: Options, useInAngular: boolean) {\r\n this._boFactory = new BusinessObjectFactory();\r\n this._threedUtils = new ThreedUtils();\r\n this._variationHelper = new VariationHelper();\r\n\r\n if (!scene) {\r\n throw 'No scene object provided!';\r\n }\r\n if (!options) {\r\n throw 'No connection options provided!';\r\n }\r\n if (useInAngular) {\r\n this._configuratorService = ServiceLocator.injector.get(ConfiguratorService);\r\n } else {\r\n this._configuratorService = new ConfiguratorService(undefined);\r\n }\r\n this._configuratorService.initApi(options);\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 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 return this._build(this._instanceId);\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 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 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 this.modelLoaded.next(await this.buildModel());\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 this._source = await this._threedUtils.download3DSource(article.assetUrl)\r\n .catch((error) => {\r\n throw error;\r\n });\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 }\r\n }\r\n\r\n private async _build(instanceId: string): Promise<THREE.Object3D> {\r\n this._reset();\r\n const adjustables: Selection[] = this._getAdjustables();\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 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)) {\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._placeAddables(obj);\r\n this._updatePivot(obj);\r\n await this._loadVariations(obj, instanceId);\r\n this._scene.remove(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 // get generic variations\r\n const globalVariations: DecoNode[] = this._selections\r\n .filter(s => s.generic && (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.id);\r\n if (sel) {\r\n (value.decoNode as any).variation.supplierArticleNr = sel.supplierArticleNr;\r\n }\r\n (value.decoNode as any).variation.materialId = value.hdecoGameObject;\r\n return (value.decoNode as any).variation;\r\n });\r\n\r\n // const usedVariations: FurniturePartVariation[] = [];\r\n let globalVariationsRewrite: boolean = true;\r\n\r\n const len: number = this._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 for (let i = 0; i < len; i++) {\r\n const selection: Selection = this._selections[i];\r\n if (selection.presentationLevel === 1) {\r\n positioning = selection.hdecoPositioning;\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 if (lastAdded) {\r\n if (newPart) {\r\n lastAdded.variations = [selection.decoNode];\r\n } else {\r\n lastAdded.variations.push(selection.decoNode);\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 globalVariations.push(selection.decoNode);\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 // this._upsertFurniture(this.activeInstance, {\r\n // Variation: selection.decoNode.brandId,\r\n // VariationDescription: selection.decoNode.gameObjectName,\r\n // SupplierArticleNr: (selection.decoNode as any).supplierArticleNr\r\n // });\r\n } else if (selection.decoNode.type === DecoNodeType.Part &&\r\n typeof selection.decoNode.gameObjectName === 'string' &&\r\n selection.decoNode.gameObjectName.length) {\r\n if (selection.decoNode.kind === DecoNodeKind.Adjustable) {\r\n selection.variations = globalVariations;\r\n this._adjustables.push(selection);\r\n if (!lastAdded || lastAdded.nodeId !== selection.nodeId) {\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) {\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 private _createAdjustable(parent: THREE.Object3D, adj: Selection): THREE.Object3D {\r\n let obj: any = this._source ? this._source.getObjectByName(adj.decoNode.gameObjectName) : 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.visible = true;\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],\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],\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 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 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 } 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 let id: string = this._selections[i].artNodeIdDeco;\r\n // if (this._useNodeIdToLink) {\r\n // id = `${this._selections[i].node}_${this._selections[i].artNodeIdDeco}`;\r\n // }\r\n let deco: any = this._decos.find(d => d.id === id);\r\n if (!deco) {\r\n deco = new DecoNode();\r\n }\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 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, instanceId: string): Promise<void> {\r\n await this._variationHelper.loadPart(obj, this._adjustables, true);\r\n await this._variationHelper.loadVariation(instanceId, obj, this._adjustables, true);\r\n await this._variationHelper.loadVariation(instanceId, obj, this._addables, true);\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","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 { Injectable } from '@angular/core';\nimport {DataServiceResponseData} from '@colijnit/ioneconnector/build/model/data-service-response-data';\nimport {ImageUtils} from '../../utils/image.utils';\nimport {Answer} from '@colijnit/configuratorapi/build/model/answer';\nimport {Selection} from '@colijnit/configuratorapi/build/model/selection';\nimport {ConfiguratorService} from './configurator.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImageCacheService {\n\n // Map containing the retrieved images, @number = nodeId, @string = base64 string\n private _imageCache: Map<number, string> = new Map();\n\n constructor(private _configuratorService: ConfiguratorService) { }\n\n private static _handleResponseData(includeMimetype: boolean, thumb: boolean, responseData: DataServiceResponseData): string {\n if (responseData && responseData.resultObject) {\n if (responseData.resultObject.filePath !== null && responseData.resultObject.filePath !== \"\") {\n return ImageUtils.getFixedImageFilepathUrl(responseData.resultObject.filePath);\n } else {\n if (includeMimetype) {\n return ImageUtils.getDocBodyWithMimeTypeDefinition(responseData.resultObject.fileName,\n thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody);\n } else {\n return thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody;\n }\n }\n } else {\n return '';\n }\n }\n\n public getImageForSelectionOrAnswer(object: Selection | Answer): Promise<string> {\n const includeMimeType: boolean = true, thumb: boolean = true;\n return new Promise((resolve: Function, reject: Function) => {\n if (object && object.nodeId) {\n if (!this._imageCache.has(object.nodeId)) {\n return this._configuratorService.getSingleImage(object.nodeId, 4, includeMimeType, thumb, true)\n .then((responseData: DataServiceResponseData) => {\n const base64: string = ImageCacheService._handleResponseData(includeMimeType, thumb, responseData);\n this._imageCache.set(object.nodeId, base64);\n resolve(base64);\n }).catch(() => {\n reject();\n });\n } else {\n resolve(this._imageCache.get(object.nodeId));\n }\n } else {\n reject();\n }\n });\n }\n}\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';\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 _imageCacheService: ImageCacheService) { }\n\n public ngOnInit(): void {\n }\n\n private async _loadThumbnail(answer: Answer): Promise<void> {\n await this._imageCacheService.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\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 implements OnInit {\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 _imageCacheService: ImageCacheService) {}\r\n\r\n public ngOnInit(): void {\r\n\r\n }\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._imageCacheService.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"],"names":["Mesh","THREE.ObjectLoader","THREE.Camera","THREE.Group","THREE.TextureLoader","THREE.RepeatWrapping","THREE.Object3D","THREE.Mesh","THREE.Box3","THREE.Vector3","THREE.Vector2","THREE.Euler","THREE.Quaternion","THREE.Color","THREE.Texture","sRGBEncoding","DecoNodeType","THREE.MeshPhongMaterial","THREE.MeshStandardMaterial","Injectable","Configurator","isNill","NodeType","notNill","Injector","BehaviorSubject","BusinessObjectFactory","DecoNodeKind","article","Article","Selection","DecoNode","Scene","Options","EventEmitter","Input","Output","Component","trigger","state","style","transition","animate","Directive","ElementRef","NgModule","CommonModule"],"mappings":"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"}
|