{"version":3,"file":"xWBV0ZOh.js","sources":["../../../../components/dev-grid.vue","../../../../transitions/page-load/case.js","../../../../transitions/page-load/page.js","../../../../transitions/page-load/caseDefaultLoad.js","../../../../transitions/page-load/pageDefaultLoad.js","../../../../transitions/page-load/error.js","../../../../composables/usePageLoad.js"],"sourcesContent":["\n \n\n\n\n","import gsap from 'gsap'\nconst { getCurrentTheme } = useTheme()\nimport { getKerning } from '~/utils/getKerning'\nimport { CustomEase } from 'gsap/all'\ngsap.registerPlugin(CustomEase)\n\nconst delay = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))\nlet overlay,\n loader = null\nconst overlayTl = gsap.timeline({ paused: true })\nconst state = {\n duration: 1.2,\n wordDuration: 2,\n wordChangeDuration: 0,\n delayBetweenWords: 0.2,\n ease: CustomEase.create('custom', '0.5, 0, 0, 1'),\n}\n\nfunction onBeforeEnter(el, style) {\n const route = useRoute()\n if (route.query.token) return\n\n style.value = { opacity: 0 }\n}\n\nfunction onEnter(el, style) {\n const route = useRoute()\n if (route.query.token) return\n\n return new Promise(async resolve => {\n scrollLock(true)\n await delay(0)\n document.querySelector('.overlay-wipe')?.remove()\n await delay(600)\n style.value = { opacity: 1 }\n\n const currentTheme = getCurrentTheme()\n\n overlay = document.createElement('div')\n overlay.classList.add('overlay-wipe')\n\n loader = document.querySelector('.loader')\n gsap.set(overlay, {\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 19000,\n backgroundColor: currentTheme.background.rgbString,\n boxShadow: '0 0 50px rgba(0, 0, 0, 0.1)',\n })\n gsap.set(loader, {\n zIndex: 20000,\n color: currentTheme.text.rgbString,\n })\n document.body.append(overlay)\n const lines = gsap.utils.toArray('.lines')\n\n overlayTl\n .to(overlay, {\n duration: state.duration / 1.3,\n ease: state.ease,\n y: '100vh',\n })\n .to(\n loader,\n {\n duration: state.duration / 1.9,\n ease: 'power2.inOut',\n y: '100vh',\n },\n '<'\n )\n .to(\n loader,\n {\n duration: 0.4,\n ease: 'power2.inOut',\n opacity: 0,\n onComplete: () => {\n caseLoad()\n },\n },\n '<'\n )\n\n const mediaContainer = el.querySelector('.media-container')\n const { top } = mediaContainer?.getBoundingClientRect() || {}\n\n const background = el.querySelector('.background-wrapper')\n const foreground = el.querySelector('.foreground-wrapper')\n const topbar = document.querySelector('.top-bar')\n const title = el.querySelector('h1')\n\n const newHeight = Math.min(window.innerHeight, (window.innerWidth * 4) / 3)\n const newHeightOffset = window.innerHeight - newHeight\n\n if (background)\n gsap.set(background, {\n y: -top + newHeightOffset / 2,\n height: window.innerHeight,\n })\n if (foreground) gsap.set(foreground, { y: -top + newHeightOffset / 2 })\n\n const { transitionProperty } = getComputedStyle(document.body)\n document.body.style.transitionProperty = transitionProperty + ', opacity'\n document.body.style.opacity = 1\n\n let currentItemIndex = 0\n function animateItems() {\n const currentItem = lines[currentItemIndex]\n const prevItemIndex =\n currentItemIndex === 0 ? lines.length - 1 : currentItemIndex - 1\n const prevItem = lines[prevItemIndex]\n\n if (!prevItem) return\n\n gsap.to(prevItem, {\n opacity: 0,\n duration: state.wordChangeDuration,\n })\n\n gsap.to(currentItem, {\n opacity: 1,\n duration: state.wordChangeDuration,\n onComplete: () => {\n if (currentItemIndex === lines.length - 1) {\n setTimeout(() => {\n overlayTl.play()\n }, 300)\n }\n },\n })\n\n currentItemIndex++\n\n if (currentItemIndex < lines.length) {\n setTimeout(\n animateItems,\n (state.wordChangeDuration + state.delayBetweenWords) * 1000\n )\n } else {\n if (currentItem) currentItem.style.opacity = 1\n }\n }\n\n animateItems()\n\n async function caseLoad() {\n await delay(400)\n\n if (background) {\n gsap.to(background, {\n duration: state.duration,\n ease: state.ease,\n y: 0,\n height: newHeight,\n onComplete() {\n setTimeout(() => {\n document.body.style.removeProperty('opacity')\n document.body.style.removeProperty('transition-property')\n gsap.set(topbar, { clearProps: 'all' })\n resolve()\n }, 250)\n },\n })\n }\n\n if (foreground) {\n gsap.to(foreground, {\n duration: state.duration,\n ease: state.ease,\n delay: state.duration * 0.04,\n y: 0,\n })\n }\n\n if (title) {\n const initialTitle = title.textContent\n const titleKerning = getKerning(initialTitle.toUpperCase())\n\n title.textContent = ''\n\n titleKerning.forEach(item => {\n const span = document.createElement('span')\n span.style.display = 'inline-block'\n span.style.marginLeft = item.marginLeft + 'em'\n span.textContent = item.letter\n title.append(span)\n gsap.from(span, {\n duration: state.duration,\n ease: state.ease,\n delay: Math.random() * 0.25,\n opacity: 0,\n y: '-50%',\n })\n })\n }\n\n gsap.from(topbar, {\n duration: state.duration,\n delay: state.duration * 0.04,\n ease: state.ease,\n y: '-5vh',\n })\n }\n })\n}\n\nfunction onAfterEnter(el, style) {\n const route = useRoute()\n if (route.query.token) return\n \n style.value = null\n loader.remove()\n overlay.remove()\n scrollLock(false)\n}\n\nexport default {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n}\n","import gsap from 'gsap'\nconst { getCurrentTheme } = useTheme()\nimport { CustomEase } from 'gsap/all'\ngsap.registerPlugin(CustomEase)\n\nconst delay = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))\nconst overlayTl = gsap.timeline({ paused: true })\nconst pageTl = gsap.timeline({ paused: true })\nconst state = {\n duration: 2,\n wordChangeDuration: 0,\n delayBetweenWords: 0.2,\n ease: CustomEase.create('custom', '0.5, 0, 0, 1'),\n}\n\nlet overlay,\n loader = null\n\nfunction onBeforeEnter(el, style, loaderData) {\n const route = useRoute()\n if (route.query.token) return\n\n style.value = { opacity: 0 }\n}\n\nfunction onEnter(el, style, loaderData) {\n const route = useRoute()\n if (route.query.token) return\n\n return new Promise(async resolve => {\n scrollLock(true)\n await delay(0)\n\n // if there for some reason was an overlay on the page\n document.querySelector('.overlay-wipe')?.remove()\n\n await delay(600) // body background fade duration\n\n style.value = { opacity: 1 }\n\n const currentTheme = getCurrentTheme()\n\n overlay = document.createElement('div')\n overlay.classList.add('overlay-wipe')\n\n loader = document.querySelector('.loader') || document.createElement('div')\n\n gsap.set(overlay, {\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 19000,\n backgroundColor: currentTheme.background.rgbString,\n boxShadow: '0 0 50px rgba(0, 0, 0, 0.1)',\n })\n gsap.set(loader, {\n zIndex: 20000,\n color: currentTheme.text.rgbString,\n })\n\n document.body.append(overlay)\n\n const page = document.querySelector('.page')\n const topBar = document.querySelector('.top-bar')\n\n const lines = gsap.utils.toArray('.lines')\n\n let currentItemIndex = 0\n overlayTl\n .to(overlay, {\n duration: state.duration / 1.3,\n ease: state.ease,\n y: '100vh',\n })\n .to(\n loader,\n {\n duration: state.duration / 1.9,\n ease: 'power2.inOut',\n y: '100vh',\n },\n '<'\n )\n .to(\n loader,\n {\n duration: 0.6,\n ease: 'power2.inOut',\n opacity: 0,\n },\n '<'\n )\n\n pageTl.from([page ? page : null, topBar ? topBar : null], {\n duration: state.duration,\n ease: state.ease,\n y: '-10vh',\n onComplete: () => {\n gsap.set([page ? page : null, topBar ? topBar : null], {\n clearProps: 'all',\n })\n\n resolve()\n },\n })\n\n function animateItems() {\n const currentItem = lines[currentItemIndex]\n const prevItemIndex =\n currentItemIndex === 0 ? lines.length - 1 : currentItemIndex - 1\n const prevItem = lines[prevItemIndex]\n\n if (!prevItem) return\n\n gsap.to(prevItem, {\n opacity: 0,\n ease: state.ease,\n duration: state.wordChangeDuration,\n })\n\n gsap.to(currentItem, {\n opacity: 1,\n ease: state.ease,\n duration: state.wordChangeDuration,\n onComplete: () => {\n if (currentItemIndex === lines.length - 1) {\n setTimeout(() => {\n overlayTl.play()\n if (page) {\n pageTl.play()\n }\n }, 300)\n }\n },\n })\n\n currentItemIndex++\n\n if (currentItemIndex < lines.length) {\n setTimeout(\n animateItems,\n (state.wordChangeDuration + state.delayBetweenWords) * 1000\n )\n } else {\n if (currentItem) currentItem.style.opacity = 1\n }\n }\n\n animateItems()\n })\n}\n\nfunction onAfterEnter(el, style, loaderData) {\n const route = useRoute()\n if (route.query.token) return\n\n style.value = null\n loader.remove()\n overlay.remove()\n scrollLock(false)\n}\n\nexport default {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n}\n","import gsap from 'gsap'\nimport { getKerning } from '~/utils/getKerning'\nimport { CustomEase } from 'gsap/all'\ngsap.registerPlugin(CustomEase)\n\nconst delay = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))\n\nconst state = {\n duration: 1.2,\n ease: CustomEase.create(\"custom\", \"0.5, 0, 0, 1\"),\n}\n\nfunction onBeforeEnter(el, style) {\n style.value = { opacity: 0 }\n}\n\nfunction onEnter(el, style) {\n return new Promise(async resolve => {\n document.body.style.opacity = 0\n style.value = { opacity: 1 }\n\n await delay(0)\n\n const mediaContainer = el.querySelector('.media-container')\n const { top } = mediaContainer?.getBoundingClientRect() || {}\n\n const background = el.querySelector('.background-wrapper')\n const foreground = el.querySelector('.foreground-wrapper')\n const topbar = document.querySelector('.top-bar')\n const title = el.querySelector('h1')\n\n const newHeight = Math.min(window.innerHeight, (window.innerWidth * 4) / 3)\n const newHeightOffset = window.innerHeight - newHeight\n\n if (background)\n gsap.set(background, {\n y: -top + newHeightOffset / 2,\n height: window.innerHeight,\n })\n if (foreground) gsap.set(foreground, { y: -top + newHeightOffset / 2 })\n\n const { transitionProperty } = getComputedStyle(document.body)\n document.body.style.transitionProperty = transitionProperty + ', opacity'\n document.body.style.opacity = 1\n\n await delay(400)\n\n if (background) {\n gsap.to(background, {\n duration: state.duration,\n ease: state.ease,\n y: 0,\n height: newHeight,\n onComplete() {\n setTimeout(() => {\n document.body.style.removeProperty('opacity')\n document.body.style.removeProperty('transition-property')\n gsap.set(topbar, { clearProps: 'all' })\n resolve()\n }, 250)\n },\n })\n }\n\n if (foreground) {\n gsap.to(foreground, {\n duration: state.duration,\n ease: state.ease,\n delay: state.duration * 0.04,\n y: 0,\n })\n }\n\n if (title) {\n const initialTitle = title.textContent\n const titleKerning = getKerning(initialTitle.toUpperCase())\n\n title.textContent = ''\n\n titleKerning.forEach(item => {\n const span = document.createElement('span')\n span.style.display = 'inline-block'\n span.style.marginLeft = item.marginLeft + 'em'\n span.textContent = item.letter\n title.append(span)\n gsap.from(span, {\n duration: state.duration,\n ease: state.ease,\n delay: Math.random() * 0.25,\n opacity: 0,\n y: '-50%',\n })\n })\n }\n\n gsap.from(topbar, {\n duration: state.duration,\n delay: state.duration * 0.04,\n ease: state.ease,\n y: '-5vh',\n })\n })\n}\n\nfunction onAfterEnter(el, style) {\n style.value = null\n}\n\nexport default {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n}","import gsap from 'gsap'\nconst { getCurrentTheme } = useTheme()\nimport { CustomEase } from 'gsap/all'\ngsap.registerPlugin(CustomEase)\n\nconst delay = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))\n\nconst state = {\n duration: 1.6,\n ease: CustomEase.create(\"custom\", \"0.25, 0, 0, 1\"),\n}\n\nlet overlay = null\n\nfunction onBeforeEnter(el, style) {\n style.value = { opacity: 0 }\n}\n\nfunction onEnter(el, style) {\n return new Promise(async resolve => {\n await delay(0)\n\n // if there for some reason was an overlay on the page\n document.querySelector('.overlay-wipe')?.remove()\n\n await delay(600) // body background fade duration\n\n style.value = { opacity: 1 }\n\n const currentTheme = getCurrentTheme()\n\n overlay = document.createElement('div')\n overlay.classList.add('overlay-wipe')\n\n gsap.set(overlay, {\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 19000,\n y: '0vh',\n backgroundColor: currentTheme.background.rgbString,\n boxShadow: '0 0 50px rgba(0, 0, 0, 0.1)',\n })\n\n document.body.append(overlay)\n\n const page = document.querySelector('.page')\n const topBar = document.querySelector('.top-bar')\n\n gsap.from([page ? page : null, topBar ? topBar : null], {\n duration: state.duration,\n ease: state.ease,\n y: '-10vh',\n onComplete: () => {\n gsap.set([page ? page : null, topBar ? topBar : null], { clearProps: 'all' })\n resolve()\n },\n })\n\n gsap.to(overlay, {\n duration: state.duration,\n ease: state.ease,\n y: '100vh',\n })\n })\n}\n\nfunction onAfterEnter(el, style) {\n style.value = null\n overlay.remove()\n}\n\nexport default {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n}","import gsap from 'gsap'\nconst { getCurrentTheme } = useTheme()\nimport { CustomEase } from 'gsap/all'\ngsap.registerPlugin(CustomEase)\n\nconst delay = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))\nconst overlayTl = gsap.timeline({ paused: true })\nconst pageTl = gsap.timeline({ paused: true })\nconst state = {\n duration: 2,\n wordChangeDuration: 0,\n delayBetweenWords: 0.2,\n ease: CustomEase.create('custom', '0.25, 0, 0, 1'),\n}\n\nlet overlay,\n loader = null\n\nfunction onBeforeEnter(el, style, loaderData) {\n style.value = { opacity: 0 }\n}\n\nfunction onEnter(el, style, loaderData) {\n return new Promise(async resolve => {\n scrollLock(true)\n await delay(0)\n // if there for some reason was an overlay on the page\n document.querySelector('.overlay-wipe')?.remove()\n\n await delay(600) // body background fade duration\n\n style.value = { opacity: 1 }\n\n const currentTheme = getCurrentTheme()\n\n overlay = document.createElement('div')\n overlay.classList.add('overlay-wipe')\n\n loader = document.querySelector('.loader')\n gsap.set(overlay, {\n position: 'fixed',\n width: '100vw',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 19000,\n backgroundColor: currentTheme.background.rgbString,\n boxShadow: '0 0 50px rgba(0, 0, 0, 0.1)',\n })\n gsap.set(loader, {\n zIndex: 20000,\n color: currentTheme.text.rgbString,\n })\n\n const page = document.querySelector('.error-page')\n const layout = document.querySelector('.error-page-layout')\n layout?.append(overlay)\n\n const lines = gsap.utils.toArray('.lines')\n\n let currentItemIndex = 0\n overlayTl\n .to(overlay, {\n duration: state.duration / 1.3,\n ease: state.ease,\n y: '100vh',\n })\n .to(\n loader,\n {\n duration: state.duration / 1.9,\n ease: 'power2.inOut',\n y: '100vh',\n },\n '<'\n )\n .to(\n loader,\n {\n duration: 0.6,\n ease: 'power2.inOut',\n opacity: 0,\n },\n '<'\n )\n\n pageTl.from(page, {\n duration: state.duration,\n ease: state.ease,\n y: '-10vh',\n onComplete: () => {\n gsap.set(page, { clearProps: 'all' })\n resolve()\n },\n })\n\n function animateItems() {\n const currentItem = lines[currentItemIndex]\n const prevItemIndex =\n currentItemIndex === 0 ? lines.length - 1 : currentItemIndex - 1\n const prevItem = lines[prevItemIndex]\n\n if (!prevItem) return\n\n gsap.to(prevItem, {\n opacity: 0,\n ease: state.ease,\n duration: state.wordChangeDuration,\n })\n\n gsap.to(currentItem, {\n opacity: 1,\n ease: state.ease,\n duration: state.wordChangeDuration,\n onComplete: () => {\n if (currentItemIndex === lines.length - 1) {\n setTimeout(() => {\n overlayTl.play()\n if (page) {\n pageTl.play()\n }\n }, 300)\n }\n },\n })\n\n currentItemIndex++\n\n if (currentItemIndex < lines.length) {\n setTimeout(\n animateItems,\n (state.wordChangeDuration + state.delayBetweenWords) * 1000\n )\n } else {\n if (currentItem) {\n currentItem.style.opacity = 1\n }\n }\n }\n\n animateItems()\n })\n}\n\nfunction onAfterEnter(el, style, loaderData) {\n style.value = null\n loader.remove()\n overlay.remove()\n scrollLock(false)\n}\n\nexport default {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n}\n","export default (\n el,\n { pageLoads = {}, errorPageLoad = {}, defaultPageLoad = {} } = {},\n loaderData\n) => {\n const router = useRouter()\n const error = useError()\n const errorLoad = ref(false)\n const getPageLoad = route => {\n watch(\n error,\n () => {\n if (error.value) errorLoad.value = true\n },\n { immediate: true }\n )\n return errorLoad.value\n ? pageLoads['error']\n : pageLoads[route] || defaultPageLoad\n }\n\n const currentRoute = computed(\n () =>\n router\n .getRoutes()\n .find(({ name }) => name === router.currentRoute.value.name)?.name\n )\n const style = ref(null)\n const currentPageLoad = getPageLoad(currentRoute.value)\n currentPageLoad.onBeforeEnter(el.value, style, loaderData)\n\n // onServerPrefetch(() => {\n // // init setup, before the dom is painted\n // })\n\n onMounted(async () => {\n if (!process.client) return\n const cookieBanner = document.querySelector('#coiOverlay')\n // the transition\n await currentPageLoad.onEnter(el.value, style, loaderData)\n if (cookieBanner) {\n cookieBanner.style.opacity = 1\n }\n\n // after transition, individual clean up\n currentPageLoad.onAfterEnter(el.value, style, loaderData)\n // after everything, global clean up\n style.value = null\n })\n\n return { style }\n}\n"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","_Fragment","idx","getCurrentTheme","useTheme","gsap","CustomEase","delay","ms","resolve","overlay","loader","overlayTl","state","onBeforeEnter","el","style","useRoute","onEnter","scrollLock","_a","currentTheme","lines","caseLoad","mediaContainer","top","background","foreground","topbar","title","newHeight","newHeightOffset","transitionProperty","currentItemIndex","animateItems","currentItem","prevItemIndex","prevItem","initialTitle","titleKerning","getKerning","item","span","onAfterEnter","pageTl","loaderData","page","topBar","pageLoad","caseDefaultLoad","pageDefaultLoad","layout","errorPageLoad","usePageLoad","pageLoads","defaultPageLoad","router","useRouter","error","useError","errorLoad","ref","getPageLoad","route","watch","currentRoute","computed","name","currentPageLoad","onMounted","cookieBanner"],"mappings":"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"}