{"version":3,"mappings":"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","names":["CSS","getChildIndex","$element","$parentElement","$childNode","findParentWithAttribute","attributeName","isVisible","el","instance","$el","dom","setupListeners","_a","toggle","setupTabbability","burgerVisible","burgerExpanded","$menuItem","$menu","nav","__vitePreload","init","n"],"ignoreList":[],"sources":["../../Assets/Scripts/constants/css.ts","../../Assets/Scripts/utils/dom.ts","../../Assets/Scripts/components/nav/index.ts","../../Assets/Scripts/main.ts"],"sourcesContent":["export const CSS = {\n active: \"is-active\",\n open: \"is-open\",\n overflowHidden: \"overflow--hidden\",\n visible: \"is-visible\",\n};\n","export const getChildIndex = ($element: HTMLElement): number => {\n const $parentElement = $element.parentElement;\n\n if (!$parentElement) {\n return -1;\n }\n\n return Array.from($parentElement.children).findIndex(\n $childNode => $childNode === $element,\n );\n};\n\nexport const findParentWithAttribute = (\n $element: HTMLElement | null,\n attributeName: string,\n): HTMLElement | null => {\n if ($element && $element.hasAttribute(attributeName)) {\n return $element;\n }\n\n // If not, continue to the parent element\n if ($element?.parentElement) {\n return findParentWithAttribute($element.parentElement, attributeName);\n }\n\n // If there are no more parent elements and the attribute is not found, return null\n return null;\n};\n\nexport const isVisible = (el: HTMLElement | null) => {\n if (!el) {\n return;\n }\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n};\n","import { CSS } from \"../../constants/css\";\nimport { isVisible } from \"../../utils/dom\";\n\nconst instance = ($el: HTMLElement) => {\n const dom = {\n $menu: $el.querySelectorAll(\".js-menu\"),\n $toggleBtn: $el.querySelector(\".js-menu-toggle\"),\n $menuItems: $el.querySelectorAll(\".js-menu-item\"),\n };\n\n const setupListeners = () => {\n dom.$toggleBtn?.addEventListener(\"click\", function () {\n toggle(this);\n });\n };\n\n const setupTabbability = () => {\n const burgerVisible = isVisible(dom.$toggleBtn); // mobile\n const burgerExpanded = dom.$toggleBtn?.getAttribute(\"aria-expanded\") === \"true\";\n\n dom.$menuItems.forEach(($menuItem) => {\n if ((burgerVisible && burgerExpanded) || (!burgerVisible)) {\n $menuItem.removeAttribute(\"tabindex\");\n return;\n }\n $menuItem.setAttribute(\"tabindex\", \"-1\");\n });\n };\n\n const toggle = (el: HTMLElement) => {\n dom.$menu.forEach(($menu) => {\n $menu.classList.toggle(CSS.active);\n });\n dom.$toggleBtn?.classList.toggle(CSS.active);\n\n el.setAttribute(\"aria-expanded\", el.getAttribute(\"aria-expanded\") === \"true\" ? \"false\" : \"true\");\n setupTabbability();\n };\n\n setupListeners();\n setupTabbability();\n\n screen.orientation.addEventListener(\"change\", setupTabbability);\n window.addEventListener(\"resize\", setupTabbability);\n};\n\nexport default () => {\n const $nav = document.querySelectorAll(\".js-nav\");\n\n $nav.forEach(($element) => {\n instance($element);\n });\n};\n","import nav from \"./components/nav\";\n\nnav();\n\nif (document.querySelector(\".js-notification\")) {\n import(\"./components/notification\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-tabs\")) {\n import(\"./components/tabs\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-accordion\")) {\n import(\"./components/accordion\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-carousel\")) {\n import(\"./components/carousel\").then(init => init.default());\n}\nif (document.querySelector(\".js-grid-carousel\")) {\n import(\"./components/gridCarousel\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-gallery\")) {\n import(\"./components/gallery\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-language-picker-list\")) {\n import(\"./components/languagePicker\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-marquee\")) {\n import(\"./components/marquee\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-add-wrapper\")) {\n import(\"./components/addWrapper\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-bursary-lookup\")) {\n import(\"./components/bursaryLookup\").then(init => init.default());\n}\n\nif (document.querySelector(\"[data-aos]\")) {\n import(\"./components/aos\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-share\")) {\n import(\"./components/share\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-form-popover\")) {\n import(\"./components/gatewayForm\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-search\")) {\n import(\"./components/search\");\n}\nif (document.querySelector(\".js-filters\")) {\n import(\"./components/filters\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-auto-populate-fields\")) {\n import(\"./components/autoFieldPopulation\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-scale-on-scroll\")) {\n import(\"./components/scaleOnScroll\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-schools-lookup\")) {\n import(\"./components/schoolsLookup\").then(init => init.default());\n}\n\nif (document.querySelector(\".js-recorded-download\")) {\n import(\"./components/recordedDownload\").then(init => init.default());\n}\n"],"file":"scripts/main-CQQcaK8p.js"}