{"mappings":"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","sources":["src/ts/components/menu/menu.ts","src/ts/components/menu/hamburger.ts"],"sourcesContent":["import './hamburger';\n\nconst setupEnterNavigation = () => {\n const menuDivs = document.querySelectorAll('.app-header__bar__link');\n\n menuDivs.forEach((menuDiv) => {\n const anchorLink = menuDiv.querySelector('a');\n\n menuDiv.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && anchorLink) {\n anchorLink.click();\n }\n });\n });\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n setupEnterNavigation();\n\n const menuDesktop = document.getElementById('menu-desktop') as HTMLElement;\n const menuContents = Array.from(document.getElementsByClassName('menu-desktop__content')) as HTMLElement[];\n const menuLinks = Array.from(document.querySelectorAll('.app-header__bar__link')) as HTMLElement[];\n\n let activeIdx = 0;\n\n const hideAllMenuContents = () => {\n menuContents.forEach((content) => content.classList.add('hidden'));\n };\n\n const hideMenuDesktop = () => {\n menuDesktop.classList.add('hidden');\n hideAllMenuContents();\n };\n\n const toggleMenuContent = (link: HTMLElement, focusFirstItem = false) => {\n const id = link.id.replace('menu-link-', '');\n const content = document.getElementById(`menu-content-${id}`) as HTMLElement | null;\n activeIdx = menuLinks.indexOf(link);\n\n if (content) {\n hideAllMenuContents();\n content.classList.remove('hidden');\n menuDesktop.classList.remove('hidden');\n if (focusFirstItem) {\n setTimeout(() => {\n const firstLink = content.querySelector('a');\n firstLink?.focus();\n }, 0);\n }\n } else {\n hideMenuDesktop();\n }\n };\n\n const handleMainMenuKeydown = (event: KeyboardEvent) => {\n const index = menuLinks.indexOf(event.target as HTMLElement);\n switch (event.key) {\n case 'ArrowRight':\n event.preventDefault();\n const nextIndex = (index + 1) % menuLinks.length;\n menuLinks[nextIndex].focus();\n break;\n case 'ArrowLeft':\n event.preventDefault();\n const prevIndex = (index - 1 + menuLinks.length) % menuLinks.length;\n menuLinks[prevIndex].focus();\n break;\n case 'ArrowDown':\n event.preventDefault();\n toggleMenuContent(event.target as HTMLElement, true);\n break;\n }\n };\n\n const isLastLinkInList = (link: HTMLAnchorElement, list: HTMLElement) => {\n const lastLink = list.querySelector('li:last-child a') as HTMLAnchorElement;\n return link === lastLink;\n };\n\n const findNextList = (currentList: HTMLElement): HTMLElement | null => {\n let nextContainer = currentList.parentElement?.nextElementSibling as HTMLElement | null;\n while (nextContainer) {\n const ul = nextContainer.querySelector('ul') as HTMLElement | null;\n if (ul) {\n return ul;\n }\n nextContainer = nextContainer.nextElementSibling as HTMLElement | null;\n }\n return null;\n };\n\n const focusNextMainMenuItem = (currentLink: HTMLElement) => {\n const currentIndex = menuLinks.indexOf(currentLink.closest('.app-header__bar__link') as HTMLElement);\n const nextIndex = (currentIndex + 1) % menuLinks.length;\n const nextMainLink = menuLinks[nextIndex];\n nextMainLink.focus();\n\n activeIdx = nextIndex;\n };\n\n const handleSubMenuNavigation = (event: KeyboardEvent, activeElement: HTMLElement) => {\n const currentList = activeElement.closest('ul') as HTMLElement | null;\n let targetElement: HTMLAnchorElement | undefined;\n\n if (event.key === 'ArrowDown') {\n targetElement =\n (activeElement.parentElement?.nextElementSibling?.querySelector('a') as HTMLAnchorElement | undefined) ||\n (activeElement.closest('.item')?.nextElementSibling?.querySelector('a') as HTMLAnchorElement | undefined);\n } else if (event.key === 'ArrowUp') {\n targetElement =\n (activeElement.parentElement?.previousElementSibling?.querySelector('a') as HTMLAnchorElement | undefined) ||\n (activeElement.closest('.item')?.previousElementSibling?.lastElementChild?.querySelector('a') as\n | HTMLAnchorElement\n | undefined);\n }\n\n if (\n !targetElement &&\n event.key === 'ArrowDown' &&\n activeElement === currentList?.lastElementChild?.querySelector('a')\n ) {\n event.preventDefault();\n const activeMenu = menuLinks[activeIdx];\n focusNextMainMenuItem(activeMenu);\n return;\n }\n\n if (targetElement) {\n event.preventDefault();\n targetElement.focus();\n } else {\n if (event.key === 'ArrowUp' && !activeElement.parentElement?.previousElementSibling) {\n const lastList = activeElement.closest('.menu-desktop__content')?.querySelectorAll('.item ul');\n lastList && lastList[lastList.length - 1]?.lastElementChild?.querySelector('a')?.focus();\n event.preventDefault();\n\n const activeMenu = menuLinks[activeIdx];\n activeMenu?.focus();\n } else if (event.key === 'ArrowDown' && !activeElement.parentElement?.nextElementSibling) {\n const firstList = activeElement.closest('.menu-desktop__content')?.querySelector('.item ul');\n firstList?.firstElementChild?.querySelector('a')?.focus();\n event.preventDefault();\n }\n }\n };\n\n menuLinks.forEach((link) => {\n link.addEventListener('mouseover', () => toggleMenuContent(link));\n link.addEventListener('focus', () => toggleMenuContent(link));\n link.addEventListener('keydown', handleMainMenuKeydown);\n });\n\n menuDesktop.addEventListener('mouseleave', hideMenuDesktop);\n\n document.addEventListener('keydown', (event: KeyboardEvent) => {\n const activeElement = document.activeElement as HTMLElement;\n if (\n ['ArrowDown', 'ArrowUp'].includes(event.key) &&\n activeElement.tagName === 'A' &&\n activeElement.closest('.menu-desktop__content')\n ) {\n handleSubMenuNavigation(event, activeElement);\n }\n });\n\n document.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Tab' && !event.shiftKey) {\n const activeElement = document.activeElement as HTMLAnchorElement;\n const currentList = activeElement.closest('ul') as HTMLElement | null;\n if (currentList && isLastLinkInList(activeElement, currentList)) {\n event.preventDefault();\n const nextList = findNextList(currentList);\n if (nextList) {\n const firstLink = nextList.querySelector('a') as HTMLAnchorElement | null;\n firstLink?.focus();\n } else {\n focusNextMainMenuItem(activeElement);\n }\n }\n }\n });\n});\n","document.addEventListener('DOMContentLoaded', () => {\n const body = document.body;\n const burgerMenu = document.getElementById('burger-menu')!;\n const overlay = document.getElementById('menu')!;\n\n const back = document.getElementById('menu-back')!;\n const root = document.getElementById('menu-root')!;\n\n const menuBottom = document.getElementById('menu__bottom')!;\n\n const menuContents = document.getElementsByClassName('mobile-menu-content');\n\n let menuOpen = false;\n\n function hideAllMenuContents() {\n for (const content of menuContents) {\n content.classList.add('hidden');\n }\n }\n\n burgerMenu.addEventListener('click', () => {\n burgerMenu.classList.toggle('close');\n overlay.classList.toggle('overlay');\n body.classList.toggle('no-scroll');\n back.classList.toggle('hidden');\n\n menuOpen = !menuOpen;\n\n if (menuOpen) {\n root.className = 'root';\n hideAllMenuContents();\n }\n });\n\n back.addEventListener('click', () => {\n root.classList.toggle('hidden');\n back.classList.toggle('hidden');\n menuBottom.classList.toggle('hidden');\n hideAllMenuContents();\n });\n\n for (const expandArrow of document.getElementsByClassName('menu-expand-arrow')) {\n expandArrow.addEventListener('click', () => {\n root.classList.toggle('hidden');\n back.classList.remove('hidden');\n menuBottom.classList.add('hidden');\n\n const id = expandArrow.id.replace('menu-expand-arrow-', '');\n document.getElementById(`mobile-menu-content-${id}`)?.classList.remove('hidden');\n });\n }\n});\n"],"names":[],"version":3,"file":"index.3d4d7ac8.js.map"}