{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/qrcode.png","webpack:///./src/components/Content/Content.vue?47a1","webpack:///./src/assets/home-3.png","webpack:///./src/World/components/camera.js","webpack:///./src/World/components/objects/sphere.js","webpack:///./src/World/components/scene.js","webpack:///./src/World/components/objects/point.js","webpack:///./src/World/systems/controls.js","webpack:///./src/World/systems/renderer.js","webpack:///./src/World/systems/Resizer.js","webpack:///./src/World/systems/Loop.js","webpack:///./src/World/config.js","webpack:///./src/World/components/objects/Particles.js","webpack:///./src/World/World.js","webpack:///./src/components/Webgl.vue","webpack:///./src/components/Webgl.vue?8992","webpack:///./src/components/Splashscreen.vue","webpack:///./src/components/Splashscreen.vue?7e0b","webpack:///./src/components/Partials/ButtonIcon.vue","webpack:///./src/components/Content/Iframe.vue","webpack:///./src/components/Content/Iframe.vue?a76a","webpack:///./src/components/Content/Nav.vue","webpack:///./src/components/Content/Nav.vue?9b7e","webpack:///./src/components/Content/Preview.vue","webpack:///./src/components/Content/Preview.vue?c07b","webpack:///./src/components/Content/Content.vue","webpack:///./src/components/Content/Content.vue?9408","webpack:///./src/components/Partials/Tutorial.vue","webpack:///./src/components/Partials/Tutorial.vue?f1df","webpack:///./src/utils/IdleTimer.js","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/main.js","webpack:///./src/components/Content/Nav.vue?c0ca","webpack:///./src/components/Partials/Tutorial.vue?0f8b","webpack:///./src/assets/home-1.png","webpack:///./src/assets/home-4.png","webpack:///./src/components/Partials/ButtonIcon.vue?ff5d","webpack:///./src/assets/home-2.png","webpack:///./src/components/Content/Iframe.vue?8463","webpack:///./src/assets/home-7.png","webpack:///./src/components/Webgl.vue?91e2","webpack:///./src/components/Splashscreen.vue?6294","webpack:///./src/assets/home-6.png","webpack:///./src/App.vue?0771","webpack:///./src/assets/home-5.png","webpack:///./src/components/Content/Preview.vue?939c"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","createCamera","camera","PerspectiveCamera","position","set","lookAt","tick","delta","createSphere","radius","widthSegments","heightSegments","geometry","SphereGeometry","textureLoader","TextureLoader","texture","load","material","MeshBasicMaterial","map","side","DoubleSide","wrapS","RepeatWrapping","wrapT","sphere","Mesh","createScene","color","scene","Scene","createPoint","image","scale","title","point","Vector3","x","y","z","spriteMaterial","SpriteMaterial","transparent","sprite","Sprite","copy","clone","normalize","multiplyScalar","amplitude","frequency","time","delay","Math","random","sin","createControls","canvas","controls","OrbitControls","enabled","maxPolarAngle","PI","minPolarAngle","enableDamping","enableZoom","enablePan","update","createRenderer","renderer","WebGLRenderer","antialias","alpha","physicallyCorrectLights","setSize","container","aspect","innerWidth","innerHeight","updateProjectionMatrix","setPixelRatio","devicePixelRatio","Resizer","constructor","addEventListener","this","onResize","clock","Clock","Loop","updatables","start","setAnimationLoop","render","stop","getDelta","config","points","mainScene","loop","animateParticles","stats","createParticles","count","spritesMatrix","createParticle","add","resetParticle","target","remove","particle","floor","alphaTest","depthWrite","sizeAttenuation","blending","AdditiveBlending","opacity","debug","particlesMatrix","lastTime","World","EventDispatcher","_process$env","super","append","domElement","forEach","content","particleNumber","process","VUE_APP_DEBUG","Stats","showPanel","dom","id","document","body","appendChild","rayCaster","Raycaster","onClick","e","mouse","Vector2","clientX","clientY","setFromCamera","intersects","intersectObject","filter","type","eventDispached","sprites","children","spritesMaterial","cameraPosition","lookatPosition","spriteDirection","subVectors","offset","crossVectors","spritePosition","addVectors","tl","gsap","timeline","to","duration","ease","onUpdate","targetScale","currentScale","step","progress","dispatchEvent","detail","initialPosition","v","onComplete","console","log","onStart","resizer","speed","resetDistance","current","distanceTo","direction","begin","Date","now","end","requestAnimationFrame","sceneContainer","ref","world","onMounted","event","emits","onBeforeUnmount","removeEventListener","__exports__","stepInterval","setTimeout","stopInterval","documentElement","requestFullscreen","_paq","startInterval","setInterval","clearInterval","maxWidth","width","closeInscription","querySelector","close","props","dataSprite","inscriptions","flag","find","item","evt","CustomEvent","isTutorialOpen","IdleTimer","timeout","onTimeout","onExpired","expiredTime","parseInt","localStorage","getItem","eventHandler","updateExpiredTime","tracker","interval","cleanUp","timeoutTracker","clearTimeout","setItem","removeItem","experienceStarted","contentId","splashscreen","openModal","iddleTimer","clear","once","watch","closeContent","app","createApp","App","use","VueMatomo","host","siteId","mount"],"mappings":"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","file":"js/app.3786d444.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/qrcode.c0297319.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Content.vue?vue&type=style&index=0&id=1a9adfc2&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/home-3.ec9f0088.png\";","import { PerspectiveCamera } from 'three';\n\nfunction createCamera() {\n const camera = new PerspectiveCamera(\n 48, // fov = Field Of View\n 1, // aspect ratio (dummy value)\n 1, // near clipping plane\n 100, // far clipping plane\n );\n\n // move the camera back so we can view the scene\n camera.position.set(0, 0, 10);\n camera.lookAt(0, 0, 0);\n camera.tick = (delta) => {\n\n };\n\n return camera;\n}\n\nexport { createCamera };\n","// threejs shpere\n// https://threejs.org/docs/#api/en/geometries/SphereGeometry\n\nimport {Mesh, SphereGeometry, MeshBasicMaterial, TextureLoader, RepeatWrapping, DoubleSide} from 'three';\n\nconst createSphere = (\n radius,\n widthSegments,\n heightSegments\n) => {\n\n const geometry = new SphereGeometry(radius, widthSegments, heightSegments)\n\n const textureLoader = new TextureLoader()\n const texture = textureLoader.load('/assets/images/background-sphere.png')\n // transparent material for the sphere\n const material = new MeshBasicMaterial({\n map: texture,\n side: DoubleSide,\n //transparent: true,\n //opacity: 0,\n })\n// reduce the size of the texture\n texture.wrapS = RepeatWrapping\n texture.wrapT = RepeatWrapping\n\n // reduce the size of the texture\n\n\n const sphere = new Mesh(geometry, material)\n\n\n sphere.tick = (delta) => {\n }\n\n return sphere\n\n}\n\nexport { createSphere };\n","import { Color, Scene } from 'three';\n\nfunction createScene(color) {\n\n const scene = new Scene();\n\n return scene;\n}\n\nexport { createScene };\n","import {Sprite, SpriteMaterial, Vector3} from 'three';\n\nconst createPoint = ( position, image, name, scale, title ) => {\n\n let point = new Vector3(position.x, position.y, position.z)\n let spriteMaterial = new SpriteMaterial({\n transparent: true,\n color: 0xffffff,\n\n })\n\n\n let sprite = new Sprite(spriteMaterial)\n sprite.name = name\n sprite.title = title\n //sprite.position.copy(point.clone().normalize().multiplyScalar(30))\n sprite.position.copy(point.clone().normalize().multiplyScalar(30))\n\n // scale\n sprite.scale.set(scale, scale, 1)\n\n\n var amplitude = 0.003;\n var frequency = 1.5;\n var time = 0;\n let delay = Math.random() * 20\n\n // tick\n sprite.tick = (delta) => {\n time += delta;\n sprite.position.y += Math.sin(time * frequency + delay) * amplitude\n }\n\n return sprite\n}\n\nexport { createPoint };\n","import { OrbitControls } from \"three/examples/jsm/controls/OrbitControls.js\";\n\nfunction createControls(camera, canvas) {\n const controls = new OrbitControls(camera, canvas);\n\n controls.enabled = true;\n\n\n // allow 20deg up and down\ncontrols.maxPolarAngle = Math.PI / 1.69;\ncontrols.minPolarAngle = Math.PI / 2.4;\n\n\n\n\n //smooth camera:\n // remember to add to loop updatables to work\n controls.enableDamping = true;\n controls.enableZoom = false;\n controls.enablePan = false;\n\n controls.tick = () => controls.update();\n\n return controls;\n}\n\nexport { createControls };\n","import { WebGLRenderer } from 'three';\n\nfunction createRenderer() {\n const renderer = new WebGLRenderer({ antialias: true, alpha: true });\n\n renderer.physicallyCorrectLights = true\n\n\n return renderer;\n}\n\nexport { createRenderer };\n","const setSize = (container, camera, renderer) => {\n camera.aspect = window.innerWidth / window.innerHeight;\n camera.updateProjectionMatrix();\n\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.setPixelRatio(window.devicePixelRatio);\n};\n\nclass Resizer {\n constructor(container, camera, renderer) {\n // set initial size on load\n setSize(container, camera, renderer);\n\n window.addEventListener('resize', () => {\n // set the size again if a resize occurs\n setSize(container, camera, renderer);\n // perform any custom actions\n this.onResize();\n });\n }\n\n onResize() {}\n}\n\nexport { Resizer };","import { Clock } from 'three';\n\nconst clock = new Clock();\n\n\nclass Loop {\n constructor(camera, scene, renderer) {\n this.camera = camera;\n this.scene = scene;\n this.renderer = renderer;\n this.updatables = [];\n }\n\n start() {\n this.renderer.setAnimationLoop(() => {\n this.tick();\n // render a frame\n this.renderer.render(this.scene, this.camera);\n });\n }\n\n stop() {\n this.renderer.setAnimationLoop(null);\n }\n\n tick() {\n const delta = clock.getDelta();\n for (const object of this.updatables) {\n object.tick(delta);\n }\n }\n}\n\nexport { Loop }\n","import data from './data.json';\n\nconst config = {\n sphere:{\n radius: 50,\n widthSegments: 32,\n heightSegments: 32,\n image: 'https://threejsfundamentals.org/threejs/resources/images/equirectangularmaps/tears_of_steel_bridge_2k.jpg',\n name: \"sprite 1\"\n },\n points: data\n}\n\nexport { config };\n","import {AdditiveBlending, TextureLoader, Sprite, Vector3} from \"three\";\n\n\nlet mainScene;\n\nfunction createParticles(count = 100, scene) {\n mainScene = scene;\n\n\n //for each particle, create a sprite with /assets/images/particle.png as texture and a random position\n let spritesMatrix = [];\n\n for (let i = 0; i < count; i++) {\n const sprite = createParticle();\n\n scene.add(sprite);\n spritesMatrix.push(sprite);\n }\n\n return spritesMatrix\n}\n\nfunction resetParticle(target) {\n mainScene.remove(target);\n\n let particle = createParticle();\n mainScene.add(particle);\n return particle;\n}\n\nfunction createParticle() {\n const sprite = new Sprite();\n sprite.position.set(\n (Math.random() - 0.5) * 30,\n (Math.random() - 0.5) * 30,\n (Math.random() - 0.5) * 30\n );\n\n sprite.scale.set(0.5, 0.5, 0.5);\n\n const textureLoader = new TextureLoader()\n // value between 1 and 4 to get a random particle\n const random = Math.floor(Math.random() * 4) + 1;\n sprite.material.map = textureLoader.load(`/assets/images/particle-${random}.png`);\n sprite.material.transparent = true;\n sprite.material.alphaTest = 0.1;\n sprite.material.depthWrite = false;\n sprite.material.sizeAttenuation = true;\n sprite.material.blending = AdditiveBlending;\n //sprite.material.vertexColors = true;\n sprite.material.opacity = 0.4;\n\n\n // add an attribute to the geometry named target with a random position\n sprite.target = new Vector3(\n (Math.random() - 0.5) * 60,\n (Math.random() - 0.5) * 60,\n (Math.random() - 0.5) * 60\n );\n\n return sprite;\n}\n\nexport {createParticles, resetParticle};\n","import {createCamera} from \"./components/camera.js\";\nimport {createSphere} from \"./components/objects/sphere.js\";\nimport {createScene} from \"./components/scene.js\";\nimport {createPoint} from \"./components/objects/point.js\";\nimport {createControls} from \"./systems/controls.js\";\nimport {createRenderer} from \"./systems/renderer.js\";\nimport {Resizer} from \"./systems/Resizer.js\";\nimport {Loop} from \"./systems/Loop.js\";\nimport {config} from \"@/World/config\";\nimport Stats from \"stats.js\";\nimport {EventDispatcher, Raycaster, TextureLoader, Vector2, Vector3} from \"three\";\n\nimport {gsap} from \"gsap\";\nimport {createParticles, resetParticle} from \"@/World/components/objects/Particles\";\n\nlet camera;\nlet renderer;\nlet scene;\nlet loop;\nlet animateParticles;\n\nlet stats;\nlet debug = false;\n\nlet particlesMatrix = [];\nlet lastTime = 0;\n\nclass World extends EventDispatcher {\n constructor(container) {\n super();\n\n // Instances of camera, scene, and renderer\n camera = createCamera();\n scene = createScene(\"hsl(210, 29%, 35%)\");\n renderer = createRenderer();\n\n // Initializate Loop\n loop = new Loop(camera, scene, renderer);\n\n container.append(renderer.domElement);\n\n // Orbit Controls\n const controls = createControls(camera, renderer.domElement);\n\n // Sphere Instance\n let sphere = createSphere(config.sphere.radius, config.sphere.widthSegments, config.sphere.heightSegments, config.sphere.image);\n\n // Generate points\n config.points.forEach(point => {\n let p = createPoint(point.position, point.image, point.name, point.scale, point.content.title);\n\n const textureLoader = new TextureLoader();\n textureLoader.load(point.image, (texture) => {\n\n p.material.map = texture\n\n //const imageWidth = p.material.map.image.width\n //const imageHeight = p.material.map.image.height\n //const imageRatio = imageWidth / imageHeight\n //p.scale.x = point.scale * imageRatio\n\n sphere.add(p);\n loop.updatables.push(p);\n })\n\n\n });\n\n\n // particles\n let particleNumber = 200\n particlesMatrix = createParticles(particleNumber, scene)\n\n debug = process.env?.VUE_APP_DEBUG === \"true\";\n\n // stats\n if (debug && !stats) {\n stats = new Stats();\n stats.showPanel(0);\n stats.dom.id = 'stats';\n document.body.appendChild(stats.dom);\n }\n\n\n // Raycaster for bubble oppening\n const rayCaster = new Raycaster()\n const onClick = (e) => {\n\n let mouse = new Vector2(\n (e.clientX / window.innerWidth) * 2 - 1,\n -(e.clientY / window.innerHeight) * 2 + 1\n )\n\n rayCaster.setFromCamera(mouse, camera)\n\n\n let intersects = rayCaster.intersectObject(sphere)\n\n const sprite = intersects.filter(i => i.object.type === \"Sprite\")[0]\n if (sprite) {\n\n controls.enabled = false\n let eventDispached = false\n const sprites = sphere.children.filter(c => (c.type === \"Sprite\") && (c.name !== sprite.object.name))\n const spritesMaterial = sprites.map(s => s.material)\n\n\n const cameraPosition = camera.position.clone()\n const lookatPosition = controls.target.clone()\n const spriteDirection = new Vector3().subVectors(lookatPosition, cameraPosition).normalize()\n const offset = new Vector3().crossVectors(spriteDirection, new Vector3(0, 1, 0))\n const spritePosition = new Vector3().addVectors(cameraPosition, spriteDirection.multiplyScalar(10))\n spritePosition.add(offset.multiplyScalar(-4.3))\n\n\n const tl = gsap.timeline()\n tl.to(spritesMaterial, {\n opacity: 0,\n duration: .7,\n ease: \"power2.inOut\",\n })\n tl.to(sprite.object.position, {\n x: spritePosition.x,\n y: spritePosition.y,\n z: spritePosition.z,\n duration: 1,\n ease: \"power2.inOut\",\n onUpdate: () => {\n\n const targetScale = 3.6\n const duration = 1\n const currentScale = sprite.object.scale.x\n const step = {\n x: (targetScale - currentScale) / duration,\n y: (targetScale - currentScale) / duration,\n z: (targetScale - currentScale) / duration\n }\n\n sprite.object.scale.x += step.x\n sprite.object.scale.y += step.y\n sprite.object.scale.z += step.z\n\n\n if (tl.progress() > .6 && !eventDispached) {\n this.dispatchEvent({type: 'spriteClick', id: sprite.object})\n eventDispached = true\n }\n\n }\n }, \"-=.7\")\n\n }\n\n }\n container.addEventListener('click', onClick)\n\n window.addEventListener('sprite-closed', (e) => {\n\n\n // find sprite by name\n const sprite = sphere.children.filter(c => (c.type === \"Sprite\") && (c.name === e.detail.id))[0]\n const sprites = sphere.children.filter(c => (c.type === \"Sprite\") && (c.name !== e.detail.id))\n const spritesMaterial = sprites.map(s => s.material)\n\n const initialPosition = config.points.filter(p => p.name === e.detail.id)[0].position\n //const initialScale = config.points.filter(p => p.name === e.detail.id)[0].scale\n\n const v = new Vector3(initialPosition.x, initialPosition.y, initialPosition.z).normalize().multiplyScalar(30)\n\n\n\n const tl = gsap.timeline()\n tl.to(sprite.position, {\n x: v.x,\n y: v.y,\n z: v.z,\n duration: 1,\n ease: \"power2.inOut\",\n onUpdate: () => {\n const duration = 1\n const currentScale = 3.6\n const step = {\n x: (currentScale - sprite.scale.x) / duration,\n y: (currentScale - sprite.scale.y) / duration,\n z: (currentScale - sprite.scale.z) / duration\n }\n sprite.scale.x += step.x\n sprite.scale.y += step.y\n sprite.scale.z += step.z\n },\n onComplete: () => {\n controls.enabled = true\n console.log(sprite.scale)\n\n }\n })\n tl.to(spritesMaterial, {\n opacity: 1,\n duration: .7,\n ease: \"power2.inOut\",\n onStart: () => {\n this.dispatchEvent({type: 'spriteClosed', id: sprite.name})\n },\n onComplete: () => {\n controls.enabled = true\n }\n }, \"-=.7\")\n\n\n })\n\n\n loop.updatables.push(controls);\n loop.updatables.push(sphere);\n loop.updatables.push(camera);\n\n //scene.add( new AxesHelper( 20 ) );\n scene.add(sphere);\n\n\n // Responsive handler\n const resizer = new Resizer(container, camera, renderer);\n resizer.onResize = () => {\n this.render();\n };\n\n\n let speed = 0.005\n let resetDistance = 0.1\n animateParticles = () => {\n\n for (let i = 0; i < particleNumber; i++) {\n let current = particlesMatrix[i];\n let target = current.target;\n\n if (current.position.distanceTo(target) < resetDistance) {\n current = resetParticle(current)\n particlesMatrix[i] = current\n target = current.target;\n }\n\n let direction = new Vector3().subVectors(target, current.position).normalize();\n current.position.add(direction.multiplyScalar(speed));\n }\n }\n\n\n this.render();\n }\n\n render() {\n if (debug) {\n stats.begin();\n }\n renderer.render(scene, camera);\n animateParticles()\n\n if (Date.now() - lastTime > 1000) {\n lastTime = Date.now();\n //console.log(particlesMatrix.length)\n }\n\n if (debug) {\n stats.end();\n }\n\n requestAnimationFrame(() => {\n this.render();\n })\n }\n\n start() {\n loop.start();\n }\n\n stop() {\n loop.stop();\n }\n}\n\nexport {World};\n","\n\n\n\n\n","import script from \"./Webgl.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Webgl.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Webgl.vue?vue&type=style&index=0&id=6d817a0c&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6d817a0c\"]])\n\nexport default __exports__","\n\n\n\n\n","import script from \"./Splashscreen.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Splashscreen.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Splashscreen.vue?vue&type=style&index=0&id=2aa0ad5c&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2aa0ad5c\"]])\n\nexport default __exports__","import script from \"./ButtonIcon.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ButtonIcon.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./ButtonIcon.vue?vue&type=style&index=0&id=2b443172&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2b443172\"]])\n\nexport default __exports__","\n\n\n\n\n","import script from \"./Iframe.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Iframe.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Iframe.vue?vue&type=style&index=0&id=f5a86e16&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f5a86e16\"]])\n\nexport default __exports__","\n\n\n\n\n","import script from \"./Nav.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Nav.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Nav.vue?vue&type=style&index=0&id=533b43fc&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-533b43fc\"]])\n\nexport default __exports__","\n\n\n\n\n","import script from \"./Preview.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Preview.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Preview.vue?vue&type=style&index=0&id=4461318a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/codebuild/output/src3660754159/src/2023-novartis-inseno-galaxy/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4461318a\"]])\n\nexport default __exports__","\n\n