class i extends HTMLElement{constructor(){super(...arguments),this.menuOpen=!1,this.topOffset=40}connectedCallback(){this.burger=this.getSlotElement("burger"),this.burger?.addEventListener("click",()=>this.toggleMenu()),this.close=this.getSlotElement("close"),this.close?.addEventListener("click",()=>this.closeMenu()),this.nav=this.getSlotElement("nav"),this.menu=this.getSlotElement("menu"),this.getAttribute("data-top-offset")&&(this.topOffset=window.parseInt(this.getAttribute("data-top-offset"))),this.nav&&this.menu&&(this.navLinks=Array.from(this.nav?.querySelectorAll("a, button")),this.menuLinks=Array.from(this.menu?.querySelectorAll("a, button")),this.disableMenuFocusTrap()),this.lastScrollY=window.scrollY,window.addEventListener("scroll",()=>this.onScroll(),{passive:!0}),this.onScroll(),window.addEventListener("click",e=>this.onClick(e)),document.addEventListener("keydown",e=>{e.key==="Escape"&&this.closeMenu()})}disconnectedCallback(){window.removeEventListener("scroll",()=>this.onScroll())}getSlotElement(e){return this.querySelector(`[data-slot="${e}"]`)}onClick(e){if(!e.target)return;const t=e.target.closest("a[href]");t&&t.getAttribute("href").startsWith("#")&&this.closeMenu(),!this.contains(e.target)&&this.closeMenu()}onScroll(){const e=window.scrollY,t=e<=this.topOffset;this.classList.toggle("y:top",t),this.classList.toggle("y:scrolled",!t),e>this.lastScrollY?(this.classList.add("dir:down"),this.classList.remove("dir:up")):e{this.trapMenuFocus(e)}),this.navLinks?.forEach(e=>{e.id!=="burger"&&(e.tabIndex=-1)}),this.menuLinks?.forEach(e=>{e.tabIndex=0})}disableMenuFocusTrap(){this.removeEventListener("keydown",e=>{this.trapMenuFocus(e)}),this.navLinks?.forEach(e=>{e.id!=="burger"&&(e.tabIndex=0)}),this.menuLinks?.forEach(e=>{e.tabIndex=-1})}}customElements.get("bds-header")||customElements.define("bds-header",i);