1if(!customElements.get("collapsible-element")){class Collapsible extends HTMLElement{constructor(){if(super(),this.options={toggleClass:"collapsible-is-open",toggleBodyClass:"",closeSiblings:!1,closeChildren:!0,onHover:!1,hoverDelay:0,closeOnMouseleave:!1,scrollInToViewOnMobile:!1},this?.dataset?.options){const dataOptions=JSON.parse(this.dataset.options);this.options={...this.options,...dataOptions}}this.reducer={clickTarget:e=>this.debounceClickEvent(e),mouseEnterTarget:e=>this.debouncedOnMouse(e,"open"),mouseLeaveGroup:e=>this.debouncedOnMouse(e,"close"),mouseLeaveContainer:e=>this.debouncedOnMouse(e,"closeAll")},this.construct()}construct(){this.groups=this.hasAttribute("data-collapsible-group")?[this.closest("[data-collapsible-group]")]:this.querySelectorAll("[data-collapsible-group]"),this.triggers=this.querySelectorAll("[data-collapsible-trigger]"),this.triggers.forEach(trigger=>{trigger.removeEventListener("click",this.reducer.clickTarget),trigger.addEventListener("click",this.reducer.clickTarget),this.options.onHover&&(trigger.removeEventListener("mouseenter",this.reducer.mouseEnterTarget),trigger.addEventListener("mouseenter",this.reducer.mouseEnterTarget))}),this.groups.forEach(group=>{this.options.onHover&&(group.removeEventListener("mouseleave",this.reducer.mouseLeaveGroup),group.addEventListener("mouseleave",this.reducer.mouseLeaveGroup))}),this.options.closeOnMouseleave&&(this.removeEventListener("mouseleave",this.reducer.mouseLeaveContainer),this.addEventListener("mouseleave",this.reducer.mouseLeaveContainer))}debounceClickEvent(e){if(!e)return!1;const buttonType=e.currentTarget.nodeName.toLowerCase(),group=e.currentTarget.closest("[data-collapsible-group]");(!group.classList.contains(this.options.toggleClass)||buttonType!="a")&&(e.preventDefault(),this.toggle(group))}debouncedOnMouse(e,type){if(!e)return!1;clearTimeout(this.timeout),this.timeout=setTimeout(()=>{const group=e?.target?.closest("[data-collapsible-group]");switch(type){case"open":this.open(group);break;case"close":this.close(group);break;case"closeAll":this.closeAll();break;default:break}},this.options.hoverDelay)}open(group){if(!group)return!1;this.options.closeSiblings&&this.closeSiblings(group),group.classList.add(this.options.toggleClass),this.toggleBodyClass(!0),this.options.scrollInToViewOnMobile&&window.screen.width<768&&group.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}close(group){if(!group)return!1;group.classList.remove(this.options.toggleClass),this.options.closeChildren&&group.querySelectorAll("[data-collapsible-group]").forEach(group2=>{this.close(group2)}),this.toggleBodyClass(!1)}toggle(group){if(!group)return!1;group.classList.contains(this.options.toggleClass)?this.close(group):this.open(group)}closeSiblings(currentGroup=null){this.groups.forEach(group=>{group!==currentGroup&&!group.contains(currentGroup)&&!currentGroup.contains(group)&&this.close(group)})}openAll(){this.groups.forEach(group=>{group.classList.add(this.options.toggleClass)}),this.toggleBodyClass(!0)}closeAll(){this.groups.forEach(group=>{group.classList.remove(this.options.toggleClass)}),this.toggleBodyClass(!1)}toggleBodyClass(add){if(!this.options.toggleBodyClass)return!1;add?document.querySelector("body").classList.add(this.options.toggleBodyClass):document.querySelector("body").classList.remove(this.options.toggleBodyClass)}}window.Collapsible=Collapsible,customElements.define("collapsible-element",Collapsible)} 2//# sourceMappingURL=/cdn/shop/t/119/assets/collapsible.js.map?v=72182933401119736761789543951
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.