1const DESKTOP_BREAKPOINT="(width >= 1024px)",SCROLL_START=100,SCROLL_THRESHOLD=5,SCROLL_THROTTLE_MS=250,MENU_RESET_DELAY_MS=500;class LyleSiteHeader extends HTMLElement{#overlay=null;#menuShelf=null;#menuToggle=null;#resizeListener=null;#isOpen=!1;#closeTimer=null;#resetTimer=null;#resizeObserver=null;#scroll=null;#scrollListener=null;#scrollTimer=null;#lastScrollAt=0;connectedCallback(){this.#overlay=this.querySelector("[data-site-header-overlay]"),this.#menuShelf=this.#overlay?.querySelector("lyle-menu-shelf"),this.#menuToggle=this.querySelector("[data-site-header-menu-toggle]"),this.#menuToggle?.addEventListener("click",this.#handleMenuToggle),this.addEventListener("mouseenter",this.#cancelClose),this.addEventListener("mouseleave",this.#handleMouseLeave),this.querySelectorAll("[data-menu-trigger]").forEach(link=>{link.addEventListener("mouseenter",this.#handleNavHover),link.addEventListener("focus",this.#handleNavHover)}),document.addEventListener("keydown",this.#handleKeydown),this.addEventListener("header-search:open",this.#handleSearchOpen),this.addEventListener("header-search:close",this.#handleSearchClose),this.#scrollListener=()=>this.#handleScrollThrottled(),this.#resizeListener=()=>{this.#setScrollbarWidth(),this.#setHeights(),this.#isOpen&&this.#close()},window.addEventListener("resize",this.#resizeListener,{passive:!0}),window.addEventListener("scroll",this.#scrollListener,{passive:!0}),this.#setScrollbarWidth(),this.#handleScroll(!0),this.#setHeights(),requestAnimationFrame(()=>this.#setHeights()),window.addEventListener("load",this.#setHeights,{once:!0}),typeof ResizeObserver<"u"&&(this.#resizeObserver=new ResizeObserver(()=>this.#setHeights()),this.#resizeObserver.observe(this))}disconnectedCallback(){this.#menuToggle?.removeEventListener("click",this.#handleMenuToggle),this.removeEventListener("mouseenter",this.#cancelClose),this.removeEventListener("mouseleave",this.#handleMouseLeave),document.removeEventListener("keydown",this.#handleKeydown),window.removeEventListener("scroll",this.#scrollListener),window.removeEventListener("resize",this.#resizeListener),window.removeEventListener("load",this.#setHeights),this.#resizeObserver?.disconnect(),this.#scrollTimer&&clearTimeout(this.#scrollTimer),document.body.classList.remove("site-header-menu-open")}#setHeights=()=>{const root=this.closest(".site-header-container")||this,masthead=this.querySelector(".site-header__masthead"),mobileSearch=this.querySelector(".header-search-form--mobile"),height=root.getBoundingClientRect().height,visibleHeight=(masthead?.getBoundingClientRect().height||0)+(mobileSearch?.getBoundingClientRect().height||0)||height;document.documentElement.style.setProperty("--header-height",`${height}px`),document.documentElement.style.setProperty("--header-visible-height",`${visibleHeight}px`)};#setScrollbarWidth(){const outer=document.createElement("div");outer.style.visibility="hidden",outer.style.overflow="scroll",document.body.appendChild(outer);const inner=document.createElement("div");outer.appendChild(inner);const scrollbarWidth=outer.offsetWidth-inner.offsetWidth;outer.remove(),document.documentElement.style.setProperty("--scrollbar-width",`${scrollbarWidth}px`)}#isDesktop(){return window.matchMedia(DESKTOP_BREAKPOINT).matches}#setHeaderState(headerState){this.classList.remove("is-open","is-minimised","is-collapsed"),this.classList.add(`is-${headerState}`),this.#setHeights()}#handleScroll=(start=!1)=>{if(this.#isOpen)return;if(start){this.#scroll={direction:"none",header:"open",top:window.scrollY<=100,x:window.scrollX,y:window.scrollY},this.#setHeaderState("open");return}if(!this.#scroll){this.#handleScroll(!0);return}const difference=window.scrollY-this.#scroll.y;if(Math.abs(difference)<5)return;const direction=difference>0?"down":"up",top=window.scrollY<=100;let header="open";direction==="up"&&!top?header="minimised":window.scrollY>0&&(header="collapsed"),this.#scroll={direction,header,top,x:window.scrollX,y:window.scrollY},this.#setHeaderState(header)};#handleScrollThrottled(){const now=Date.now(),remaining=250-(now-this.#lastScrollAt);
1if(remaining<=0){this.#scrollTimer&&(clearTimeout(this.#scrollTimer),this.#scrollTimer=null),this.#lastScrollAt=now,this.#handleScroll();return}this.#scrollTimer||(this.#scrollTimer=setTimeout(()=>{this.#lastScrollAt=Date.now(),this.#scrollTimer=null,this.#handleScroll()},remaining))}#cancelClose=()=>{this.#closeTimer&&(clearTimeout(this.#closeTimer),this.#closeTimer=null)};#cancelReset=()=>{this.#resetTimer&&(clearTimeout(this.#resetTimer),this.#resetTimer=null)};#handleMenuToggle=()=>{this.#isOpen?this.#close():this.#open({mode:"mobile"})};#handleSearchOpen=()=>{this.#isOpen&&this.#close()};#handleSearchClose=event=>{event.detail?.restoreMenu&&!this.#isDesktop()&&!this.#isOpen&&this.#open({mode:"mobile"})};#handleNavHover=event=>{if(!this.#isDesktop())return;const link=event.currentTarget,menuKey=link.dataset.menuTrigger,hasChildren=link.dataset.menuHasChildren==="true";if(this.#cancelClose(),!hasChildren||!menuKey){this.#scheduleClose();return}this.#open({mode:"desktop",menuKey})};#handleMouseLeave=()=>{this.#isDesktop()&&this.#scheduleClose()};#scheduleClose(){this.#cancelClose(),this.#closeTimer=setTimeout(()=>this.#close(),120)}#handleKeydown=event=>{event.key==="Escape"&&this.#isOpen&&this.#close()};#open({mode,menuKey}){this.#overlay&&(this.#cancelReset(),this.#isOpen=!0,this.#overlay.classList.remove("is-hidden"),this.#overlay.hidden=!1,this.#overlay.setAttribute("aria-hidden","false"),this.classList.add("site-header--menu-open"),this.#setHeaderState("open"),document.body.classList.add("site-header-menu-open"),this.#menuToggle?.setAttribute("aria-expanded","true"),mode==="desktop"&&menuKey?this.#menuShelf?.activateDesktopPanel(menuKey):(this.#menuShelf?.reset(),this.#menuShelf?.classList.add("is-active")),this.dispatchEvent(new CustomEvent("site-header:menu-open",{bubbles:!1})),this.#setHeights())}#close=()=>{!this.#overlay||!this.#isOpen||(this.#isOpen=!1,this.#overlay.classList.add("is-hidden"),this.#overlay.setAttribute("aria-hidden","true"),this.classList.remove("site-header--menu-open"),document.body.classList.remove("site-header-menu-open"),this.#menuToggle?.setAttribute("aria-expanded","false"),this.#resetTimer=setTimeout(()=>{this.#menuShelf?.reset(),this.#resetTimer=null},500),this.#cancelClose(),this.#handleScroll())}}customElements.get("lyle-site-header")||customElements.define("lyle-site-header",LyleSiteHeader); 2//# sourceMappingURL=/cdn/shop/t/458/assets/lyle-site-header.js.map?v=86887018701183902021789047580
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.