{"version":3,"sources":["webpack://dev-royal-society-summer/./src/vendor/vue-device-detector.ts","webpack://dev-royal-society-summer/./src/App.vue","webpack://dev-royal-society-summer/./src/components/MobileWarning.vue","webpack://dev-royal-society-summer/./src/components/MobileWarning.vue?b5a7","webpack://dev-royal-society-summer/./src/components/MobileWarning.vue?b01a","webpack://dev-royal-society-summer/./src/utils/ga.ts","webpack://dev-royal-society-summer/./src/App.vue?2315","webpack://dev-royal-society-summer/./src/App.vue?d5d2","webpack://dev-royal-society-summer/./src/constants.ts","webpack://dev-royal-society-summer/./src/views/Home/index.vue","webpack://dev-royal-society-summer/./src/components/Loader.vue","webpack://dev-royal-society-summer/./src/components/ProgressRing.vue","webpack://dev-royal-society-summer/./src/components/ProgressRing.vue?81a6","webpack://dev-royal-society-summer/./src/components/ProgressRing.vue?d3f8","webpack://dev-royal-society-summer/./src/components/Loader.vue?c61b","webpack://dev-royal-society-summer/./src/components/Loader.vue?f216","webpack://dev-royal-society-summer/./src/components/Modal/store.ts","webpack://dev-royal-society-summer/./src/views/Home/Home.vue","webpack://dev-royal-society-summer/./src/components/Menu.vue","webpack://dev-royal-society-summer/./src/svgs/introduction.svg","webpack://dev-royal-society-summer/./src/svgs/introduction.svg?d6ba","webpack://dev-royal-society-summer/./src/svgs/upcoming-workshops.svg","webpack://dev-royal-society-summer/./src/svgs/upcoming-workshops.svg?4c6b","webpack://dev-royal-society-summer/./src/components/Button.vue","webpack://dev-royal-society-summer/./src/components/Button.vue?b7cd","webpack://dev-royal-society-summer/./src/components/Button.vue?de27","webpack://dev-royal-society-summer/./src/components/Menu.vue?43ea","webpack://dev-royal-society-summer/./src/components/Menu.vue?2479","webpack://dev-royal-society-summer/./src/components/Navigation/Navigation.vue","webpack://dev-royal-society-summer/./src/svgs/compass.svg","webpack://dev-royal-society-summer/./src/svgs/compass.svg?6604","webpack://dev-royal-society-summer/./src/components/Navigation/Icon.vue","webpack://dev-royal-society-summer/./src/components/Navigation/Icon.vue?3d66","webpack://dev-royal-society-summer/./src/components/Navigation/Icon.vue?09bd","webpack://dev-royal-society-summer/./src/components/Navigation/Navigation.vue?9fab","webpack://dev-royal-society-summer/./src/components/Navigation/Navigation.vue?bdd2","webpack://dev-royal-society-summer/./src/components/Modal/Modal.vue","webpack://dev-royal-society-summer/./src/components/Video.vue","webpack://dev-royal-society-summer/./src/components/Video.vue?037e","webpack://dev-royal-society-summer/./src/components/Video.vue?3703","webpack://dev-royal-society-summer/./src/components/LiveView.vue","webpack://dev-royal-society-summer/./src/svgs/microphone.svg","webpack://dev-royal-society-summer/./src/svgs/microphone.svg?e555","webpack://dev-royal-society-summer/./src/components/LiveView.vue?27dc","webpack://dev-royal-society-summer/./src/components/LiveView.vue?4a3e","webpack://dev-royal-society-summer/./src/components/Modal/Modal.vue?7286","webpack://dev-royal-society-summer/./src/components/Modal/Modal.vue?2c93","webpack://dev-royal-society-summer/./src/components/InfoBox.vue","webpack://dev-royal-society-summer/./src/components/InfoBox.vue?b851","webpack://dev-royal-society-summer/./src/components/InfoBox.vue?f2c6","webpack://dev-royal-society-summer/./src/components/EventFeed.vue","webpack://dev-royal-society-summer/./src/components/EventFeed.vue?430f","webpack://dev-royal-society-summer/./src/components/EventFeed.vue?73f9","webpack://dev-royal-society-summer/./src/components/Hotspots/Hotspots.vue","webpack://dev-royal-society-summer/./src/utils/LottieLoader.ts","webpack://dev-royal-society-summer/./src/components/Hotspots/Hotspot.ts","webpack://dev-royal-society-summer/./src/components/Hotspots/Hotspots.vue?b258","webpack://dev-royal-society-summer/./src/components/Hotspots/Hotspots.vue?acd8","webpack://dev-royal-society-summer/./src/utils/ImageTransition.ts","webpack://dev-royal-society-summer/./src/components/Tiles.ts","webpack://dev-royal-society-summer/./src/vendor/SpriteMixer.js","webpack://dev-royal-society-summer/./src/components/Sprite.ts","webpack://dev-royal-society-summer/./src/components/EntrancePoint.vue","webpack://dev-royal-society-summer/./src/components/EntrancePoint.vue?b99c","webpack://dev-royal-society-summer/./src/components/EntrancePoint.vue?f142","webpack://dev-royal-society-summer/./src/components/ZoneInfo/ZoneInfo.vue","webpack://dev-royal-society-summer/./src/svgs/language_black_24dp.svg","webpack://dev-royal-society-summer/./src/svgs/language_black_24dp.svg?bf23","webpack://dev-royal-society-summer/./src/svgs/close_black_24dp.svg","webpack://dev-royal-society-summer/./src/svgs/close_black_24dp.svg?0b13","webpack://dev-royal-society-summer/./src/components/ZoneInfo/Text.vue","webpack://dev-royal-society-summer/./src/components/ZoneInfo/Text.vue?f0ad","webpack://dev-royal-society-summer/./src/components/ZoneInfo/Text.vue?3a7d","webpack://dev-royal-society-summer/./src/components/ZoneInfo/ZoneInfo.vue?cc46","webpack://dev-royal-society-summer/./src/components/ZoneInfo/ZoneInfo.vue?5743","webpack://dev-royal-society-summer/./src/components/Pointer.vue","webpack://dev-royal-society-summer/./src/svgs/line.svg","webpack://dev-royal-society-summer/./src/svgs/line.svg?033d","webpack://dev-royal-society-summer/./src/components/Pointer.vue?da82","webpack://dev-royal-society-summer/./src/components/Pointer.vue?58a8","webpack://dev-royal-society-summer/./src/components/Back.vue","webpack://dev-royal-society-summer/./src/svgs/back.svg","webpack://dev-royal-society-summer/./src/svgs/back.svg?462d","webpack://dev-royal-society-summer/./src/components/Back.vue?bf3c","webpack://dev-royal-society-summer/./src/components/Back.vue?614e","webpack://dev-royal-society-summer/./src/components/Guide.vue","webpack://dev-royal-society-summer/./src/svgs/guide.svg","webpack://dev-royal-society-summer/./src/svgs/guide.svg?9431","webpack://dev-royal-society-summer/./src/svgs/guide-line1.svg","webpack://dev-royal-society-summer/./src/svgs/guide-line1.svg?2a0f","webpack://dev-royal-society-summer/./src/svgs/guide-line2.svg","webpack://dev-royal-society-summer/./src/svgs/guide-line2.svg?0d13","webpack://dev-royal-society-summer/./src/svgs/guide-line4.svg","webpack://dev-royal-society-summer/./src/svgs/guide-line4.svg?0808","webpack://dev-royal-society-summer/./src/svgs/guide-line5.svg","webpack://dev-royal-society-summer/./src/svgs/guide-line5.svg?d0f3","webpack://dev-royal-society-summer/./src/svgs/guide-line6.svg","webpack://dev-royal-society-summer/./src/svgs/guide-line6.svg?c17a","webpack://dev-royal-society-summer/./src/components/Guide.vue?ed6f","webpack://dev-royal-society-summer/./src/components/Guide.vue?e93b","webpack://dev-royal-society-summer/./src/components/ExtraObject.vue","webpack://dev-royal-society-summer/./src/components/ExtraObject.vue?34e4","webpack://dev-royal-society-summer/./src/components/ExtraObject.vue?4bff","webpack://dev-royal-society-summer/./src/views/Home/Home.vue?edb7","webpack://dev-royal-society-summer/./src/views/Home/Home.vue?50d3","webpack://dev-royal-society-summer/./src/views/Home/index.vue?ad4f","webpack://dev-royal-society-summer/./src/views/Home/index.vue?7583","webpack://dev-royal-society-summer/./src/router/index.ts","webpack://dev-royal-society-summer/./src/store/index.ts","webpack://dev-royal-society-summer/./src/main.ts","webpack://dev-royal-society-summer/webpack/bootstrap","webpack://dev-royal-society-summer/webpack/runtime/chunk loaded","webpack://dev-royal-society-summer/webpack/runtime/compat get default export","webpack://dev-royal-society-summer/webpack/runtime/define property getters","webpack://dev-royal-society-summer/webpack/runtime/global","webpack://dev-royal-society-summer/webpack/runtime/hasOwnProperty shorthand","webpack://dev-royal-society-summer/webpack/runtime/make namespace object","webpack://dev-royal-society-summer/webpack/runtime/jsonp chunk loading","webpack://dev-royal-society-summer/webpack/startup"],"names":["userAgent","window","navigator","toLowerCase","devicePixelRatio","iPadOS13Up","platform","maxTouchPoints","DeviceDetector","find","needle","indexOf","this","windows","ipod","ipad","dingding","wechat","wechatMiniApp","iphone","iphoneX","screen","width","height","iPhoneXR","iPhoneXSMax","ios","android","androidPhone","mobile","instantce","install","app","alias","deviceDetector","config","globalProperties","hasWarning","onWarningClose","Component","enter","leave","class","close","name","props","onClose","Function","methods","localStorage","setItem","$emit","trackRouteUpdate","value","dataLayer","push","event","SS2021URLPath","location","pathname","components","MobileWarning","data","isDismissed","getItem","isPortrait","$device","innerHeight","innerWidth","element","done","gsap","duration","opacity","onComplete","beforeEnter","scaleX","scaleY","watch","$route","to","from","path","computed","render","BASE_URL","error","isTextureReady","default","fallback","ref","radius","stroke","progress","loadProgress","texts","length","currentText","viewBox","stroke-dasharray","circumference","style","strokeDashoffset","stroke-width","fill","r","normalizedRadius","cx","cy","required","type","Number","Math","PI","ProgressRing","setup","loaderRef","textRef","clipRef","circleRef","interval","loader","text","clip","circle","mounted","baseVal","strokeDasharray","setInterval","switchText","unmounted","clearInterval","scenes","forEach","scene","hotspots","map","hotspot","getRandomText","currentProgress","$store","state","rndInt","floor","random","percent","clipPath","scale","delay","dispatch","initState","isVisible","title","subtitle","description","debug","show","newValue","console","log","hide","clear","href","isGuideActive","resize","orbit-ctrl","position","fov","near","far","isEntrance","isTileAnimating","renderer","onEntranceClick","onPointerEnterEntrance","visible","currentScene","sprites","item","key","src","image","tile","rotation","extra","infoBoxActive","isInfoBoxActive","onPointerClick","onPointerOver","onPointerEnter","onPointerLeave","onMenuClick","onBackClick","camera","onZoneClick","onInfoBoxClose","id","infoId","closeOnClickMask","closeOnEsc","isFeedOpened","onMenuClose","active","pointerName","onGuideClick","is-active","index","icon","handleClick","tooltip","tooltipDirection","xml:space","transform","d","script","x1","y1","x2","y2","click","onClick","Object","String","videoIframeId","noHead","SVGIntroduction","SVGEvent","Button","document","body","cursor","data-morph-active","isOpen","toggle","theme","$event","lottie","lottieSize","container","anim","overflow","margin","init","destroy","loadJsonData","loop","autoplay","animationData","then","response","Icon","SVGCompass","controls","isActive","navigationRef","shapeRef","listRef","maskRef","paths","reset","s","Snap","querySelector","select","addEventListener","onMaskClick","attr","getAttribute","getters","stop","animate","mina","easein","elastic","Promise","resolve","setTimeout","_event","tween","ease","className","tabindex","onEsc","mask","onClickMask","customMaskStyles","dialogStyle","closeButton","videoSrc","frameborder","video","playButton","control","isHovered","isPlaying","play","onMouseEnter","onMouseLeave","removeEventListener","onPlayButtonClick","pause","y","onProgress","round","currentTime","live","current","link","target","points","SVGMicrophone","Video","LiveView","measure","Boolean","customStyles","store","created","animationDuration","isShow","$nextTick","$el","focus","w","h","styleDuration","info","youtubeId","styleBackground","materialIcon","styleIcon","iconSrc","alt","information","backgroundColor","color","xmlns","preserveAspectRatio","data-morph-open","openMorphPath","initialMorphPath","hideFeed","events","upcoming","filter","onClickTab","options","article","startDateFormat","endTimeFormat","topRef","contentHeight","clientWidth","allEvents","open","x","inner","morph","morphAnim","dialog","$refs","isClosing","easeinout","e","slug","LottieLoader","quality","url","onLoad","onError","texture","manager","setPath","setWithCredentials","withCredentials","load","JSON","parse","createElement","appendChild","animation","needsUpdate","display","undefined","extends","flatShading","mesh","geometry","material","createGeometry","addGeometryWatchers","dispose","stopAnimation","playAnimation","createLottie","keys","prop","refreshGeometry","setGeometry","oldGeo","transparent","alphaTest","depthTest","precision","renderOrder","initObject3D","set","lookAt","z","Hotspot","hotspotsRef","addIntersects","removeIntersects","children","pointer","$pointer","intersectObjects","o3d","DISP_PATH","fragment","vertex","ImageTransition","currentTexture","time","isRunning","extensions","derivatives","side","uniforms","border","intensity","transition","swipe","texture1","texture2","displacement","resolution","vertexShader","fragmentShader","textures","targetIndex","size","three","cameraCtrl","enabled","nextTexture","ENTRANCE_PATH","entrance","loadTexture","img","count","center","images","unshift","entries","targetProgress","isScaling","image1","image2","planes","imageTransition","domElement","onKeyup","sceneIndex","currentSceneIndex","initScene","keyup","onResize","onBeforeRender","getMesh","add","setMap","nav","res","keyCode","navPrevious","navNext","setTargetProgress","isInteger","ceil","isDone","updateProgress","progress1","pdiff","p0","p1","i","j","setImagesProgress","uStrength","SpriteMixer","actionSprites","listeners","api","update","ActionSprite","Action","eventName","callback","delta","actionSprite","paused","updateAction","currentAction","offsetTexture","offset","getColumn","tilesHoriz","tilesVert","getRow","action","milliSec","currentDisplayTime","callFinishedListeners","listener","tileDisplayDuration","currentTile","indexEnd","indexStart","mustLoop","clampWhenFinished","hideWhenFinished","playOnce","resume","playLoop","pauseNextEnd","setFrame","frameID","wrapS","wrapT","THREE","repeat","isIndexedSprite","tiles","loadTextures","sprite","spriteMixer","clock","action1","setAnimationLoop","getDelta","handlePointOver","onDoorClick","onPointOver","doorsRef","doors","onButtonClick","isScenesVisible","tag","css","itemIndex","smallSrc","data-index","onSceneClick","isAnimationDone","letters","letter","split","cachedText","querySelectorAll","reverse","stagger","splitedList","el","dataset","total","SVGGlobe","SVGClose","Text","nameCached","SVGLine","data-name","SVGBack","$baseUrl","SVGGuide","SVGLine1","SVGLine2","SVGLine4","SVGLine5","SVGLine6","widthSegments","heightSegments","meshRef","yoyo","Menu","Navigation","Hotspots","Modal","EventFeed","Tiles","Sprite","InfoBox","ZoneInfo","Pointer","BackButton","Back","Guide","EntrancePoint","ExtraObject","route","canvasRef","tilesRef","rendererRef","spritesRef","entranceRef","threeRef","controlsRef","pointerRef","params","questionSlug","findIndex","isEntranceDefault","navigation","canvas","isMouseDown","isTouchMoving","moveCache","xMove","onTouchDown","onTouchMove","onTouchEnd","onMouseDown","onMouseUp","userData","over","mouse","targetTouches","pageX","pageY","intersect","onMouseMove","offsetX","abs","component","object","vector","updateWorldMatrix","getWorldPosition","project","meshes","promises","all","Home","Loader","introStatus","intro","routes","router","history","SET_HOTSPOT_INFORMATION","SET_EVENTS","SET_SCENES","SET_CURRENT_SCENE_INDEX","SET_READY_STATE","SET_TEXTURE_STATE","SET_LOAD_PROGRESS","SET_LIVE","SET_LIVE_STATE","getLiveState","date","Date","startDate","endDate","isBetween","createEventsData","ondemand","isBefore","vectorise","hotspotInformation","readyState","mutations","modifiedScenes","eventsWithDate","format","endDateFormat","condition","actions","getHotspotInformation","commit","getScenes","getEvents","getLive","f","setSceneIndex","setLoadProgress","setTextureState","setReadyState","setLiveState","modules","App","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","n","getter","__esModule","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","826","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"mappings":"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","file":"js/index-legacy.45c611f4.js","sourcesContent":["import { App } from 'vue';\n\ninterface IDeviceDetector {\n ios: boolean;\n iphone: boolean;\n iphoneX: boolean;\n iPhoneXR: boolean;\n iPhoneXSMax: boolean;\n ipod: boolean;\n ipad: boolean;\n android: boolean;\n androidPhone: boolean;\n windows: boolean;\n mobile: boolean;\n dingding: boolean;\n wechat: boolean;\n wechatMiniApp: boolean;\n}\n\n// The client user agent string.\n// Lowercase, so we can use the more efficient indexOf(), instead of Regex\nconst userAgent = window.navigator.userAgent.toLowerCase();\nconst devicePixelRatio = window.devicePixelRatio || 1;\nconst iPadOS13Up = window.navigator.platform === 'MacIntel'\n && window.navigator.maxTouchPoints > 1;\nclass DeviceDetector {\n windows: boolean;\n\n ipod: boolean;\n\n ipad: boolean;\n\n iphone: boolean;\n\n iphoneX: boolean;\n\n iPhoneXR: boolean;\n\n iPhoneXSMax: boolean;\n\n ios: boolean;\n\n android: boolean;\n\n androidPhone: boolean;\n\n mobile: boolean;\n\n dingding: boolean;\n\n wechat: boolean;\n\n wechatMiniApp: boolean;\n\n constructor() {\n this.windows = this.find('windows');\n this.ipod = this.find('ipod');\n this.ipad = this.find('ipad') || iPadOS13Up;\n this.dingding = this.find('dingtalk');\n this.wechat = this.find('micromessenger');\n this.wechatMiniApp = this.find('miniprogram');\n this.iphone = !this.windows && this.find('iphone');\n this.iphoneX = this.iphone\n && devicePixelRatio === 3\n && window.screen.width === 375\n && window.screen.height === 812;\n\n this.iPhoneXR = this.iphone\n && devicePixelRatio === 2\n && window.screen.width === 414\n && window.screen.height === 896;\n\n this.iPhoneXSMax = this.iphone\n && devicePixelRatio === 3\n && window.screen.width === 414\n && window.screen.height === 896;\n\n this.ios = this.iphone || this.ipod || this.ipad;\n this.android = !this.windows && this.find('android');\n this.androidPhone = this.android && this.find('mobile');\n this.mobile = this.android || this.ios;\n }\n\n private find = (needle: string) => userAgent.indexOf(needle) !== -1\n}\n\ninterface IDeviceDetector {\n ios: boolean;\n iphone: boolean;\n iphoneX: boolean;\n iPhoneXR: boolean;\n iPhoneXSMax: boolean;\n ipod: boolean;\n ipad: boolean;\n android: boolean;\n androidPhone: boolean;\n windows: boolean;\n mobile: boolean;\n dingding: boolean;\n wechat: boolean;\n wechatMiniApp: boolean;\n}\nexport type deviceDetectorPlugin = {\n install(app: App, options?: any): void;\n};\nconst instantce: deviceDetectorPlugin = {\n install(app) {\n const alias = '$device';\n const deviceDetector = new DeviceDetector() as IDeviceDetector;\n // eslint-disable-next-line no-param-reassign\n app.config.globalProperties[alias] = deviceDetector;\n // Object.defineProperty(Vue, `${alias}`, {\n // get() {\n // return deviceDetector;\n // }\n // });\n }\n};\n\nexport default instantce;\nexport { IDeviceDetector };\n","\n\n\n\n\n","\n\n\n\n\n","\nimport { defineComponent, PropType } from 'vue';\n\nexport default defineComponent({\n name: 'MobileWarning',\n props: {\n onClose: Function as PropType<(payload: MouseEvent) => void>,\n },\n methods: {\n close() {\n localStorage.setItem('warningDismissed', 'true');\n this.$emit('close');\n },\n // onClick(index: number) {},\n }\n});\n","import { render } from \"./MobileWarning.vue?vue&type=template&id=7e34eaca&scoped=true\"\nimport script from \"./MobileWarning.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileWarning.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileWarning.vue?vue&type=style&index=0&id=7e34eaca&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-7e34eaca\"\n\nexport default script","const trackingID = process.env.TRACKING_ID;\n\n/**\n * Initialize Google Analytics if analytics id exists and environment is\n * production\n */\nexport function initGA(): void {\n if (trackingID && window.gtag) {\n window.gtag('config', trackingID, {\n page_path: window.location.pathname,\n });\n }\n}\n\n/**\n * Trigger analytics event within google analytics through react-ga\n * @param {Object} eventData - Data associated with the event.\n */\nexport function triggerAnalyticsEvent(_eventData: any): void {\n // console.log('ga event');\n // // if (trackingID && process.env.NODE_ENV === 'production') {\n // if (trackingID) {\n // ReactGA.event(eventData);\n // } else {\n // console.debug('Analytics Event:', eventData); // eslint-disable-line no-console\n // }\n}\n\n/**\n * Set user auth data within Google Analytics\n * @param {Object} auth - Authentication data\n * @param {String} auth.uid - User's id\n */\nexport function setGAUser(auth: { uid: number, role?: string }): void {\n if (auth && window.gtag) {\n if (auth.uid || auth.role) {\n window.gtag('set', 'user_properties', {\n user_id: auth.uid,\n // delegate_id: auth.uid,\n Role: auth.role,\n });\n }\n }\n}\n\n/**\n * Track route update within Google Analytics\n */\nexport function trackRouteUpdate(value?: string): void {\n if (window.dataLayer) {\n window.dataLayer.push({\n event: 'SS2021Click',\n SS2021URLPath: value || window.location.pathname,\n });\n // console.log('path', window.location.pathname);\n // window.gtag('event', 'Summer Science 2021 microsite', {\n // category: 'link click',\n // label: window.location.pathname,\n // });\n }\n}\n\nexport default { initGA, triggerAnalyticsEvent, trackRouteUpdate };\n","\nimport { defineComponent } from 'vue';\nimport gsap from 'gsap';\nimport MobileWarning from '@/components/MobileWarning.vue';\nimport { trackRouteUpdate } from '@/utils/ga';\n\nexport default defineComponent({\n components: { MobileWarning },\n data() {\n const isDismissed = localStorage.getItem('warningDismissed') === 'true';\n const isPortrait = this.$device.mobile && window.innerHeight > window.innerWidth;\n return { hasWarning: isPortrait && !isDismissed };\n },\n methods: {\n onWarningClose() {\n this.hasWarning = false;\n },\n\n leave(element: Element, done: () => void) {\n gsap.to(element, {\n duration: 0.6,\n opacity: 0,\n onComplete: done,\n });\n },\n beforeEnter(element: Element) {\n gsap.set(element, {\n scaleX: 0.8,\n scaleY: 1.2\n });\n },\n enter(element: Element, done: () => void) {\n gsap.to(element, {\n duration: 0.4,\n opacity: 1,\n onComplete: done,\n });\n },\n },\n watch: {\n $route (to, from) {\n if (to.path !== from.path) {\n trackRouteUpdate();\n }\n },\n },\n computed: {\n isPortrait() {\n return this.$device.mobile && window.innerHeight > window.innerWidth;\n }\n }\n});\n","import { render } from \"./App.vue?vue&type=template&id=4500b8ae\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=4500b8ae&lang=postcss\"\nscript.render = render\n\nexport default script","const BASE_URL = '/summer-science/summer-science-2021';\n\nexport { BASE_URL };\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n name: 'progressRing',\n props: {\n radius: { required: true, type: Number },\n progress: { required: true, type: Number },\n stroke: { required: true, type: Number }\n },\n\n data() {\n const normalizedRadius = this.radius - this.stroke * 2;\n const circumference = normalizedRadius * 2 * Math.PI;\n\n return {\n normalizedRadius,\n circumference\n };\n },\n\n computed: {\n strokeDashoffset(): number {\n return this.circumference - ((this.progress / 100) * this.circumference);\n }\n },\n});\n","import { render } from \"./ProgressRing.vue?vue&type=template&id=f088f32e\"\nimport script from \"./ProgressRing.vue?vue&type=script&lang=ts\"\nexport * from \"./ProgressRing.vue?vue&type=script&lang=ts\"\n\nimport \"./ProgressRing.vue?vue&type=style&index=0&id=f088f32e&lang=postcss\"\nscript.render = render\n\nexport default script","\nimport { defineComponent, ref } from 'vue';\nimport gsap from 'gsap';\nimport { Scene } from '@/types';\nimport ProgressRing from './ProgressRing.vue';\n\nexport default defineComponent({\n name: 'Loader',\n\n components: { ProgressRing },\n\n setup() {\n const loaderRef = ref();\n const textRef = ref();\n const clipRef = ref();\n const circleRef = ref();\n const interval = ref(null);\n\n return {\n loader: loaderRef,\n text: textRef,\n clip: clipRef,\n circle: circleRef,\n interval,\n };\n },\n\n data() {\n return {\n texts: [] as string[],\n currentText: '',\n loadProgress: 0,\n };\n },\n\n mounted() {\n if (this.circle) {\n const radius = this.circle.r.baseVal.value;\n const circumference = radius * 2 * Math.PI;\n this.circle.style.strokeDasharray = `${circumference} ${circumference}`;\n this.circle.style.strokeDashoffset = `${circumference}`;\n }\n\n this.interval = setInterval(this.switchText, 5000);\n },\n\n unmounted() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n },\n\n watch: {\n scenes() {\n if (this.scenes && this.texts.length === 0) {\n this.scenes.forEach(scene => {\n this.texts.push(...scene.hotspots.map(hotspot => hotspot.name));\n });\n this.getRandomText();\n }\n },\n currentProgress() {\n this.loadProgress = this.$store.state.loadProgress;\n this.progress(this.$store.state.loadProgress * 100);\n }\n },\n\n methods: {\n async switchText() {\n if (!this.text) return;\n await gsap.to(this.text, {\n duration: 0.6,\n opacity: 0,\n });\n\n this.getRandomText();\n\n gsap.to(this.text, {\n duration: 0.6,\n opacity: 1,\n });\n },\n\n getRandomText() {\n const rndInt = Math.floor(Math.random() * this.texts.length);\n this.currentText = this.texts[rndInt];\n },\n\n async progress(percent: number) {\n if (!this.clip || !this.loader) return;\n await gsap.to(this.clip, {\n duration: 0.3,\n clipPath: `inset(0 ${101 - percent}% 0 0)`,\n });\n\n if (percent >= 100) {\n await gsap.to(this.loader, {\n duration: 0.3,\n scale: 1.2,\n opacity: 0,\n delay: 1.2,\n // ease: Back.easeIn.config(1.7),\n });\n\n this.$store.dispatch('setTextureState', true);\n }\n }\n },\n\n computed: {\n scenes(): Scene[] {\n return this.$store.state.scenes;\n },\n currentProgress(): number {\n return this.$store.state.loadProgress;\n }\n },\n});\n","import { render } from \"./Loader.vue?vue&type=template&id=015cf008&scoped=true\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts\"\n\nimport \"./Loader.vue?vue&type=style&index=0&id=015cf008&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-015cf008\"\n\nexport default script","import { reactive } from 'vue';\n\ntype Value = {\n title?: string;\n subtitle?:string;\n description?: string;\n width?: number;\n height?: number;\n type?: string;\n videoSrc?: string;\n videoIframeId?: string;\n noHead?: boolean;\n}\n\ntype State = Value & { isVisible: boolean };\n\nconst initState = {\n isVisible: false,\n title: '',\n subtitle: '',\n description: '',\n type: '',\n width: 400,\n height: 240,\n};\n\nexport default {\n debug: true,\n\n state: reactive({\n value: initState as State,\n }),\n\n show(newValue?: Value): void {\n if (this.debug) {\n console.log('setMessageAction triggered with', newValue);\n }\n\n this.state.value = { ...newValue, isVisible: true };\n },\n\n hide(): void {\n if (this.debug) {\n console.log('clearMessageAction triggered');\n }\n\n this.state.value = initState;\n },\n\n clear(): void {\n this.state.value = initState;\n }\n};\n","\n\n\n\n\n\n\n","\n\n\n\n\n","","import { render } from \"./introduction.svg?vue&type=template&id=06625e1a\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./upcoming-workshops.svg?vue&type=template&id=9d6176aa\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport { defineComponent, PropType } from 'vue';\nimport { trackRouteUpdate } from '@/utils/ga';\n\nexport default defineComponent({\n name: 'Button',\n props: {\n onClick: Function as PropType<((payload: MouseEvent) => void) | undefined>,\n style: Object,\n tooltip: String,\n tooltipDirection: String as () => 'left' | 'right' | undefined,\n },\n methods: {\n click() {\n trackRouteUpdate(this.tooltip);\n this.$emit('click');\n },\n },\n});\n","import { render } from \"./Button.vue?vue&type=template&id=cf724a14&scoped=true\"\nimport script from \"./Button.vue?vue&type=script&lang=ts\"\nexport * from \"./Button.vue?vue&type=script&lang=ts\"\n\nimport \"./Button.vue?vue&type=style&index=0&id=cf724a14&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-cf724a14\"\n\nexport default script","\nimport { defineComponent } from 'vue';\nimport SVGIntroduction from '@/svgs/introduction.svg';\nimport SVGEvent from '@/svgs/upcoming-workshops.svg';\n// import LiveIcon from '@/components/LiveIcon.vue';\nimport modalStore from '@/components/Modal/store';\nimport Button from './Button.vue';\n\nconst data = [\n {\n icon: 'SVGIntroduction',\n title: 'Introduction',\n tooltip: 'Introduction video',\n videoIframeId: 'QK82KXtHAjI',\n noHead: true,\n },\n // {\n // icon: 'LiveIcon',\n // title: 'Live',\n // tooltip: 'View live session',\n // noHead: true,\n // type: 'live',\n // },\n {\n icon: 'SVGEvent',\n title: 'Event',\n tooltip: 'Talks and activities',\n type: 'feed',\n },\n];\n\nexport default defineComponent({\n name: 'Menu',\n components: {\n SVGIntroduction,\n SVGEvent,\n // LiveIcon,\n Button,\n },\n props: {\n onClick: Function,\n },\n data() {\n return { data };\n },\n methods: {\n handleClick(index: number) {\n const item = this.data[index];\n if (!item) return;\n document.body.style.cursor = '';\n\n if (item.type === 'feed' && this.onClick) {\n this.onClick();\n return;\n }\n\n modalStore.show({\n width: item.type === 'live' ? 560 : window.innerWidth * 0.925,\n height: item.type === 'live' ? 540 : window.innerHeight * 0.925,\n ...item,\n });\n },\n }\n});\n","import { render } from \"./Menu.vue?vue&type=template&id=55bc068c&scoped=true\"\nimport script from \"./Menu.vue?vue&type=script&lang=ts\"\nexport * from \"./Menu.vue?vue&type=script&lang=ts\"\n\nimport \"./Menu.vue?vue&type=style&index=0&id=55bc068c&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-55bc068c\"\n\nexport default script","\n\n\n\n\n\n\n","","import { render } from \"./compass.svg?vue&type=template&id=7cc9c0a6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport { defineComponent, ref } from 'vue';\nimport axios from 'axios';\nimport lottie, { AnimationItem } from 'lottie-web';\n\nexport default defineComponent({\n name: 'Icon',\n\n props: {\n src: { type: String, required: true },\n width: { type: Number, required: false },\n height: { type: Number, required: false },\n },\n\n setup() {\n const container = ref();\n\n return {\n container,\n anim: null as AnimationItem | null,\n };\n },\n\n data() {\n console.log('width', this.width);\n const style = {\n width: this.width ? `${this.width}px` : '100%',\n height: this.height ? `${this.height}px` : '100%',\n overflow: 'hidden',\n margin: '0 auto'\n };\n\n if (this.$device.mobile) {\n if (this.width) {\n style.width = `${this.width * 0.8}px`;\n }\n if (this.height) {\n style.height = `${this.height * 0.8}px`;\n }\n }\n\n return { style };\n },\n\n mounted() {\n this.init();\n },\n\n unmounted() {\n if (this.anim) {\n this.anim.destroy();\n }\n },\n\n watch: {\n src() {\n this.init();\n }\n },\n\n methods: {\n async init() {\n const data = await this.loadJsonData(this.src);\n\n if (this.anim) {\n this.anim.destroy();\n }\n\n this.anim = lottie.loadAnimation({\n container: this.container as Element,\n renderer: 'svg',\n loop: true,\n autoplay: true,\n animationData: data,\n // rendererSettings: this.rendererSettings\n });\n\n this.$emit('AnimControl', this.anim);\n },\n\n loadJsonData(path: string) {\n return axios.get(path).then(response => response.data);\n },\n }\n});\n","import { render } from \"./Icon.vue?vue&type=template&id=6023a188&scoped=true\"\nimport script from \"./Icon.vue?vue&type=script&lang=ts\"\nexport * from \"./Icon.vue?vue&type=script&lang=ts\"\n\nimport \"./Icon.vue?vue&type=style&index=0&id=6023a188&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6023a188\"\n\nexport default script","\nimport { defineComponent, ref } from 'vue';\nimport gsap from 'gsap';\nimport { Scene, Camera } from 'three';\nimport SVGCompass from '@/svgs/compass.svg';\nimport { Hotspot, Scene as SceneType } from '@/types';\nimport Icon from './Icon.vue';\n\nexport default defineComponent({\n name: 'Navigation',\n components: {\n Icon,\n SVGCompass,\n },\n\n props: {\n camera: Object as () => Camera,\n scene: Object as () => Scene,\n controls: Object as any,\n },\n\n data() {\n return {\n isOpen: false,\n isActive: false,\n };\n },\n\n setup() {\n const navigationRef = ref();\n const shapeRef = ref();\n const listRef = ref();\n const maskRef = ref();\n const path = ref();\n\n return {\n navigationRef,\n shapeRef,\n listRef,\n maskRef,\n path,\n paths: { active: '', reset: '' },\n };\n },\n\n mounted() {\n if (!this.shapeRef) return;\n // eslint-disable-next-line no-undef\n const s = Snap(this.shapeRef.querySelector('svg'));\n this.path = s.select('.js-animate-path');\n this.maskRef?.addEventListener('click', this.onMaskClick);\n\n this.paths = {\n reset: this.path.attr('d'),\n active: this.shapeRef.getAttribute('data-morph-active') as string,\n };\n },\n\n computed: {\n currentScene(): SceneType {\n return this.$store.getters.currentScene;\n }\n },\n\n methods: {\n toggle() {\n if (!this.navigationRef || !this.path) return;\n this.isOpen = !this.isOpen;\n // eslint-disable-next-line no-undef\n this.path.stop().animate({ path: this.paths.active }, 150, mina.easein, () => {\n // eslint-disable-next-line no-undef\n this.path.stop().animate({ path: this.paths.reset }, 800, mina.elastic);\n });\n },\n\n close() {\n return new Promise(resolve => {\n this.isOpen = false;\n setTimeout(resolve, 100);\n });\n },\n\n onMaskClick() {\n this.isOpen = false;\n },\n\n onClick(_event: MouseEvent, hotspot: Hotspot) {\n this.toggle();\n\n if (this.camera) {\n gsap.to(this.camera.position, {\n ...hotspot.tween,\n duration: 2,\n ease: 'circ.in',\n });\n }\n }\n },\n});\n","import { render } from \"./Navigation.vue?vue&type=template&id=240ef5b4&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts\"\n\nimport \"./Navigation.vue?vue&type=style&index=0&id=240ef5b4&lang=postcss\"\nimport \"./Navigation.vue?vue&type=style&index=1&id=240ef5b4&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-240ef5b4\"\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n","\nimport { defineComponent, ref } from 'vue';\nimport gsap from 'gsap';\n\nexport default defineComponent({\n name: 'Video',\n props: {\n src: String,\n style: Object,\n },\n\n setup() {\n const container = ref();\n const video = ref();\n const playButton = ref();\n const control = ref();\n const progress = ref();\n\n return {\n container,\n video,\n playButton,\n control,\n progress,\n };\n },\n\n data() {\n return {\n isHovered: false,\n isPlaying: false,\n };\n },\n\n mounted() {\n if (this.video) {\n this.video.play();\n this.isPlaying = true;\n }\n\n if (this.container) {\n this.container.addEventListener('mouseenter', this.onMouseEnter);\n this.container.addEventListener('mouseleave', this.onMouseLeave);\n }\n },\n\n unmounted() {\n if (this.container) {\n this.container.removeEventListener('mouseenter', this.onMouseEnter);\n this.container.removeEventListener('mouseleave', this.onMouseLeave);\n }\n },\n\n methods: {\n onPlayButtonClick() {\n if (!this.playButton || !this.video) return;\n\n if (this.isPlaying) {\n this.video.pause();\n this.isPlaying = false;\n } else {\n this.video.play();\n this.isPlaying = true;\n }\n },\n onMouseEnter() {\n if (this.control) {\n gsap.to(this.control, { duration: 0.3, y: 0, opacity: 1 });\n }\n },\n onMouseLeave() {\n if (this.control) {\n gsap.to(this.control, { duration: 0.3, y: 20, opacity: 0 });\n }\n },\n onProgress() {\n if (!this.progress || !this.video) return;\n this.progress.value = Math.round((\n this.video.currentTime / this.video.duration || 0\n ) * 100);\n }\n },\n});\n","import { render } from \"./Video.vue?vue&type=template&id=5bf99554&scoped=true\"\nimport script from \"./Video.vue?vue&type=script&lang=ts\"\nexport * from \"./Video.vue?vue&type=script&lang=ts\"\n\nimport \"./Video.vue?vue&type=style&index=0&id=5bf99554&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-5bf99554\"\n\nexport default script","\n\n\n\n\n\n\n","","import { render } from \"./microphone.svg?vue&type=template&id=aca193ce\"\nconst script = {}\nscript.render = render\n\nexport default script","\nimport { defineComponent } from 'vue';\nimport SVGMicrophone from '@/svgs/microphone.svg';\n\nexport default defineComponent({\n components: { SVGMicrophone },\n name: 'LiveView',\n});\n","import { render } from \"./LiveView.vue?vue&type=template&id=b69cf094&scoped=true\"\nimport script from \"./LiveView.vue?vue&type=script&lang=ts\"\nexport * from \"./LiveView.vue?vue&type=script&lang=ts\"\n\nimport \"./LiveView.vue?vue&type=style&index=0&id=b69cf094&lang=postcss\"\nimport \"./LiveView.vue?vue&type=style&index=1&id=b69cf094&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-b69cf094\"\n\nexport default script","\nimport { defineComponent } from 'vue';\nimport gsap, { Back } from 'gsap';\nimport store from './store';\nimport Video from '../Video.vue';\nimport LiveView from '../LiveView.vue';\n\ninterface DialogStyle {\n width: string;\n height: string;\n animationDuration: string;\n}\n\nexport default defineComponent({\n name: 'modal',\n components: { Video, LiveView },\n\n props: {\n duration: { type: Number, default: 300 },\n measure: { type: String, default: 'px' },\n mask: { type: Boolean, default: true },\n closeButton: { type: Boolean, default: true },\n closeOnEsc: { type: Boolean, default: false },\n closeOnClickMask: { type: Boolean, default: true },\n className: { type: String, default: '' },\n customStyles: { type: Object, default: () => ({}) },\n customMaskStyles: { type: Object, default: () => ({}) },\n },\n\n data() {\n return {\n state: store.state,\n width: store.state.value.width || 400,\n height: store.state.value.height || 240,\n };\n },\n\n created() {\n window.addEventListener('resize', this.resize);\n },\n\n unmounted() {\n window.removeEventListener('resize', this.resize);\n },\n\n computed: {\n show(): boolean {\n return this.state.value.isVisible;\n },\n style(): { animationDuration: string } {\n return {\n animationDuration: `${this.duration}ms`\n };\n },\n dialogStyle(): DialogStyle {\n return {\n width: this.state.value.width + this.measure,\n height: this.state.value.height + this.measure,\n animationDuration: `${this.duration}ms`,\n ...this.customStyles\n };\n }\n },\n\n watch: {\n show(isShow) {\n if (isShow) {\n document.body.style.cursor = '';\n\n this.$nextTick(() => {\n this.$el.focus();\n });\n }\n }\n },\n\n methods: {\n async leave(element: Element, done: () => void) {\n await gsap.to(element, {\n duration: 0.3,\n opacity: 0,\n y: 100,\n scaleX: 0.9,\n scaleY: 1.1,\n ease: Back.easeOut.config(1.7),\n });\n\n store.clear();\n done();\n },\n\n beforeEnter(element: Element) {\n gsap.set(element, {\n y: 100,\n scaleX: 0.9,\n scaleY: 1.1,\n });\n },\n enter(element: Element, done: () => void) {\n gsap.to(element, {\n duration: 0.4,\n opacity: 1,\n scale: 1.0,\n y: 0,\n onComplete: done,\n ease: Back.easeOut.config(3),\n });\n },\n\n hide() {\n store.hide();\n },\n\n resize() {\n const w = window.innerWidth;\n const h = window.innerHeight;\n\n if (w < ((this.state.value.width || 400))) {\n this.state.value.width = w * 0.925;\n } else if ((store.state.value.width || 400) < w * 0.925) {\n this.state.value.width = store.state.value.width;\n }\n\n if (h < ((this.state.value.height || 240))) {\n this.state.value.height = h * 0.925;\n } else if ((store.state.value.height || 240) < w * 0.925) {\n this.state.value.height = store.state.value.height;\n }\n },\n onEsc() {\n if (this.show && this.closeOnEsc) {\n // this.$emit('hide');\n this.hide();\n }\n },\n onClickMask() {\n this.$emit('clickMask');\n if (this.closeOnClickMask) {\n // this.$emit('hide');\n this.hide();\n }\n }\n }\n});\n","import { render } from \"./Modal.vue?vue&type=template&id=52819b28&scoped=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=52819b28&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-52819b28\"\n\nexport default script","\n\n\n\n\n","\nimport { defineComponent } from 'vue';\nimport gsap, { Back } from 'gsap';\nimport { HotspotInformation, Scene } from '@/types';\nimport Video from './Video.vue';\n\nexport default defineComponent({\n name: 'infobox',\n components: { Video },\n\n props: {\n id: { type: Number, required: true },\n show: { type: Boolean, required: true },\n width: { type: Number, default: window.innerWidth * 0.925 },\n height: { type: Number, default: window.innerHeight * 0.925 },\n duration: { type: Number, default: 300 },\n measure: { type: String, default: 'px' },\n mask: { type: Boolean, default: true },\n // hide: { type: Function as PropType<(payload: MouseEvent) => void>, required: true },\n closeButton: { type: Boolean, default: true },\n closeOnEsc: { type: Boolean, default: false },\n closeOnClickMask: { type: Boolean, default: true },\n className: { type: String, default: '' },\n customStyles: { type: Object, default: () => ({}) },\n customMaskStyles: { type: Object, default: () => ({}) },\n },\n\n created() {\n window.addEventListener('resize', this.resize);\n },\n\n unmounted() {\n window.removeEventListener('resize', this.resize);\n },\n\n computed: {\n info(): HotspotInformation {\n return this.$store.getters.information(this.id);\n },\n\n styleDuration(): { animationDuration: string } {\n return {\n animationDuration: `${this.duration}ms`\n };\n },\n\n styleBackground(): { backgroundColor: string } | undefined {\n const scene: Scene = this.$store.getters.currentScene;\n if (!scene) return undefined;\n\n return {\n backgroundColor: scene.theme,\n };\n },\n\n styleIcon(): { color: string } | undefined {\n const scene: Scene = this.$store.getters.currentScene;\n if (!scene) return undefined;\n return { color: scene.theme };\n },\n },\n\n watch: {\n show(isShow) {\n if (isShow) {\n this.$nextTick(() => {\n this.$el.focus();\n });\n }\n }\n },\n\n methods: {\n async leave(element: Element, done: () => void) {\n await gsap.to(element, {\n duration: 0.3,\n opacity: 0,\n y: 100,\n scaleX: 0.9,\n scaleY: 1.1,\n ease: Back.easeOut.config(1.7),\n });\n\n done();\n },\n\n beforeEnter(element: Element) {\n document.body.style.cursor = '';\n gsap.set(element, {\n y: 100,\n scaleX: 0.9,\n scaleY: 1.1,\n });\n },\n\n enter(element: Element, done: () => void) {\n gsap.to(element, {\n duration: 0.4,\n opacity: 1,\n scale: 1,\n y: 0,\n onComplete: done,\n ease: Back.easeOut.config(3),\n });\n },\n\n resize() {\n // const w = window.innerWidth;\n // const h = window.innerHeight;\n\n // if (w < ((this.state.value.width || 400))) {\n // this.state.value.width = w * 0.925;\n // } else if ((store.state.value.width || 400) < w * 0.925) {\n // this.state.value.width = store.state.value.width;\n // }\n\n // if (h < ((this.state.value.height || 240))) {\n // this.state.value.height = h * 0.925;\n // } else if ((store.state.value.height || 240) < w * 0.925) {\n // this.state.value.height = store.state.value.height;\n // }\n },\n\n onEsc() {\n if (this.show && this.closeOnEsc) {\n this.$emit('hide');\n }\n },\n\n onClickMask() {\n this.$emit('clickMask');\n if (this.closeOnClickMask) {\n // this.hide(event);\n this.$emit('hide');\n }\n }\n }\n});\n","import { render } from \"./InfoBox.vue?vue&type=template&id=7d3c1f20&scoped=true\"\nimport script from \"./InfoBox.vue?vue&type=script&lang=ts\"\nexport * from \"./InfoBox.vue?vue&type=script&lang=ts\"\n\nimport \"./InfoBox.vue?vue&type=style&index=0&id=7d3c1f20&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7d3c1f20\"\n\nexport default script","\n\n\n\n\n\n\n","\nimport { defineComponent, ref, watch } from 'vue';\nimport { useStore } from 'vuex';\nimport gsap, { Back } from 'gsap';\nimport { Events } from '@/types';\n\nconst initialMorphPath = 'M-1,0h101c0,0-97.833,153.603-97.833,396.167C2.167,627.579,100,800,100,800H-1V0z';\nconst openMorphPath = 'M-1,0h101c0,0,0-1,0,395c0,404,0,405,0,405H-1V0z';\n\nexport default defineComponent({\n name: 'eventFeed',\n\n props: {\n show: { type: Boolean, required: true },\n hide: { type: Function, required: true },\n duration: { type: Number, default: 300 },\n measure: { type: String, default: 'px' },\n mask: { type: Boolean, default: true },\n closeButton: { type: Boolean, default: true },\n closeOnEsc: { type: Boolean, default: false },\n closeOnClickMask: { type: Boolean, default: true },\n className: { type: String, default: '' },\n customStyles: { type: Object, default: () => ({}) },\n customMaskStyles: { type: Object, default: () => ({}) },\n },\n\n async setup() {\n const topRef = ref();\n const contentHeight = ref(0);\n const store = useStore();\n const { events } = store.state;\n\n watch(topRef, () => {\n if (topRef.value) {\n const height = topRef.value.clientWidth;\n contentHeight.value = window.innerHeight - height;\n }\n });\n\n if (!events) {\n await store.dispatch('getEvents');\n }\n\n return { topRef, contentHeight };\n },\n\n data() {\n return {\n filter: 'upcoming' as 'ondemand' | 'upcoming',\n initialMorphPath,\n openMorphPath,\n };\n },\n\n created() {\n if (this.events && this.events.upcoming.length === 0) {\n this.filter = 'ondemand';\n }\n },\n\n watch: {\n show: 'open',\n },\n\n computed: {\n events(): { ondemand: Events[], upcoming: Events[] } {\n return this.$store.getters.allEvents;\n }\n },\n\n methods: {\n open(isShow: boolean) {\n if (isShow) {\n this.$nextTick(() => {\n this.$el.focus();\n });\n }\n },\n\n leave(element: Element, done: () => void) {\n gsap.to(element, {\n duration: 0.3,\n opacity: 0,\n x: window.innerWidth * 0.366,\n onComplete: done,\n ease: Back.easeOut.config(1.7),\n });\n },\n\n beforeEnter(element: Element) {\n const inner = element.querySelector('.events__inner');\n gsap.set(element, {\n x: window.innerWidth * 0.366,\n });\n gsap.set(inner, {\n x: window.innerWidth * 0.366,\n });\n },\n\n async enter(element: Element, done: () => void) {\n const morph = element.querySelector('.js-morph-shape');\n const inner = element.querySelector('.events__inner');\n\n if (morph) {\n this.morphAnim(morph as Element);\n }\n\n gsap.to(element, {\n duration: 0.46,\n opacity: 1,\n x: 0,\n // onComplete: done,\n ease: 'power2.in',\n });\n\n gsap.to(inner, {\n duration: 0.42,\n x: 0,\n delay: 0.2,\n ease: 'power2.out',\n onComplete: done,\n });\n },\n\n async hideFeed() {\n // store.clear();\n const dialog = this.$refs.dialog as HTMLDivElement;\n const morph = dialog.querySelector('.js-morph-shape');\n\n await gsap.to(dialog, {\n duration: 0.3,\n x: window.innerWidth * 0.366,\n ease: 'power2.in',\n });\n\n this.morphAnim(morph as Element, true);\n // this.$emit('hide');\n this.hide();\n },\n\n morphAnim(morph: Element, isClosing?: boolean) {\n return new Promise(resolve => {\n // eslint-disable-next-line no-undef\n const s = Snap(morph.querySelector('svg'));\n const path = s.select('path');\n\n path.animate({\n path: isClosing ? this.initialMorphPath : this.openMorphPath\n // eslint-disable-next-line no-undef\n }, 300, mina.easeinout, () => resolve(true));\n });\n },\n\n onEsc() {\n if (this.show && this.closeOnEsc) {\n // this.$emit('hide');\n this.hideFeed();\n }\n },\n\n onClickTab(e: MouseEvent, value: 'ondemand' | 'upcoming') {\n this.filter = value;\n },\n\n onClickMask() {\n this.$emit('clickMask');\n if (this.closeOnClickMask) {\n // this.$emit('hide');\n this.hideFeed();\n }\n }\n }\n});\n","import { render } from \"./EventFeed.vue?vue&type=template&id=1c1f0a47&scoped=true\"\nimport script from \"./EventFeed.vue?vue&type=script&lang=ts\"\nexport * from \"./EventFeed.vue?vue&type=script&lang=ts\"\n\nimport \"./EventFeed.vue?vue&type=style&index=0&id=1c1f0a47&lang=postcss\"\nimport \"./EventFeed.vue?vue&type=style&index=1&id=1c1f0a47&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1c1f0a47\"\n\nexport default script","\n\n\n","import {\n FileLoader,\n Loader,\n CanvasTexture,\n NearestFilter,\n // AlphaFormat,\n} from 'three';\n\nimport bodymovin from 'lottie-web';\n\nclass LottieLoader extends Loader {\n quality = 1;\n\n setQuality(value: number): void {\n this.quality = value;\n }\n\n load(\n url: string,\n onLoad?: (texture: CanvasTexture) => any,\n onProgress?: () => any,\n onError?: () => any,\n ): CanvasTexture {\n // const quality = this.quality || 1;\n\n // @ts-ignore\n const texture = new CanvasTexture();\n // texture.minFilter = NearestFilter;\n\n const loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setWithCredentials(this.withCredentials);\n\n loader.load(url, text => {\n const data = JSON.parse(text as string);\n\n // bodymoving uses container.offetWidth and offsetHeight\n // to define width/height\n\n const container = document.createElement('div');\n container.style.width = `${data.w}px`;\n container.style.height = `${data.h}px`;\n document.body.appendChild(container);\n\n // eslint-disable-next-line no-undef\n const animation = bodymovin.loadAnimation({\n container,\n renderer: 'canvas',\n loop: true,\n autoplay: true,\n animationData: data,\n // rendererSettings: { dpr: quality }\n });\n\n // @ts-ignore\n texture.animation = animation;\n // @ts-ignore\n texture.image = animation.container;\n\n animation.addEventListener('enterFrame', () => {\n texture.needsUpdate = true;\n });\n\n container.style.display = 'none';\n\n if (onLoad !== undefined) {\n onLoad(texture);\n }\n }, onProgress, onError);\n\n return texture;\n }\n}\n\nexport { LottieLoader };\n","import { defineComponent } from 'vue';\nimport gsap, { Back } from 'gsap';\n\nimport {\n MeshBasicMaterial,\n PlaneGeometry,\n Vector3,\n Mesh,\n CanvasTexture,\n TextureLoader,\n Texture,\n} from 'three';\n\nimport { Object3D } from 'troisjs';\nimport { LottieLoader } from '@/utils/LottieLoader';\n\nexport default defineComponent({\n name: 'Hotspot',\n extends: Object3D,\n props: {\n id: Number,\n slug: String,\n src: String,\n name: { type: String, default: '0404E8_0404B5_0404CB_3333FC' },\n onClick: Function,\n onPointerEnter: Function,\n onPointerLeave: Function,\n onPointerOver: Function,\n flatShading: Boolean,\n position: Object as () => Vector3,\n scale: Object as () => Vector3,\n visible: Boolean,\n infoBoxActive: Boolean,\n },\n\n data() {\n return {\n mesh: null as null | Mesh,\n geometry: null as null | PlaneGeometry,\n material: null as null | MeshBasicMaterial,\n isPlaying: true,\n };\n },\n\n created() {\n this.createGeometry();\n this.addGeometryWatchers(this.props);\n },\n\n mounted() {\n if (!this.mesh) {\n this.init();\n }\n },\n\n unmounted() {\n if (this.geometry) this.geometry.dispose();\n if (this.material) this.material.dispose();\n },\n\n watch: {\n infoBoxActive() {\n if (this.infoBoxActive) {\n this.stopAnimation();\n } else {\n this.playAnimation();\n }\n },\n },\n\n // computed: {\n // over(): boolean {\n // if (!this.mesh) return false;\n // return this.mesh.userData.over;\n // }\n // },\n\n methods: {\n init() {\n const loader = this.$device.mobile ? new TextureLoader() : new LottieLoader();\n loader.load(this.src as string, this.createLottie);\n },\n\n stopAnimation() {\n if (!this.isPlaying) return;\n\n // @ts-ignore\n if (this.material && this.material.map && this.material.map.animation) {\n // @ts-ignore\n this.material.map.animation.pause();\n this.isPlaying = false;\n }\n },\n\n playAnimation() {\n if (this.isPlaying) return;\n\n // @ts-ignore\n if (this.material && this.material.map && this.material.map.animation) {\n // @ts-ignore\n this.material.map.animation.play();\n this.isPlaying = true;\n }\n },\n\n addGeometryWatchers(props: any) {\n Object.keys(props).forEach(prop => {\n // @ts-ignore\n watch(() => this[prop], () => {\n this.refreshGeometry();\n });\n });\n },\n\n createGeometry() {\n this.geometry = new PlaneGeometry(8, 5);\n },\n\n setGeometry(geometry: PlaneGeometry) {\n this.geometry = geometry;\n if (this.mesh) this.mesh.geometry = geometry;\n },\n\n refreshGeometry() {\n const oldGeo = this.geometry;\n this.geometry = new PlaneGeometry(8, 5);\n if (this.mesh && this.geometry) this.mesh.geometry = this.geometry;\n oldGeo?.dispose();\n },\n\n createLottie(texture: CanvasTexture | Texture) {\n if (!this.geometry) return;\n\n this.material = new MeshBasicMaterial({\n map: texture,\n transparent: true,\n alphaTest: 0.1,\n depthTest: false,\n precision: 'mediump',\n color: '#fff',\n // sizeAttenuation: false,\n });\n\n if (this.mesh) this.mesh.material = this.material;\n const mesh = new Mesh(this.geometry, this.material);\n // mesh.userData.component = this;\n mesh.renderOrder = 999;\n\n // mesh has to be injected before lookAt\n this.mesh = mesh;\n this.initObject3D(mesh);\n // hide mesh for reveal animation\n mesh.scale.set(0, 0, 0);\n\n if (this.renderer && this.renderer.camera) {\n mesh.lookAt(this.renderer.camera.position);\n }\n\n // if (this.renderer && this.renderer.three) {\n // this.renderer.three.addIntersectObject(this.mesh);\n // }\n\n gsap.to(this.mesh.scale, {\n x: this.scale.x,\n y: this.scale.y,\n z: this.scale.z,\n duration: 0.6,\n delay: 0.2,\n ease: Back.easeOut.config(1.7),\n });\n },\n },\n});\n","\nimport { defineComponent, PropType, ref } from 'vue';\nimport { Group, Renderer } from 'troisjs';\nimport { Mesh } from 'three';\nimport { Scene } from '@/types';\nimport Hotspot from './Hotspot';\n\nexport default defineComponent({\n name: 'Hotspots',\n components: {\n Hotspot,\n },\n\n props: {\n renderer: Object as PropType,\n infoBoxActive: {\n required: true,\n type: Boolean,\n },\n visible: {\n required: true,\n type: Boolean,\n },\n onPointerClick: {\n required: true,\n type: Function as PropType<(e: any) => void>\n },\n onPointerOver: {\n required: true,\n type: Function as PropType<(e: any) => void>\n },\n onPointerEnter: {\n required: true,\n type: Function as PropType<(e: any) => void>\n },\n onPointerLeave: {\n required: true,\n type: Function as PropType<(e: any) => void>\n },\n },\n\n setup() {\n const hotspotsRef = ref();\n return { hotspots: hotspotsRef };\n },\n\n mounted() {\n this.addIntersects();\n },\n\n unmounted() {\n this.removeIntersects();\n },\n\n watch: {\n children() {\n this.addIntersects();\n }\n },\n\n methods: {\n addIntersects() {\n if (this.children && this.renderer) {\n const pointer = this.renderer.$pointer;\n pointer.intersectObjects = this.children;\n }\n },\n removeIntersects() {\n if (this.renderer) {\n const pointer = this.renderer.$pointer;\n pointer.intersectObjects = [];\n }\n }\n },\n\n computed: {\n currentScene(): Scene {\n return this.$store.getters.currentScene;\n },\n children(): Mesh[] | null {\n return this.hotspots ? this.hotspots.o3d.children : null;\n }\n },\n});\n","import { render } from \"./Hotspots.vue?vue&type=template&id=053ca10f\"\nimport script from \"./Hotspots.vue?vue&type=script&lang=ts\"\nexport * from \"./Hotspots.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","/* eslint-disable lines-between-class-members */\nimport * as THREE from 'three';\nimport gsap from 'gsap';\nimport { BASE_URL } from '@/constants';\n\ntype PropsType = {\n renderer: any;\n fragment?: any;\n duration?: number;\n easing?: string;\n}\n\nconst DISP_PATH = `${BASE_URL}/images/disp.jpg`;\n\nconst fragment = `\n uniform float time;\n uniform float progress;\n uniform float width;\n uniform float scaleX;\n uniform float scaleY;\n uniform float transition;\n uniform float radius;\n uniform float swipe;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform sampler2D displacement;\n uniform vec4 resolution;\n\n varying vec2 vUv;\n varying vec4 vPosition;\n\n float parabola( float x, float k ) {\n return pow( 4. * x * ( 1. - x ), k );\n }\n\n void main() {\n vec2 newUV = (vUv - vec2(0.5))*resolution.zw + vec2(0.5);\n vec2 p = newUV;\n vec2 start = vec2(0.5,0.5);\n vec2 aspect = resolution.wz;\n\n vec2 uv = newUV;\n float dt = parabola(progress, 1.);\n vec4 noise = texture2D(displacement, fract(vUv+time*0.04));\n float prog = progress*0.66 + noise.g * 0.04;\n float circ = 1. - smoothstep(-width, 0.0, radius * distance(start*aspect, uv*aspect) - prog*(1.+width));\n float intpl = pow(abs(circ), 1.);\n vec4 t1 = texture2D( texture1, (uv - 0.5) * (1.0 - intpl) + 0.5 ) ;\n vec4 t2 = texture2D( texture2, (uv - 0.5) * intpl + 0.5 );\n gl_FragColor = mix( t1, t2, intpl );\n }\n`;\n\nconst vertex = `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewPosition;\n }\n`;\n\nexport default class ImageTransition {\n renderer: any = null;\n material: THREE.ShaderMaterial | null = null;\n mesh: THREE.Mesh | null = null;\n currentTexture: THREE.Texture | null = null;\n geometry = new THREE.SphereGeometry(500, 60, 40);\n time = 0;\n isRunning = false;\n vertex = vertex;\n\n constructor(props: PropsType) {\n this.renderer = props.renderer;\n this.init();\n }\n\n init(): void {\n this.geometry.scale(-1, 1, 1);\n\n this.material = new THREE.ShaderMaterial({\n extensions: { derivatives: true },\n side: THREE.FrontSide,\n uniforms: {\n time: { value: 0 },\n progress: { value: 0 },\n border: { value: 0 },\n intensity: { value: 0 },\n scaleX: { value: 40 },\n scaleY: { value: 40 },\n transition: { value: 40 },\n swipe: { value: 0 },\n radius: {\n value: 0.8,\n // min: 0.1,\n // max: 2\n },\n width: {\n value: 0.92,\n // min: 0.0,\n // max: 1\n },\n texture1: { value: null },\n texture2: { value: null },\n displacement: { value: new THREE.TextureLoader().load(DISP_PATH) },\n resolution: { value: new THREE.Vector4() },\n },\n vertexShader: this.vertex,\n fragmentShader: fragment\n });\n\n this.mesh = new THREE.Mesh(this.geometry, this.material);\n // this.mesh.position.set(0, 0, 0);\n this.mesh.lookAt(this.renderer.camera.position);\n }\n\n getMesh(): THREE.Mesh | null {\n return this.mesh;\n }\n\n getMaterial(): THREE.ShaderMaterial | null {\n return this.material;\n }\n\n setMap(textures: THREE.Texture[], targetIndex?: number): void {\n if (!this.material) return;\n const texture1 = targetIndex ? textures[targetIndex] : textures[0];\n const texture2 = (targetIndex && textures[targetIndex + 1]) ? textures[targetIndex + 1] : textures[1];\n this.material.uniforms.texture1.value = texture1;\n this.material.uniforms.texture2.value = texture2;\n this.resize();\n }\n\n dispose(): void {\n if (!this.material) return;\n this.material.uniforms.texture1.value = null;\n this.material.uniforms.texture2.value = null;\n }\n\n resize(): void {\n if (!this.material) return;\n const { width, height } = this.renderer.size;\n this.material.uniforms.resolution.value.x = width;\n this.material.uniforms.resolution.value.y = height;\n this.material.uniforms.resolution.value.z = 1;\n this.material.uniforms.resolution.value.w = 1;\n }\n\n render(): void {\n if (!this.material) return;\n this.time += 0.05;\n this.material.uniforms.time.value = this.time;\n }\n\n async animate(\n textures: THREE.Texture[],\n value: number,\n camera = { x: 0, y: 0, z: 5 },\n ): Promise {\n if (!this.material) return false;\n\n if (this.renderer.three && this.renderer.three.cameraCtrl) {\n this.renderer.three.cameraCtrl.enabled = false;\n }\n\n if (this.isRunning) {\n this.material.uniforms.texture1.value = this.currentTexture;\n this.material.uniforms.progress.value = 0;\n }\n\n this.isRunning = true;\n const nextTexture = textures[value];\n this.material.uniforms.texture2.value = nextTexture;\n this.material.uniforms.progress.value = 0;\n this.currentTexture = nextTexture;\n gsap.killTweensOf(this.material.uniforms.progress);\n\n if (this.renderer.camera) {\n gsap.to(this.renderer.camera.position, {\n ...camera,\n duration: 1.2,\n ease: 'power2.in',\n onComplete: () => {\n if (this.renderer && this.renderer.three && this.renderer.three.cameraCtrl) {\n this.renderer.three.cameraCtrl.enabled = true;\n }\n }\n });\n }\n\n await gsap.to(this.material.uniforms.progress, {\n value: 1,\n duration: 3.6,\n delay: 0.2,\n ease: 'power2.out',\n });\n\n this.material.uniforms.texture1.value = nextTexture;\n this.material.uniforms.progress.value = 0;\n this.isRunning = false;\n return true;\n }\n}\n","import { defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nimport gsap from 'gsap';\nimport { Vector2 } from 'three';\nimport { Object3D, useTextures, lerp } from 'troisjs';\nimport { State } from '@/store';\nimport ImageTransition from '@/utils/ImageTransition';\nimport { BASE_URL } from '@/constants';\n\nconst ENTRANCE_PATH = `${BASE_URL}/textures/scene0.jpg`;\nconst entrance = { src: ENTRANCE_PATH };\n\nexport default defineComponent({\n name: 'Texture',\n extends: Object3D,\n props: {\n src: String,\n visible: Boolean,\n },\n\n async setup() {\n const loader = useTextures();\n const center = new Vector2();\n const store = useStore();\n const images = store.state.scenes.map(scene => scene.texture);\n images.unshift(entrance);\n loader.count = images.length;\n loader.loadProgress = 0;\n\n function loadTexture(img: { src: string }, index: number) {\n return new Promise(resolve => {\n loader.loader.load(\n img.src,\n texture => {\n loader.loadProgress += 1 / loader.count;\n loader.textures[index] = texture;\n store.dispatch('setLoadProgress', loader.loadProgress);\n resolve(texture);\n }\n );\n });\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const [index, image] of images.entries()) {\n // eslint-disable-next-line no-await-in-loop\n await loadTexture(image, index);\n }\n\n // await Promise.all(images.map(loadTexture));\n\n // await new Promise(resolve => {\n // console.log('progress', loader.loadProgress);\n // loader.loadTextures(images, () => {\n // setTimeout(() => {\n // resolve(true);\n // store.dispatch('setLoadProgress', loader.loadProgress);\n // // store.dispatch('setTextureState', true);\n // }, 1200);\n // });\n // });\n\n return {\n loader,\n center,\n progress: 0,\n targetProgress: 0,\n isScaling: false,\n images,\n three: null as any,\n image1: null as any,\n image2: null as any,\n planes: null as any,\n events: {} as any,\n imageTransition: null as ImageTransition | null,\n };\n },\n\n mounted() {\n this.init();\n },\n\n unmounted() {\n this.loader.dispose();\n if (!this.renderer) return;\n const { domElement } = this.renderer.renderer;\n domElement.removeEventListener('click', this.handleClick);\n document.removeEventListener('keyup', this.onKeyup);\n },\n\n computed: {\n sceneIndex(): number {\n return this.$store.state.currentSceneIndex;\n },\n },\n\n methods: {\n init() {\n if (!this.renderer) return;\n this.initScene();\n const { domElement } = this.renderer.renderer;\n if (this.events.click) domElement.addEventListener('click', this.handleClick);\n if (this.events.keyup) document.addEventListener('keyup', this.onKeyup);\n this.renderer.onResize(this.onResize);\n this.show(this.sceneIndex + 1);\n if (this.renderer) {\n this.renderer.onBeforeRender(this.animate);\n }\n },\n\n initScene() {\n if (!this.scene || !this.renderer) {\n console.error('Scene doesn\\'t exist');\n return;\n }\n\n this.imageTransition = new ImageTransition({ renderer: this.renderer });\n const mesh = this.imageTransition.getMesh();\n\n if (mesh) {\n if (this.sceneIndex === -1) {\n // mesh.geometry.rotateY((3 * Math.PI) / 2);\n mesh.rotation.y = (-1 * Math.PI) / 2;\n }\n this.scene.add(mesh);\n }\n },\n\n show(targetIndex?: number) {\n this.imageTransition?.setMap(this.loader.textures, targetIndex);\n },\n\n hide() {\n // this.image1.removeMap();\n // this.image2.removeMap();\n // this.setImagesProgress(0);\n },\n\n animate() {\n if (!this.renderer || !this.visible) return;\n this.imageTransition?.render();\n },\n\n onResize() {\n this.imageTransition?.resize();\n },\n\n async handleClick(e: MouseEvent | null, index?: number) {\n if (!this.renderer) return false;\n\n if (typeof index === 'number') {\n // index + 1 to exclude the entrance\n const res = await this.nav(index + 1);\n return res;\n }\n return false;\n },\n\n onKeyup(e: KeyboardEvent) {\n if (e.keyCode === 37 || e.keyCode === 38) {\n this.navPrevious();\n } else if (e.keyCode === 39 || e.keyCode === 40) {\n this.navNext();\n }\n },\n\n nav(index: number) {\n return this.setTargetProgress(index);\n },\n\n navNext() {\n if (Number.isInteger(this.targetProgress)) {\n this.setTargetProgress(this.targetProgress + 1);\n } else {\n this.setTargetProgress(Math.ceil(this.targetProgress));\n }\n },\n\n navPrevious() {\n if (Number.isInteger(this.targetProgress)) {\n this.setTargetProgress(this.targetProgress - 1);\n } else {\n this.setTargetProgress(Math.floor(this.targetProgress));\n }\n },\n\n async setTargetProgress(value: number) {\n if (!this.renderer) return false;\n\n if (this.imageTransition) {\n const mesh = this.imageTransition.getMesh();\n\n if (mesh) {\n if (value === 0) {\n gsap.to(mesh.rotation, {\n y: (-1 * Math.PI) / 2,\n duration: 1.2,\n delay: 1,\n ease: 'power2.out',\n });\n } else {\n gsap.to(mesh.rotation, {\n y: 0,\n duration: 1.2,\n delay: 1,\n ease: 'power2.out',\n });\n }\n }\n\n const isDone = await this.imageTransition.animate(\n this.loader.textures,\n value,\n value === 2 ? { x: 100, y: 0, z: 5 } : undefined,\n );\n this.targetProgress = value;\n return isDone;\n }\n\n return false;\n },\n\n updateProgress() {\n const progress1 = lerp(this.progress, this.targetProgress, 0.1);\n const pdiff = progress1 - this.progress;\n if (pdiff === 0) return;\n const p0 = this.progress % 1;\n const p1 = progress1 % 1;\n if ((pdiff > 0 && p1 < p0) || (pdiff < 0 && p0 < p1)) {\n console.log({ 'this.loader.textures': this.loader.textures });\n const i = Math.floor(progress1) % this.images.length;\n const j = (i + 1) % this.images.length;\n this.image1.setMap(this.loader.textures[i]);\n this.image2.setMap(this.loader.textures[j]);\n }\n this.progress = progress1;\n this.setImagesProgress(this.progress % 1);\n },\n\n setImagesProgress(progress: number) {\n this.image1.uStrength.value = progress;\n this.image2.uStrength.value = -1 + progress;\n },\n },\n});\n","/* eslint-disable */\n\n// Author: Felix Mariotto\n\n// Based on Lee Stemkoski's work who coded the core texture offsetting part :\n// http://stemkoski.github.io/Three.js/Texture-Animation.html\n\nimport * as THREE from 'three';\n\nfunction SpriteMixer() {\n\n\tvar actionSprites = []; // Will store every new actionSprite.\n\tvar listeners = []; // Will store the user callbacks to call upon loop, finished, etc..\n\n\n\n\tvar api = {\n\t\tactionSprites: actionSprites,\n\t\tupdate: update,\n\t\tActionSprite: ActionSprite,\n\t\tAction: Action,\n\t\taddEventListener: addEventListener\n\t};\n\n\n\n\t// It can be used to make SpriteMixer call a callback function\n\t// when an action is finished or looping. eventName argument can\n\t// be either \"finished\" or \"loop\".\n\tfunction addEventListener( eventName, callback ) {\n\t\tif ( eventName && callback ) {\n\t\t\tlisteners.push( { eventName, callback } );\n\t\t} else {\n\t\t\tthrow 'Error : an argument is missing';\n\t\t};\n\t};\n\n\n\t// Update every stored actionSprite if needed.\n\tfunction update( delta ) {\n\t\tactionSprites.forEach( (actionSprite)=> {\n\t\t\tif ( actionSprite.paused == false ) {\n\t\t\t\tupdateAction( actionSprite.currentAction, delta * 1000 );\n\t\t\t};\n\t\t});\n\t};\n\n\n\n\t// This offsets the texture to make the next frame of the animation appear.\n\tfunction offsetTexture( actionSprite ) {\n\t\tactionSprite.material.map.offset.x = actionSprite.getColumn() / actionSprite.tilesHoriz;\n\t\tactionSprite.material.map.offset.y = (actionSprite.tilesVert - actionSprite.getRow() -1 ) / actionSprite.tilesVert;\n\t};\n\n\n\n\t// This is called during the loop, it first check if the animation must\n\t// be updated, then increment actionSprite.currentTile, then call offsetTexture().\n\t// Various operations are made depending on clampWhenFinished and hideWhenFinished\n\t// options.\n\tfunction updateAction( action, milliSec ) {\n\n\t\taction.actionSprite.currentDisplayTime += milliSec;\n\n\t\twhile (action.actionSprite.currentDisplayTime > action.tileDisplayDuration) {\n\n\t\t\taction.actionSprite.currentDisplayTime -= action.tileDisplayDuration;\n\t\t\taction.actionSprite.currentTile = (action.actionSprite.currentTile + 1) ;\n\n\t\t\t// Restarts the animation if the last frame was reached at last call.\n\t\t\tif (action.actionSprite.currentTile > action.indexEnd) {\n\n\t\t\t\taction.actionSprite.currentTile = action.indexStart ;\n\n\t\t\t\t// Call the user callbacks on the event 'loop'\n\t\t\t\tif ( action.mustLoop == true ) {\n\n\t\t\t\t\tlisteners.forEach( (listener)=> {\n\t\t\t\t\t\tif ( listener.eventName == 'loop' ) {\n\t\t\t\t\t\t\tlistener.callback({\n\t\t\t\t\t\t\t\ttype:'loop',\n\t\t\t\t\t\t\t\taction: action\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t} else { // action must not loop\n\n\t\t\t\t\tif ( action.clampWhenFinished == true ) {\n\n\t\t\t\t\t\taction.actionSprite.paused = true ;\n\n\t\t\t\t\t\tif (action.hideWhenFinished == true) {\n\t\t\t\t\t\t\taction.actionSprite.visible = false ;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcallFinishedListeners( action );\n\n\t\t\t\t\t} else { // must restart the animation before to stop\n\n\t\t\t\t\t\taction.actionSprite.paused = true ;\n\n\t\t\t\t\t\tif (action.hideWhenFinished == true) {\n\t\t\t\t\t\t\taction.actionSprite.visible = false ;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Call updateAction() a last time after a frame duration,\n\t\t\t\t\t\t// even if the action is actually paused before, in order to restart\n\t\t\t\t\t\t// the animation.\n\t\t\t\t\t\tsetTimeout( ()=> {\n\t\t\t\t\t\t\tupdateAction( action, action.tileDisplayDuration );\n\t\t\t\t\t\t\tcallFinishedListeners( action );\n\t\t\t\t\t\t}, action.tileDisplayDuration);\n\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\n\n\t\t\toffsetTexture( action.actionSprite );\n\n\n\t\t\t// Call the user callbacks on the event 'finished'.\n\t\t\tfunction callFinishedListeners( action ) {\n\t\t\t\tlisteners.forEach( (listener)=> {\n\t\t\t\t\tif ( listener.eventName == 'finished' ) {\n\t\t\t\t\t\tlistener.callback({\n\t\t\t\t\t\t\ttype:'finished',\n\t\t\t\t\t\t\taction: action\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\t\t\t\t}, action.tileDisplayDuration );\n\t\t\t};\n\n\n\t\t};\n\n\t};\n\n\n\n\t// reveal the sprite and play the action only once\n\tfunction playOnce() {\n\t\tthis.mustLoop = false ;\n\t\tthis.actionSprite.currentAction = this ;\n\t\tthis.actionSprite.currentTile = this.indexStart ;\n\t\toffsetTexture( this.actionSprite );\n\t\tthis.actionSprite.paused = false ;\n\t\tthis.actionSprite.visible = true ;\n\t};\n\n\t// resume the action if it was paused\n\tfunction resume() {\n\t\t// this is in case setFrame was used to set a frame outside of the\n\t\t// animation range, which would lead to bugs.\n\t\tif ( this.currentTile > this.indexStart &&\n\t\t\t this.currentTile < this.indexEnd ) {\n\t\t\tthis.currentTile = this.indexStart;\n\t\t};\n\t\tthis.actionSprite.paused = false ;\n\t\tthis.actionSprite.visible = true ;\n\t};\n\n\t// reveal the sprite and play it in a loop\n\tfunction playLoop() {\n\t\tthis.mustLoop = true ;\n\t\tthis.actionSprite.currentAction = this ;\n\t\tthis.actionSprite.currentTile = this.indexStart ;\n\t\toffsetTexture( this.actionSprite );\n\t\tthis.actionSprite.paused = false ;\n\t\tthis.actionSprite.visible = true ;\n\t};\n\n\t// pause the action when it reach the last frame\n\tfunction pauseNextEnd() {\n\t\tthis.mustLoop = false;\n\t};\n\n\t// pause the action on the current frame\n\tfunction pause() {\n\t\tthis.actionSprite.paused = true ;\n\t};\n\n\t// pause and reset the action\n\tfunction stop() {\n\t\tthis.actionSprite.currentDisplayTime = 0;\n\t\tthis.actionSprite.currentTile = this.indexStart;\n\t\tthis.actionSprite.paused = true ;\n\t\tif (this.hideWhenFinished == true) {\n\t\t\tthis.actionSprite.visible = false ;\n\t\t};\n\t\toffsetTexture( this.actionSprite );\n\t};\n\n\t// Set manually a frame of the animation. Frame indexing starts at 0.\n\tfunction setFrame( frameID ) {\n\t\tthis.paused = true ;\n\t\tthis.currentTile = frameID;\n\t\toffsetTexture( this );\n\t};\n\n\t// returns the row of the current tile.\n\tfunction getRow() {\n\t\treturn Math.floor(this.currentTile / this.tilesHoriz);\n\t};\n\n\t// returns the column of the current tile.\n\tfunction getColumn() {\n\t\treturn this.currentTile % this.tilesHoriz;\n\t};\n\n\n\n\n\n\n\t/*\n\t\tSpriteMixer.ActionSprite() returns an extended THREE.Sprite.\n\t\tAll the parameters necessary for the animation are stored inside,\n\t\tbut you can still use it as any THREE.Sprite, like scale it etc..\n\n\t\tActionSprite(texture:THREE.Texture, tilesHoriz:integer, tilesVert:integer)\n\t\t\t- texture : texture containing all the frames in a grid.\n\t\t\t- tilesHoriz : number of frames on the horizontal direction.\n\t\t\t- tilesVert : number of frames on the vertical direction.\n\t*/\n\tfunction ActionSprite( texture, tilesHoriz, tilesVert ) {\n\n\t\ttexture.wrapS = texture.wrapT = THREE.RepeatWrapping;\n\t\ttexture.repeat.set( 1/tilesHoriz, 1/tilesVert );\n\n\t// \tlet spriteMaterial = new THREE.SpriteMaterial({\n\t// \t\tmap:texture,\n // color:0xffffff,\n // transparent: true,\n // alphaTest: 0.1,\n // // sizeAttenuation: false\n // });\n\n\t// \tlet actionSprite = new THREE.Sprite(spriteMaterial);\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n side: THREE.DoubleSide,\n transparent: true,\n });\n\n const geometry = new THREE.PlaneGeometry(2, 2, 2, 2);\n const actionSprite = new THREE.Mesh(geometry, material);\n\n actionSprite.isIndexedSprite = true ;\n\n actionSprite.tilesHoriz = tilesHoriz ;\n actionSprite.tilesVert = tilesVert ;\n actionSprite.tiles = (tilesHoriz * tilesVert) ;\n actionSprite.currentDisplayTime = 0 ;\n actionSprite.currentTile = 0 ;\n actionSprite.paused = true ;\n actionSprite.currentAction;\n\n actionSprite.setFrame = setFrame ;\n actionSprite.getRow = getRow;\n actionSprite.getColumn = getColumn;\n\n offsetTexture( actionSprite ) ;\n\n actionSprites.push( actionSprite );\n\n return actionSprite;\n };\n\n\n\n\n\n\t/*\n\t\tSpriteMixer.Action returns an object containing the informations related to a\n\t\tspecific sequence in an actionSprite. For instance, if the actionSprite\n\t\tcontains 20 tiles, an Action could start at tile 5 and finish at tile 8.\n\n\t\tAction( actionSprite:ActionSprite, indexStart:integer, indexEnd:integer, tileDisplayDuration:integer )\n\t\t\t- actionSprite is a SpriteMixer.ActionSprite, containing a loaded texture with tiles\n\t\t\t- indexStart is the starting tile of the animation, index starts at 0.\n\t\t\t- indexEnd is the ending tile of the animation\n\t\t\t- tileDisplayDuration is the duration of ONE FRAME in the animation\n\t*/\n\n\tfunction Action( actionSprite, indexStart, indexEnd, tileDisplayDuration ) {\n\n\t\tif ( !actionSprite.isIndexedSprite ) {\n\t\t\tthrow 'Error : \"texture\" argument must be an indexedTexture.' ;\n\t\t\treturn\n\t\t};\n\n\n\t\treturn {\n\t\t\ttype: \"spriteAction\",\n\t\t\tplayOnce,\n\t\t\tplayLoop,\n\t\t\tresume,\n\t\t\tpause,\n\t\t\tpauseNextEnd,\n\t\t\tstop,\n\t\t\tclampWhenFinished: true,\n\t\t\thideWhenFinished: false,\n\t\t\tmustLoop: true,\n\t\t\tindexStart,\n\t\t\tindexEnd,\n\t\t\ttileDisplayDuration,\n\t\t\tactionSprite\n\t\t};\n\n\t};\n\n\n\n\n\n\treturn api;\n\n};\n\nexport default SpriteMixer;\n","import { defineComponent } from 'vue';\nimport gsap from 'gsap';\n\nimport {\n Vector3,\n Clock,\n MeshBasicMaterial,\n PlaneGeometry,\n Mesh,\n} from 'three';\n\nimport { Object3D, useTextures } from 'troisjs';\n\n// @ts-ignore\nimport SpriteMixer from '@/vendor/SpriteMixer';\n\nexport default defineComponent({\n name: 'Sprite',\n extends: Object3D,\n props: {\n image: String,\n position: Object as () => Vector3,\n scale: Object as () => Vector3,\n rotation: Object as () => Vector3,\n tile: Object as () => { x: number, y: number },\n },\n\n async setup(props) {\n const loader = useTextures();\n const texture = { src: props.image || '' };\n\n await new Promise(resolve => {\n loader.loadTextures([texture], () => {\n resolve(true);\n });\n });\n\n return { loader };\n },\n\n data() {\n return {\n mesh: null as null | Mesh,\n sprite: null as null | Mesh,\n };\n },\n\n mounted() {\n if (this.renderer && this.tile) {\n const spriteMixer = SpriteMixer();\n const clock = new Clock();\n\n // @ts-ignore\n const actionSprite = spriteMixer.ActionSprite(this.loader.textures[0], this.tile.x, this.tile.y);\n const action1 = spriteMixer.Action(actionSprite, 0, this.tile.x * this.tile.y, this.tile.x * this.tile.y);\n action1?.playLoop();\n // actionSprite.mesh.userData.component = this;\n // mesh has to be injected before lookAt\n this.initObject3D(actionSprite);\n // hide mesh for reveal animation\n actionSprite.material.opacity = 0;\n this.mesh = actionSprite;\n\n // @ts-ignore\n gsap.to(this.mesh.material, {\n opacity: 1,\n duration: 0.6,\n delay: 2,\n });\n\n this.renderer.renderer.setAnimationLoop(() => {\n const delta = clock.getDelta();\n spriteMixer.update(delta);\n });\n }\n },\n\n unmounted() {\n if (this.renderer) {\n this.renderer.renderer.setAnimationLoop(null);\n }\n }\n});\n","\n\n\n","\nimport { defineComponent, PropType, ref } from 'vue';\nimport { Group } from 'troisjs';\n\ninterface PointerEnterEvent extends MouseEvent {\n over: boolean;\n}\n\nexport default defineComponent({\n name: 'EntrancePoint',\n\n props: {\n // hide: { type: Function, required: true },\n renderer: Object,\n onDoorClick: Function as PropType<(e: MouseEvent, index: number) => Promise>,\n onPointOver: Function as PropType<(e: PointerEnterEvent, index: number) => void>,\n },\n\n setup() {\n const doorsRef = ref();\n return { doors: doorsRef };\n },\n\n unmounted() {\n if (this.renderer) {\n const pointer = this.renderer.$pointer;\n pointer.intersectObjects = [];\n }\n },\n\n mounted() {\n if (!this.renderer || !this.doors) return;\n console.log('o3d', this.doors);\n const doors = this.doors.o3d.children;\n const pointer = this.renderer.$pointer;\n pointer.intersectObjects = doors;\n },\n\n methods: {\n handleClick(event: MouseEvent, index: number) {\n if (this.onDoorClick) {\n this.onDoorClick(event, index);\n }\n },\n handlePointOver(event: PointerEnterEvent, index: number) {\n if (this.onPointOver) {\n this.onPointOver(event, index);\n }\n }\n },\n});\n","import { render } from \"./EntrancePoint.vue?vue&type=template&id=aa507b72\"\nimport script from \"./EntrancePoint.vue?vue&type=script&lang=ts\"\nexport * from \"./EntrancePoint.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","","import { render } from \"./language_black_24dp.svg?vue&type=template&id=d144793e\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./close_black_24dp.svg?vue&type=template&id=3ecd8716\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport { defineComponent, ref } from 'vue';\nimport gsap from 'gsap';\n\nexport default defineComponent({\n name: 'Text',\n props: {\n text: { type: String, required: true },\n },\n\n setup() {\n const container = ref();\n return { container };\n },\n\n data() {\n const letters = this.text.split('');\n const cachedText = this.text;\n return { letters, cachedText, isAnimationDone: true };\n },\n\n watch: {\n async text() {\n if (!this.container) return;\n console.log('container', this.container);\n\n if (this.text) {\n const letters = [...this.container.querySelectorAll('.letter')];\n letters.reverse();\n await gsap.to(letters, {\n opacity: 0,\n y: 20,\n duration: 0.3,\n ease: 'circ.out',\n stagger: 0.05,\n });\n\n this.isAnimationDone = false;\n this.letters = this.text.split('');\n\n setTimeout(() => {\n this.isAnimationDone = true;\n }, 500);\n }\n },\n },\n\n computed: {\n splitedList(): string[] {\n const letters = this.text.split('');\n return letters;\n }\n },\n\n methods: {\n beforeEnter (el: Element) {\n const letters = el.querySelectorAll('.letter');\n gsap.set(letters, { opacity: 0, y: 20 });\n },\n\n enter(el: Element) {\n const letters = el.querySelectorAll('.letter');\n gsap.to(letters, {\n opacity: 1,\n y: 0,\n duration: 0.3,\n ease: 'circ.in',\n stagger: 0.05,\n delay: 0.5,\n });\n },\n\n leave(el: HTMLElement, done: () => void) {\n console.log({ el, done });\n const { index } = el.dataset;\n const total = this.letters.length;\n gsap.to(el, {\n opacity: 0,\n y: 20,\n duration: 0.3,\n ease: 'circ.out',\n delay: (total - Number(index)) * 0.05,\n onComplete: done,\n });\n },\n },\n});\n","import { render } from \"./Text.vue?vue&type=template&id=33f6a3ac&scoped=true\"\nimport script from \"./Text.vue?vue&type=script&lang=ts\"\nexport * from \"./Text.vue?vue&type=script&lang=ts\"\n\nimport \"./Text.vue?vue&type=style&index=0&id=33f6a3ac&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-33f6a3ac\"\n\nexport default script","\nimport { defineComponent, PropType } from 'vue';\nimport gsap, { Back } from 'gsap';\nimport SVGGlobe from '@/svgs/language_black_24dp.svg';\nimport SVGClose from '@/svgs/close_black_24dp.svg';\nimport { Scene } from '@/types';\nimport Text from './Text.vue';\n\nexport default defineComponent({\n name: 'ZoneInfo',\n components: { SVGGlobe, SVGClose, Text },\n data(): { isScenesVisible: boolean } {\n return { isScenesVisible: false };\n },\n props: {\n onZoneClick: Function as PropType<(e: MouseEvent, index: number) => Promise>,\n },\n\n methods: {\n onButtonClick() {\n this.isScenesVisible = !this.isScenesVisible;\n },\n\n onSceneClick(event: MouseEvent, index: number) {\n if (this.onZoneClick) {\n this.onZoneClick(event, index);\n }\n },\n\n beforeEnter (el: Element) {\n gsap.set(el, { opacity: 0, y: 20 });\n },\n\n enter(el: Element) {\n // @ts-ignore\n const { index } = el.dataset;\n gsap.to(el, {\n opacity: 1,\n y: 0,\n duration: 0.3,\n ease: Back.easeOut.config(1.7),\n delay: Number(index) * 0.1,\n });\n },\n\n leave(el: Element, done: () => void) {\n // @ts-ignore\n const { index } = el.dataset;\n const total = this.scenes.length;\n gsap.to(el, {\n opacity: 0,\n y: 20,\n duration: 0.26,\n ease: Back.easeIn.config(1.7),\n delay: (total - Number(index)) * 0.1,\n onComplete: () => {\n setTimeout(() => {\n done();\n }, 100);\n },\n });\n },\n },\n\n computed: {\n scene(): Scene {\n return this.$store.getters.currentScene;\n },\n scenes(): Scene[] {\n return this.$store.state.scenes;\n },\n index(): number {\n return this.$store.state.currentSceneIndex;\n },\n },\n});\n","import { render } from \"./ZoneInfo.vue?vue&type=template&id=2a0e94bc&scoped=true\"\nimport script from \"./ZoneInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ZoneInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./ZoneInfo.vue?vue&type=style&index=0&id=2a0e94bc&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-2a0e94bc\"\n\nexport default script","\n\n\n\n\n\n \n","","import { render } from \"./line.svg?vue&type=template&id=7efeb171\"\nconst script = {}\nscript.render = render\n\nexport default script","\nimport { defineComponent, ref } from 'vue';\nimport SVGLine from '@/svgs/line.svg';\n\nexport default defineComponent({\n name: 'Pointer',\n\n components: { SVGLine },\n\n props: {\n active: Boolean,\n name: String,\n },\n\n setup() {\n return {\n pointer: ref(),\n };\n },\n\n data() {\n return {\n nameCached: this.name,\n isActive: this.active,\n };\n },\n\n watch: {\n name() {\n if (this.name) {\n this.nameCached = this.name;\n } else if (!this.nameCached) {\n this.nameCached = this.name;\n } else {\n setTimeout(() => {\n this.nameCached = this.name;\n }, 500);\n }\n },\n }\n});\n","import { render } from \"./Pointer.vue?vue&type=template&id=39883e6d&scoped=true\"\nimport script from \"./Pointer.vue?vue&type=script&lang=ts\"\nexport * from \"./Pointer.vue?vue&type=script&lang=ts\"\n\nimport \"./Pointer.vue?vue&type=style&index=0&id=39883e6d&lang=postcss\"\nimport \"./Pointer.vue?vue&type=style&index=1&id=39883e6d&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-39883e6d\"\n\nexport default script","\n\n\n\n\n","","import { render } from \"./back.svg?vue&type=template&id=d1715c36\"\nconst script = {}\nscript.render = render\n\nexport default script","\nimport { defineComponent, PropType } from 'vue';\nimport Button from '@/components/Button.vue';\nimport SVGBack from '@/svgs/back.svg';\n\nexport default defineComponent({\n name: 'Back',\n props: { onClick: Function as PropType<(payload: MouseEvent) => void> },\n components: { Button, SVGBack },\n});\n","import { render } from \"./Back.vue?vue&type=template&id=3db98c94&scoped=true\"\nimport script from \"./Back.vue?vue&type=script&lang=ts\"\nexport * from \"./Back.vue?vue&type=script&lang=ts\"\n\nimport \"./Back.vue?vue&type=style&index=0&id=3db98c94&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-3db98c94\"\n\nexport default script","\n\n\n\n\n","","import { render } from \"./guide.svg?vue&type=template&id=6cfdc4f7\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./guide-line1.svg?vue&type=template&id=f274aee0\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./guide-line2.svg?vue&type=template&id=dc3b8302\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./guide-line4.svg?vue&type=template&id=0bb5add6\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./guide-line5.svg?vue&type=template&id=2d7b91fc\"\nconst script = {}\nscript.render = render\n\nexport default script","","import { render } from \"./guide-line6.svg?vue&type=template&id=5addb3b8\"\nconst script = {}\nscript.render = render\n\nexport default script","\nimport { defineComponent, PropType } from 'vue';\nimport SVGGuide from '@/svgs/guide.svg';\nimport SVGLine1 from '@/svgs/guide-line1.svg';\nimport SVGLine2 from '@/svgs/guide-line2.svg';\n// import SVGLine3 from '@/svgs/guide-line3.svg';\nimport SVGLine4 from '@/svgs/guide-line4.svg';\nimport SVGLine5 from '@/svgs/guide-line5.svg';\nimport SVGLine6 from '@/svgs/guide-line6.svg';\nimport Button from './Button.vue';\n\nexport default defineComponent({\n name: 'Guide',\n components: {\n SVGGuide,\n Button,\n SVGLine1,\n SVGLine2,\n // SVGLine3,\n SVGLine4,\n SVGLine5,\n SVGLine6,\n },\n props: {\n onClick: Function as PropType<(payload: MouseEvent) => void>,\n isActive: Boolean,\n },\n methods: {\n // onClick(index: number) {},\n }\n});\n","import { render } from \"./Guide.vue?vue&type=template&id=24bf2d26&scoped=true\"\nimport script from \"./Guide.vue?vue&type=script&lang=ts\"\nexport * from \"./Guide.vue?vue&type=script&lang=ts\"\n\nimport \"./Guide.vue?vue&type=style&index=0&id=24bf2d26&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-24bf2d26\"\n\nexport default script","\n\n\n","\nimport { defineComponent, ref } from 'vue';\nimport { Renderer, Mesh } from 'troisjs';\nimport { Vector3 } from 'three';\nimport gsap from 'gsap';\nimport { Extra } from '@/types';\n\nexport default defineComponent({\n name: 'ExtraObject',\n\n props: {\n data: { required: true, type: Object as () => Extra },\n renderer: { type: Object as () => typeof Renderer },\n },\n\n setup() {\n const meshRef = ref();\n return { mesh: meshRef };\n },\n\n async mounted() {\n if (this.mesh) {\n this.mesh.mesh.renderOrder = 99;\n await gsap.to(this.mesh.mesh.material, {\n opacity: 1,\n duration: 1,\n ease: 'sine.inOut',\n delay: 2,\n });\n }\n\n this.animate();\n },\n\n methods: {\n animate() {\n if (!this.mesh) return;\n const { x, y, z } = this.mesh.position;\n switch (this.data.type) {\n case 'drift':\n gsap.to(this.mesh.mesh.position, {\n x: x + 10,\n y: y - 100,\n z: z - 10,\n repeat: -1,\n duration: this.data.duration,\n yoyo: true,\n ease: 'sine.inOut',\n });\n\n break;\n\n case 'fade':\n gsap.to(this.mesh.mesh.material, {\n opacity: 0,\n repeat: -1,\n duration: this.data.duration,\n delay: this.data.delay || 0,\n yoyo: true,\n ease: 'sine.inOut',\n });\n\n break;\n default:\n break;\n }\n },\n },\n\n computed: {\n lookAt(): Vector3 | null {\n return this.renderer ? this.renderer.camera.position : null;\n }\n },\n});\n","import { render } from \"./ExtraObject.vue?vue&type=template&id=d7702924\"\nimport script from \"./ExtraObject.vue?vue&type=script&lang=ts\"\nexport * from \"./ExtraObject.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\nimport { defineComponent, ref } from 'vue';\nimport { useStore } from 'vuex';\nimport { useRoute } from 'vue-router';\nimport { Vector3, Mesh } from 'three';\nimport { Renderer, Group } from 'troisjs';\nimport gsap, { Bounce, Power4 } from 'gsap';\nimport Menu from '@/components/Menu.vue';\nimport Navigation from '@/components/Navigation/Navigation.vue';\nimport Modal from '@/components/Modal/Modal.vue';\nimport InfoBox from '@/components/InfoBox.vue';\nimport EventFeed from '@/components/EventFeed.vue';\nimport Hotspots from '@/components/Hotspots/Hotspots.vue';\nimport Tiles from '@/components/Tiles';\nimport Sprite from '@/components/Sprite';\nimport EntrancePoint from '@/components/EntrancePoint.vue';\nimport ZoneInfo from '@/components/ZoneInfo/ZoneInfo.vue';\nimport Pointer from '@/components/Pointer.vue';\nimport BackButton from '@/components/Back.vue';\nimport Guide from '@/components/Guide.vue';\nimport ExtraObject from '@/components/ExtraObject.vue';\nimport { Scene } from '@/types';\nimport router from '@/router';\n\ninterface PointerEnterEvent extends MouseEvent {\n over: boolean;\n}\n\nexport default defineComponent({\n name: 'Home',\n components: {\n Menu,\n Navigation,\n Hotspots,\n Modal,\n EventFeed,\n Tiles,\n Sprite,\n InfoBox,\n ZoneInfo,\n Pointer,\n BackButton,\n Guide,\n EntrancePoint,\n ExtraObject,\n },\n\n async setup() {\n const route = useRoute();\n const canvasRef = ref();\n const tilesRef = ref();\n const navigationRef = ref();\n const rendererRef = ref();\n const hotspotsRef = ref();\n const spritesRef = ref();\n const entranceRef = ref();\n const threeRef = ref();\n const controlsRef = ref();\n const pointerRef = ref();\n const store = useStore();\n const scenes: Scene[] = await store.dispatch('getScenes');\n let isEntrance = true;\n\n await store.dispatch('getHotspotInformation');\n // await store.dispatch('getLive');\n\n if (route.params.slug || route.params.questionSlug) {\n const sceneIndex = route.params.questionSlug ? scenes.findIndex(scene => (\n !!scene.hotspots.find(hotspot => hotspot.slug === route.params.questionSlug)\n )) : scenes.findIndex(scene => scene.slug === route.params.slug);\n\n if (sceneIndex > -1) {\n isEntrance = false;\n await store.dispatch('setSceneIndex', sceneIndex);\n }\n }\n\n return {\n isScaling: false,\n isEntranceDefault: isEntrance,\n tiles: tilesRef,\n navigation: navigationRef,\n pointer: pointerRef,\n renderer: rendererRef,\n canvas: canvasRef,\n hotspots: hotspotsRef,\n sprites: spritesRef,\n entrance: entranceRef,\n controls: controlsRef as any,\n three: threeRef as any,\n };\n },\n\n data() {\n return {\n isFeedOpened: false,\n isInfoBoxActive: false,\n isGuideActive: false,\n isMouseDown: false,\n isTileAnimating: false,\n isTouchMoving: false,\n isEntrance: !!this.isEntranceDefault,\n infoId: 0,\n pointerName: '',\n moveCache: { x: 0, y: 0 },\n xMove: 0,\n };\n },\n\n mounted() {\n if (this.renderer) {\n this.three = this.renderer.three;\n this.controls = this.three.cameraCtrl;\n this.canvas = this.renderer.canvas as HTMLCanvasElement;\n\n if (this.$device.mobile) {\n this.controls.domElement.addEventListener('touchstart', this.onTouchDown);\n this.controls.domElement.addEventListener('touchmove', this.onTouchMove);\n this.controls.domElement.addEventListener('touchend', this.onTouchEnd);\n } else {\n this.canvas.addEventListener('pointerdown', this.onMouseDown);\n this.canvas.addEventListener('pointerup', this.onMouseUp);\n }\n }\n },\n\n watch: {\n isTextureReady(): void {\n if (this.isTextureReady) {\n // if the url contains info slug, open the modal\n if (this.$route.params.questionSlug && this.currentScene) {\n const hotspot = this.currentScene.hotspots.find(item => (\n item.slug === this.$route.params.questionSlug\n ));\n\n if (hotspot) {\n setTimeout(() => {\n this.infoId = hotspot.id;\n this.isInfoBoxActive = true;\n }, 500);\n }\n }\n }\n },\n\n $route (to, from) {\n if (to.path !== from.path) {\n this.isTouchMoving = false;\n }\n },\n },\n\n computed: {\n currentScene(): Scene {\n return this.$store.getters.currentScene;\n },\n isTextureReady() {\n return this.$store.state.isTextureReady;\n },\n },\n\n methods: {\n onTouchMove() {\n if (!this.isTouchMoving) {\n this.isTouchMoving = true;\n }\n },\n\n onTouchEnd() {\n if (this.isTouchMoving) {\n this.isTouchMoving = false;\n }\n\n if (this.renderer) {\n this.renderer.$pointer.intersectObjects.forEach((item: any) => {\n if (item.userData.over) {\n // eslint-disable-next-line no-param-reassign\n item.userData.over = false;\n }\n });\n }\n },\n\n onTouchDown(event: TouchEvent) {\n if (!this.renderer || !this.$device.mobile) return;\n console.log('touch down', this.renderer.$pointer);\n this.isTouchMoving = false;\n const mouse = { x: 0, y: 0 };\n mouse.x = +(event.targetTouches[0].pageX / window.innerWidth) * 2 + -1;\n mouse.y = -(event.targetTouches[0].pageY / window.innerHeight) * 2 + 1;\n this.renderer.$pointer.intersect();\n },\n\n onMouseUp() {\n setTimeout(() => {\n this.isMouseDown = false;\n }, 100);\n\n if (this.canvas) {\n this.canvas.removeEventListener('pointermove', this.onMouseMove);\n this.moveCache = { x: 0, y: 0 };\n }\n },\n\n onMouseDown() {\n this.pointerName = '';\n },\n\n onMouseMove(event: MouseEvent) {\n this.xMove = event.offsetX;\n if (!this.moveCache.x) {\n this.moveCache.x = event.offsetX;\n } else if (Math.abs(this.moveCache.x - event.offsetX) > 10) {\n if (!this.isMouseDown) {\n this.isMouseDown = true;\n }\n }\n },\n\n onPointerLeave(event: any) {\n document.body.style.cursor = '';\n this.pointerName = '';\n },\n\n onPointerClick(event: any) {\n console.log('click');\n if (this.isMouseDown || this.isEntrance) return;\n const { slug, id } = event.component;\n this.infoId = id;\n this.isInfoBoxActive = true;\n this.isTouchMoving = false;\n // eslint-disable-next-line no-param-reassign\n // event.over = false;\n\n if (this.currentScene) {\n router.push(`/${this.currentScene.slug}/${slug}`);\n }\n },\n\n onPointerOver(event: any) {\n console.log('over');\n // if (this.$device.mobile) {\n // this.onPointerClick(event);\n // }\n },\n\n onPointerEnter(event: any) {\n console.log('enter', this.isTouchMoving);\n if (this.isScaling || !this.renderer || this.isEntrance) return;\n // eslint-disable-next-line no-param-reassign\n // event.over = false;\n\n if (this.$device.mobile) {\n if (!this.isTouchMoving) {\n this.onPointerClick(event);\n }\n return;\n }\n\n this.isScaling = true;\n\n const mesh = event.intersect.object;\n const { name } = event.component;\n const { scale } = mesh;\n const vector = new Vector3();\n const duration = 1;\n document.body.style.cursor = `url(\"${this.$baseUrl}/images/magnify.png\"), auto`;\n\n if (this.pointer) {\n mesh.updateWorldMatrix(true, false);\n mesh.getWorldPosition(vector);\n vector.project(this.renderer.camera);\n const x = (vector.x * 0.5 + 0.5) * this.renderer.size.width;\n const y = (vector.y * -0.5 + 0.5) * this.renderer.size.height;\n this.pointerName = name;\n gsap.set(this.pointer.pointer, { x: x + 120, y: y - 68 });\n }\n\n gsap.to(event.intersect.object.scale, {\n duration: duration / 4,\n x: scale.x * 1.2,\n y: scale.y * 1.2,\n ease: 'power2.out',\n });\n\n gsap.to(event.intersect.object.scale, {\n duration: duration / 2,\n x: scale.x,\n y: scale.y,\n ease: Bounce.easeOut,\n delay: duration / 4,\n onComplete: () => { this.isScaling = false; }\n });\n },\n\n onPointerEnterEntrance(e: PointerEnterEvent, index: number) {\n document.body.style.cursor = e.over ? `url(\"${this.$baseUrl}/images/magnify.png\"), auto` : '';\n if (this.$device.mobile && !this.isTouchMoving) {\n this.onEntranceClick(e, index);\n }\n },\n\n onGuideClick() {\n this.isGuideActive = !this.isGuideActive;\n },\n\n onInfoBoxClose() {\n this.infoId = 0;\n this.isInfoBoxActive = false;\n router.push(`/${this.currentScene.slug}`);\n },\n\n onMenuClick() {\n this.isFeedOpened = true;\n },\n\n onMenuClose() {\n this.isFeedOpened = false;\n },\n\n async onBackClick() {\n if (!this.renderer || !this.renderer.camera || !this.tiles) { return; }\n await this.$store.dispatch('setSceneIndex', -1);\n router.push('/');\n this.isEntrance = true;\n\n gsap.to(this.renderer.camera.position, {\n x: 0,\n y: 0,\n z: 5,\n duration: 2,\n ease: Power4.easeOut,\n });\n\n this.isTileAnimating = true;\n await this.tiles.handleClick(null, -1);\n this.isTileAnimating = false;\n },\n\n async onZoneClick(e: MouseEvent, index: number) {\n if (!this.tiles) { return; }\n\n if (this.navigation) {\n this.navigation.close();\n }\n\n if (this.hotspots) {\n const meshes = this.hotspots.hotspots.o3d.children as Mesh[];\n const promises: gsap.core.Tween[] = [];\n const value = { x: 0, y: 0, z: 0 };\n\n meshes.forEach(mesh => {\n promises.push(gsap.to(mesh.scale, { ...value, duration: 0.4 }));\n });\n\n await Promise.all(promises);\n }\n\n await this.$store.dispatch('setSceneIndex', index);\n\n if (this.currentScene) {\n router.push(`/${this.currentScene.slug}`);\n }\n\n this.isTileAnimating = true;\n await this.tiles.handleClick(e, index);\n this.isTileAnimating = false;\n },\n\n async onEntranceClick(e: MouseEvent, index: number) {\n if (this.isMouseDown || !this.tiles) return;\n this.isEntrance = false;\n await this.$store.dispatch('setSceneIndex', index);\n document.body.style.cursor = '';\n\n if (this.currentScene) {\n router.push(`/${this.currentScene.slug}`);\n }\n\n this.isTileAnimating = true;\n await this.tiles.handleClick(e, index);\n this.isTileAnimating = false;\n },\n }\n});\n","import { render } from \"./Home.vue?vue&type=template&id=da642466&scoped=true\"\nimport script from \"./Home.vue?vue&type=script&lang=ts\"\nexport * from \"./Home.vue?vue&type=script&lang=ts\"\n\nimport \"./Home.vue?vue&type=style&index=0&id=da642466&lang=postcss\"\nimport \"./Home.vue?vue&type=style&index=1&id=da642466&lang=postcss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-da642466\"\n\nexport default script","\nimport { defineComponent, ref, onErrorCaptured } from 'vue';\nimport Loader from '@/components/Loader.vue';\nimport modalStore from '@/components/Modal/store';\nimport Home from './Home.vue';\n\nexport default defineComponent({\n name: 'Home Index',\n components: {\n Home,\n Loader,\n },\n\n setup () {\n const error = ref(null);\n onErrorCaptured(e => {\n // @ts-ignore\n error.value = e;\n return true;\n });\n return { error };\n },\n\n mounted() {\n // this.intro();\n },\n\n watch: {\n isTextureReady() {\n if (this.isTextureReady) {\n // const introStatus = readCookie.getItem('intro');\n const introStatus = localStorage.getItem('intro');\n\n if (introStatus !== 'true') {\n this.intro();\n }\n }\n }\n },\n\n methods: {\n intro() {\n localStorage.setItem('intro', 'true');\n // readCookie.setItem({\n // value: 'true',\n // key: 'intro',\n // path: '/',\n // });\n\n modalStore.show({\n width: window.innerWidth * 0.925,\n height: window.innerHeight * 0.925,\n videoIframeId: 'QK82KXtHAjI',\n noHead: true,\n });\n }\n },\n\n computed: {\n isTextureReady() {\n return this.$store.state.isTextureReady;\n },\n },\n});\n","import { render } from \"./index.vue?vue&type=template&id=53b77d98&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=53b77d98&scoped=true&lang=postcss\"\nscript.render = render\nscript.__scopeId = \"data-v-53b77d98\"\n\nexport default script","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';\nimport { BASE_URL } from '@/constants';\nimport Home from '../views/Home/index.vue';\n\nconst routes: Array = [\n {\n path: '/',\n component: Home,\n name: 'Home',\n children: [\n {\n path: ':slug',\n component: Home,\n children: [\n {\n path: ':questionSlug',\n component: Home,\n },\n ]\n },\n ]\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(`${BASE_URL}/`),\n routes,\n});\n\nexport default router;\n","import { createStore } from 'vuex';\nimport axios from 'axios';\nimport dayjs from 'dayjs';\nimport { Vector3 } from 'three';\nimport { BASE_URL } from '@/constants';\n\nimport {\n HotspotInformation,\n Scene,\n Events,\n Live,\n LiveData,\n} from '@/types';\n\nexport type State = {\n hotspotInformation: HotspotInformation[];\n scenes: Scene[];\n live: Live | null;\n events: Events[] | null;\n currentSceneIndex: number;\n isTextureReady: boolean;\n loadProgress: number;\n readyState: { [key: string]: boolean } | Record;\n}\n\nconst SET_HOTSPOT_INFORMATION = 'SET_HOTSPOT_INFORMATION';\nconst SET_EVENTS = 'SET_EVENTS';\nconst SET_SCENES = 'SET_SCENES';\nconst SET_CURRENT_SCENE_INDEX = 'SET_CURRENT_SCENE_INDEX';\nconst SET_READY_STATE = 'SET_READY_STATE';\nconst SET_TEXTURE_STATE = 'SET_TEXTURE_STATE';\nconst SET_LOAD_PROGRESS = 'SET_LOAD_PROGRESS';\nconst SET_LIVE = 'SET_LIVE';\nconst SET_LIVE_STATE = 'SET_LIVE_STATE';\n\nconst getLiveState = (live: LiveData[]) => {\n if (!live) return null;\n let current: LiveData | null = null;\n\n live.forEach(item => {\n const date = dayjs.tz(new Date(), 'Europe/London');\n const startDate = dayjs.tz(item.startDate, 'Europe/London');\n const endDate = dayjs.tz(item.endDate, 'Europe/London');\n\n if (date.isBetween(startDate, endDate)) {\n current = item;\n }\n });\n\n return current;\n};\n\nconst createEventsData = (events: Events[]) => {\n const ondemand: Events[] = [];\n const upcoming: Events[] = [];\n events.forEach(item => {\n if (dayjs(item.endDate).isBefore(new Date())) {\n ondemand.push(item);\n } else {\n upcoming.push(item);\n }\n });\n return { ondemand, upcoming };\n};\n\nconst vectorise = (data: { x: number, y: number, z: number }) => new Vector3(\n data.x,\n data.y,\n data.z,\n);\n\nexport default createStore({\n state: {\n hotspotInformation: [],\n scenes: [],\n events: null,\n live: null,\n currentSceneIndex: -1,\n loadProgress: 0,\n isTextureReady: false,\n readyState: {},\n },\n\n mutations: {\n [SET_HOTSPOT_INFORMATION](state, information: HotspotInformation[]) {\n state.hotspotInformation = information;\n },\n\n [SET_SCENES](state, scenes: Scene[]) {\n const modifiedScenes = scenes.map(scene => ({\n ...scene,\n sprites: scene.sprites ? scene.sprites.map(sprite => {\n const position = vectorise(sprite.position);\n const scale = !sprite.scale ? new Vector3(\n ((500 * position.length()) / 2500),\n ((500 * position.length()) / 2500),\n 1,\n ) : sprite.scale;\n return { ...sprite, position, scale };\n }) : undefined,\n hotspots: scene.hotspots.map(hotspot => {\n const position = vectorise(hotspot.position);\n const scale = new Vector3(\n ((400 * position.length()) / 5000),\n ((400 * position.length()) / 5000),\n 1,\n );\n return { ...hotspot, position, scale };\n })\n }));\n state.scenes = modifiedScenes;\n },\n\n [SET_CURRENT_SCENE_INDEX](state, index) {\n state.currentSceneIndex = index;\n },\n\n [SET_EVENTS](state, events: Events[]) {\n const eventsWithDate = events.map(item => ({\n ...item,\n startDateFormat: dayjs.tz(item.startDate, 'Europe/London').format('dddd DD MMM YYYY HH:mm'),\n endDateFormat: dayjs.tz(item.endDate, 'Europe/London').format('dddd DD MMM YYYY HH:mm'),\n endTimeFormat: dayjs.tz(item.endDate, 'Europe/London').format('HH:mm'),\n }));\n state.events = eventsWithDate;\n },\n\n [SET_LIVE](state, { data, interval }) {\n const current = getLiveState(data);\n state.live = {\n data,\n current,\n interval,\n isActive: !!current,\n };\n },\n\n [SET_LIVE_STATE](state, current) {\n if (state.live) {\n state.live.current = current;\n state.live.isActive = !!current;\n }\n },\n\n [SET_LOAD_PROGRESS](state, progress) {\n state.loadProgress = progress;\n },\n\n [SET_TEXTURE_STATE](state, condition) {\n state.isTextureReady = condition;\n },\n\n [SET_READY_STATE](state, value: { key: string; condition: boolean }) {\n state.readyState[value.key] = value.condition;\n },\n },\n\n actions: {\n getHotspotInformation({ commit }) {\n return axios.get(`${BASE_URL}/data/hotspotInformation.json`).then(res => {\n commit(SET_HOTSPOT_INFORMATION, res.data);\n });\n },\n\n getScenes({ commit }) {\n return axios.get(`${BASE_URL}/data/scenes.json`).then(res => {\n commit(SET_SCENES, res.data);\n return res.data;\n });\n },\n\n getEvents({ commit }) {\n return axios.get(`${BASE_URL}/data/events.json`).then(res => {\n commit(SET_EVENTS, res.data);\n return res.data;\n });\n },\n\n getLive({ commit, dispatch }) {\n return axios.get(`${BASE_URL}/data/live.json`).then(res => {\n const f = () => dispatch('setLiveState');\n const interval = setInterval(f, 10000);\n commit(SET_LIVE, { data: res.data, interval });\n return res.data;\n });\n },\n\n setSceneIndex({ commit }, index: number) {\n commit(SET_CURRENT_SCENE_INDEX, index);\n },\n\n setLoadProgress({ commit }, value: boolean) {\n commit(SET_LOAD_PROGRESS, value);\n },\n\n setTextureState({ commit }, value: boolean) {\n commit(SET_TEXTURE_STATE, value);\n },\n\n setReadyState({ commit }, value: { key: string; condition: boolean }) {\n commit(SET_CURRENT_SCENE_INDEX, value);\n },\n\n setLiveState({ commit, getters }) {\n const current = getLiveState(getters.live);\n return commit(SET_LIVE_STATE, current);\n },\n },\n\n getters: {\n information: state => (id: number) => state.hotspotInformation.find(i => i.id === id),\n currentScene: state => state.scenes[state.currentSceneIndex],\n live: state => state.live ? state.live.data : null,\n allEvents: state => state.events ? createEventsData(state.events) : null,\n },\n modules: {\n },\n});\n","import { createApp } from 'vue';\nimport { Store } from 'vuex';\nimport { TroisJSVuePlugin } from 'troisjs';\nimport PerfectScrollbar from 'vue3-perfect-scrollbar';\nimport Fragment from 'vue-fragment';\nimport 'vue3-perfect-scrollbar/dist/vue3-perfect-scrollbar.css';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport '@/css/style.css';\nimport DeviceDetector, { IDeviceDetector } from '@/vendor/vue-device-detector';\n\nimport App from './App.vue';\nimport router from './router';\nimport store, { State } from './store';\nimport { BASE_URL } from './constants';\n// import 'normalize.css';\n\ndeclare module '@vue/runtime-core' {\n interface ComponentCustomProperties {\n $store: Store;\n $device: IDeviceDetector;\n $baseUrl: string;\n }\n}\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isBetween);\n\nconst app = createApp(App);\n\napp\n .use(store)\n .use(router)\n .use(TroisJSVuePlugin)\n .use(Fragment.Plugin)\n .use(PerfectScrollbar)\n .use(DeviceDetector)\n .mount('#app');\n\napp.config.globalProperties.$baseUrl = BASE_URL;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t826: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdev_royal_society_summer\"] = self[\"webpackChunkdev_royal_society_summer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [998], function() { return __webpack_require__(1223); })\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(4499); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}