1class o extends HTMLElement{constructor(){super(),this.dialog=null,this.triggers=[],this.sectionId=null,this.animationDuration=300,this.boundCloseDialog=this.closeDialog.bind(this),this.boundTriggerClick=this.handleTriggerClick.bind(this),this.boundDialogClick=this.handleDialogClick.bind(this),this.boundDialogKeydown=this.handleDialogKeydown.bind(this),this.boundShopifySelect=this.handleShopifySelect.bind(this),this.boundShopifyDeselect=this.handleShopifyDeselect.bind(this)}connectedCallback(){this.dialog=this.querySelector("dialog"),this.setupDialog(),this.setupTriggers(),window.Shopify?.designMode&&this.setupShopifyThemeEditor(),this.childConnectedCallback&&this.childConnectedCallback()}disconnectedCallback(){this.dialog&&(this.dialog.removeEventListener("close",this.boundCloseDialog),this.dialog.removeEventListener("click",this.boundDialogClick),this.dialog.removeEventListener("keydown",this.boundDialogKeydown)),this.triggers.forEach(i=>{i.removeEventListener("click",this.boundTriggerClick)}),this.triggers=[],this.sectionId&&(document.removeEventListener("shopify:section:select",this.boundShopifySelect),document.removeEventListener("shopify:section:deselect",this.boundShopifyDeselect),this.sectionId=null),this.childDisconnectedCallback&&this.childDisconnectedCallback()}setupDialog(){this.dialog&&(this.dialog.addEventListener("close",this.boundCloseDialog),this.dialog.addEventListener("click",this.boundDialogClick),this.dialog.addEventListener("keydown",this.boundDialogKeydown))}setupTriggers(){const i=this.dataset.triggerSelector;if(!i)return;document.querySelectorAll(i).forEach(e=>{e.addEventListener("click",this.boundTriggerClick),this.triggers.push(e)})}setupShopifyThemeEditor(){const i=this.closest('[id^="shopify-section-"]');i&&(this.sectionId=i.id.replace("shopify-section-",""),document.addEventListener("shopify:section:select",this.boundShopifySelect),document.addEventListener("shopify:section:deselect",this.boundShopifyDeselect))}handleTriggerClick(i){i.preventDefault(),this.openDialog()}handleDialogClick(i){i.target===this.dialog&&this.closeDialog(),i.target.closest("[data-dialog-close]")&&this.closeDialog()}handleDialogKeydown(i){i.key==="Escape"&&(i.preventDefault(),this.closeDialog())}handleShopifySelect(i){i.detail.sectionId===this.sectionId&&this.openDialog()}handleShopifyDeselect(i){i.detail.sectionId===this.sectionId&&this.dialog.close()}openDialog(){this.dialog.open||this.beforeOpenDialog&&this.beforeOpenDialog()===!1||(this.lockBodyScroll(),this.dialog.showModal(),this.afterOpenDialog&&this.afterOpenDialog())}closeDialog(){this.beforeCloseDialog&&this.beforeCloseDialog()===!1||(this.dialog.classList.add("closing"),setTimeout(()=>{!this.dialog||!this.contains(this.dialog)||(this.dialog.close(),this.dialog.classList.remove("closing"),this.unlockBodyScroll(),this.afterCloseDialog&&this.afterCloseDialog())},this.animationDuration))}lockBodyScroll(){this.scrollPosition=window.scrollY,document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top=`-${this.scrollPosition}px`,document.body.style.width="100%"}unlockBodyScroll(){document.querySelectorAll("dialog[open]").length>0||(document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo({top:this.scrollPosition||0,behavior:"instant"}))}toggleDialog(){this.dialog&&(this.dialog.open?this.closeDialog():this.openDialog())}}customElements.define("flyout-dialog",o);export{o as default};
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.