{"version":3,"file":"pages-home.js","mappings":"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","sources":["webpack://silverstripe-base/./themes/app/src/scripts/common/hover-intent.js","webpack://silverstripe-base/./themes/app/src/pages/home.js","webpack://silverstripe-base/./themes/app/src/scripts/common/util.js","webpack://silverstripe-base/./themes/app/src/scripts/components/scroll-reveal.js"],"sourcesContent":["/*\n * https://github.com/svivian/sv-hover-intent-js\n */\n\nconst hoverIntent = function (elements, userConfig) {\n const defaultOptions = {\n exitDelay: 400,\n interval: 100,\n sensitivity: 7,\n };\n let config = {};\n\n let currX, currY, prevX, prevY;\n let allElems, pollTimer, exitTimer;\n\n // private methods\n\n // override default options with user config\n const extend = function (defaults, userArgs) {\n for (let i in userArgs) {\n defaults[i] = userArgs[i];\n }\n\n return defaults;\n };\n\n // update mouse position\n const mouseTrack = function (ev) {\n currX = ev.pageX;\n currY = ev.pageY;\n };\n\n // check if mouse movement has slowed enough to trigger active state\n const mouseCompare = function (targetElem) {\n const distX = prevX - currX,\n distY = prevY - currY;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n if (distance < config.sensitivity) {\n // if we re-entered an element, cancel delayed exit and clear any active elements immediately\n clearTimeout(exitTimer);\n for (let elem of allElems) {\n if (elem.isActive) {\n config.onExit(elem);\n elem.isActive = false;\n }\n }\n\n // trigger hover\n config.onEnter(targetElem);\n targetElem.isActive = true;\n } else {\n // update previous coordinates and try again later\n prevX = currX;\n prevY = currY;\n pollTimer = setTimeout(function () {\n mouseCompare(targetElem);\n }, config.interval);\n }\n };\n\n const init = function (elements, userConfig) {\n if (!userConfig || !userConfig.onEnter || !userConfig.onExit) {\n throw \"onEnter and onExit callbacks must be provided\";\n }\n config = extend(defaultOptions, userConfig);\n allElems = elements;\n\n for (let elem of allElems) {\n // holds current element state\n elem.isActive = false;\n // keeps track of mouse position\n elem.addEventListener(\"mousemove\", mouseTrack);\n\n elem.addEventListener(\"mouseenter\", function (ev) {\n // set initial entry position\n prevX = ev.pageX;\n prevY = ev.pageY;\n // if this element is already active, cancel exit\n if (elem.isActive) {\n clearTimeout(exitTimer);\n return;\n }\n\n // while mouse is over this element, check distance every 100ms\n pollTimer = setTimeout(function () {\n mouseCompare(elem);\n }, config.interval);\n });\n elem.addEventListener(\"mouseleave\", function () {\n clearTimeout(pollTimer);\n if (!elem.isActive) return;\n\n exitTimer = setTimeout(function () {\n config.onExit(elem);\n elem.isActive = false;\n }, config.exitDelay);\n });\n }\n };\n\n init(elements, userConfig);\n};\n\nexport default hoverIntent;\n","import { gsap } from \"gsap\";\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\";\nimport scrollReveal from \"@scripts/components/scroll-reveal\";\nimport { isTouchDevice } from \"@common/util\";\nimport hoverIntent from \"@common/hover-intent\";\n\ngsap.registerPlugin(ScrollTrigger);\n\nconst setupBusinessUnitBlocks = () => {\n const blockGrid = document.querySelector(\".business-unit-blocks\");\n\n document.querySelectorAll(\".business-unit-block\").forEach((block) => {\n const blockInner = block.querySelector(\".business-unit-block-inner\");\n const otherBlocks = Array.from(blockGrid.querySelectorAll(\".business-unit-block\")).filter((x) => x !== block);\n const shortDescription = block.querySelector(\".business-unit-short\");\n const longDescription = block.querySelector(\".business-unit-long\");\n\n const enterTimeline = gsap.timeline({\n paused: true,\n });\n\n enterTimeline\n .to(blockGrid, {\n width: blockGrid.offsetWidth,\n height: blockGrid.offsetHeight,\n })\n .to(otherBlocks, { pointerEvents: \"none\" }, \"<\")\n .to(block, { zIndex: 2 }, \"<\")\n .to(\n otherBlocks,\n {\n opacity: 0.3,\n duration: 0.2,\n },\n \"<\",\n )\n .to(\n shortDescription,\n {\n opacity: 0,\n y: \"10%\",\n duration: 0.3,\n onComplete: () => {\n shortDescription.classList.add(\"sr-only\");\n },\n onReverseComplete: () => {\n shortDescription.classList.remove(\"sr-only\");\n },\n },\n \"<\",\n )\n .to(\n blockInner,\n {\n width: blockGrid.offsetWidth * 0.95,\n height: blockGrid.offsetHeight * 0.95,\n top: () => {\n const blockGridRect = blockGrid.getBoundingClientRect();\n const blockRect = blockInner.getBoundingClientRect();\n\n if (blockRect.top > blockGridRect.top) {\n return \"-100%\";\n }\n\n return 0;\n },\n left: () => {\n const blockGridRect = blockGrid.getBoundingClientRect();\n const blockRect = blockInner.getBoundingClientRect();\n\n if (blockRect.left > blockGridRect.left) {\n return \"-95%\";\n }\n\n return 0;\n },\n duration: 0.3,\n },\n \"<25%\",\n )\n .fromTo(\n longDescription,\n { visibility: \"invisible\", opacity: 0, y: \"50%\" },\n { visibility: \"visible\", opacity: 1, y: 0, duration: 0.3 },\n );\n\n new hoverIntent([block], {\n onEnter: () => {\n if (block.querySelector(\"[data-sr-done]\")) {\n enterTimeline.play();\n block.classList.add(\"is-active\");\n }\n },\n onExit: async () => {\n if (block.querySelector(\"[data-sr-done]\")) {\n block.style.pointerEvents = \"none\";\n await enterTimeline.reverse();\n block.style.pointerEvents = \"auto\";\n block.classList.remove(\"is-active\");\n }\n },\n exitDelay: 100,\n interval: 100,\n sensitivity: 7,\n });\n });\n};\n\nconst setupContentMedia = () => {\n const element = document.querySelector(\".element-contentmedia\");\n\n if (!element) {\n return;\n }\n\n const brandLogo = element.querySelector(\".brand-logo svg\");\n const brandLogoRect = brandLogo.getBoundingClientRect();\n const panelRect = element.getBoundingClientRect();\n const panelCenterX = panelRect.width / 2;\n const panelCenterY = panelRect.top + panelRect.height / 2;\n\n const scaleFactor = panelRect.height / brandLogoRect.height;\n\n const offsetX = panelCenterX - (brandLogoRect.left + brandLogoRect.width / 2);\n const offsetY = panelCenterY - (brandLogoRect.top + brandLogoRect.height / 2);\n\n gsap.set(brandLogo, {\n transformOrigin: \"center center\",\n transform: `translate(${offsetX}px, ${offsetY}px) scale(${scaleFactor})`,\n });\n\n const timeline = gsap.timeline({\n paused: true,\n onComplete: () => {\n scrollReveal.reveal(element.querySelector(\"[data-sr-group]\"));\n },\n scrollTrigger: {\n trigger: element,\n start: \"top 40%\",\n once: true,\n markers: false,\n },\n });\n\n timeline.to(brandLogo, {\n transform: \"scale(1) translate(0, 0)\",\n duration: 0.5,\n });\n};\n\nif (!window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n if (window.matchMedia(\"(min-width: 1024px)\").matches && !isTouchDevice) {\n setTimeout(setupBusinessUnitBlocks, 500);\n }\n}\n\nif (!window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n setupContentMedia();\n}\n","export const isTouchDevice = \"ontouchstart\" in document.documentElement;\n\nexport const generateQueryString = (data = {}) => {\n let params = data;\n\n if (data instanceof FormData === true) {\n params = {};\n\n data.forEach((value, key) => (params[key] = value));\n }\n\n for (const key in params) {\n if (params[key] === \"\") {\n delete params[key];\n }\n }\n\n return new URLSearchParams(params);\n};\n\nexport const trackGoogleAnalytics = (event) => {\n if (window.dataLayer) {\n window.dataLayer.push(event);\n }\n};\n","import { animate, inView, stagger, timeline } from \"motion\";\n\nconst animateSvgBorder = (el) => {\n el.style.width = 0;\n el.style.height = \"2px\";\n el.style.opacity = 1;\n\n timeline([\n [el, { width: \"100%\" }, { duration: 0.6, easing: \"linear\" }],\n [el, { height: \"100%\" }, { duration: 0.3, easing: \"linear\" }],\n ]);\n};\n\nconst variants = {\n \"fade-up\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-up-left\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-down\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-left\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-left-slow\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-right\": {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n \"fade-in\": {\n opacity: 1,\n },\n \"scale-in\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n};\n\nconst reveal = (group) => {\n if (group.dataset.srGroup === \"sequence\") {\n const sequence = [];\n\n group.querySelectorAll(`[data-sr]`).forEach((el) => {\n const variant = variants[el.dataset.sr];\n\n if (variant && el.style.display !== \"none\") {\n sequence.push([el, variant, { ease: \"ease\", duration: 0.8, at: \"-0.4\" }]);\n }\n });\n\n inView(\n group,\n () => {\n timeline(sequence).finished.then((animations) => {\n animations?.forEach((animation) => {\n animation.effect?.target?.setAttribute(\"data-sr-done\", true);\n });\n });\n },\n {\n margin: \"0px 0px -25% 0px\",\n },\n );\n } else {\n for (const [key, opts] of Object.entries(variants)) {\n const els = Array.from(group.querySelectorAll(`[data-sr=\"${key}\"]`));\n\n let duration = 0.8;\n\n if (key === \"fade-in\" || key === \"fade-left-slow\") {\n duration = 1.5;\n }\n\n if (els.length) {\n els.forEach((el, index) => {\n const checklists = el.querySelectorAll(\".as-check-list-blue\");\n\n if (checklists.length) {\n let children = [];\n\n Array.from(el.children).forEach((child) => {\n if (child.classList.contains(\"as-check-list-blue\")) {\n const lis = Array.from(child.querySelectorAll(\"li\"));\n\n children = [...children, ...lis];\n } else {\n children.push(child);\n }\n });\n\n children.map((child) => child.setAttribute(\"data-sr\", \"fade-up\"));\n\n el.removeAttribute(\"data-sr\");\n els.splice(index, 1, ...children);\n }\n });\n\n inView(\n group,\n () => {\n animate(els, opts, {\n duration,\n delay: stagger(0.2),\n }).finished.then((animations) => {\n animations?.forEach((animation) => {\n animation.effect?.target?.setAttribute(\"data-sr-done\", true);\n });\n });\n },\n {\n margin: \"0px 0px -25% 0px\",\n },\n );\n }\n }\n }\n};\n\nconst handleMutations = (group, mutationList) => {\n for (const mutation of mutationList) {\n if (mutation.type === \"childList\") {\n reveal(group);\n }\n }\n};\n\nexport default {\n init: () => {\n document.querySelectorAll(\".angled-border\").forEach((el) => {\n const observer = new IntersectionObserver(\n ([e]) => {\n if (e.isIntersecting) {\n setTimeout(() => {\n animateSvgBorder(el);\n }, 250);\n\n observer.disconnect();\n }\n },\n {\n threshold: [1],\n },\n );\n\n observer.observe(el);\n });\n\n document.querySelectorAll(\"[data-sr-group]\").forEach((group) => {\n if (group.closest(\"[data-disable-animations]\")) {\n group.removeAttribute(\"data-sr-group\");\n return;\n }\n\n if (group.dataset.srGroup !== \"trigger\") {\n reveal(group);\n }\n\n if (group.dataset.srGroup === \"observe\") {\n const observer = new MutationObserver(handleMutations.bind(null, group));\n\n observer.observe(group, {\n childList: true,\n subtree: true,\n });\n }\n });\n },\n reveal,\n};\n"],"names":["elements","userConfig","defaultOptions","exitDelay","interval","sensitivity","currX","currY","prevX","prevY","allElems","pollTimer","exitTimer","config","mouseTrack","ev","pageX","pageY","mouseCompare","targetElem","distX","distY","Math","sqrt","clearTimeout","elem","isActive","onExit","onEnter","setTimeout","defaults","userArgs","i","extend","addEventListener","init","gsap","registerPlugin","ScrollTrigger","window","matchMedia","matches","isTouchDevice","setupBusinessUnitBlocks","blockGrid","document","querySelector","querySelectorAll","forEach","block","blockInner","otherBlocks","Array","from","filter","x","shortDescription","longDescription","enterTimeline","timeline","paused","to","width","offsetWidth","height","offsetHeight","pointerEvents","zIndex","opacity","duration","y","onComplete","classList","add","onReverseComplete","remove","top","blockGridRect","getBoundingClientRect","left","fromTo","visibility","hoverIntent","play","async","style","reverse","setupContentMedia","element","brandLogo","brandLogoRect","panelRect","panelCenterX","panelCenterY","scaleFactor","offsetX","offsetY","set","transformOrigin","transform","scrollReveal","reveal","scrollTrigger","trigger","start","once","markers","documentElement","generateQueryString","data","params","FormData","value","key","URLSearchParams","trackGoogleAnalytics","event","dataLayer","push","variants","group","dataset","srGroup","sequence","el","variant","sr","display","ease","at","inView","finished","then","animations","animation","effect","target","setAttribute","margin","opts","Object","entries","els","length","index","children","child","contains","lis","map","removeAttribute","splice","animate","delay","stagger","handleMutations","mutationList","mutation","type","observer","IntersectionObserver","e","isIntersecting","easing","animateSvgBorder","disconnect","threshold","observe","closest","MutationObserver","bind","childList","subtree"],"sourceRoot":""}