{"version":3,"sources":["api.ts","App.tsx","reportWebVitals.js","index.js"],"names":["Building3DApi","permanentBuildingId","fetch","then","resp","json","catch","err","console","log","App","props","mount","scene","camera","ref","model","tArray","Vertices","maxX","Math","max","filter","value","index","Arr","minX","min","shift","maxY","minY","maxZ","minZ","i","length","vertices","j","Indices","x","y","z","x2","y2","z2","x3","y3","z3","push","geometry","THREE","setAttribute","this","position","material","color","flatShading","transparent","opacity","shininess","mesh","add","GetBuildingModel","window","location","search","substr","r","undefined","visualizeModel","background","innerWidth","innerHeight","up","set","renderer","antialias","setSize","controls","OrbitControls","domElement","target","update","enablePan","enableDamping","appendChild","light","cam","animate","requestAnimationFrame","render","Component","rootElement","document","getElementById","ReactDOM","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","StrictMode"],"mappings":"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","file":"static/js/main.b57816e7.chunk.js","sourcesContent":["import { Building3D } from \"./building3D\";\r\n\r\nexport class Building3DApi{\r\n public GetBuildingModel(permanentBuildingId: string): Promise {\r\n return fetch( `https://building3dmodel.azurewebsites.net/api/Building3DModel?PermanentBuildingId=${permanentBuildingId}`)\r\n .then(resp => resp.json())\r\n .catch(err => console.log(`No Building 3D model found with PermanentBuildingID ${permanentBuildingId}: ${err}`))\r\n }\r\n\r\n \r\n}","import { Component } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport './App.css';\r\nimport * as THREE from \"three\";\r\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls\";\r\nimport { Building3DApi } from './api';\r\nimport { Building3D } from './building3D';\r\n\r\nexport default class App extends Component {\r\n constructor(props : any) {\r\n super(props);\r\n }\r\n\r\n private mount : any = {};\r\n private scene: THREE.Scene = {} as THREE.Scene;\r\n private camera: THREE.PerspectiveCamera | null = null;\r\n\r\n render() {\r\n return (\r\n
(this.mount = ref)} />\r\n )\r\n \r\n };\r\n\r\n visualizeModel(model: Building3D) {\r\n \r\n \r\n // Find the min & max coordinates and transform the object to the scene origin\r\n var tArray = [...model.Vertices];\r\n var maxX = Math.max(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n var minX = Math.min(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n tArray.shift();\r\n var maxY = Math.max(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n var minY = Math.min(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n tArray.shift();\r\n var maxZ = Math.max(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n var minZ = Math.min(...tArray.filter(function(value, index, Arr) { return index % 3 === 0; }));\r\n \r\n for(var i = 0; i \r\n {\r\n if (r !== undefined && r.Indices !== undefined && r.Vertices !== undefined) {\r\n this.visualizeModel(r);\r\n }\r\n });\r\n \r\n this.scene = new THREE.Scene();\r\n this.scene.background = new THREE.Color( 0xffffff );\r\n this.camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );\r\n this.camera.up.set(0, 0, 1);\r\n var renderer = new THREE.WebGLRenderer( { antialias: true } );\r\n renderer.setSize( window.innerWidth, window.innerHeight );\r\n var controls = new OrbitControls(this.camera, renderer.domElement);\r\n controls.target.set( 0, 0.0, 0 );\r\n\t\t\tcontrols.update();\r\n\t\t\tcontrols.enablePan = false;\r\n\t\t\tcontrols.enableDamping = false;\r\n \r\n this.mount.appendChild( renderer.domElement );\r\n \r\n \r\n\r\n this.scene.add( new THREE.AmbientLight( 0x555555 ) );\r\n\r\n const light = new THREE.SpotLight( 0xffffff, 1.5 );\r\n light.position.set( 5, 50, 50 );\r\n this.scene.add( light );\r\n\r\n this.scene.add( this.camera );\r\n\r\n controls.update();\r\n \r\n var cam = this.camera;\r\n var scene = this.scene;\r\n var animate = function () {\r\n requestAnimationFrame(animate);\r\n controls.update();\r\n renderer.render( scene, cam );\r\n \r\n };\r\n animate();\r\n }\r\n}\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nReactDOM.render(, rootElement);","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}