function registerHeaderListeners(){const t=document.querySelector(".js-header"),s=document.querySelectorAll(".js-headerMenuButton");s.forEach(n=>{n.addEventListener("click",e=>{e.preventDefault(),t?.classList.toggle("is-active"),n.setAttribute("aria-expanded",String(t?.classList.contains("is-active")))})}),document.querySelector(".js-scrim")?.addEventListener("click",n=>{n.preventDefault(),t?.classList.remove("is-active"),s.forEach(e=>{e.setAttribute("aria-expanded",String(t?.classList.contains("is-active")))})})}function registerSearchFormListeners(){const t=512,s=document.querySelector(".js-headerLogo"),r=document.querySelector(".js-searchForm"),n=document.querySelector(".js-searchFormSubmit"),e=r?.querySelector("input");i(),window.addEventListener("resize",i);function i(){window.innerWidth>t?(s?.classList.remove("go-Header-logo--hidden"),r?.classList.remove("go-SearchForm--open"),e?.removeEventListener("focus",o),e?.removeEventListener("keypress",a),e?.removeEventListener("focusout",d)):(n?.addEventListener("click",u),e?.addEventListener("focus",o),e?.addEventListener("keypress",a),e?.addEventListener("focusout",d))}function a(c){c.key==="Enter"&&r?.submit()}function o(){s?.classList.add("go-Header-logo--hidden"),r?.classList.add("go-SearchForm--open")}function d(){s?.classList.remove("go-Header-logo--hidden"),r?.classList.remove("go-SearchForm--open")}function u(c){c.preventDefault(),o(),e?.focus()}}registerHeaderListeners(),registerSearchFormListeners();
//# sourceMappingURL=header.js.map
