1import{prepareTransition,sizeDrawer}from"@archetype-themes/scripts/helpers/utils";import{EVENTS,subscribe,publish}from"@archetype-themes/utils/pubsub";let selectors={wrapper:".slide-nav__wrapper",nav:".slide-nav",childList:".slide-nav__dropdown",allLinks:"a.slide-nav__link",subNavToggleBtn:".js-toggle-submenu"},classes={isActive:"is-active"},defaults={isOpen:!1,menuLevel:1,inHeader:!1};class MobileNav extends HTMLElement{constructor(){super(),this.config=Object.assign({},defaults),this.config.inHeader=this.getAttribute("inHeader")==="true"}connectedCallback(){this.container=document.getElementById(this.getAttribute("container")),this.container&&(this.wrapper=this.container.querySelector(selectors.wrapper),this.wrapper&&(this.nav=this.wrapper.querySelector(selectors.nav),this.init()))}init(){this.nav.querySelectorAll(selectors.subNavToggleBtn).forEach(btn=>{btn.addEventListener("click",this.toggleSubNav.bind(this))}),this.nav.querySelectorAll(selectors.allLinks).forEach(link=>{link.addEventListener("click",this.close.bind(this))}),this.config.inHeader&&(document.addEventListener("unmatchSmall",function(){this.close(null,!0)}.bind(this)),subscribe(EVENTS.mobileNavOpen,this.open.bind(this)),subscribe(EVENTS.mobileNavClose,this.close.bind(this)))}open(evt){evt&&evt.preventDefault(),sizeDrawer(),prepareTransition(this.container,function(){this.container.classList.add("is-active")}.bind(this)),window.addEventListener("keyup",this.handleWindowKeyup),publish(EVENTS.headerOverlayRemoveClass),document.documentElement.classList.add("mobile-nav-open"),document.dispatchEvent(new CustomEvent("MobileNav:open")),this.config.isOpen=!0,setTimeout(()=>{window.addEventListener("click",this.handleWindowClick)},0)}handleWindowKeyup=evt=>{evt.keyCode===27&&this.close()};handleWindowClick=evt=>{this.close(evt)};close(evt,noAnimate){let forceClose=!1;evt&&evt.target.closest&&evt.target.closest(".site-header__drawer")&&(evt.currentTarget&&evt.currentTarget.classList&&evt.currentTarget.classList.contains("slide-nav__link")&&(forceClose=!0),!forceClose)||(publish(EVENTS.mobileNavClosed),noAnimate?this.container.classList.remove("is-active"):prepareTransition(this.container,function(){this.container.classList.remove("is-active")}.bind(this)),document.documentElement.classList.remove("mobile-nav-open"),document.dispatchEvent(new CustomEvent("MobileNav:close")),window.removeEventListener("keyup",this.handleWindowKeyup),window.removeEventListener("click",this.handleWindowClick),this.config.isOpen=!1)}toggleSubNav(evt){let btn=evt.currentTarget;this.goToSubnav(btn.dataset.target)}goToSubnav(target){let targetMenu=this.nav.querySelector(selectors.childList+'[data-parent="'+target+'"]');targetMenu?(this.config.menuLevel=targetMenu.dataset.level,this.config.menuLevel==2&&this.nav.querySelectorAll(selectors.childList+'[data-level="3"]').forEach(list=>{list.classList.remove(classes.isActive)}),targetMenu.classList.add(classes.isActive),this.setWrapperHeight(targetMenu.offsetHeight)):(this.config.menuLevel=1,this.wrapper.removeAttribute("style"),this.nav.querySelectorAll(selectors.childList).forEach(list=>{list.classList.remove(classes.isActive)})),this.wrapper.dataset.level=this.config.menuLevel}setWrapperHeight(h){this.wrapper.style.height=h+"px"}}customElements.define("mobile-nav",MobileNav); 2//# sourceMappingURL=/cdn/shop/t/69/assets/header-mobile-nav.js.map?v=34501982044316274591728897670
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.