class MCartAddons extends HTMLElement{constructor(){super(),this.selectors={zipCode:'[name="address[zip]"]',province:'[name="address[province]"]',country:'[name="address[country]"]',addressForm:'[data-address="root"]',shippingMessage:".m-cart-addon__shipping-rate",cartDiscountCode:'[name="discount"]',cartDiscountCodeNoti:"[data-discount-noti]",cartNote:'[name="note"]',saveAddonButton:".m-cart-addon--save",closeAddonButton:".m-cart-addon--close",calcShippingButton:".m-cart-addon--calculate",triggerAddonButton:".m-cart-addon--trigger-button"},this.cartWrapper=document.querySelector(".m-cart-drawer"),this.isCartPage="cart"===MinimogSettings.templateName,this.isCartPage&&(this.cartWrapper=document.querySelector(".m-cart__footer--wrapper")),this.initAddress=!1,this.cartOverlay=this.cartWrapper.querySelector(".m-cart__overlay"),this.domNodes=queryDomNodes(this.selectors,this),this.rootUrl=window.Shopify.routes.root,this.discountCodeKey="minimog-discount-code",this.init()}init(){const{cartDiscountCode:e,cartDiscountCodeNoti:t}=this.domNodes;if(addEventDelegate({selector:this.selectors.triggerAddonButton,context:this,handler:(e,t)=>{if(e.preventDefault(),this.isCartPage){const e=document.querySelector(".m-cart-addon__body.open");e&&e.classList.remove("open")}const{open:s}=t.dataset,o=this.cartWrapper.querySelector(`#m-addons-${s}`);t.classList.add("active"),o&&o.classList.add("open"),this.cartOverlay&&this.cartOverlay.classList.add("open"),this.openAddon=o,"shipping"===s&&fetchSection("country-options",{url:window.MinimogSettings.base_url}).then((e=>{const t=e.querySelector("#AddressCountry"),s=t&&t.querySelectorAll("option"),i=o.querySelector("#MadrressCountry select");s&&s.forEach((e=>{i&&i.appendChild(e)})),this.setupCountries()})).catch(console.error)}}),addEventDelegate({selector:this.selectors.closeAddonButton,context:this.cartWrapper,handler:this.close.bind(this)}),addEventDelegate({selector:this.selectors.calcShippingButton,context:this.cartWrapper,handler:this.calcShipping.bind(this)}),e){const s=localStorage.getItem(this.discountCodeKey);s&&(e.value=s,t&&(t.style.display="inline"))}this.saveAddonValue()}setupCountries(){this.initAddress||Shopify&&Shopify.CountryProvinceSelector&&(new Shopify.CountryProvinceSelector("AddressCountry","AddressProvince",{hideElement:"AddressProvinceContainer"}),this.initAddress=!0)}close(e){e.preventDefault(),this.openAddon.classList.remove("open"),this.cartOverlay.classList.remove("open"),this.openAddon=null}calcShipping(e){e.preventDefault();const t=e.target.closest(".m-cart-addon__action");t.classList.add("m-spinner-loading");const s=this.domNodes.zipCode&&this.domNodes.zipCode.value&&this.domNodes.zipCode.value.trim(),o=this.domNodes.country.value,i=this.domNodes.province.value;this.domNodes.shippingMessage.classList.remove("error"),this.domNodes.shippingMessage.innerHTML="";const n="true"===t.dataset.showDeliveryDays;fetch(`${this.rootUrl}cart/shipping_rates.json?shipping_address%5Bzip%5D=${s}&shipping_address%5Bcountry%5D=${o}&shipping_address%5Bprovince%5D=${i}`).then((e=>e.json())).then((e=>{if(e&&e.shipping_rates){const{shipping_rates:s}=e,{shippingRatesResult:o,noShippingRate:i}=MinimogStrings;if(s.length>0){t.classList.remove("m-spinner-loading");const e=document.createElement("P");e.classList.add("m-cart-addon__shipping-rate--label"),e.innerHTML=`${o.replace("{{count}}",s.length)}:`,this.domNodes.shippingMessage.appendChild(e),s.map((e=>{const{deliveryOne:s="Day",deliveryOther:o="Days"}=t.dataset;let i="";if(e.delivery_days.length>0&&n){let t=s;const n=e.delivery_days[0],a=e.delivery_days.at(-1);n>1&&(t=o),i=n===a?`(${n} ${t})`:`(${n} - ${a} ${t})`}const a=document.createElement("P");a.classList.add("m-cart-addon__shipping-rate--item"),a.innerHTML=`${e.name}: ${e.price} ${Shopify.currency.active} ${i}`,this.domNodes.shippingMessage.appendChild(a)}))}else t.classList.remove("m-spinner-loading"),this.domNodes.shippingMessage.innerHTML=`

${i}

`}else t.classList.remove("m-spinner-loading"),Object.entries(e).map((e=>{this.domNodes.shippingMessage.classList.add(e[0]&&e[0].toLowerCase());const t=`${e[1][0]}`,s=document.createElement("P");s.classList.add("m-cart-addon__shipping-rate--error"),s.innerHTML=`${t}*`,this.domNodes.shippingMessage.appendChild(s)}))})).catch(console.error)}saveAddonValue(){addEventDelegate({event:"click",context:this.cartWrapper,selector:this.selectors.saveAddonButton,handler:(e,t)=>{e.preventDefault();const{cartDiscountCode:s,cartDiscountCodeNoti:o}=this.domNodes;if("coupon"===t.dataset.action&&s){const e=this.domNodes.cartDiscountCode.value;localStorage.setItem(this.discountCodeKey,e),o.style.display=""!==e&&o?"inline":"none"}"note"===t.dataset.action&&this.updateCartNote(),this.close(e)}})}updateCartNote(){const e=this.domNodes.cartNote.value,t=JSON.stringify({note:e});fetch(`${window.MinimogSettings.routes.cart_update_url}`,{...fetchConfig(),body:t})}}customElements.define("m-cart-addons",MCartAddons);