1class HHVariantPicker extends HTMLElement{constructor(){super(),this.mainProduct=this.closest(`#ProductInfo-${this.dataset.section}`),this.addEventListener("change",this.onVariantChange)}get disabledUpdateURL(){return this.getAttribute("disable-update-url")||!1}onVariantChange(){this.updateOptions(),this.updateMasterId(),this.toggleAddButton(!0,"",!1),this.updatePickupAvailability(),this.currentVariant?(this.updateMedia(),this.updateURL(),this.updateVariantInput(),this.renderProductInfo()):(this.toggleAddButton(!0,"",!0),this.setUnavailable())}updateOptions(){const fieldsets=Array.from(this.querySelectorAll("fieldset"));fieldsets&&fieldsets.length?this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked).value):this.options=Array.from(this.querySelectorAll("select"),select=>select.value)}updateMasterId(){this.currentVariant=this.getVariantData().find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateMedia(){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const newMedia=document.querySelector(`[data-media-id="${this.dataset.section}-${this.currentVariant.featured_media.id}"]`);if(!newMedia)return;const parent=newMedia.parentElement;document.querySelectorAll(".product__media").forEach(media=>media.classList.remove("active")),newMedia.classList.add("active"),window.setTimeout(()=>{parent.scroll(0,0)})}updateURL(){!this.currentVariant||this.disabledUpdateURL||window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updatePreorderProperty(){const productForm=document.getElementById(`product-form-${this.dataset.section}`);if(!productForm)return;const preorderEnabled=productForm.querySelector("[data-preorder-enabled]")?.dataset.preorderEnabled==="true",input=productForm.querySelector('input[name="properties[Estimated Shipping]"]');input&&(input.disabled=!preorderEnabled)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(this.currentVariant?.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}renderProductInfo(){let url=`${this.dataset.url}?variant=${this.currentVariant.id}§ion_id=${this.dataset.section}`;this.dataset.view&&(url=`${this.dataset.url}?variant=${this.currentVariant.id}&view=${this.dataset.view}`),fetch(url).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html"),isPreorderEnabled=html.querySelector("[data-preorder-enabled]")?.dataset.preorderEnabled==="true";this._replaceProductInfo(html),this.toggleAddButton(!(this.currentVariant.available||isPreorderEnabled),html),this.updatePreorderProperty()})}_replaceProductInfo(html){const destinations=this.mainProduct.querySelectorAll("[data-render]"),sources=html.querySelectorAll("[data-render]");destinations.forEach((destination,index)=>{destination.innerHTML=sources[index]?.innerHTML,destination.classList.remove("visibility-hidden")})}toggleAddButton(disable=!0,html,modifyClass=!0){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');if(addButton&&(disable?addButton.setAttribute("disabled",!0):addButton.removeAttribute("disabled"),html)){const source=html.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');source&&addButton&&(addButton.innerHTML=source.innerHTML)}}setUnavailable(){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');addButton&&(addButton.textContent=window.variantStrings.unavailable,document.getElementById(`price-${this.dataset.section}`)?.classList.add("visibility-hidden"))}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}}customElements.define("hh-variant-picker",HHVariantPicker); 2//# sourceMappingURL=/cdn/shop/t/1031/assets/component-variant-picker.js.map?v=164851916691673612971781195609
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.