| 
					
				 | 
			
			
				@@ -41,7 +41,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { mapInstanceState } from '@urbn/vuex-helpers' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { mapInstanceState, mapInstanceMutations } from '@urbn/vuex-helpers' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // import { mapState, mapGetters } from 'vuex' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as THREE from 'three' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -54,7 +54,7 @@ const getModuleName = cmp => `project:${cmp.prtId}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   name: 'ContentBlock', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   mixins: [mixins], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  props: { prtId: Number, prtIndex: Number, type: String, data: Object }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  props: { prtId: Number, type: String, data: Object }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   data: () => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // block3d: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     project: null, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -92,15 +92,11 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     face: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // ...mapState({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   projects: state => state.Projects.projects 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // ...mapGetters({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   getGridPos: 'Projects/getGridPos' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ...mapInstanceState(getModuleName, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      size: state => state.size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      position: state => state.position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      projSize: state => state.size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      projPos: state => state.position, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      projWall: state => state.wall, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      gridContentPlaced: state => state.gridContentPlaced 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     color () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let color = 0x000000 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -134,12 +130,14 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         wrapS: THREE.ClampToEdgeWrapping, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         wrapT: THREE.ClampToEdgeWrapping 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    id () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return this.data.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   created () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.project = this.projects[this.prtIndex] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.size.x = this.project.wall.winW / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.size.y = this.project.wall.winY / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.size.x = this.projWall.winW / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.size.y = this.projWall.winY / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // console.log('ContentBlock created', this.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // let txtcolor = '#000000' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // switch (this.type) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -161,8 +159,8 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // this.size.y = this.label_size.y + 0.2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // let y = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // let top = this.prtPosition.y + this.prtSize.y / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // let floor = this.prtPosition.y - this.prtSize.y / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let top = this.projPos.y + this.projSize.y / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let floor = this.projPos.y - this.projSize.y / 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // switch (this.type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   case 'visible': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //     y = top * Math.random() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,25 +182,25 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // if (face < 0.25) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   // gauche 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.face = 'left' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.x = this.prtPosition.x - this.prtSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.z = this.prtPosition.z - this.prtSize.z / 2 + this.size.x / 2 + Math.random() * (this.prtSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.x = this.projPos.x - this.projSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.z = this.projPos.z - this.projSize.z / 2 + this.size.x / 2 + Math.random() * (this.projSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.rotation.y = 90 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // } else if (face >= 0.25 && face < 0.5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   // fond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.face = 'back' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.z = this.prtPosition.z - this.prtSize.z / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.x = this.prtPosition.x - this.prtSize.x / 2 + this.size.x / 2 + Math.random() * (this.prtSize.x - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.z = this.projPos.z - this.projSize.z / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.x = this.projPos.x - this.projSize.x / 2 + this.size.x / 2 + Math.random() * (this.projSize.x - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // } else if (face >= 0.5 && face < 0.75) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   // droite 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.face = 'right' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.x = this.prtPosition.x + this.prtSize.x / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.z = this.prtPosition.z - this.prtSize.z / 2 + this.size.x / 2 + Math.random() * (this.prtSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.x = this.projPos.x + this.projSize.x / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.z = this.projPos.z - this.projSize.z / 2 + this.size.x / 2 + Math.random() * (this.projSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.rotation.y = -90 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   // face 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.face = 'front' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.z = this.prtPosition.z + this.prtSize.z / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   this.position.x = this.prtPosition.x - this.prtSize.x / 2 + this.size.x / 2 + Math.random() * (this.prtSize.x - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.z = this.projPos.z + this.projSize.z / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   this.position.x = this.projPos.x - this.projSize.x / 2 + this.size.x / 2 + Math.random() * (this.projSize.x - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //   this.rotation.y = 180 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,25 +208,28 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (face < 0.5) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // gauche 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.face = 'left' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.position.x = this.prtPosition.x - this.prtSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // this.position.z = this.prtPosition.z - this.prtSize.z / 2 + this.size.x / 2 + Math.random() * (this.prtSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.position.x = this.projPos.x - this.projSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.position.z = this.projPos.z - this.projSize.z / 2 + this.size.x / 2 + Math.random() * (this.projSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.rotation.y = 90 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // droite 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.face = 'right' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.position.x = this.prtPosition.x + this.prtSize.x / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // this.position.z = this.prtPosition.z - this.prtSize.z / 2 + this.size.x / 2 + Math.random() * (this.prtSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.position.x = this.projPos.x + this.projSize.x / 2 - 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.position.z = this.projPos.z - this.projSize.z / 2 + this.size.x / 2 + Math.random() * (this.projSize.z - this.size.x / 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.rotation.y = -90 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // With GRID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // this.face = 'left' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // this.position.x = this.prtPosition.x - this.prtSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // this.position.x = this.projPos.x - this.projSize.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // this.rotation.y = 90 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let pos = this.getGridPos(this.prtIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // First shift grid place (will transfer it from free places to occupied places) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.shiftGrid({ type: this.type, id: this.id }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Then get the right place for the current content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let pos = this.gridContentPlaced[this.type][this.id] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     console.log('pos', pos) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.position.z = this.prtPosition.z - this.prtSize.z / 2 + pos.z 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.position.y = this.prtPosition.y - this.prtSize.y / 2 + pos.y 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.position.z = this.projPos.z - this.projSize.z / 2 + pos.z 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.position.y = this.projPos.y - this.projSize.y / 2 + pos.y 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // this.label_position.x = this.position.x - this.size.x / 2 + this.label_size.x / 2 + 0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // this.label_position.y = this.position.y + this.size.y / 2 - this.label_size.y / 2 - 0.1 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -293,6 +294,11 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         vnode: this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ...mapInstanceMutations(getModuleName, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      shiftGrid: 'shiftGrid' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 |