{"version":3,"sources":["model.js","App.js","reportWebVitals.js","index.js"],"names":["positionSet","2","position","rotation","Math","PI","scale","3","4","5","6","7","Model","products","setFocus","focusProduct","focusUrl","setFocusProduct","updateAnnotationPos","bloomLightRef1","bloomLightRef2","bloomLightRef3","onLoad","props","gl","useThree","group","useRef","nodes","useGLTF","envMap","useCubeTexture","path","meshRef1","meshRef2","meshRef3","meshRef4","meshRef5","meshRef6","meshRef7","hoverTimeoutRef","billboardTextures","useTexture","map","p","image","m1","MeshPhysicalMaterial","color","roughness","metalness","reflectivity","m2","glass","redNeon","emissive","blueNeon","useFrame","camera","length","x","y","z","Vector3","project","useEffect","lastTap","ref","dispose","castShadow","receiveShadow","geometry","floor","material","Cylinder002","Cylinder002_1","i","billboardMaterial","MeshBasicMaterial","side","DoubleSide","minFilter","LinearFilter","maxFilter","anisotropy","capabilities","getMaxAnisotropy","key","join","BezierCurve011","BezierCurve011_1","onPointerEnter","document","body","style","cursor","current","window","clearTimeout","setTimeout","onPointerLeave","onPointerDown","e","clientX","clientY","onPointerUp","thisTap","dist","sqrt","pow","abs","isNaN","location","href","frame002","frame","frame001","Text","Text001","ieVersion","version","lights","selection","intensity","width","Resizer","AUTO_SIZE","height","kernelSize","KernelSize","LARGE","luminanceThreshold","luminanceSmoothing","offset","darkness","preload","CameraComp","focus","isLoaded","defaultPos","getElementById","offsetWidth","defaultRot","useState","cameraPos","setCameraPos","cameraRot","setCameraRot","_c","Object3D","rx","ry","rz","set","translateZ","x1","y1","z1","rx1","ry1","rz1","clock","scene","_x","_y","_z","__x","__y","__z","w","h","offsetHeight","setViewOffset","_rx","_ry","_rz","__rx","__ry","__rz","App","setProducts","setIsLoaded","text","setText","nav","setNav","showLabels","setShowLabels","annotationPos","jsonPath","JSONPATH","get","then","result","data","sort","a","b","random","navigation","catch","err","console","log","className","resize","polyfill","ResizeObserver","shadows","type","PCFSoftShadowMap","toneMapping","ReinhardToneMapping","alpha","pixelRatio","innerWidth","linear","onPointerMissed","shadow-bias","penumbra","fallback","indexOf","target","pos","LoadingIndicator","Annotations","show","heading","blurb","Dropdown","onClick","src","alt","thisRef","mouseOutRef","expanded","setExpanded","addEventListener","contains","find","n","active","title","onMouseMove","onMouseOut","c","children","id","requestAnimationFrame","animate","Array","from","forEach","div","px","py","top","left","transform","cancelAnimationFrame","label","xmlns","viewBox","preserveAspectRatio","cx","cy","r","stroke-width","stroke","stroke-dasharray","fill","stroke-linecap","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.9b093e90.chunk.js","sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { useGLTF, useCubeTexture, useTexture } from \"@react-three/drei\";\nimport {\n MeshPhysicalMaterial,\n DoubleSide,\n MeshBasicMaterial,\n Vector3,\n LinearFilter,\n} from \"three\";\nimport { useFrame, useThree } from \"@react-three/fiber\";\n\nimport {\n EffectComposer,\n Vignette,\n SelectiveBloom,\n SMAA,\n} from \"@react-three/postprocessing\";\nimport { Resizer, KernelSize } from \"postprocessing\";\nimport ieVersion from \"ie-version\";\n\nconst positionSet = {\n 2: [\n {\n position: [-4.111, -0.491, 2],\n rotation: [0, (-80 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [4.3683, -0.7, 2],\n rotation: [0, (-105 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n ],\n 3: [\n {\n position: [-9.75, 0, 2.94],\n rotation: [0, (-99 * Math.PI) / 180, 0],\n scale: [1, 1, 1],\n },\n {\n position: [0, -0.15, -0.06],\n rotation: [0, -Math.PI / 2, 0],\n scale: [1, 1, 1],\n },\n\n {\n position: [10.85, -0.2, 0.79],\n rotation: [0, -1.33, 0],\n scale: [1, 1, 1],\n },\n ],\n 4: [\n {\n position: [-9.75, 0, 2.94],\n rotation: [0, (-99 * Math.PI) / 180, 0],\n scale: [0.9, 0.9, 0.9],\n },\n {\n position: [-6.111, -0.491, -0.3],\n rotation: [0, (-80 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [6.3683, 2.7, 0.5275],\n rotation: [0, (-105 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [10.85, -0.2, 0.79],\n rotation: [0, -1.33, 0],\n scale: [0.9, 0.9, 0.9],\n },\n ],\n\n 5: [\n {\n position: [-9.75, 0, 2.94],\n rotation: [0, (-99 * Math.PI) / 180, 0],\n scale: [0.9, 0.9, 0.9],\n },\n {\n position: [-6.111, -0.491, -0.3],\n rotation: [0, (-80 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [0, 0.1981, 0.06],\n rotation: [0, (-90 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [6.3683, 2.7, 0.5275],\n rotation: [0, (-105 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [10.85, -0.2, 0.79],\n rotation: [0, -1.33, 0],\n scale: [0.9, 0.9, 0.9],\n },\n ],\n 6: [\n {\n position: [-9.75, 0, 2.94],\n rotation: [0, (-99 * Math.PI) / 180, 0],\n scale: [0.9, 0.9, 0.9],\n },\n {\n position: [-6.111, -0.491, -0.3],\n rotation: [0, (-80 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [-2.3486, 6.431, -4.1847],\n rotation: [0, (-60 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [0, 0.1981, 0.06],\n rotation: [0, (-90 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [6.3683, 2.7, 0.5275],\n rotation: [0, (-105 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [10.85, -0.2, 0.79],\n rotation: [0, -1.33, 0],\n scale: [0.9, 0.9, 0.9],\n },\n ],\n 7: [\n {\n position: [-9.75, 0, 2.94],\n rotation: [0, (-99 * Math.PI) / 180, 0],\n scale: [0.9, 0.9, 0.9],\n },\n {\n position: [-6.111, -0.491, -0.3],\n rotation: [0, (-80 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [-2.3486, 6.431, -4.1847],\n rotation: [0, (-60 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [0, 0.1981, 0.06],\n rotation: [0, (-90 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n {\n position: [4.0354, -1.885, 2.39],\n rotation: [0, (-124 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [6.3683, 2.7, 0.5275],\n rotation: [0, (-105 / 180) * Math.PI, 0],\n scale: [0.9, 0.9, 0.9],\n },\n\n {\n position: [10.85, -0.5, 0.79],\n rotation: [0, -1.33, 0],\n scale: [0.9, 0.9, 0.9],\n },\n ],\n};\n\nexport default function Model({\n products,\n setFocus,\n focusProduct,\n focusUrl,\n setFocusProduct,\n updateAnnotationPos,\n bloomLightRef1,\n bloomLightRef2,\n bloomLightRef3,\n onLoad,\n ...props\n}) {\n const { gl } = useThree();\n const group = useRef();\n const { nodes } = useGLTF(\"./3dshowcase/gltf/uob_billboard.glb\");\n const envMap = useCubeTexture(\n [\"px.png\", \"nx.png\", \"py.png\", \"ny.png\", \"pz.png\", \"nz.png\"],\n { path: \"./3dshowcase/cubemap/\" }\n );\n const meshRef1 = useRef();\n const meshRef2 = useRef();\n const meshRef3 = useRef();\n const meshRef4 = useRef();\n const meshRef5 = useRef();\n const meshRef6 = useRef();\n const meshRef7 = useRef();\n const hoverTimeoutRef = useRef();\n\n const billboardTextures = useTexture(products.map((p) => p.image));\n\n const m1 = new MeshPhysicalMaterial({\n color: \"#030320\",\n roughness: 0.9,\n metalness: 0.55,\n reflectivity: 1,\n });\n\n const m2 = new MeshPhysicalMaterial({\n color: \"#002\",\n roughness: 0.9,\n metalness: 0.8,\n reflectivity: 0.5,\n envMap: envMap,\n });\n\n const glass = new MeshPhysicalMaterial({\n color: \"#000\",\n reflectivity: 1,\n roughness: 0,\n envMap: envMap,\n });\n\n const redNeon = new MeshPhysicalMaterial({\n color: \"#ff0404\",\n emissive: 1,\n reflectivity: 0,\n roughness: 0,\n });\n const blueNeon = new MeshPhysicalMaterial({\n color: \"#07f\",\n emissive: 1,\n reflectivity: 0,\n roughness: 1,\n });\n\n useFrame(({ camera }) => {\n updateAnnotationPos(\n positionSet[products.length].map((p) => {\n const [x, y, z] = p.position;\n const _p = new Vector3(x, y, z).project(camera);\n return _p;\n })\n );\n });\n\n useEffect(() => {\n onLoad();\n }, []);\n\n let lastTap = useRef([0, 0]);\n\n return (\n <>\n \n \n \n \n \n \n\n {positionSet[products.length].map((p, i) => {\n const billboardMaterial = new MeshBasicMaterial({\n reflectivity: 0,\n map: billboardTextures[i],\n side: DoubleSide,\n });\n billboardMaterial.map.minFilter = LinearFilter;\n billboardMaterial.map.maxFilter = LinearFilter;\n billboardMaterial.map.anisotropy = gl.capabilities.getMaxAnisotropy();\n\n return (\n \n \n {\n document.body.style.cursor = \"pointer\";\n if (hoverTimeoutRef.current) {\n window.clearTimeout(hoverTimeoutRef.current);\n }\n hoverTimeoutRef.current = window.setTimeout(() => {\n setFocus(p);\n setFocusProduct(products[i]);\n }, 1000);\n }}\n onPointerLeave={() => {\n document.body.style.cursor = \"auto\";\n }}\n onPointerDown={(e) => {\n lastTap.current = {\n x: e.clientX,\n y: e.clientY,\n };\n }}\n onPointerUp={(e) => {\n const thisTap = {\n x: e.clientX,\n y: e.clientY,\n };\n\n const dist = Math.sqrt(\n Math.pow(Math.abs(lastTap.current.x - thisTap.x), 2) +\n Math.pow(Math.abs(lastTap.current.y - thisTap.y), 2)\n );\n\n lastTap.current = { ...thisTap };\n\n if (isNaN(dist) || dist > 10) {\n return false;\n } else {\n if (focusProduct === i) {\n window.location.href = focusUrl;\n } else {\n setFocus(p);\n setFocusProduct(products[i]);\n }\n }\n }}\n />\n \n );\n })}\n\n \n \n \n \n \n \n {!ieVersion.version && (\n \n \n \n\n \n \n )}\n \n );\n}\n\nuseGLTF.preload(\"./3dshowcase/gltf/uob_billboard.glb\");\n","import React, { useState, useEffect, useRef, Suspense } from \"react\";\nimport { Canvas, useFrame } from \"@react-three/fiber\";\nimport { PCFSoftShadowMap, ReinhardToneMapping, Object3D } from \"three\";\nimport { ResizeObserver } from \"@juggle/resize-observer\";\n\nimport { get } from \"axios\";\nimport City from \"./model\";\nimport \"./App.css\";\n\nfunction CameraComp({ focus, isLoaded }) {\n let w = document.getElementById(\"react-root\").offsetWidth;\n\n let defaultPos = w > 768 ? [0, -0.5, 12.5] : [0, -1, 23];\n let defaultRot = [0, 0, 0];\n let [cameraPos, setCameraPos] = useState(defaultPos);\n let [cameraRot, setCameraRot] = useState(defaultRot);\n const _c = useRef(new Object3D());\n\n useEffect(() => {\n if (!focus) {\n setCameraPos(defaultPos);\n setCameraRot(defaultRot);\n } else {\n const [x, y, z] = focus.position;\n const [rx, ry, rz] = focus.rotation;\n\n _c.current.position.set(x, y, z);\n _c.current.rotation.x = rx;\n _c.current.rotation.y = ry + Math.PI / 2;\n _c.current.rotation.z = rz;\n _c.current.translateZ(7.5);\n\n const { x: x1, y: y1, z: z1 } = _c.current.position;\n setCameraPos([x1, y1, z1]);\n const { x: rx1, y: ry1, z: rz1 } = _c.current.rotation;\n setCameraRot([rx1, ry1, rz1]);\n }\n }, [focus]);\n\n useFrame(({ gl, scene, camera }, clock) => {\n if (!isLoaded) {\n return;\n }\n const [_x, _y, _z] = cameraPos;\n const { x, y, z } = camera.position;\n const __x = x + (_x - x) / 15;\n const __y = y + (_y - y) / 15;\n const __z = z + (_z - z) / 15;\n camera.position.set(__x, __y, __z);\n\n const w = document.getElementById(\"react-root\").offsetWidth;\n const h = document.getElementById(\"react-root\").offsetHeight;\n\n camera.setViewOffset(w, h, 0, -h * 0.35, w, h);\n\n const [_rx, _ry, _rz] = cameraRot;\n const { x: rx, y: ry, z: rz } = camera.rotation;\n\n const __rx = rx + (_rx - rx) / 25;\n const __ry = ry + (_ry - ry) / 25;\n const __rz = rz + (_rz - rz) / 25;\n\n camera.rotation.x = __rx;\n camera.rotation.y = __ry;\n camera.rotation.z = __rz;\n });\n return <>;\n}\n\nfunction App() {\n const [products, setProducts] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [text, setText] = useState({});\n const [nav, setNav] = useState([]);\n const [focus, setFocus] = useState(null);\n const [focusProduct, setFocusProduct] = useState(null);\n const [showLabels, setShowLabels] = useState(false);\n const annotationPos = useRef([]);\n\n function updateAnnotationPos(pos) {\n annotationPos.current = pos;\n }\n\n useEffect(() => {\n if (document.getElementById(\"react-root-container\").offsetWidth > 1600) {\n document.getElementById(\"react-root-container\").style.height = \"678px\";\n }\n let jsonPath;\n jsonPath = window.JSONPATH || \"/home.json\";\n get(jsonPath)\n .then((result) => {\n setProducts(\n result.data.products.sort((a, b) => (Math.random() > 0.5 ? -1 : 1))\n );\n setNav(result.data.navigation);\n setText(result.data.text);\n })\n .catch((err) => console.log({ err }));\n }, []);\n\n let bloomLightRef1 = useRef();\n let bloomLightRef2 = useRef();\n let bloomLightRef3 = useRef();\n\n return (\n <>\n
\n {\n setFocus(null);\n setFocusProduct(null);\n }}\n >\n \n\n \n \n \n \n \n \n\n {products.length > 0 && (\n \n {\n setShowLabels(true);\n setIsLoaded(true);\n }}\n />\n \n )}\n \n
\n\n {!isLoaded && }\n {products.length > 0 && (\n \n )}\n
\n

