{ "version": 3, "sources": ["../../Features/Shared/Navigation/Menu/scrollEffect.ts", "../../Features/Shared/Navigation/Menu/menu-desktop.ts", "../../Features/Shared/Navigation/Menu/menu-mobile.ts"], "sourcesContent": ["\uFEFFconst scrollEffect = () => {\r\n const headerElement = document.querySelector(\r\n \"[data-js-menu=hide-on-scroll]\"\r\n ) as HTMLElement;\r\n\r\n let headerVisible = true;\r\n let scrollPosition = 0;\r\n\r\n const getHeaderHeight = () => {\r\n let header = document.getElementById(\"site-header\") as HTMLElement;\r\n return header.getBoundingClientRect().height;\r\n }\r\n\r\n // Sync the two variables that setup the header scroll and main top padding\r\n // these are separate to prevent odd scroll effect of content\r\n // expanding when they share the same global variable that is dynamically updated.\r\n const initHeaderHeight = () => {\r\n if (!headerElement) {\r\n return;\r\n }\r\n\r\n let headerHeight = getHeaderHeight();\r\n document.documentElement.style.setProperty(\"--header-height\", `${headerHeight}px`);\r\n document.documentElement.style.setProperty(\"--main-headroom\", `${headerHeight}px`);\r\n\r\n }\r\n\r\n const focusWithinMenuOrMenuOpen = () => {\r\n if (isMobile()) {\r\n return headerElement?.dataset.menuOpen === \"true\";\r\n } else {\r\n return headerElement?.contains(document.activeElement);\r\n }\r\n };\r\n\r\n const isAtTopOfScreen = () => {\r\n if (!headerElement) {\r\n return;\r\n }\r\n\r\n if (window.scrollY === 0) {\r\n headerElement.dataset.headerScrolled = \"false\";\r\n }\r\n else {\r\n headerElement.dataset.headerScrolled = \"true\";\r\n }\r\n }\r\n\r\n const toggleNavigationOnScroll = () => {\r\n if (!headerElement) {\r\n return;\r\n }\r\n\r\n const currentScrollPosition = window.scrollY;\r\n if (currentScrollPosition < scrollPosition) {\r\n // up\r\n if (!headerVisible) {\r\n headerVisible = true;\r\n headerElement.style.transform = \"\";\r\n document.documentElement.style.setProperty(\"--header-height\", `${getHeaderHeight()}px`);\r\n }\r\n } else {\r\n // down\r\n if (currentScrollPosition > 60 && headerVisible) {\r\n if (!focusWithinMenuOrMenuOpen()) {\r\n headerVisible = false;\r\n headerElement.style.transform = `translateY(-100%)`;\r\n document.documentElement.style.setProperty(\"--header-height\", \"0px\");\r\n }\r\n }\r\n }\r\n\r\n scrollPosition = currentScrollPosition;\r\n };\r\n\r\n const initScrollEffects = () => {\r\n initHeaderHeight();\r\n isAtTopOfScreen();\r\n };\r\n\r\n headerElement?.addEventListener(\"focusin\", () => {\r\n if (!headerVisible) {\r\n // un-hide header on focus in\r\n headerElement.style.transform = \"\";\r\n }\r\n });\r\n\r\n window.addEventListener(\"scroll\", toggleNavigationOnScroll, {\r\n passive: true,\r\n });\r\n\r\n window.addEventListener(\"DOMContentLoaded\", initScrollEffects);\r\n\r\n let timeout: number | undefined = undefined,\r\n delay = 250;\r\n\r\n window.addEventListener('resize', () => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(initHeaderHeight, delay);\r\n });\r\n\r\n window.addEventListener(\"scroll\", isAtTopOfScreen, {\r\n passive: true,\r\n });\r\n}\r\n\r\nexport const isMobile = () => window.innerWidth < 1280;\r\n\r\nconst preventBodyScroll = (e: Event) => {\r\n const currentlyOpenMenu = document.querySelector(\"a[aria-expanded='true'] + section[data-js-panel]\") as HTMLElement;\r\n const headerElement = document.getElementById(\"site-header\") as HTMLElement;\r\n const target = e.target as HTMLElement;\r\n\r\n const headerHeight: number = headerElement.getBoundingClientRect().height;\r\n const menuHasOverflow = currentlyOpenMenu.getBoundingClientRect().height == (window.innerHeight - headerHeight - 16);\r\n const isOverlay = target.dataset.jsMenu == \"overlay\";\r\n\r\n const scrollingInMenu = currentlyOpenMenu.contains(e.target as Node);\r\n const scrollingInHeader = headerElement.contains(e.target as Node);\r\n\r\n if ((scrollingInMenu && !menuHasOverflow) || isOverlay || (scrollingInHeader && !scrollingInMenu)) {\r\n e.preventDefault();\r\n }\r\n}\r\n\r\nexport const disablePageScroll = () => {\r\n window.addEventListener(\"wheel\", preventBodyScroll, { passive: false });\r\n window.addEventListener(\"touchmove\", preventBodyScroll, { passive: false });\r\n\r\n}\r\n\r\nexport const enablePageScroll = () => {\r\n window.removeEventListener(\"wheel\", preventBodyScroll);\r\n window.removeEventListener(\"touchmove\", preventBodyScroll);\r\n}\r\n\r\nscrollEffect();", "\uFEFFimport { enablePageScroll, disablePageScroll } from \"./scrollEffect\";\r\n\r\nconst desktopMenu = () => {\r\n const headerElement = document.querySelector(\r\n \"[data-js-menu=hide-on-scroll]\"\r\n ) as HTMLElement;\r\n\r\n const closeOnEscapeHandler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n e.stopPropagation();\r\n closeAllPanels();\r\n }\r\n };\r\n\r\n const closePanel = (panel: HTMLElement) => {\r\n const link = panel.previousElementSibling as HTMLElement;\r\n const topLink = link.parentElement as HTMLElement;\r\n link?.setAttribute(\"aria-expanded\", \"false\");\r\n topLink?.setAttribute(\"aria-expanded\", \"false\");\r\n closeOverlay();\r\n enablePageScroll();\r\n };\r\n\r\n const closeOverlay = () => {\r\n var overlay = document.querySelector(\"[data-js-menu=overlay]\") as HTMLElement;\r\n overlay.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n\r\n const openOverlay = () => {\r\n var overlay = document.querySelector(\"[data-js-menu=overlay]\") as HTMLElement;\r\n overlay.setAttribute(\"aria-hidden\", \"false\");\r\n }\r\n\r\n const closeAllPanels = () => {\r\n document\r\n .querySelectorAll(\"[data-js-panel]\")\r\n .forEach(panel => closePanel(panel as HTMLElement));\r\n };\r\n\r\n const openPanel = (panel: HTMLElement) => {\r\n const link = panel.previousElementSibling as HTMLElement;\r\n const topLink = link.parentElement as HTMLElement;\r\n link?.setAttribute(\"aria-expanded\", \"true\");\r\n topLink?.setAttribute(\"aria-expanded\", \"true\");\r\n openOverlay();\r\n disablePageScroll();\r\n };\r\n\r\n const toggleMenuHandler = (e: Event) => {\r\n const link = e.currentTarget as HTMLElement;\r\n const wasOpen: boolean = link.getAttribute(\"aria-expanded\") === \"true\";\r\n const menuId = link.getAttribute(\"aria-controls\");\r\n if (!menuId) {\r\n console.error(\"Missing id in aria-controls attribute of menu item\");\r\n return;\r\n }\r\n\r\n const panel = document.getElementById(menuId);\r\n if (!panel) {\r\n console.error(`Could not find panel: ${menuId}`);\r\n return;\r\n }\r\n\r\n closeAllPanels();\r\n wasOpen ? closePanel(panel) : openPanel(panel);\r\n link.setAttribute(\"aria-expanded\", (!wasOpen).toString().toLowerCase());\r\n\r\n if (headerElement) {\r\n // shared state with scrollEffect\r\n headerElement.dataset.menuOpen = (!wasOpen).toString();\r\n }\r\n };\r\n\r\n // Prevent navigation when clicking on a menu item which should open a submenu\r\n document\r\n .querySelectorAll(\"[data-js-menu-prevent-navigation]\")\r\n .forEach(link => link.addEventListener(\"click\", (e: Event) => {\r\n e.preventDefault();\r\n toggleMenuHandler(e);\r\n }));\r\n\r\n const escapablePanels = document.querySelectorAll(\"[data-js-menu=close-on-esc]\");\r\n\r\n if (escapablePanels) {\r\n window.addEventListener(\"keydown\", e => closeOnEscapeHandler(e as KeyboardEvent))\r\n }\r\n\r\n (document.querySelector(\"[data-js-menu=overlay]\") as HTMLElement)\r\n .addEventListener(\"click\", closeAllPanels);\r\n};\r\n\r\ndesktopMenu();", "\uFEFFimport { isMobile } from \"./scrollEffect\";\r\n\r\nconst mobileMenu = () => {\r\n const headerElement = document.querySelector(\r\n \"[data-js-menu=hide-on-scroll]\"\r\n ) as HTMLElement;\r\n\r\n const closeMobileMenu = (mobileMenu: HTMLElement) => {\r\n if (mobileMenu) {\r\n mobileMenu.dataset.expanded = \"false\";\r\n }\r\n };\r\n\r\n const openMobileMenu = (mobileMenu: HTMLElement) => {\r\n if (mobileMenu) {\r\n mobileMenu.dataset.expanded = \"true\";\r\n }\r\n };\r\n\r\n const toggleMobileMenuHandler = (e: Event) => {\r\n const btn = e.currentTarget as HTMLElement;\r\n const wasOpen: boolean = btn.getAttribute(\"aria-expanded\") === \"true\";\r\n const mobileMenuId = btn.getAttribute(\"aria-controls\");\r\n if (!mobileMenuId) {\r\n console.error(\"Missing id in aria-controls attribute of toggle button\");\r\n return;\r\n }\r\n\r\n const mobileMenu = document.getElementById(mobileMenuId);\r\n if (!mobileMenu) {\r\n console.error(`Could not find mobile menu: ${mobileMenuId}`);\r\n return;\r\n }\r\n\r\n wasOpen ? closeMobileMenu(mobileMenu) : openMobileMenu(mobileMenu);\r\n btn.setAttribute(\"aria-expanded\", (!wasOpen).toString().toLowerCase());\r\n\r\n if (headerElement) {\r\n // shared state with scrollEffect\r\n headerElement.dataset.menuOpen = (!wasOpen).toString();\r\n }\r\n };\r\n\r\n // Bind mobile menu events\r\n\r\n let toggleButton = document.querySelector(\"[data-js-menu=toggle-button]\") as HTMLElement;\r\n toggleButton.addEventListener(\"click\", toggleMobileMenuHandler);\r\n\r\n // Swipe to close\r\n\r\n let touchStartX: number, touchEndX: number;\r\n\r\n let mobilePanel = document.querySelector(\"[data-js-menu=mobile-panel]\") as HTMLElement;\r\n\r\n mobilePanel.addEventListener(\r\n 'touchstart',\r\n e => (touchStartX = e.targetTouches[0].clientX),\r\n { passive: true }\r\n );\r\n\r\n mobilePanel.addEventListener(\r\n 'touchmove',\r\n e => (touchEndX = e.targetTouches[0].clientX),\r\n { passive: true }\r\n );\r\n\r\n mobilePanel.addEventListener('touchend', e => {\r\n if (touchEndX != 0 && touchStartX - touchEndX > 50) {\r\n toggleButton.dispatchEvent(new Event('click'));\r\n }\r\n touchStartX = 0, touchEndX = 0;\r\n }, { passive: true });\r\n\r\n // Accordion\r\n\r\n const toggleMobileMenuControllHandler = (e: Event) => {\r\n const control = e.currentTarget as HTMLElement;\r\n const link = control.previousElementSibling as HTMLElement;\r\n const wasOpen: boolean = control.getAttribute(\"aria-expanded\") === \"true\";\r\n const menuId = control.getAttribute(\"aria-controls\");\r\n if (!menuId) {\r\n console.error(\"Missing id in aria-controls attribute of menu item control\");\r\n return;\r\n }\r\n\r\n const menu = document.getElementById(menuId);\r\n if (!menu) {\r\n console.error(`Could not find panel: ${menuId}`);\r\n return;\r\n }\r\n\r\n wasOpen ? closeMobileMenu(menu) : openMobileMenu(menu);\r\n control.setAttribute(\"aria-expanded\", (!wasOpen).toString().toLowerCase());\r\n link.setAttribute(\"aria-expanded\", (!wasOpen).toString().toLowerCase());\r\n }\r\n\r\n // Bind menu controls to accordion \r\n\r\n document.querySelectorAll(\"[data-js-menu=menu-item-control]\")\r\n .forEach(control => control.addEventListener(\"click\", (e: Event) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n toggleMobileMenuControllHandler(e);\r\n }))\r\n};\r\n\r\nmobileMenu();"], "mappings": "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", "names": ["scrollEffect", "headerElement", "headerVisible", "scrollPosition", "getHeaderHeight", "initHeaderHeight", "headerHeight", "focusWithinMenuOrMenuOpen", "isMobile", "isAtTopOfScreen", "toggleNavigationOnScroll", "currentScrollPosition", "initScrollEffects", "timeout", "delay", "preventBodyScroll", "e", "currentlyOpenMenu", "target", "menuHasOverflow", "isOverlay", "scrollingInMenu", "scrollingInHeader", "disablePageScroll", "enablePageScroll", "desktopMenu", "headerElement", "closeOnEscapeHandler", "closeAllPanels", "closePanel", "panel", "link", "topLink", "closeOverlay", "enablePageScroll", "overlay", "openOverlay", "openPanel", "disablePageScroll", "toggleMenuHandler", "wasOpen", "menuId", "e", "mobileMenu", "headerElement", "closeMobileMenu", "openMobileMenu", "toggleMobileMenuHandler", "btn", "wasOpen", "mobileMenuId", "toggleButton", "touchStartX", "touchEndX", "mobilePanel", "toggleMobileMenuControllHandler", "control", "link", "menuId", "menu", "e"] }