1customElements.get("sticky-header")||customElements.define("sticky-header",class extends HTMLElement{constructor(){super()}connectedCallback(){this.currentScrollTop=0,this.preventReveal=!1,this.preventResize=!1,this.scrollTicking=!1,this.headerState="initial",this.cachedNavHeight=0,this.header=document.querySelector(".section-header"),this.headerTop=document.querySelector(".header-top"),this.predictiveSearch=this.querySelector("predictive-search"),this.onScrollHandler=this.scheduleScrollUpdate.bind(this),this.isToggleNav=this.classList.contains("toggle-nav"),this.init=!Shopify.designMode,this.openStatus=!1,document.readyState==="complete"?this.setupWindowResizeEvent():window.addEventListener("load",()=>this.setupWindowResizeEvent(),{once:!0}),this.calculateThreshold(),this.hideHeaderOnScrollUp=()=>this.preventReveal=!0,this.addEventListener("preventHeaderReveal",this.hideHeaderOnScrollUp),this.isToggleNav&&(this.header.classList.add("toggle-nav"),this.toggleNavButton=this.querySelector(".header__toggle-nav-button"),this.onToggleNavClickHandler=this.onToggleNavClick.bind(this),this.toggleNavButton.addEventListener("click",this.onToggleNavClickHandler),this.nav=this.querySelector(".header__inline-menu"),setTimeout(()=>{document.body.style.setProperty("--nav-height",`${this.nav.clientHeight}px`)},500)),this.onScroll(),window.addEventListener("scroll",this.onScrollHandler,{passive:!0})}disconnectedCallback(){window.removeEventListener("scroll",this.onScrollHandler),window.removeEventListener("resize",this.debouncedOnWindowResize),this.toggleNavButton&&this.toggleNavButton.removeEventListener("click",this.onToggleNavClickHandler),this.timeoutInit&&clearTimeout(this.timeoutInit)}calculateHeaderHeight(){this.headerHeight=0,this.fullHeaderHeight=0,this.querySelectorAll(":scope > *").forEach(element=>{this.fullHeaderHeight+=element.clientHeight,element.classList.contains("header")&&(this.headerHeight=element.clientHeight,this.fullHeaderHeight+=parseInt(window.getComputedStyle(element,null).getPropertyValue("margin-top")))})}calculateThreshold(headerBoundTop=null){this.headerBoundTop=headerBoundTop===null?this.header.getBoundingClientRect().top+(window.pageYOffset||document.documentElement.scrollTop)+this.fullHeaderHeight:headerBoundTop,this.threshold=this.headerBoundTop+100,this.dataset.stickyType=="always"&&(this.threshold+=100)}scheduleScrollUpdate(){this.scrollTicking||(this.scrollTicking=!0,requestAnimationFrame(()=>{this.scrollTicking=!1,this.onScroll()}))}onScroll(){const scrollTop=document.documentElement.scrollTop;if(!(this.predictiveSearch&&this.predictiveSearch.isOpen)){if(scrollTop>this.currentScrollTop&&scrollTop>this.headerBoundTop)if(this.dataset.stickyType=="always")this.openStickyHeader(scrollTop);else{if(this.preventHide)return;requestAnimationFrame(this.hide.bind(this))}else scrollTop<this.currentScrollTop&&scrollTop>this.headerBoundTop?this.openStickyHeader(scrollTop):scrollTop<=this.headerBoundTop&&requestAnimationFrame(this.reset.bind(this));this.currentScrollTop=scrollTop}}openStickyHeader(scrollTop){this.preventOpen||(!this.preventReveal&&scrollTop>this.threshold?requestAnimationFrame(this.reveal.bind(this)):(window.clearTimeout(this.isScrolling),this.isScrolling=setTimeout(()=>{this.preventReveal=!1},66),requestAnimationFrame(this.hide.bind(this))))}setupWindowResizeEvent(){this.calculateHeaderHeight(),this.onWindowResize(),this.debouncedOnWindowResize=debounce(event=>{this.onWindowResize(event)},700),window.addEventListener("resize",this.debouncedOnWindowResize,!1)}onWindowResize(){if(this.preventResize)return;const isDesktop=window.innerWidth>=990;let headerHeight=this.header.querySelector("header").clientHeight,navHeight=0;this.isToggleNav&&isDesktop&&(navHeight=this.nav.clientHeight,this.cachedNavHeight=navHeight,this.header.classList.contains("shopify-section-header-sticky")&&!this.header.classList.contains("open-nav")&&(headerHeight+=navHeight+11));const headerTopHeight=this.getHeaderTopHeight(),stickyHeaderHeight=headerHeight+headerTopHeight,headerBoundTop=this.header.getBoundingClientRect().top+(window.pageYOffset||document.documentElement.scrollTop)+this.fullHeaderHeight;this.isToggleNav&&isDesktop&&document.body.style.setProperty("--nav-height",`${navHeight}px`),document.body.style.setProperty("--header-height",`${headerHeight}px`),isDesktop?document.body.style.setProperty("--sticky-header-height-desktop",`${stickyHeaderHeight}px`):document.body.style.setProperty("--sticky-header-height-mobile",`${stickyHeaderHeight}px`),this.calculateThreshold(headerBoundTop)}getHeaderTopHeight(){return this.headerTop?this.headerTop.clientHeight:0}onToggleNavClick(){this.cachedNavHeight=this.nav.clientHeight,document.body.style.setProperty("--nav-height",`${this.cachedNavHeight}px`),this.header.classList.toggle("open-nav"),document.dispatchEvent(new CustomEvent("toggleNavInSticky",{detail:{toggleNav:this.header.classList.contains("open-nav"),headerHeight:this.headerHeight}}))}hide(){this.headerState!=="hidden"&&(this.headerState="hidden",this.header.classList.add("shopify-section-header-hidden","shopify-section-header-sticky")),this.closeMenuDisclosure(),this.closeSearchModal(),this.closeToggleNav(),this.disableOpenStatus()}reveal(){this.openStatus||(this.headerState="revealed",this.init?(this.header.classList.add("shopify-section-header-sticky"),setTimeout(()=>{this.header.classList.add("animate")},500),this.init=!1):this.header.classList.add("shopify-section-header-sticky","animate"),this.header.classList.remove("shopify-section-header-hidden"),this.dataset.toggleNav&&this.toggleNavButton.removeAttribute("tabindex"),this.enableOpenStatus())}reset(){this.headerState!=="initial"&&(this.headerState="initial",this.header.classList.remove("shopify-section-header-hidden","shopify-section-header-sticky","animate")),this.closeToggleNav(),this.disableOpenStatus()}enableOpenStatus(){this.openStatus=!0,document.dispatchEvent(new CustomEvent("openStickyHeader",{detail:{headerHeight:this.headerHeight,navHeight:this.cachedNavHeight,toggleNav:this.header.classList.contains("open-nav")}}))}disableOpenStatus(){this.openStatus=!1,document.dispatchEvent(new CustomEvent("closeStickyHeader"))}closeToggleNav(){this.dataset.toggleNav&&(this.toggleNavButton.setAttribute("tabindex","-1"),this.header.classList.remove("open-nav"))}closeMenuDisclosure(){this.disclosures=this.disclosures||this.header.querySelectorAll("header-menu"),this.disclosures.forEac
1h(disclosure=>disclosure.close())}closeSearchModal(){this.searchModal=this.searchModal||this.header.querySelector("details-modal"),this.searchModal&&this.searchModal.close(!1)}setPreventHide(value){this.preventHide=value}setPreventOpen(value){this.preventOpen=value}}); 2//# sourceMappingURL=/cdn/shop/t/26/assets/sticky-header.js.map?v=1888023074778630041788259557
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.