{"version":3,"file":"./default/chunk-mainNavigation.04fb4847535e1494fe9c.js","mappings":"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","sources":["webpack:///./scripts/default/box/header/MainNavigation/MainNavigation.ts","webpack:///./scripts/default/box/header/MainNavigation/createOverflowMenu.ts","webpack:///./scripts/default/box/header/MainNavigation/listItemManager.ts","webpack:///./scripts/default/box/header/MainNavigation/resizeHandler.ts","webpack:///./scripts/default/utils/debounce.ts"],"sourcesContent":["import { createResizeHandler } from './resizeHandler';\nimport { createListItemManager } from './listItemManager';\nimport * as Sentry from '@sentry/browser';\n\nexport const MainNavigation = (mainNavigationSelector: HTMLElement) => {\n if (!mainNavigationSelector) {\n Sentry.captureException('MainNavigation: Element hlavní navigace nenalezen.');\n return;\n }\n const mainList: HTMLElement | null = mainNavigationSelector.querySelector('[data-main-nav-list]');\n if (!mainList) {\n Sentry.captureException('MainNavigation: Hlavní menu nenalezeno.');\n return;\n }\n const listItemManager = createListItemManager(mainList);\n const handleResize = createResizeHandler(mainNavigationSelector, mainList, listItemManager);\n handleResize();\n};\n\nexport default MainNavigation;\n","import { OverflowMenu } from './types';\n\nexport const createOverflowMenu = (): OverflowMenu => {\n const overflowMenuItem = document.createElement('li');\n overflowMenuItem.className = 'header-menu__item overflow-menu';\n overflowMenuItem.innerHTML = `Další`;\n\n const overflowMenuList = document.createElement('ul');\n overflowMenuList.className = 'overflow-menu__list';\n overflowMenuItem.appendChild(overflowMenuList);\n\n const toggle = overflowMenuItem.querySelector('.overflow-menu__toggle') as HTMLElement;\n toggle.addEventListener('click', () => {\n overflowMenuItem.classList.toggle('active');\n });\n\n return { overflowMenuItem, overflowMenuList };\n};\n","import { createOverflowMenu } from './createOverflowMenu';\nimport { ListItemManager } from './types';\n\nexport const createListItemManager = (mainList: HTMLElement): ListItemManager => {\n let listItems = [...mainList.children].map((child) => child as HTMLElement);\n const { overflowMenuItem, overflowMenuList } = createOverflowMenu();\n let usingOverflowMenu = false;\n const addOverflowMenu = () => {\n if (!usingOverflowMenu) {\n usingOverflowMenu = true;\n mainList.appendChild(overflowMenuItem);\n }\n };\n const moveItemToOverflowMenu = () => {\n listItems = [...mainList.children] as HTMLElement[];\n listItems = listItems.filter((li) => li !== overflowMenuItem);\n if (listItems.length > 0) {\n const lastItem = listItems.pop();\n if (lastItem) {\n const lastItemLink = lastItem.querySelector('.header-link');\n overflowMenuList.prepend(lastItem);\n if (lastItemLink) {\n lastItemLink.classList.remove('header-link--inverted');\n lastItemLink.classList.add('header-link--normal');\n }\n }\n }\n };\n const checkListItemsFit = (navWidth: number) => {\n let totalListItemsWidth = 0;\n listItems = [...mainList.children].map((child) => child as HTMLElement);\n listItems.forEach((li) => {\n totalListItemsWidth += li.offsetWidth;\n });\n if (totalListItemsWidth > navWidth) {\n addOverflowMenu();\n moveItemToOverflowMenu();\n checkListItemsFit(navWidth);\n }\n };\n const resetOverflowMenu = () => {\n if (overflowMenuItem.parentNode) {\n usingOverflowMenu = false;\n const itemsToMove = [...overflowMenuList.children];\n\n itemsToMove.forEach((item) => {\n const itemLink = item.querySelector('.header-link');\n if (itemLink) {\n itemLink.classList.add('header-link--inverted');\n itemLink.classList.remove('header-link--normal');\n }\n });\n\n overflowMenuItem.parentNode.removeChild(overflowMenuItem);\n mainList.append(...itemsToMove);\n }\n };\n return {\n checkListItemsFit,\n resetOverflowMenu,\n };\n};\n","import { debounce } from '@utils/debounce';\nimport { ListItemManager } from './types';\n\nexport const createResizeHandler = (\n mainNavigationSelector: HTMLElement,\n mainList: HTMLElement,\n listItemManager: ListItemManager\n) => {\n let lastNavContainerWidth = 0;\n let navWidth = mainList.getBoundingClientRect().width;\n const handleWidthChange = (entries: ResizeObserverEntry[]) => {\n entries.forEach((entry: ResizeObserverEntry) => {\n const newWidth = entry.contentRect.width;\n navWidth = mainList.getBoundingClientRect().width;\n if (newWidth !== lastNavContainerWidth) {\n lastNavContainerWidth = newWidth;\n listItemManager.resetOverflowMenu();\n listItemManager.checkListItemsFit(navWidth);\n }\n });\n };\n const debouncedHandleWidthChange = debounce(handleWidthChange, 20);\n const resizeObserver = new ResizeObserver(debouncedHandleWidthChange);\n return () => {\n if (mainNavigationSelector.offsetWidth > 0 || mainNavigationSelector.offsetHeight > 0) {\n resizeObserver.observe(mainNavigationSelector);\n }\n };\n};\n","export function debounce(callback: (...args: T) => void, wait: number) {\n let timer: NodeJS.Timeout | number;\n\n return (...args: T): void => {\n clearTimeout(timer as number);\n timer = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n}\n"],"names":["MainNavigation","mainNavigationSelector","mainList","listItemManager","createOverflowMenu","overflowMenuItem","overflowMenuList","createListItemManager","listItems","child","usingOverflowMenu","addOverflowMenu","moveItemToOverflowMenu","li","lastItem","lastItemLink","checkListItemsFit","navWidth","totalListItemsWidth","itemsToMove","item","itemLink","createResizeHandler","lastNavContainerWidth","handleWidthChange","entries","entry","newWidth","debouncedHandleWidthChange","resizeObserver","debounce","callback","wait","timer","args"],"sourceRoot":""}