class VariantQuickViewSelects extends HTMLElement{constructor(){super(),this.item=this.closest(".quickView"),this.variants=this.getVariantData(),this.onVariantInit=debounce(()=>{if(this.updateOptions(),this.updateMasterId(),this.updateMedia(500),this.updateVariants(this.variants),this.checkNeedToConvertCurrency()){let currencyCode=document.getElementById("currencies")?.querySelector(".active")?.getAttribute("data-currency");Currency.convertAll(window.shop_currency,currencyCode,"span.money","money_format")}},500),this.onVariantInit(),this.addEventListener("change",this.onVariantChange.bind(this))}onVariantChange(event){this.updateOptions(),this.updateMasterId(),this.updateVariants(this.variants),this.currentVariant?(this.updateMedia(200),this.updateProductInfo(),this.updateAttribute(!1,!this.currentVariant.available),this.checkQuantityWhenVariantChange()):this.updateAttribute(!0)}updateVariants(variants){const options=Array.from(this.querySelectorAll(".product-form__input")),type=document.getElementById(`product-quick-view-option-${this.dataset.product}`)?.getAttribute("data-type");let selectedOption1,selectedOption2,selectedOption3;if(variants){if(type=="button"){options[0]&&(selectedOption1=Array.from(options[0].querySelectorAll("input")).find(radio=>radio.checked).value,options[0].querySelector("[data-header-option]").textContent=selectedOption1),options[1]&&(selectedOption2=Array.from(options[1].querySelectorAll("input")).find(radio=>radio.checked).value,options[1].querySelector("[data-header-option]").textContent=selectedOption2),options[2]&&(selectedOption3=Array.from(options[2].querySelectorAll("input")).find(radio=>radio.checked).value,options[2].querySelector("[data-header-option]").textContent=selectedOption3);var checkVariant=()=>{var optionsSize=parseInt(options.length);if(optionsSize>1){var variantList=variants.filter(variant=>{switch(optionsSize){case 2:return variant.option2===selectedOption2;case 3:return variant.option3===selectedOption3}}),input1List=options[0].querySelectorAll(".product-form__radio");input1List.forEach(input=>{var label=input.nextSibling,optionSoldout=Array.from(variantList).find(variant=>variant.option1==input.value&&variant.available),optionUnavailable=Array.from(variantList).find(variant=>variant.option1==input.value);optionSoldout==null?optionUnavailable==null?(label.classList.remove("available"),label.classList.remove("soldout"),label.classList.add("unavailable")):(label.classList.remove("available"),label.classList.remove("unavailable"),label.classList.add("soldout")):(label.classList.remove("soldout"),label.classList.remove("unavailable"),label.classList.add("available"))})}},updateVariant=(optionSoldout,optionUnavailable,element,optionIndex)=>{var label=element.nextSibling;optionSoldout==null?optionUnavailable==null?(label.classList.remove("available"),label.classList.remove("soldout"),label.classList.add("unavailable")):(label.classList.remove("available"),label.classList.remove("unavailable"),label.classList.add("soldout")):(label.classList.remove("soldout"),label.classList.remove("unavailable"),label.classList.add("available"))},renderVariant=(optionIndex,fieldset)=>{fieldset.querySelectorAll(".product-form__radio").forEach(input=>{const inputVal=input.value,optionSoldout=variants.find(variant=>{switch(optionIndex){case 0:return variant.option1==inputVal&&variant.available;case 1:return variant.option1==selectedOption1&&variant.option2==inputVal&&variant.available;case 2:return variant.option1==selectedOption1&&variant.option2==selectedOption2&&variant.option3==inputVal&&variant.available}}),optionUnavailable=variants.find(variant=>{switch(optionIndex){case 0:return variant.option1==inputVal;case 1:return variant.option1==selectedOption1&&variant.option2==inputVal;case 2:return variant.option1==selectedOption1&&variant.option2==selectedOption2&&variant.option3==inputVal}});updateVariant(optionSoldout,optionUnavailable,input,optionIndex)})}}else{options[0]&&(selectedOption1=options[0].querySelector("select").value,options[0].querySelector("[data-header-option]").textContent=selectedOption1),options[1]&&(selectedOption2=options[1].querySelector("select").value,options[1].querySelector("[data-header-option]").textContent=selectedOption2),options[2]&&(selectedOption3=options[2].querySelector("select").value,options[2].querySelector("[data-header-option]").textContent=selectedOption3);var checkVariant=()=>{var optionsSize=parseInt(options.length);if(optionsSize>1){var variantList=variants.filter(variant=>{switch(optionsSize){case 2:return variant.option2===selectedOption2;case 3:return variant.option3===selectedOption3}}),option1List=options[0].querySelectorAll("option");option1List.forEach(option=>{var optionSoldout=Array.from(variantList).find(variant=>variant.option1==option.value&&variant.available),optionUnavailable=Array.from(variantList).find(variant=>variant.option1==option.value);optionSoldout==null?optionUnavailable==null?(option.classList.remove("available"),option.classList.remove("soldout"),option.classList.add("unavailable"),option.setAttribute("disabled","disabled")):(option.classList.remove("available"),option.classList.remove("unavailable"),option.classList.add("soldout"),option.removeAttribute("disabled")):(option.classList.remove("soldout"),option.classList.remove("unavailable"),option.classList.add("available"),option.removeAttribute("disabled"))})}},updateVariant=(optionSoldout,optionUnavailable,element)=>{optionSoldout==null?optionUnavailable==null?(element.classList.remove("available"),element.classList.remove("soldout"),element.classList.add("unavailable"),element.setAttribute("disabled","disabled")):(element.classList.remove("available"),element.classList.remove("unavailable"),element.classList.add("soldout"),element.removeAttribute("disabled")):(element.classList.remove("soldout"),element.classList.remove("unavailable"),element.classList.add("available"),element.removeAttribute("disabled"))},renderVariant=(optionIndex,select)=>{select.querySelectorAll("option").forEach(option=>{const optionVal=option.getAttribute("value"),optionSoldout=variants.find(variant=>{switch(optionIndex){case 0:return variant.option1==optionVal&&variant.available;case 1:return variant.option1==selectedOption1&&variant.option2==optionVal&&variant.available;case 2:return variant.option1==selectedOption1&&variant.option2==selectedOption2&&variant.option3==optionVal&&variant.available}}),optionUnavailable=variants.find(variant=>{switch(optionIndex){case 0:return variant.option1==optionVal;case 1:return variant.option1==selectedOption1&&variant.option2==optionVal;case 2:return variant.option1==selectedOption1&&variant.option2==selectedOption2&&variant.option3==optionVal}});updateVariant(optionSoldout,optionUnavailable,option)})}}options.forEach(fieldset=>{const optionIndex=parseInt(fieldset.getAttribute("data-option-index"));renderVariant(optionIndex,fieldset),checkVariant()})}}updateOptions(){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(time){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const newMedia=document.querySelector(`[data-media-id="${this.dataset.product}-${this.currentVariant.featured_media.id}"]`);newMedia&&window.setTimeout(()=>{$(newMedia).trigger("click")},time)}updateProductInfo(){fetch(`${this.dataset.url}?variant=${this.currentVariant.id}&view=quick_view`).then(response=>response.text()).then(responseText=>{const id=`product-price-${this.dataset.product}`,html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(`product-quick-view-price-${this.dataset.product}`),source=html.getElementById(id);if(source&&destination&&(destination.innerHTML=source.innerHTML),this.checkNeedToConvertCurrency()){let currencyCode=document.getElementById("currencies")?.querySelector(".active")?.getAttribute("data-currency");Currency.convertAll(window.shop_currency,currencyCode,"span.money","money_format")}destination?.classList.remove("visibility-hidden")})}updateAttribute(unavailable=!0,disable=!0){this.quantityInput=this.item.querySelector('input[name="quantity"]'),this.inventoryProp=this.item.querySelector("[data-inventory]"),this.skuProp=this.item.querySelector("[data-sku]"),this.notifyMe=this.item.querySelector(".productView-notifyMe"),this.hotStock=this.item.querySelector(".productView-hotStock");const addButton=document.getElementById(`product-quick-view-form-${this.dataset.product}`)?.querySelector('[name="add"]'),productForms=document.querySelectorAll(`#product-quick-view-form-${this.dataset.product}, #product-quick-view-form-installment-${this.dataset.product}`);let quantityInputValue=parseInt(this.quantityInput?.value),quantityInputMaxValue,alertText=window.inventory_text.max,alertMessage=`