1const{getElement,getElements}=window.BAO.Utils;export class SiteDrawers extends window.BAO.CustomElement(){constructor(){if(super(),this.hasAlreadyBeenUsed)throw new Error(`You can only use 1 instance of ${this.nodeName.toLowerCase()}`);this._activeDrawerKey="",this.drawers=[],this.openDrawerKeys=[],window.drawers=this,this.drawerKeys.filter(key=>!this.triggerKeys.includes(key)).forEach(key=>console.info(`Drawer exists for ${key} but there is no trigger`)),this.closeEvent=new CustomEvent("drawers:closing")}setupListeners(){super.setupListeners(),this.listeners.add(document.documentElement,"click",this.handleClick.bind(this)),window.BAO.eventBus.addEventListener(window.BAO.EVENTS.CLOSE_ALL_DRAWERS,this.closeDrawer.bind(this)),window.BAO.eventBus.addEventListener(window.BAO.EVENTS.OPEN_DRAWER,event=>{const key=event.detail.key;this.activeDrawerKey=key})}handleClick(e){const EVENTS={TRIGGER:"TRIGGER",BACK:"BACK",CLOSE:"CLOSE",CLOSEALL:"CLOSEALL",BACKDROP:"BACKDROP",UNKNOWN:"UNKNOWN"},eventType=e.target.closest(this.config.matches.trigger)!==null?EVENTS.TRIGGER:e.target.closest(this.config.matches.back)!==null?EVENTS.BACK:e.target.closest(this.config.matches.close)!==null||e.target.closest(this.config.matches.closeall)!==null?EVENTS.CLOSE:e.target.closest(this.config.matches.backdrop)!==null?EVENTS.BACKDROP:EVENTS.UNKNOWN;if(eventType!==EVENTS.UNKNOWN){if(e.preventDefault(),eventType===EVENTS.TRIGGER){const trigger=e.target.closest(this.config.matches.trigger);if(!trigger.disabled){const key=trigger.getAttribute("data-drawers-trigger");this.isSubDrawerTrigger=e.target.closest(this.config.matches.subNav),this.openDrawerKeys.length>0&&this.openDrawerKeys[this.openDrawerKeys.length-1]!==key&&!this.isSubDrawerTrigger&&this.closeDrawer(),this.triggerKeys.includes(key)&&(this.isSubDrawerTrigger?(this.parentDrawerKey=this.parentDrawerKey?this.parentDrawerKey:this.activeDrawerKey,this.activeDrawerKey=key):(this.activeDrawerKey=key===this.activeDrawerKey||key===this.parentDrawerKey?"":key,this.parentDrawerKey="")),this.getParentDrawers(trigger).forEach(parentDrawer=>{parentDrawer.classList.add("drw-Drawer-active")})}}if(eventType===EVENTS.BACK){const backButton=e.target.closest(this.config.matches.back),key=backButton.getAttribute("data-drawers-back-key");document.body.classList.remove(`drw-Drawers-${key}`),this.drawers.filter(drawer=>drawer.key===key).forEach(drawer=>drawer.isOpen=!1),this.setExpanded([backButton.getAttribute("data-drawers-parent-key")])}(eventType===EVENTS.CLOSE||eventType===EVENTS.BACKDROP)&&this.closeDrawer()}}closeDrawer(){this.openDrawerKeys.forEach(key=>{document.body.classList.remove(`drw-Drawers-${key}`)}),this.openDrawerKeys=[],this.isSubDrawerTrigger=!1,this.parentDrawerKey="",this.activeDrawerKey="",document.dispatchEvent(this.closeEvent)}setExpanded(keys){this.triggerKeys.forEach(triggerKey=>{const triggerEl=getElement(`[data-drawers-trigger='${triggerKey}']`,{context:document});triggerEl&&triggerEl.setAttribute("aria-expanded",String(keys.includes(triggerKey)))})}get triggerKeys(){return getElements("[data-drawers-trigger]").map(el=>el.getAttribute("data-drawers-trigger"))}get drawerKeys(){return getElements("[data-module-drawers-drawer]").map(el=>el.getAttribute("data-module-drawers-drawer"))}get hasAlreadyBeenUsed(){return getElement(this.nodeName.toLowerCase())!==this}get aDrawerIsOpen(){return this.drawers.some(drawer=>drawer.isOpen)}get activeDrawerKey(){return this._activeDrawerKey}set activeDrawerKey(key){this._activeDrawerKey=key,this.drawers.forEach(drawer=>drawer.isOpen=drawer.key===key),this.setExpanded([this.parentDrawerKey,key]),this.config.elements.drawers.classList.toggle(this.config.classes.activeClass,this.aDrawerIsOpen),document.body.classList.toggle(this.config.classes.siteOverflowed,this.aDrawerIsOpen),document.body.classList.toggle(this.config.classes.drawersOpenUtility,this.aDrawerIsOpen),key!==""?(this.openDrawerKeys.push(key),this.els.drawer.element.classList.add("drw-Drawers_Drawer-active"),document.body.classList.add(`drw-Drawers-${key}`)):(this.openDrawerKeys.pop(),this.els.drawer.element.classList.remove("drw-Drawers_Drawer-active"))}getParentDrawers(trigger){return(trigger.dataset.drawersParentKeys?trigger.dataset.drawersParentKeys.split(","):[]).map(drawerKey=>getElement(`[key="${drawerKey}
1"]`,{context:this}))}get config(){return{matches:{trigger:"[data-drawers-trigger]",subNav:"[data-drawers-sub-nav]",back:"[data-drawers-back-key]",close:"[data-drawers-close]",closeall:"[data-drawers-close-all]",backdrop:'[data-site-drawers-el="backdrop"]'},classes:{activeClass:"drw-Drawers-active",activeDrawerClass:"drw-Drawer-active",siteOverflowed:"util-SiteOverflowed",drawersOpenUtility:"util-DrawersOpen"},elements:{body:document.body||document.documentElement,backdrop:'[data-site-drawers-el="backdrop"]',drawers:document.querySelector("site-drawers")}}}}customElements.define("site-drawers",SiteDrawers); 2//# sourceMappingURL=/cdn/shop/t/914/assets/site-drawers.js.map?v=166130241030227602561787650580
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.