{text.heading}

\n

{text.blurb}

\n \n {\n setFocus(null);\n setFocusProduct(null);\n }}\n >\n \n \n
\n \n );\n}\n\nexport default App;\n\nfunction Dropdown({ nav }) {\n const thisRef = useRef();\n const mouseOutRef = useRef();\n const [expanded, setExpanded] = useState(false);\n\n useEffect(() => {\n document.addEventListener(\"click\", (e) => {\n if (thisRef.current && !thisRef.current.contains(e.target)) {\n setExpanded(false);\n }\n });\n }, []);\n\n if (nav.length === 0) {\n return <>;\n }\n\n return (\n
\n {\n setExpanded(true);\n }}\n >\n {nav.find((n) => n.active).title}\n \n {\n if (mouseOutRef.current) {\n window.clearTimeout(mouseOutRef.current);\n }\n }}\n onMouseOut={() => {\n if (mouseOutRef.current) {\n window.clearTimeout(mouseOutRef.current);\n }\n mouseOutRef.current = window.setTimeout(() => {\n setExpanded(false);\n }, 300);\n }}\n >\n {nav.map((n) => (\n
  • \n \n {n.title}\n \n
  • \n ))}\n \n
    \n );\n}\n\nfunction Annotations({ pos, products, focusProduct, show }) {\n const ref = useRef();\n useEffect(() => {\n if (!ref.current || products.length < 1) {\n return;\n }\n let c = ref.current.children;\n function animate() {\n const h = document.getElementById(\"react-root\").offsetHeight;\n if (pos.current.length > 0) {\n Array.from(c).forEach((div, i) => {\n let px = (pos.current[i].x / 2 + 0.5) * 100;\n let py = (pos.current[i].y / 2 + 0.5) * -100;\n div.style.top = `${py + 10}%`;\n div.style.left = `${px}%`;\n div.style.transform = `translate3d(${-50 + pos.current[i].x * 80}%,${\n h * 0.86\n }px,0)`;\n });\n }\n window.requestAnimationFrame(animate);\n }\n let id = window.requestAnimationFrame(animate);\n return () => {\n window.cancelAnimationFrame(id);\n };\n }, [products]);\n\n return (\n \n {products.map((p) => (\n \n \n {p.label}\n \n \n ))}\n \n );\n}\n\nfunction LoadingIndicator() {\n return (\n
    \n \n \n \n
    \n );\n}\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"react-root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}