1var L=Object.defineProperty;var k=(d,c,e)=>c in d?L(d,c,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[c]=e;var u=(d,c,e)=>(k(d,typeof c!="symbol"?c+"":c,e),e);import{C as $}from"./vendor-a6c4fc13.js";class A extends ${constructor(){super(...arguments);u(this,"activeMenu",null);u(this,"activeMobileMenu",null);u(this,"isMobileMenuOpen",!1);u(this,"directClickEvent",!1);u(this,"isTransitioning",!1);u(this,"wasSticky",!1);u(this,"ignoreScroll",!1)}setupDefaults(){const e=this.el,t=e.querySelector(".header__menu"),i=e.querySelector(".header__close"),s=document.querySelector(".mobile-menu-wrapper"),a=e.querySelector(".header__mobile-menu"),o=e.querySelector(".header__search-wrapper");this.dom={$header:e,$languageLinks:e.querySelectorAll(".header__language-option"),$languageToggle:e.querySelector(".header__utility-item--language"),$primaryLinks:e.querySelectorAll('.header__primary-link[aria-haspopup="true"]'),$keyHandlers:e.querySelectorAll("[data-key-handler]"),$menuButton:t,$closeButton:i,$mobileMenu:a,$mobileMenuWrapper:s,$mobileSubmenus:e.querySelectorAll(".header__mobile-submenu"),$mobileMenuTriggers:e.querySelectorAll(".header__mobile-nav-link[data-submenu]"),$mobileBackButtons:e.querySelectorAll(".header__mobile-back"),$searchWrapper:o,$searchButton:o.querySelector(".header__search"),$searchSubmenu:o.querySelector(".header__search-submenu"),$searchClear:o.querySelector(".header__search-clear"),$searchInput:o.querySelector(".header__search-input"),$searchField:o.querySelector(".header__search-field"),$searchForm:o.querySelector(".header__search-form"),$searchSubmitBtn:o.querySelector(".header__search-submit")}}addListeners(){window.addEventListener("scroll",this.handleScroll.bind(this)),document.addEventListener("click",this.handleDocumentClick.bind(this));const e=this.dom.$languageLinks;e!=null&&e.length&&e.forEach(n=>{n.getAttribute("href")==="#"&&n.addEventListener("click",this.handleLanguageChange.bind(this))});const t=this.dom.$languageToggle;if(t){const n=t.querySelector(".header__utility-link");n&&(n.addEventListener("click",this.handleLanguageToggle.bind(this)),n.addEventListener("keydown",this.handleLanguageKeydown.bind(this)))}const i=this.dom.$primaryLinks;i!=null&&i.length&&i.forEach(n=>{n.addEventListener("keydown",this.handlePrimaryLinkKeydown.bind(this)),n.addEventListener("click",this.handlePrimaryLinkClick.bind(this))});const s=this.dom.$searchButton;s&&s.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.directClickEvent=!0,s.getAttribute("aria-expanded")==="true"?this.closeSearch():this.openSearch(),setTimeout(()=>{this.directClickEvent=!1},10)});const a=this.dom.$searchSubmenu;if(a){const n=a.querySelector(".header__mobile-search-back");n&&n.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.closeSearch()})}const o=this.dom.$searchClear;o&&o.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation();const r=this.dom.$searchInput;r&&(r.value="",r.focus(),o.classList.remove("is-visible"))});const l=this.dom.$searchField;l&&l.addEventListener("click",n=>{n.stopPropagation()});const h=this.dom.$searchInput;h&&(h.addEventListener("click",n=>{n.stopPropagation()}),h.addEventListener("input",()=>{const n=this.dom.$searchField,r=this.dom.$searchClear;n&&r&&(h.value.length>0?(n.classList.add("has-value"),r.classList.add("is-visible")):(n.classList.remove("has-value"),r.classList.remove("is-visible")))}));const p=this.dom.$searchSubmenu;p&&p.addEventListener("click",n=>{n.target.closest(".header__search-clear")||n.stopPropagation()});const m=this.dom.$searchForm;m&&(m.addEventListener("click",n=>{n.stopPropagation()}),m.addEventListener("submit",n=>{n.preventDefault(),n.stopPropagation();const y=this.dom.$searchInput.value.trim();if(y){const S=(m.getAttribute("action")||"/search").replace(/\/$/,"");window.location.href=`${S}#q=${encodeURIComponent(y)}`}}));const g=this.dom.$menuButton;g&&g.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.directClickEvent=!0,setTimeout(()=>{this.toggleMobileMenu(n)},10)});const v=this.dom.$closeButton;v&&v.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.directClickEvent=!0,setTimeout(()=>{this.closeMobileMenu()},10)});const b=this.dom.$mobileMenuTriggers;b!=null&&b.length&&b.forEach(n=>
1{n.addEventListener("click",this.openMobileSubmenu.bind(this))});const f=this.dom.$mobileBackButtons;f!=null&&f.length&&f.forEach(n=>{n.addEventListener("click",this.closeMobileSubmenu.bind(this))});const M=this.dom.$mobileMenuWrapper;M&&M.addEventListener("click",this.handleDocumentClick),document.addEventListener("keydown",this.handleDocumentKeydown.bind(this)),window.addEventListener("resize",this.handleResize.bind(this))}handleResize(){window.innerWidth>768&&(this.isMobileMenuOpen&&this.closeMobileMenu(),this.isSearchOpen()&&document.body.style.overflow==="hidden"&&this.closeSearch())}toggleMobileMenu(e){e.preventDefault(),e.stopPropagation(),!this.isTransitioning&&(this.isMobileMenuOpen?this.closeMobileMenu():this.openMobileMenu())}openMobileMenu(){if(this.isTransitioning)return;this.isTransitioning=!0,this.closeAllSubmenus();const e=this.dom.$mobileMenuWrapper,t=this.dom.$mobileMenu,i=this.dom.$menuButton,s=this.dom.$closeButton,a=this.dom.$header;if(!t||!e||!i||!s){this.isTransitioning=!1;return}this.ignoreScroll=!0,a.classList.contains("header--sticky")?(this.wasSticky=!0,a.classList.remove("header--sticky")):this.wasSticky=!1,document.removeEventListener("click",this.handleDocumentClick),e.classList.contains("submenu-active")&&e.classList.remove("submenu-active"),e.offsetWidth,requestAnimationFrame(()=>{e.classList.add("is-visible"),t.classList.add("is-open"),t.setAttribute("aria-hidden","false"),i.style.display="none",s.style.display="block",i.setAttribute("aria-expanded","true"),document.body.style.overflow="hidden",this.isMobileMenuOpen=!0,setTimeout(()=>{this.isTransitioning=!1,document.addEventListener("click",this.handleDocumentClick),this.directClickEvent=!1},300)})}closeMobileMenu(){if(this.isTransitioning)return;this.isTransitioning=!0;const e=this.dom.$mobileMenuWrapper,t=this.dom.$mobileMenu,i=this.dom.$menuButton,s=this.dom.$closeButton,a=this.dom.$header;if(!t||!e||!i||!s){this.isTransitioning=!1;return}this.activeMobileMenu&&this.closeMobileSubmenu(),e.classList.remove("submenu-active"),t.classList.remove("is-open"),t.setAttribute("aria-hidden","true"),e.classList.remove("is-visible"),i.style.display="",s.style.display="none",i.setAttribute("aria-expanded","false"),document.body.style.overflow="",this.isMobileMenuOpen=!1,this.directClickEvent=!1,this.ignoreScroll=!1,setTimeout(()=>{this.wasSticky&&(a.classList.add("header--sticky"),this.wasSticky=!1)},300),setTimeout(()=>{this.isTransitioning=!1},300)}openMobileSubmenu(e){const t=e.currentTarget,i=t.getAttribute("data-submenu");if(!i)return;const s=this.el.querySelector(`.header__mobile-submenu[data-submenu-id="${i}"]`);if(!s)return;e.preventDefault(),s.classList.add("is-open"),s.setAttribute("aria-hidden","false"),t.setAttribute("aria-expanded","true");const a=this.dom.$mobileMenuWrapper;a&&a.classList.add("submenu-active"),this.activeMobileMenu={trigger:t,submenuId:i,submenu:s}}closeMobileSubmenu(e){if(e&&e.preventDefault(),!this.activeMobileMenu)return;this.activeMobileMenu.submenu.classList.remove("is-open"),this.activeMobileMenu.submenu.setAttribute("aria-hidden","true"),this.activeMobileMenu.trigger.setAttribute("aria-expanded","false");const t=this.dom.$mobileMenu,i=this.dom.$mobileMenuWrapper,s=this.isMobileMenuOpen;this.activeMobileMenu=null,this.isTransitioning=!0,i&&s&&(i.offsetWidth,i.classList.add("is-visible"),setTimeout(()=>{i.classList.contains("is-visible")||i.classList.add("is-visible"),i.classList.remove("submenu-active"),i.offsetWidth,i.classList.contains("is-visible")||i.classList.add("is-visible"),s&&t&&!t.classList.contains("is-open")&&(t.classList.add("is-open"),t.setAttribute("aria-hidden","false")),this.isTransitioning=!1},50))}handleLanguageKeydown(e){const t=e.currentTarget;(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.openLanguageMenu(t))}handlePrimaryLinkKeydown(e){const t=e.currentTarget;e.key==="Enter"||e.key===" "?(e.preventDefault(),this.openSubmenu(t)):e.key==="Tab"&&this.activeMenu&&!this.activeMenu.isLanguageMenu&&this.closeAllSubmenus()}handlePrimaryLinkClick(e){const t=e.currentTarget;t.getAttribute("aria-haspopup")==="true"&&(e.preventDefault(),this.openSubmenu(t))}openSubmenu(e){this.closeAllSubmenus();const i=e.closest(".header__primary-item").querySelector(".header__secondary-menu"),s=i.querySelectorAll('[role="menuitem"]');if(e.setAttribute("aria-expanded","true"),i.setAttribute("aria-hidden","false"),i.classList.add("is-open"),s.forEac
1h(l=>{l.setAttribute("tabindex","0")}),s.length>0){const l=s[0];requestAnimationFrame(()=>{requestAnimationFrame(()=>{l.focus()})})}const a=s[0],o=s[s.length-1];this.activeMenu={trigger:e,submenu:i,menuItems:s,firstFocusableElement:a,lastFocusableElement:o,isLanguageMenu:!1}}openLanguageMenu(e){this.closeAllSubmenus();const t=e.closest(".header__utility-item--language"),i=t.querySelector(".header__language-submenu"),s=i.querySelectorAll('[role="menuitem"]');if(e.setAttribute("aria-expanded","true"),i.setAttribute("aria-hidden","false"),t.classList.add("is-active"),s.forEach(l=>{l.setAttribute("tabindex","0")}),s.length>0){const l=s[0];requestAnimationFrame(()=>{requestAnimationFrame(()=>{l.focus()})})}const a=s[0],o=s[s.length-1];this.activeMenu={trigger:e,submenu:i,menuItems:s,firstFocusableElement:a,lastFocusableElement:o,isLanguageMenu:!0}}closeAllSubmenus(){this.el.querySelectorAll('.header__primary-link[aria-expanded="true"]').forEach(i=>{const a=i.closest(".header__primary-item").querySelector(".header__secondary-menu"),o=a.querySelectorAll('[role="menuitem"]');i.setAttribute("aria-expanded","false"),a.setAttribute("aria-hidden","true"),a.classList.remove("is-open"),o.forEach(l=>{l.setAttribute("tabindex","-1")})});const t=this.dom.$languageToggle;if(t){const i=t.querySelector(".header__utility-link"),s=t.querySelector(".header__language-submenu"),a=s==null?void 0:s.querySelectorAll('[role="menuitem"]');i&&i.setAttribute("aria-expanded","false"),s&&s.setAttribute("aria-hidden","true"),t.classList.remove("is-active"),a==null||a.forEach(o=>{o.setAttribute("tabindex","-1")})}this.activeMenu=null}handleDocumentKeydown(e){if(e.key==="Escape"){if(e.preventDefault(),this.isSearchOpen()){this.closeSearch();return}if(this.activeMobileMenu){this.closeMobileSubmenu();return}if(this.isMobileMenuOpen){this.closeMobileMenu();return}if(this.activeMenu){const{trigger:t,isLanguageMenu:i}=this.activeMenu;if(this.closeAllSubmenus(),t&&(t.focus(),!i)){t.classList.add("is-focused");const s=()=>{t.classList.remove("is-focused"),t.removeEventListener("blur",s)};t.addEventListener("blur",s)}return}}if(e.key==="Tab"&&this.activeMenu){const{firstFocusableElement:t,lastFocusableElement:i}=this.activeMenu;if(!t||!i)return;e.shiftKey&&document.activeElement===t?(e.preventDefault(),i.focus()):!e.shiftKey&&document.activeElement===i&&(e.preventDefault(),t.focus())}}handleLanguageToggle(e){e.preventDefault(),e.stopPropagation();const t=this.dom.$languageToggle,i=t.querySelector(".header__utility-link");if(t.classList.contains("is-active")){this.closeAllSubmenus();return}this.openLanguageMenu(i)}handleDocumentClick(e){if(this.directClickEvent||this.isTransitioning)return;if(this.isSearchOpen()){const s=this.dom.$searchWrapper,a=e.target;if(s&&!s.contains(a)){this.closeSearch();return}}const t=this.dom.$mobileMenu,i=this.dom.$menuButton;if(this.isMobileMenuOpen&&t&&!t.contains(e.target)&&!i.contains(e.target)){if(this.activeMobileMenu)return;this.closeMobileMenu()}if(this.activeMenu){const s=document.querySelector('[aria-expanded="true"]'),a=window.innerWidth<=768;s&&!s.contains(e.target)&&(!a||!this.activeMobileMenu)&&this.closeAllSubmenus()}}handleScroll(){if(this.ignoreScroll)return;const e=window.pageYOffset||document.documentElement.scrollTop,t=this.dom.$header;e>5?t.classList.add("header--sticky"):t.classList.remove("header--sticky")}async handleLanguageChange(e){e.preventDefault();const t=e.currentTarget,i=t.dataset.locale,s=t.dataset.languageCode;if(!(!i||!s))try{(await fetch("/api/language",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:i,languageCode:s})})).ok?window.location.reload():console.error("Failed to change language")}catch(a){console.error("Error changing language:",a)}}openSearch(){const e=this.dom.$searchButton,t=this.dom.$searchSubmenu,i=this.dom.$searchInput,s=this.dom.$header;if(!t||!i||!e)return;this.isMobileMenuOpen&&this.closeMobileMenu(),window.innerWidth<=768&&(this.ignoreScroll=!0,s.classList.contains("header--sticky")?(this.wasSticky=!0,s.classList.remove("header--sticky")):this.wasSticky=!1,document.body.style.overflow="hidden"),t.classList.add("is-open"),t.setAttribute("aria-hidden","false"),e.setAttribute("aria-expanded","true"),setTimeout(()=>{i.focus()},100)}closeSearch(){const e=this.dom.$searchButton,t=this.dom.$searchSubmenu,i=this.dom.$header;if(!t||!e)return;t.classList.remove("is-open"),t.setAttribute("aria-hidden","true"),e.setAttribute("aria-expanded","fal
1se"),window.innerWidth<=768&&(this.ignoreScroll=!1,document.body.style.overflow="",setTimeout(()=>{this.wasSticky&&(i.classList.add("header--sticky"),this.wasSticky=!1)},300)),e.focus()}isSearchOpen(){const e=this.dom.$searchSubmenu;return e&&e.classList.contains("is-open")}}export{A as default}; 2//# sourceMappingURL=header-283f4b0b.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.