@colijnit/configurator 1.0.20 → 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.
Files changed (158) hide show
  1. package/.idea/Configurator.iml +12 -0
  2. package/.idea/codeStyles/Project.xml +21 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/misc.xml +9 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/angular.json +193 -0
  9. package/configurator.iml +11 -0
  10. package/dist/configurator/index.html +14 -0
  11. package/dist/configurator/main-es2015.js +3129 -0
  12. package/dist/configurator/main-es2015.js.map +1 -0
  13. package/dist/configurator/main-es5.js +5482 -0
  14. package/dist/configurator/main-es5.js.map +1 -0
  15. package/dist/configurator/polyfills-es2015.js +4520 -0
  16. package/dist/configurator/polyfills-es2015.js.map +1 -0
  17. package/dist/configurator/polyfills-es5.js +18375 -0
  18. package/dist/configurator/polyfills-es5.js.map +1 -0
  19. package/dist/configurator/runtime-es2015.js +155 -0
  20. package/dist/configurator/runtime-es2015.js.map +1 -0
  21. package/dist/configurator/runtime-es5.js +155 -0
  22. package/dist/configurator/runtime-es5.js.map +1 -0
  23. package/dist/configurator/styles-es2015.js +450 -0
  24. package/dist/configurator/styles-es2015.js.map +1 -0
  25. package/dist/configurator/styles-es5.js +432 -0
  26. package/dist/configurator/styles-es5.js.map +1 -0
  27. package/dist/configurator/vendor-es2015.js +155551 -0
  28. package/dist/configurator/vendor-es2015.js.map +1 -0
  29. package/dist/configurator/vendor-es5.js +183588 -0
  30. package/dist/configurator/vendor-es5.js.map +1 -0
  31. package/ng-package.json +9 -0
  32. package/package.json +47 -14
  33. package/src/app/app.component.ts +222 -0
  34. package/src/app/app.module.ts +34 -0
  35. package/src/app/builder.ts +480 -0
  36. package/src/app/components/answers/answer/answer.component.ts +61 -0
  37. package/src/app/components/answers/answers.component.ts +41 -0
  38. package/src/app/components/answers/answers.module.ts +26 -0
  39. package/src/app/components/selections/selections.component.ts +131 -0
  40. package/src/app/components/selections/selections.module.ts +20 -0
  41. package/src/app/components/shared/loader/loader.component.scss +33 -0
  42. package/src/app/components/shared/loader/loader.component.ts +20 -0
  43. package/src/app/components/shared/shared.module.ts +16 -0
  44. package/src/app/directives/visibility-observer-master.directive.ts +71 -0
  45. package/src/app/directives/visibility-observer.directive.ts +74 -0
  46. package/src/app/services/configurator.service.ts +86 -0
  47. package/src/app/services/image-cache.service.ts +56 -0
  48. package/src/app/services/locator.service.ts +6 -0
  49. package/src/environments/environment.prod.ts +3 -0
  50. package/src/environments/environment.ts +8 -0
  51. package/src/helper/variation-helper.ts +220 -0
  52. package/src/index.html +14 -0
  53. package/src/main.ts +11 -0
  54. package/src/model/material.ts +22 -0
  55. package/src/model/variation-settings.ts +14 -0
  56. package/src/model/variation.ts +11 -0
  57. package/src/polyfills.ts +73 -0
  58. package/{public_api.d.ts → src/public_api.ts} +6 -6
  59. package/src/style/shared.scss +173 -0
  60. package/src/style/styles.scss +45 -0
  61. package/src/tsconfig.app.json +16 -0
  62. package/src/tsconfig.spec.json +19 -0
  63. package/src/utils/asset.utils.ts +88 -0
  64. package/src/utils/file.utils.ts +156 -0
  65. package/src/utils/file.utils.unit.test.ts +8 -0
  66. package/src/utils/image.utils.ts +54 -0
  67. package/src/utils/object.utils.ts +52 -0
  68. package/src/utils/scene-utils.ts +119 -0
  69. package/src/utils/threed.utils.ts +219 -0
  70. package/src/utils/variation-utils.ts +216 -0
  71. package/tsconfig.json +23 -0
  72. package/tslint.json +132 -0
  73. package/app/builder.d.ts +0 -53
  74. package/app/components/answers/answer/answer.component.d.ts +0 -11
  75. package/app/components/answers/answers.component.d.ts +0 -8
  76. package/app/components/answers/answers.module.d.ts +0 -2
  77. package/app/components/selections/selections.component.d.ts +0 -22
  78. package/app/components/selections/selections.module.d.ts +0 -2
  79. package/app/components/shared/loader/loader.component.d.ts +0 -2
  80. package/app/components/shared/shared.module.d.ts +0 -2
  81. package/app/directives/visibility-observer-master.directive.d.ts +0 -9
  82. package/app/directives/visibility-observer.directive.d.ts +0 -13
  83. package/app/services/configurator.service.d.ts +0 -22
  84. package/app/services/image-cache.service.d.ts +0 -10
  85. package/app/services/locator.service.d.ts +0 -4
  86. package/bundles/colijnit-configurator.umd.js +0 -2745
  87. package/bundles/colijnit-configurator.umd.js.map +0 -1
  88. package/bundles/colijnit-configurator.umd.min.js +0 -17
  89. package/bundles/colijnit-configurator.umd.min.js.map +0 -1
  90. package/colijnit-configurator.d.ts +0 -10
  91. package/colijnit-configurator.metadata.json +0 -1
  92. package/esm2015/app/builder.js +0 -477
  93. package/esm2015/app/components/answers/answer/answer.component.js +0 -69
  94. package/esm2015/app/components/answers/answers.component.js +0 -43
  95. package/esm2015/app/components/answers/answers.module.js +0 -29
  96. package/esm2015/app/components/selections/selections.component.js +0 -134
  97. package/esm2015/app/components/selections/selections.module.js +0 -23
  98. package/esm2015/app/components/shared/loader/loader.component.js +0 -24
  99. package/esm2015/app/components/shared/shared.module.js +0 -21
  100. package/esm2015/app/directives/visibility-observer-master.directive.js +0 -51
  101. package/esm2015/app/directives/visibility-observer.directive.js +0 -57
  102. package/esm2015/app/services/configurator.service.js +0 -94
  103. package/esm2015/app/services/image-cache.service.js +0 -66
  104. package/esm2015/app/services/locator.service.js +0 -10
  105. package/esm2015/colijnit-configurator.js +0 -11
  106. package/esm2015/helper/variation-helper.js +0 -216
  107. package/esm2015/model/material.js +0 -11
  108. package/esm2015/model/variation-settings.js +0 -6
  109. package/esm2015/model/variation.js +0 -3
  110. package/esm2015/public_api.js +0 -7
  111. package/esm2015/utils/asset.utils.js +0 -74
  112. package/esm2015/utils/file.utils.js +0 -139
  113. package/esm2015/utils/image.utils.js +0 -52
  114. package/esm2015/utils/object.utils.js +0 -49
  115. package/esm2015/utils/scene-utils.js +0 -94
  116. package/esm2015/utils/threed.utils.js +0 -222
  117. package/esm2015/utils/variation-utils.js +0 -224
  118. package/esm5/app/builder.js +0 -591
  119. package/esm5/app/components/answers/answer/answer.component.js +0 -64
  120. package/esm5/app/components/answers/answers.component.js +0 -27
  121. package/esm5/app/components/answers/answers.module.js +0 -32
  122. package/esm5/app/components/selections/selections.component.js +0 -104
  123. package/esm5/app/components/selections/selections.module.js +0 -26
  124. package/esm5/app/components/shared/loader/loader.component.js +0 -16
  125. package/esm5/app/components/shared/shared.module.js +0 -24
  126. package/esm5/app/directives/visibility-observer-master.directive.js +0 -64
  127. package/esm5/app/directives/visibility-observer.directive.js +0 -59
  128. package/esm5/app/services/configurator.service.js +0 -160
  129. package/esm5/app/services/image-cache.service.js +0 -69
  130. package/esm5/app/services/locator.service.js +0 -13
  131. package/esm5/colijnit-configurator.js +0 -11
  132. package/esm5/helper/variation-helper.js +0 -268
  133. package/esm5/model/material.js +0 -13
  134. package/esm5/model/variation-settings.js +0 -8
  135. package/esm5/model/variation.js +0 -7
  136. package/esm5/public_api.js +0 -7
  137. package/esm5/utils/asset.utils.js +0 -106
  138. package/esm5/utils/file.utils.js +0 -151
  139. package/esm5/utils/image.utils.js +0 -56
  140. package/esm5/utils/object.utils.js +0 -56
  141. package/esm5/utils/scene-utils.js +0 -98
  142. package/esm5/utils/threed.utils.js +0 -279
  143. package/esm5/utils/variation-utils.js +0 -327
  144. package/fesm2015/colijnit-configurator.js +0 -2109
  145. package/fesm2015/colijnit-configurator.js.map +0 -1
  146. package/fesm5/colijnit-configurator.js +0 -2527
  147. package/fesm5/colijnit-configurator.js.map +0 -1
  148. package/helper/variation-helper.d.ts +0 -14
  149. package/model/material.d.ts +0 -17
  150. package/model/variation-settings.d.ts +0 -14
  151. package/model/variation.d.ts +0 -10
  152. package/utils/asset.utils.d.ts +0 -13
  153. package/utils/file.utils.d.ts +0 -27
  154. package/utils/image.utils.d.ts +0 -8
  155. package/utils/object.utils.d.ts +0 -7
  156. package/utils/scene-utils.d.ts +0 -7
  157. package/utils/threed.utils.d.ts +0 -16
  158. package/utils/variation-utils.d.ts +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///src/$_lazy_route_resource lazy namespace object","webpack:///src/app/app.component.ts","webpack:///src/app/app.module.ts","webpack:///src/app/builder.ts","webpack:///src/app/components/answers/answer/answer.component.ts","webpack:///src/app/components/answers/answers.component.ts","webpack:///src/app/components/answers/answers.module.ts","webpack:///src/app/components/selections/selections.component.ts","webpack:///src/app/components/selections/selections.module.ts","webpack:///src/app/components/shared/loader/loader.component.ts","webpack:///src/app/components/shared/shared.module.ts","webpack:///src/app/directives/visibility-observer-master.directive.ts","webpack:///src/app/directives/visibility-observer.directive.ts","webpack:///src/app/services/configurator.service.ts","webpack:///src/app/services/image-cache.service.ts","webpack:///src/app/services/locator.service.ts","webpack:///src/environments/environment.ts","webpack:///src/helper/variation-helper.ts","webpack:///src/main.ts","webpack:///src/model/material.ts","webpack:///src/model/variation-settings.ts","webpack:///src/model/variation.ts","webpack:///src/utils/asset.utils.ts","webpack:///src/utils/file.utils.ts","webpack:///src/utils/image.utils.ts","webpack:///src/utils/object.utils.ts","webpack:///src/utils/scene-utils.ts","webpack:///src/utils/threed.utils.ts","webpack:///src/utils/variation-utils.ts"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","window","loadGLTF","file","gltfLoader","GLTFLoader","load","obj","scene","console","error","downloadVariation","fileName","method","url","responseType","response","status","statusText","data","AppComponent","_configuratorService","selections","answers","showAnswers","showSelections","THREE","Scene","_subs","_options","version","schema","_instanceId","undefined","_sku","_builder","Builder","push","selectionsReceived","subscribe","answersReceived","length","modelLoaded","object","_loadModel","_initScene","_initRenderer","_initCameraAndControls","_initLights","_animate","buildModel","forEach","s","unsubscribe","controls","enabled","selection","selectSelection","selectionTitle","commercialQuestion","answer","selectAnswer","renderer","WebGLRenderer","alpha","antialias","preserveDrawingBuffer","setClearColor","autoClear","setPixelRatio","devicePixelRatio","shadowMap","type","PCFSoftShadowMap","outputEncoding","LinearEncoding","canvasElement","nativeElement","appendChild","domElement","camera","PerspectiveCamera","OrbitControls","position","set","update","setAnimationLoop","_render","_checkCanvasResize","render","canvas","clientWidth","width","clientHeight","height","_updateWindowSize","_resizeRendererToDisplaySize","aspect","updateProjectionMatrix","setSize","mat","MeshBasicMaterial","color","geo","BoxGeometry","mesh","Mesh","add","name","visible","objectFromScene","getObjectByName","remove","ambientLight","AmbientLight","directional","DirectionalLight","castShadow","spotLight1","SpotLight","spotLight2","spotLight3","spotLight4","hemiSphere","HemisphereLight","ElementRef","Component","selector","template","ViewChild","read","AppModule","BrowserAnimationsModule","CommonModule","SelectionsModule","AnswersModule","NgModule","imports","providers","declarations","entryComponents","bootstrap","options","useInAngular","BehaviorSubject","_selections","_answers","_decos","_placedAdjustables","_placedAddables","_adjustables","_addables","_articleCache","Map","_boFactory","BusinessObjectFactory","_threedUtils","ThreedUtils","_variationHelper","VariationHelper","ServiceLocator","injector","get","ConfiguratorService","initApi","_scene","sku","instanceId","goodId","_setInstanceId","_prepareConfiguration","_goodId","_source","setInstanceToConfigure","promises","getQuestionAndAnswers","_getSelections","_getDecos","all","_linkSelectionsAndDecos","_build","initNodeInstance","clearCache","publicationCode","questionsAndAnswers","next","_getGoodIdFromSku","result","resultObject","_getArticle","article","assetUrl","download3DSource","contentDeliveryUrl","assetPath","endsWith","distSchema","_reset","adjustables","_getAdjustables","Object3D","connected","i","len","adjustable","_createAdjustable","ii","lenii","SceneUtils","TrySelectorConnection","warn","_placeAddables","_updatePivot","_loadVariations","globalVariations","filter","generic","decoNode","variation","map","value","index","array","sel","find","artNodeIdDeco","supplierArticleNr","materialId","hdecoGameObject","globalVariationsRewrite","lastAdded","lastAdjustable","newPart","previousPresLevel","positioning","presentationLevel","hdecoPositioning","DecoNodeType","Variation","variations","Part","gameObjectName","kind","DecoNodeKind","Adjustable","nodeId","Addable","addables","parent","adj","replace","clone","_createUniqueName","userData","part2","part1","addable","hasOwnProperty","adjustableSelection","lena","conAddable","ia","_createAddable","iteration","existingObj","getGoodIdFromSku","validationResult","success","has","getArticleQuickSel","articleResponse","Array","isArray","makeWithRawBackendData","Article","getSelections","selectionResponse","resultObjects","makeBOArrayFromRawBackendDataArray","Selection","getDecos","decosResponse","DecoNode","deco","d","_getVariations","v","parentId","loadPart","loadVariation","node","boundingBox","Box3","setFromObject","bbCenterPivot","Vector3","getCenter","delta","sub","setY","Math","abs","min","y","children","child","updateWorldMatrix","_prepareTheSelections","Injectable","AnswerComponent","_imageCacheService","imageData","_loadThumbnail","getImageForSelectionOrAnswer","imageSrc","trigger","state","style","transition","animate","styleUrls","animations","Input","answerClick","AnswersComponent","EventEmitter","Output","SharedModule","VisibilityObserverDirective","VisibilityObserverMasterDirective","SelectionViewModel","expanded","thumbnail","SelectionsComponent","selectionViewModels","selectionClick","_prepareSelections","_loadThumbnails","selectionViewModel","mouseEvent","preventDefault","stopImmediatePropagation","viewModel","LoaderComponent","_mapping","_observer","IntersectionObserver","entries","entry","callback","target","isIntersecting","rootMargin","clear","disconnect","element","observe","unobserve","Directive","elementRef","observerEnabled","IS_INTERSECTING","IS_NOT_INTERSECTING","_parent","_elementRef","exportAs","_injector","_configuratorApi","Configurator","showLoader","isNill","hierarchicalPublicationCode","nodeType","NodeType","Question","questionPublicationCode","Answer","answerPublicationCode","questionAndAnswers","notNill","publication","includeMimetype","thumb","getSingleImage","providedIn","ImageCacheService","_imageCache","includeMimeType","reject","responseData","base64","_handleResponseData","filePath","ImageUtils","getFixedImageFilepathUrl","getDocBodyWithMimeTypeDefinition","thumbnailBody","documentBody","environment","production","_lastKnownVariations","valueMap","from","values","material","texture","dispose","normal","metalness","roughness","ao","parts","usePbr","VariationUtils","LoadVariation","decoId","partSettings","partVariation","parseFloat","brandId","AssetUtils","CreateMaterialFromAsset","_applyMaterialPart","_getLastKnownVariations","_applyVariations","lastKnownVariations","j","variationSettings","newVariation","_setLastKnownVariations","userDataObjectProp","prop","partMaterial","_getChildrenFilterByProp","traverse","jlen","toLowerCase","indexOf","_setMeshMaterialFromVariation","part","materialToSearch","m","mlen","needsUpdate","MeshPhongMaterial","shininess","specular","normalMap","params","roughnessValue","metalnessValue","aoMap","roughnessMap","metalnessMap","MeshStandardMaterial","setRGB","enableProdMode","platformBrowser","bootstrapModule","Material","Color","repeatX","repeatY","loaded","VariationSettings","settings","FurnitureMaterial","asset","setSettingsOfMaterial","CreateTextureFromBase64","encoding","sRGBEncoding","textureFilename","normalFilename","aoFilename","metalnessFilename","roughnessFilename","isNaN","level","repeatObjectUsed","repeatx","max","repeaty","FileUtils","dataUri","mimeString","GetMimeStringFromDataUri","substr","split","fixedUrl","FixUnityUrl","concat","regEx","extension","exec","content","mimeType","document","createElement","setAttribute","encodeURIComponent","display","body","click","removeChild","reader","FileReader","readAsText","onloadend","event","readyState","ext","GetExtensionFromDataUri","link","download","href","_cachedTextureUploads","textures","Texture","loader","TextureLoader","anisotropy","wrapS","RepeatWrapping","wrapT","repeat","Vector2","fileExtension","lastIndexOf","imageFilepathUrl","ObjectUtils","mtrl","materialProps","mapType","DisposeObject","DisposeNode","geometry","DisposeMaterial","createAddableFn","con1","con2","CanSelectorConnect","newPart2","SelectorConnect","point","vector","project","x","con1Name","connector","con2Name","sameParent","parts1","toUpperCase","parts2","connectable","motherRotation","Euler","motherPosition","updateMatrixWorld","copy","rotation","getWorldPosition","con1Quat","Quaternion","getWorldQuaternion","con2Quat","con1QuatParent","con2QuatParent","multiplyQuaternions","invert","multiply","quaternion","con1Pos","con2Pos","move","z","_objectCache","objs","o","lookupFileName","FileExists","loadGlbSource","fileReader","onload","onerror","_readJsonFile","json","ObjectLoader","crossOrigin","parse","setCrossOrigin","setResourcePath","xhr","cleanUp","_cleanedUpObjects","loadGlbModel","c","Camera","sort","a","b","t","startsWith","Group","slice","textureLoader","_addGroupChildrenToObject","translateY","negate","cc","group","gc","_iterateChildren","fetch","ok","empty","text","GetVariationSettingsFromFile","mute","compressedFile","GetZipContent","zipContent","files","async","indexFile","JSON","CreateSettingsBasedOnIndex","CreateSettingsBasedOnFileName","normalFile","LoadFileContentFromZip","aoFile","metalnessFile","roughnessFile","diffuseFile","Object","assign","allLoaded","FileIsImage","GetBase64FileType","textureFile","settingsFile","settingsFileObj","key","zip","fileContent","substring","jszip","JSZip","loadAsync","MaterialCache"],"mappings":"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","file":"main-es5.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {AfterViewInit, Component, ElementRef, OnDestroy, ViewChild} from \"@angular/core\";\nimport * as THREE from \"three\";\nimport {OrbitControls} from \"three/examples/jsm/controls/OrbitControls\";\nimport {Builder} from \"./builder\";\nimport {Options} from \"@colijnit/ioneconnector/build/model/options\";\nimport axios from \"axios\";\nimport {GLTFLoader} from \"three/examples/jsm/loaders/GLTFLoader\";\nimport {Subscription} from \"rxjs\";\nimport {Selection} from \"@colijnit/configuratorapi/build/model/selection\";\nimport {Answer} from \"@colijnit/configuratorapi/build/model/answer\";\nimport {ConfiguratorService} from './services/configurator.service';\nimport {AmbientLight, DirectionalLight, HemisphereLight, Object3D, SpotLight} from 'three';\n\n// @ts-ignore\nwindow.loadGLTF = async (file: string) => {\n const gltfLoader: GLTFLoader = new GLTFLoader();\n try {\n return new Promise((resolve: Function) => {\n gltfLoader.load(file, (obj) => {\n resolve(obj.scene);\n });\n });\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n// @ts-ignore\nwindow.downloadVariation = async (fileName: string) => {\n const response: any = await axios({\n method: \"get\",\n url: `https://cdn1.colijn-it.nl/${fileName}`,\n responseType: \"arraybuffer\"\n });\n if (response.status !== 200) {\n throw Error(response.statusText);\n }\n return await response.data;\n};\n\n@Component({\n selector: 'app-root',\n template: `\n <div #canvas class=\"canvas\"></div>\n <selections *ngIf=\"!showAnswers\" [selections]=\"selections\" (selectionClick)=\"selectSelection($event)\"></selections>\n <answers *ngIf=\"showAnswers\" [selectionTitle]=\"selectionTitle\" [answers]=\"answers\" (answerClick)=\"selectAnswer($event)\"></answers>\n `\n})\nexport class AppComponent implements AfterViewInit, OnDestroy {\n\n @ViewChild('canvas', {read: ElementRef})\n public canvasElement: ElementRef;\n\n public selectionTitle: string;\n public selections: Selection[] = [];\n public answers: Answer[] = [];\n\n public showAnswers: boolean = false;\n public showSelections: boolean = true;\n\n private _builder: Builder;\n private _object: THREE.Object3D;\n private scene: THREE.Scene = new THREE.Scene();\n private renderer: THREE.WebGLRenderer;\n private camera: THREE.PerspectiveCamera;\n private controls: OrbitControls;\n private _subs: Subscription[] = [];\n private _options: Options = {\n url: \"http://130.62.7.180:8082/ione\",\n version: \"251\",\n schema: \"815\"\n };\n private _instanceId: string = undefined;\n private _sku: string = '1000234793';\n\n constructor(private _configuratorService: ConfiguratorService) {}\n\n ngAfterViewInit(): void {\n this._builder = new Builder(this.scene, this._options, true);\n this._subs.push(\n this._builder.selectionsReceived.subscribe((selections: Selection[]) => {\n this.selections = selections;\n }),\n this._builder.answersReceived.subscribe((answers: Answer[]) => {\n this.answers = answers;\n this.showAnswers = this.answers.length > 0;\n }),\n this._builder.modelLoaded.subscribe((object: Object3D) => {\n if (object && this.answers.length === 0) {\n this._loadModel(object);\n }\n })\n );\n this._initScene();\n this._initRenderer();\n this._initCameraAndControls();\n this._initLights();\n // this._test();\n this._animate();\n this._builder.buildModel(this._sku, this._instanceId);\n }\n\n ngOnDestroy(): void {\n this._subs.forEach(s => s.unsubscribe());\n }\n\n public disableControls(): void {\n this.controls.enabled = false;\n }\n\n public enableControls(): void {\n this.controls.enabled = true;\n }\n\n public selectSelection(selection: Selection): void {\n this._builder.selectSelection(selection);\n this.selectionTitle = selection.commercialQuestion;\n this.showSelections = false;\n }\n\n public selectAnswer(answer: Answer): void {\n this._builder.selectAnswer(answer);\n this.selectionTitle = ' . . / ' + answer.answer;\n }\n\n private _initScene(): void {\n this.scene = new THREE.Scene();\n }\n\n private _initRenderer(): void {\n this.renderer = new THREE.WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: true\n });\n this.renderer.setClearColor(0xfafafa);\n this.renderer.autoClear = true;\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.shadowMap.enabled = true;\n // Use PCFShadowMap to enable radius else use PCFSoftShadowMap\n this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n this.renderer.outputEncoding = THREE.LinearEncoding;\n // this.renderer.gammaFactor = 2.2;\n // this.renderer.toneMappingExposure = 1.1;\n this.canvasElement.nativeElement.appendChild(this.renderer.domElement);\n }\n\n private _initCameraAndControls(): void {\n this.camera = new THREE.PerspectiveCamera(45, 1, 0.01, 100);\n this.controls = new OrbitControls( this.camera, this.renderer.domElement );\n this.camera.position.set(0, 3, 1.5);\n this.controls.update();\n }\n\n private _animate(): void {\n this.renderer.setAnimationLoop(() => this._render());\n }\n\n private _render(): void {\n this._checkCanvasResize();\n this.renderer.render(this.scene, this.camera);\n }\n\n private _checkCanvasResize(): void {\n const canvas = this.renderer.domElement;\n if (this.canvasElement.nativeElement.clientWidth !== canvas.width || this.canvasElement.nativeElement.clientHeight !== canvas.height) {\n this._updateWindowSize();\n }\n }\n\n private _updateWindowSize() {\n this._resizeRendererToDisplaySize();\n const canvas = this.renderer.domElement;\n const aspect = canvas.width / canvas.height;\n this.camera.aspect = aspect;\n (this.camera as THREE.PerspectiveCamera).updateProjectionMatrix();\n }\n\n private _resizeRendererToDisplaySize() {\n this.renderer.setSize(this.canvasElement.nativeElement.clientWidth, this.canvasElement.nativeElement.clientHeight, false);\n }\n\n private _test(): void {\n const mat: THREE.MeshBasicMaterial = new THREE.MeshBasicMaterial({color: 'blue'});\n const geo: THREE.BoxGeometry = new THREE.BoxGeometry(1, 1, 1);\n const mesh: THREE.Mesh = new THREE.Mesh(geo, mat);\n this.scene.add(mesh);\n }\n\n private async _loadModel(object: Object3D): Promise<void> {\n object.name = this._sku;\n object.visible = true;\n const objectFromScene = this.scene.getObjectByName(this._sku);\n if (objectFromScene) {\n this.scene.remove(objectFromScene);\n }\n this.scene.add(object);\n }\n\n private _initLights(): void {\n const ambientLight: AmbientLight = new AmbientLight('#595959', 1.2);\n ambientLight.name = 'ambientLight';\n const directional: DirectionalLight = new DirectionalLight('white', 1);\n directional.position.set(0, 4, 0);\n directional.castShadow = true;\n const spotLight1 = new SpotLight('white', 4, 25, 0.7, 0, 0.7);\n spotLight1.position.set(-15, 9 , -15);\n spotLight1.castShadow = true;\n const spotLight2 = new SpotLight('white', 4, 25, 0.7, 0, 0.7);\n spotLight2.position.set(15, 9 , -15);\n spotLight2.castShadow = true;\n const spotLight3 = new SpotLight('white', 4, 25, 0.7, 0, 0.7);\n spotLight3.position.set(-15, 9 , 15);\n spotLight3.castShadow = true;\n const spotLight4 = new SpotLight('white', 4, 25, 0.7, 0, 0.7);\n spotLight4.position.set(15, 9 , 15);\n spotLight4.castShadow = true;\n const hemiSphere = new HemisphereLight('white', 'white', 0.15);\n\n this.scene.add(ambientLight, directional, spotLight1, spotLight2, spotLight3, spotLight4, hemiSphere);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {AppComponent} from \"./app.component\";\nimport {CommonModule} from \"@angular/common\";\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\nimport {SelectionsModule} from \"./components/selections/selections.module\";\nimport {AnswersModule} from \"./components/answers/answers.module\";\nimport {Builder} from './builder';\n\n@NgModule({\n imports: [\n BrowserAnimationsModule,\n CommonModule,\n SelectionsModule,\n AnswersModule\n ],\n providers: [\n Builder\n ],\n declarations: [\n AppComponent\n ],\n entryComponents: [\n AppComponent\n ],\n exports: [\n AppComponent\n ],\n bootstrap: [\n AppComponent\n ]\n})\n\nexport class AppModule {\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, 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 {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 {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","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 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 {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 { 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 {Injectable, Injector} from '@angular/core';\n\n@Injectable()\nexport class ServiceLocator {\n static injector: Injector = undefined;\n}\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\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 { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { environment } from './environments/environment';\nimport {AppModule} from \"./app/app.module\";\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\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","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 {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","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 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 {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, Mesh, Object3D} from \"three\";\r\n\r\nexport class ObjectUtils {\r\n static materialProps = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap', 'aoMap', 'roughnessMap', 'metalnessMap'];\r\n\r\n public static DisposeMaterial(material: Material | Material[]): void {\r\n if (!material) {\r\n return;\r\n }\r\n if (Array.isArray(material)) {\r\n material.forEach(mtrl => {\r\n this.materialProps\r\n .filter(mapType => mtrl[mapType])\r\n .forEach(mapType => mtrl[mapType].dispose());\r\n mtrl.dispose();\r\n });\r\n } else {\r\n this.materialProps\r\n .filter(mapType => material[mapType] && material[mapType].dispose)\r\n .forEach(mapType => material[mapType].dispose());\r\n if (material.dispose) {\r\n material.dispose();\r\n }\r\n }\r\n }\r\n\r\n public static DisposeObject(object: Object3D | Mesh): void {\r\n if (!object) {\r\n return;\r\n }\r\n if (object.children.length) {\r\n object.children.forEach(child => this.DisposeObject(child));\r\n }\r\n this.DisposeNode(object);\r\n }\r\n\r\n private static DisposeNode(node: Object3D | Mesh): void {\r\n node.traverse((obj: Object3D) => {\r\n if (obj instanceof Mesh) {\r\n if (obj.geometry) {\r\n obj.geometry.dispose();\r\n }\r\n this.DisposeMaterial(obj.material);\r\n }\r\n if (typeof (obj as any).dispose === 'function') {\r\n // @ts-ignore\r\n obj.dispose();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import * as THREE from 'three';\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\";\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 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"]}