{"version":3,"file":"chunk-drawers-3394e513-esm.js","sources":["src/modules/drawers.ts"],"sourcesContent":["const trapFocus = (e: KeyboardEvent): void => {\n const currentTarget = e.currentTarget;\n if (!currentTarget || !(currentTarget instanceof HTMLElement)) {\n return;\n }\n\n const focusable = currentTarget?.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const isHidden = (el: HTMLElement) => {\n const style = window.getComputedStyle(el);\n return style.display === 'none';\n };\n\n const filteredFocusableElements = Array.from(focusable).filter((el) => !isHidden(el));\n\n const firstFocusableElement = filteredFocusableElements[0];\n const lastFocusableElement = filteredFocusableElements[filteredFocusableElements.length - 1];\n\n if (e instanceof KeyboardEvent) {\n if (e.key === 'Tab') {\n if (e.shiftKey && e.target === firstFocusableElement) {\n e.preventDefault();\n lastFocusableElement?.focus();\n } else if (!e.shiftKey && e.target === lastFocusableElement) {\n e.preventDefault();\n firstFocusableElement?.focus();\n }\n }\n }\n};\n\nconst openDrawer = (trigger: Element | null): void => {\n if (!trigger || !(trigger instanceof Element)) {\n return;\n }\n const target = document.getElementById(trigger.getAttribute('data-controls'));\n\n const buttonClose = target?.querySelector('.drawer__close');\n window._modalOpenedBy = trigger;\n\n target?.classList.add('is-active');\n document.documentElement.style.overflow = 'hidden';\n setTimeout(function () {\n target?.classList.add('is-visible');\n if (buttonClose instanceof HTMLElement) {\n buttonClose?.focus();\n }\n }, 50);\n\n target?.addEventListener('keydown', trapFocus);\n};\n\nconst closeDrawer = (event: Element): void => {\n const closestParent = event.closest('[data-drawer-target]');\n closestParent?.classList.remove('is-visible');\n document.documentElement.style.overflow = '';\n setTimeout(function () {\n closestParent?.classList.remove('is-active');\n }, 350);\n\n const openingButton = window._modalOpenedBy;\n\n if (openingButton && (openingButton instanceof HTMLElement || openingButton instanceof SVGElement)) {\n openingButton.focus();\n }\n};\n\nconst handleDrawerKeyEvent = (event: Event | KeyboardEvent): void => {\n if (event instanceof KeyboardEvent && event.target instanceof Element) {\n if (event.key === 'Escape') {\n document.querySelectorAll('[data-drawer-target].is-active').forEach(closeDrawer);\n }\n\n if (event.target.hasAttribute('data-drawer-trigger') && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n openDrawer(event.target);\n return;\n }\n }\n};\n\nexport function initDrawers(): void {\n document.addEventListener('keydown', handleDrawerKeyEvent);\n\n document.addEventListener('click', (e) => {\n if (!(e.target instanceof HTMLElement) && !(e.target instanceof Element)) {\n return;\n }\n\n if (e.target.hasAttribute('data-drawer-trigger')) {\n e.preventDefault();\n openDrawer(e.target);\n return;\n }\n\n if (e.target.hasAttribute('data-drawer-close')) {\n e.preventDefault();\n closeDrawer(e.target);\n return;\n }\n });\n}\n"],"names":["trapFocus","e","currentTarget","HTMLElement","focusable","querySelectorAll","isHidden","el","style","window","getComputedStyle","display","filteredFocusableElements","Array","from","filter","firstFocusableElement","lastFocusableElement","length","KeyboardEvent","key","shiftKey","target","preventDefault","focus","openDrawer","trigger","Element","document","getElementById","getAttribute","buttonClose","querySelector","_modalOpenedBy","classList","add","documentElement","overflow","setTimeout","addEventListener","closeDrawer","event","closestParent","closest","remove","openingButton","SVGElement","handleDrawerKeyEvent","forEach","hasAttribute","initDrawers"],"mappings":"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"}