{"version":3,"sources":["initializeHomePage.js"],"names":["win","fp","home","let","initialized","getScreenSize","pixelDensity","window","devicePixelRatio","width","innerWidth","addEventListener","height","scrollY","pageYOffset","document","body","classList","toggle","sizeDetector","root","documentElement","setCSSVariable","varName","value","style","setProperty","header","querySelector","logoMobile","offsetHeight","utility","specialMessage","stickyFooter","getComputedStyle","display","setHeroSize","contains","setTimeout","add","debouncedResizeHandler","func","delay","timeoutId","args","clearTimeout","apply","this","init","imgInfo","homepageLink","setBgImage","length","screenSize","filteredImages","filter","img","assetSize","randomImage","Math","floor","random","slideshowEl","backgroundImage","imagePath","altText","setAttribute","console","warn","setupVideoControls","video","getElementById","videoButton","videoButtonIcon","controlAnnouncements","paused","play","replace","textContent","pause"],"mappings":"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","file":"homepage-e73ff55704.js","sourcesContent":["(function (win) {\n 'use strict';\n\n const fp = (win.fp = win.fp || {});\n const home = (fp.home = fp.home || {});\n let initialized = false;\n\n // =========================================\n // Get Screen Size\n // =========================================\n const getScreenSize = () => {\n const pixelDensity = window.devicePixelRatio || 1;\n const width = window.innerWidth * pixelDensity;\n\n if (width >= 2400) return 'xlarge';\n if (width >= 1400) return 'large';\n if (width >= 1000) return 'medium';\n if (width >= 600) return 'small';\n return 'xsmall';\n };\n\n // =========================================\n // Set Background Image\n // =========================================\n const setBgImage = (imgInfo = []) => {\n if (!imgInfo.length) {\n console.warn('No images provided for background.');\n return;\n }\n\n const screenSize = getScreenSize();\n const filteredImages = imgInfo.filter((img) => img.assetSize === screenSize);\n if (!filteredImages.length) {\n console.warn('No matching images for screen size:', screenSize);\n return;\n }\n\n const randomImage = filteredImages[Math.floor(Math.random() * filteredImages.length)];\n const slideshowEl = document.querySelector('.slideshow');\n\n if (!slideshowEl) {\n console.warn('.slideshow element not found in DOM.');\n return;\n }\n\n slideshowEl.style.backgroundImage = `url('${randomImage.imagePath}')`;\n if (randomImage.altText) {\n slideshowEl.setAttribute('aria-label', randomImage.altText);\n slideshowEl.setAttribute('role', 'img');\n }\n };\n\n // =========================================\n // Detect Scroll\n // =========================================\n const detectScroll = () => {\n const height = window.scrollY || window.pageYOffset;\n document.body.classList.toggle('scrolled-down', height > 50);\n };\n window.addEventListener('scroll', detectScroll);\n\n // =========================================\n // Size Detector\n // =========================================\n const sizeDetector = () => {\n const root = document.documentElement;\n\n const setCSSVariable = (varName, value) => {\n root.style.setProperty(varName, `${value}px`);\n //console.log(varName + \": \" + value);\n };\n\n const header = document.querySelector('header');\n setCSSVariable(\n '--header-height', header ? header.offsetHeight : 0\n );\n\n const logoMobile = document.querySelector('#logo-mobile');\n setCSSVariable(\n '--logo-mobile-height', logoMobile ? logoMobile.offsetHeight : 0\n );\n\n const utility = document.querySelector('#utility');\n setCSSVariable(\n '--utility-height', utility ? utility.offsetHeight : 0\n );\n\n const specialMessage = document.querySelector('#special-message.message-banner');\n setCSSVariable(\n '--special-message-height',\n specialMessage && getComputedStyle(specialMessage).display !== 'none' ? specialMessage.offsetHeight : 0\n );\n\n const stickyFooter = document.querySelector('#ao-sticky');\n setCSSVariable(\n '--sticky-footer-height',\n stickyFooter && getComputedStyle(stickyFooter).display !== 'none' ? stickyFooter.offsetHeight : 0\n );\n };\n\n // =========================================\n // Set Hero Size\n // =========================================\n const setHeroSize = () => {\n if (!document.body.classList.contains('hero-set')) {\n setTimeout(() => {\n document.body.classList.add('hero-set');\n }, 1000);\n }\n };\n\n // =========================================\n // Setup Video Controls\n // =========================================\n const setupVideoControls = () => {\n const video = document.getElementById('bg-video');\n const videoButton = document.getElementById('video-pause-play');\n const videoButtonIcon = videoButton ? videoButton.querySelector('span') : null;\n const controlAnnouncements = document.getElementById('video-control-announcements');\n\n if (!video || !videoButton || !videoButtonIcon || !controlAnnouncements) {\n console.warn(\"Video controls not fully initialized: missing elements\");\n return;\n }\n\n videoButton.addEventListener('click', () => {\n if (!video.paused) {\n video.pause();\n videoButton.setAttribute('aria-label', 'Play video');\n videoButtonIcon.classList.replace('icon-pause', 'icon-play');\n controlAnnouncements.textContent = 'Video paused';\n } else {\n video.play();\n videoButton.setAttribute('aria-label', 'Pause video');\n videoButtonIcon.classList.replace('icon-play', 'icon-pause');\n controlAnnouncements.textContent = 'Video playing';\n }\n });\n };\n\n // =========================================\n // Debounce Utility\n // =========================================\n const debounce = (func, delay) => {\n let timeoutId;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(this, args), delay);\n };\n };\n\n // =========================================\n // Window Resize Handler\n // =========================================\n const handleResize = () => {\n setHeroSize();\n sizeDetector();\n };\n\n const debouncedResizeHandler = debounce(handleResize, 250);\n window.addEventListener('resize', debouncedResizeHandler);\n\n // =========================================\n // Initialize Functions on Load\n // =========================================\n window.addEventListener('load', () => {\n setTimeout(sizeDetector, 250);\n });\n\n // =========================================\n // Public API\n // =========================================\n fp.home.init = (imgInfo = []) => {\n if (initialized) return;\n initialized = true;\n\n const homepageLink = document.querySelector('.homepage-link');\n if (homepageLink) homepageLink.classList.add('selected');\n\n setBgImage(imgInfo); // Pass the image data here\n setupVideoControls();\n setHeroSize();\n };\n})(window);"]}