1if(!window.customElements.get("size-guide-modal")){class SizeGuideModal extends HTMLElement{constructor(){super(),this.gsap=null,this.dialog=null,this.tabbyComponent=null,this.accordionComponents=[],this.isInitialized=!1,this.modalId=this.getAttribute("data-modal-id")||"default"}connectedCallback(){this.waitForDependencies(),this.handleUrlParams()}waitForDependencies(){whenReady("motion",motion=>{this.motion=motion}),this.waitForDialog()}waitForDialog(){const checkDialog=()=>{this.dialog=this.querySelector("dialog-component"),this.dialog&&this.dialog.dialog?(this.initComponents(),this.setupDialogListeners()):setTimeout(checkDialog,100)};checkDialog()}setupDialogListeners(){this.dialog&&this.dialog.addEventListener("a11y-dialog:hide",()=>{this.clearUrlParams()})}initComponents(){this.isInitialized||(this.tabbyComponent=this.querySelector("tabby-component"),this.accordionComponents=this.querySelectorAll("accordion-component"),this.isInitialized=!0)}handleUrlParams(){const urlParams=new URLSearchParams(window.location.search),modalParam=urlParams.get("size-guide"),modalIdParam=urlParams.get("modal-id"),tabParam=urlParams.get("tab"),accordionParam=urlParams.get("accordion");modalParam==="open"&&(!modalIdParam||modalIdParam===this.modalId)&&setTimeout(()=>{this.openModal(tabParam,accordionParam)},500)}openModal(tabName=null,sectionName=null){if(!this.isInitialized){setTimeout(()=>this.openModal(tabName,sectionName),100);return}tabName&&this.selectTab(tabName),setTimeout(()=>{sectionName&&this.selectAccordion(sectionName),this.dialog&&(this.dialog.show(),document.body.classList.add("modal-open"))},50)}selectTab(tabName){if(!this.tabbyComponent)return;const tabElement=this.querySelector(`[data-tab-name="${tabName}"]`);tabElement?tabElement.click():console.warn(`Tab "${tabName}" not found in size guide modal. Make sure the tab has data-tab-name="${tabName}" attribute.`)}selectAccordion(sectionName){if(!sectionName)return;const activeTabPanel=this.querySelector('[role="tabpanel"]:not([hidden])');if(activeTabPanel){const accordion=activeTabPanel.querySelector("accordion-component");if(accordion&&accordion.open){const section=activeTabPanel.querySelector(`[data-section-name="${sectionName}"]`);if(section){const sections=activeTabPanel.querySelectorAll("[data-section-name]"),index=Array.from(sections).indexOf(section);index!==-1&&accordion.open(index)}else console.warn(`Section "${sectionName}" not found in size guide modal. Make sure the section has data-section-name="${sectionName}" attribute.`)}}}closeModal(){this.dialog&&(this.dialog.hide(),document.body.classList.remove("modal-open"))}getModalState(){const activeTab=this.querySelector('[role="tab"][aria-selected="true"], a[href^="#size-guide-tab-"][aria-selected="true"]'),activeAccordion=this.querySelector('[role="tabpanel"]:not([hidden])')?.querySelector("accordion-component");return{isOpen:this.dialog?.classList.contains("active")||!1,activeTab:activeTab?.textContent?.trim()||null,activeAccordionSection:activeAccordion?this.getActiveAccordionSection(activeAccordion):null}}getActiveAccordionSection(accordion){const activePanel=accordion.querySelector(".ac-panel:not(.ac-panel--hidden)");if(!activePanel)return null;const section=activePanel.closest("[data-section-name]");return section?section.getAttribute("data-section-name"):null}updateUrl(tabName=null,sectionName=null){const url=new URL(window.location);url.searchParams.set("size-guide","open"),this.modalId!=="default"?url.searchParams.set("modal-id",this.modalId):url.searchParams.delete("modal-id"),tabName?url.searchParams.set("tab",tabName):url.searchParams.delete("tab"),sectionName?url.searchParams.set("accordion",sectionName):url.searchParams.delete("accordion"),window.history.replaceState({},"",url)}clearUrlParams(){const url=new URL(window.location);url.searchParams.delete("size-guide"),url.searchParams.delete("modal-id"),url.searchParams.delete("tab"),url.searchParams.delete("accordion"),window.history.replaceState({},"",url)}disconnectedCallback(){}}customElements.define("size-guide-modal",SizeGuideModal)}window.openSizeGuideModal=function(tabName=null,sectionName=null,updateUrl=!1,modalId="default"){const modal=document.querySelector(`size-guide-modal[data-modal-id="${modalId}"]`)||document.querySelector("size-guide-modal");modal?(modal.openModal(tabName,sectionName),updateUrl&&modal.updateUrl(tabName,sectionName)):console.warn(`Size guide modal with ID "${modalId}" not found on page`)},window.closeSizeGuideModal=function(clearUrl=!0,modalId="default"){const modal=document.querySelector(`size-guide-modal[data-modal-id="${modalId}"]`)||document.querySelector("size-guide-modal");modal&&(modal.closeModal(),document.body.classList.remove("modal-open"),clearUrl&&modal.clearUrlParams())},window.getSizeGuideModalState=function(modalId="default"){const modal=document.querySelector(`size-guide-modal[data-modal-id="${modalId}"]`)||document.querySelector("size-guide-modal");return modal?modal.getModalState():null},window.getAllSizeGuideModals=function(){return document.querySelectorAll("size-guide-modal")},window.getSizeGuideModal=function(modalId="default"){return document.querySelector(`size-guide-modal[data-modal-id="${modalId}"]`)||document.querySelector("size-guide-modal")}; 2//# sourceMappingURL=/cdn/shop/t/931/assets/size-guide-modal.js.map?v=5291085950682132051759424062
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.