1(()=>{"use strict";let t="loader",e={BEFORE:"before",INNER:"inner"};class i{constructor(t,i=e.BEFORE){this.parent=t instanceof Element?t:document.body.querySelector(t),this.position=i}create(){if(!this.exists()){if(this.position===e.INNER){this._previousHTML=this.parent.innerHTML,this.parent.innerHTML=i.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),i.getTemplate())}}remove(){if(this.position===e.INNER){this.parent.innerHTML=this._previousHTML;return}this.parent.querySelectorAll(`.${t}`).forEach(t=>t.remove())}exists(){return this.parent.querySelectorAll(`.${t}`).length>0}_getPosition(){return this.position===e.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return`<div class="${t}" role="status"> 2 <span class="visually-hidden">Loading...</span> 3 </div>`}static SELECTOR_CLASS(){return t}}let s="element-loader-backdrop";class n extends i{static create(t){t.classList.add("has-element-loader"),n.exists(t)||(n.appendLoader(t),setTimeout(()=>{let e=t.querySelector(`.${s}`);e&&e.classList.add("element-loader-backdrop-open")},1))}static remove(t){t.classList.remove("has-element-loader");let e=t.querySelector(`.${s}`);e&&e.remove()}static exists(t){return t.querySelectorAll(`.${s}`).length>0}static getTemplate(){return` 4 <div class="${s}"> 5 <div class="loader" role="status"> 6 <span class="visually-hidden">Loading...</span> 7 </div> 8 </div> 9 `}static appendLoader(t){t.insertAdjacentHTML("beforeend",n.getTemplate())}}class r extends window.PluginBaseClass{init(){this._initProperties(),n.create(this.loadingSpinner),this._loadInput(),this._registerEvents()}_initProperties(){this.form=this.el.querySelector("form.shipping-costs-detail-shipping-form"),this.inputField=this.form.querySelector("input#submitShippingDestination"),this.dismissBtn=this.form.querySelector("button#dismissShippingDestinationBtn"),this.costsContainer=this.form.querySelector("span.shipping-costs-detail-shipping-costs"),this.loadingSpinner=this.form.querySelector("div.shipping-costs-detail-shipping-costs-loading-spinner"),this.buyForm=document.getElementById("productDetailPageBuyProductForm"),this.quantitySelect=this.buyForm.querySelector(".quantity-selector-group-input"),this.productId=this.form.dataset.productId,this.calculateCosts=!1;try{this.countryField=this.form.querySelector("select#submitShippingCountry")}catch{this.countryField=null}}_registerEvents(){this.dismissBtn.addEventListener("click",this._formDismiss.bind(this)),this.form.addEventListener("submit",this._formSubmit.bind(this)),this.inputField.addEventListener("keypress",this._keyPress.bind(this)),this.quantitySelect.addEventListener("change",this._changeQuantity.bind(this))}_loadInput(){let t=new FormData;t.append("productId",this.productId),t.append("quantity",this.quantitySelect.value),fetch(this.form.dataset.formDataUrl,{method:"POST",body:t}).then(t=>t.json()).then(t=>{if(t.address&&""!==t.address&&(this.inputField.placeholder=t.address),this.countryField&&t.country&&""!==t.country&&(this.countryField.value=t.country),t.zipInput&&""!==t.zipInput){this.inputField.value=t.zipInput,this._enableButton(this.dismissBtn);return}this._disableButton(this.dismissBtn)})}_showSpinner(){this.loadingSpinner.style.display="block",this.costsContainer.style.display="none"}_hideSpinner(){this.loadingSpinner.style.display="none",this.costsContainer.style.display="block"}_disableButton(t){t.disabled=!0,t.classList.remove("btn-primary"),t.classList.add("btn-secondary")}_enableButton(t){t.disabled=!1,t.classList.remove("btn-secondary"),t.classList.add("btn-primary")}_keyPress(t){"Enter"===t.key&&this._formSubmit(t)}_changeQuantity(t){this.calculateCosts&&this._formSubmit(t)}_formSubmit(t){t.preventDefault(),this.calculateCosts=!0,this._showSpinner();let e=new FormData;e.append("productId",this.productId),e.append("quantity",this.quantitySelect.value),e.append("zipInput",this.inputField.value),this.countryField&&e.append("countryId",this.countryField.value),this._appendFlexSizeFields(e),fetch(this.form.dataset.injectZipUrl,{method:"POST",body:e}).then(t=>t.json()).then(t=>{if(!t.success){this.costsContainer.innerHTML=t.error,this._hideSpinner();return}fetch(this.form.dataset.shippingCostsUrl,{method:"POST",body:e}).then(t=>t.json()).then(t=>{if(this._hideSpinner(),""!==this.inputField.value&&this._enableButton(this.dismissBtn),!t.success){this.costsContainer.innerHTML=t.error;return}if(t.costs&&""!==t.costs){this.costsContainer.innerHTML=t.costs;return}this._disableButton(this.dismissBtn)})})}_formDismiss(t){t.preventDefault(),this.calculateCosts=!1,this._showSpinner();let e=new FormData;e.append("zipInput",""),fetch(this.form.dataset.injectZipUrl,{method:"POST",body:e}).then(()=>{this._hideSpinner(),this.inputField.value="",this.costsContainer.innerHTML="",this._disableButton(this.dismissBtn)})}_appendFlexSizeFields(t){this.buyForm.querySelectorAll(`input[name^="lineItems[${this.productId}
9][flexSize]"]`).forEach(e=>{t.append(e.name,e.value)})}}window.PluginManager.register("NetiShippingCostsProductDetailPlugin",r,"div.product-detail-neti-shipping-container")})();
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.