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=`

${alertText}

`;if(unavailable){let text=window.variantStrings.unavailable;this.quantityInput.setAttribute("disabled",!0),this.notifyMe&&(this.notifyMe.style.display="none"),this.hotStock&&(this.hotStock.style.display="none"),addButton.setAttribute("disabled",!0),addButton.textContent=text,this.quantityInput.closest("quantity-quick-view-input").classList.add("disabled")}else{if(disable){let text=window.variantStrings.soldOut;this.quantityInput.setAttribute("data-price",this.currentVariant?.price),this.quantityInput.setAttribute("disabled",!0),addButton.setAttribute("disabled",!0),addButton.textContent=text,this.quantityInput.closest("quantity-quick-view-input").classList.add("disabled"),this.inventoryProp&&(this.inventoryProp.querySelector(".productView-info-value").textContent=window.inventory_text.outOfStock),this.notifyMe&&(this.notifyMe.querySelector('input[name="halo-notify-product-variant"]').value=this.currentVariant.title,this.notifyMe.querySelector(".notifyMe-text").innerHTML="",this.notifyMe.style.display="block"),this.hotStock&&(this.hotStock.style.display="none")}else{let text,inventory=this.currentVariant?.inventory_management,arrayInVarName,inven_array,inven_num,inventoryQuantity;if(inventory!=null&&(arrayInVarName=`quick_view_inven_array_${this.dataset.product}`,inven_array=window[arrayInVarName],inven_array!=null&&(inven_num=inven_array[this.currentVariant.id],inventoryQuantity=parseInt(inven_num),typeof inventoryQuantity<"u"?inventoryQuantity>0?this.quantityInput.setAttribute("data-inventory-quantity",inventoryQuantity):this.quantityInput.removeAttribute("data-inventory-quantity"):this.quantityInput.setAttribute("data-inventory-quantity",inventoryQuantity))),typeof inventoryQuantity<"u"?inventoryQuantity>0?text=window.variantStrings.addToCart:text=window.variantStrings.preOrder:text=window.variantStrings.addToCart,this.quantityInput.setAttribute("data-price",this.currentVariant?.price),this.quantityInput.removeAttribute("disabled"),addButton.innerHTML=text,window.quick_view_subtotal.show){let subTotal=0,price=this.quantityInput.dataset.price;subTotal=quantityInputValue*price,subTotal=Shopify.formatMoney(subTotal,window.money_format),subTotal=extractContent(subTotal);const moneySpan=document.createElement("span");if(moneySpan.classList.add("money"),moneySpan.innerText=subTotal,document.body.appendChild(moneySpan),this.checkNeedToConvertCurrency()){let currencyCode=document.getElementById("currencies")?.querySelector(".active")?.getAttribute("data-currency");Currency.convertAll(window.shop_currency,currencyCode,"span.money","money_format")}subTotal=moneySpan.innerText,$(moneySpan).remove();const pdView_subTotal=document.querySelector(".quickView .productView-subtotal .money");pdView_subTotal.innerText=subTotal}if(inventoryQuantity>0){if(addButton.classList.remove("button-text-pre-order"),quantityInputMaxValue=parseInt(this.quantityInput?.getAttribute("data-inventory-quantity")),quantityInputValue>quantityInputMaxValue?(addButton.setAttribute("disabled",!0),this.quantityInput.closest("quantity-quick-view-input").classList.add("disabled")):(addButton.removeAttribute("disabled"),this.quantityInput.closest("quantity-quick-view-input").classList.remove("disabled")),this.inventoryProp!=null&&(inventoryQuantity>0?this.inventoryProp.getAttribute("data-stock-level")=="show"?this.item.querySelector("[data-inventory] .productView-info-value").textContent=inventoryQuantity+" "+window.inventory_text.inStock:this.item.querySelector("[data-inventory] .productView-info-value").textContent=window.inventory_text.inStock:this.item.querySelector("[data-inventory] .productView-info-value").textContent=window.inventory_text.outOfStock),this.hotStock){let maxStock=parseInt(this.hotStock.getAttribute("data-hot-stock"));if(0{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.getAttribute("data-json")),this.variantData}checkNeedToConvertCurrency(){return window.show_multiple_currencies&&Currency.currentCurrency!=shopCurrency||window.show_auto_currency}checkQuantityWhenVariantChange(){var quantityInput=this.closest(".productView-details").querySelector("input.quantity__input"),maxValue=parseInt(quantityInput.dataset.inventoryQuantity),inputValue=parseInt(quantityInput.value);inputValue>maxValue&&(quantityInput.value=maxValue)}}customElements.define("variant-quick-view-selects",VariantQuickViewSelects);class VariantQuickViewRadios extends VariantQuickViewSelects{constructor(){super()}updateOptions(){const fieldsets=Array.from(this.querySelectorAll("fieldset"));this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked).value)}}customElements.define("variant-quick-view-radios",VariantQuickViewRadios);class QuantityQuickViewInput extends HTMLElement{constructor(){super(),this.input=this.querySelector("input"),this.changeEvent=new Event("change",{bubbles:!0}),this.input.addEventListener("change",this.onInputChange.bind(this)),this.querySelectorAll("button").forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this)))}onInputChange(event){event.preventDefault();var inputValue=this.input.value,maxValue=parseInt(this.input.dataset.inventoryQuantity);const addButton=document.getElementById(`product-quick-view-form-${this.input.dataset.product}`)?.querySelector('[name="add"]');if(inputValue<1&&(inputValue=1),inputValue>maxValue){inputValue=maxValue,this.input.value=inputValue;const message=getInputMessage(maxValue);showWarning(message,3e3)}this.input.value=inputValue;const mainQty=document.querySelector(".quantity__group--1 .quantity__input");if(mainQty.value=inputValue,window.quick_view_subtotal.show){var text,price=this.input.dataset.price,subTotal=0,parser=new DOMParser;subTotal=inputValue*price,subTotal=Shopify.formatMoney(subTotal,window.money_format),subTotal=extractContent(subTotal);const moneySpan=document.createElement("span");if(moneySpan.classList.add("money"),moneySpan.innerText=subTotal,document.body.appendChild(moneySpan),this.checkNeedToConvertCurrency()){let currencyCode=document.getElementById("currencies")?.querySelector(".active")?.getAttribute("data-currency");Currency.convertAll(window.shop_currency,currencyCode,"span.money","money_format")}subTotal=moneySpan.innerText,$(moneySpan).remove();const pdView_subTotal=document.querySelector(".quickView .productView-subtotal .money");pdView_subTotal.innerText=subTotal}}onButtonClick(event){event.preventDefault();const previousValue=this.input.value;event.target.name==="plus"?this.input.stepUp():this.input.stepDown(),previousValue!==this.input.value&&this.input.dispatchEvent(this.changeEvent)}checkNeedToConvertCurrency(){return window.show_multiple_currencies&&Currency.currentCurrency!=shopCurrency||window.show_auto_currency}}customElements.define("quantity-quick-view-input",QuantityQuickViewInput);function showWarning(content,time=null){window.warningTimeout&&clearTimeout(window.warningTimeout);const warningPopupContent=document.getElementById("halo-warning-popup").querySelector("[data-halo-warning-content]");warningPopupContent.textContent=content,document.body.classList.add("has-warning"),time&&(window.warningTimeout=setTimeout(()=>{document.body.classList.remove("has-warning")},time))}function getInputMessage(maxValue){var message=window.cartStrings.addProductOutQuantity.replace("[maxQuantity]",maxValue);return message} //# sourceMappingURL=/cdn/shop/t/9/assets/variants-quick-view.js.map?v=155771503831389461111659634436