1class VariantSelects extends HTMLElement{constructor(){super(),this.addEventListener("change",this.onVariantChange)}onVariantChange(e){const{isCombinedProduct,targetUrl}=this.combinedListingCheck(e);if(this.toggleAddButton(!0,"",!1),isCombinedProduct){this.fetchProductSection(targetUrl);return}this.updateOptions(),this.updateMasterId(),this.updatePickupAvailability(),this.updateInventoryStatus(),this.removeErrorMessage(),this.updateVariantStatuses(),this.currentVariant?(this.updateMedia(),this.updateURL(),this.updateVariantInput(),this.renderProductInfo(),this.updateShareUrl()):(this.toggleAddButton(!0,"",!0),this.setUnavailable())}combinedListingCheck(e){const currentUrl=window.location.pathname,targetUrl=e.target.dataset.productUrl;let isCombinedProduct=!1;return targetUrl!=null&¤tUrl!=targetUrl&&(isCombinedProduct=!0),{isCombinedProduct,targetUrl}}async fetchProductSection(newProductUrl){const productElement=this.closest(".main-product");let params=`section_id=${this.dataset.section}&`;const selectedOptionValues=Array.from(this.querySelectorAll("fieldset input:checked")).map(element=>element.dataset.optionValueId).join(",");params+=`option_values=${selectedOptionValues}`,fetch(`${newProductUrl}?${params}`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html");productElement.innerHTML=html.querySelector(".main-product").innerHTML,window.history.replaceState({},"",`${newProductUrl}`)})}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(){if(!this.currentVariant||!this.currentVariant.featured_media)return;const mediaGridySlider=document.getElementById(`slider-${this.dataset.section}`),thumbnailsGridySlider=document.getElementById(`thumbnail-slider-${this.dataset.section}`);mediaGridySlider&&mediaGridySlider.scrollToSlideByID(`item-${this.currentVariant.featured_media.id}`),thumbnailsGridySlider&&thumbnailsGridySlider.scrollToSlideByID(`thumbnail-item-${this.currentVariant.featured_media.id}`);const isDesktop=window.matchMedia("(min-width: 1024px)").matches,isGrid=mediaGridySlider.dataset.desktopEnabled==="false";isDesktop&&isGrid&&document.getElementById(`item-${this.currentVariant.featured_media.id}`)?.scrollIntoView()}updateURL(){!this.currentVariant||this.dataset.updateUrl==="false"||window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updateShareUrl(){const shareButton=document.getElementById(`Share-${this.dataset.section}`);!shareButton||!shareButton.updateUrl||shareButton.updateUrl(`${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}, #product-form-${this.dataset.section}-product-buy-bar`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updateVariantStatuses(){const selectedOptionOneVariants=this.variantData.filter(variant=>this.querySelector(":checked").value===variant.option1),inputWrappers=[...this.querySelectorAll(".product-form__input")];inputWrappers.forEach((option,index)=>{if(index===0)return;const optionInputs=[...option.querySelectorAll('input[type="radio"], option')],previousOptionSelected=inputWrappers[index-1].querySelector(":checked").value,availableOptionInputsValue=selectedOptionOneVariants.filter(variant=>variant.available&&variant[`option${index}`]===previousOptionSelected).map(variantOption=>variantOption[`option${index+1}`]);this.setInputAvailability(optionInputs,availableOptionInputsValue)})}setInputAvailability(listOfOptions,listOfAvailableOptions){listOfOptions.forEach(input=>{listOfAvailableOptions.includes(input.getAttribute("value"))?input.innerText=input.getAttribute("value"):input.innerText=window.variantStrings.unavailable_with_option.replace("[value]",input.getAttribute("value"))})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(this.currentVariant&&this.currentVariant.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}updateInventoryStatus(){if(this.productInventoryNode=document.querySelector("[data-product-inventory]"),!this.productInventoryNode||!window.inventories||!window.inventories[this.dataset.productId])return;this.inventoryThreshold=parseInt(this.productInventoryNode.dataset.threshold),this.showQuantityInStock=this.productInventoryNode.dataset.showQuantityInStock;const variantInventoryObject=window.inventories[this.dataset.productId][this.currentVariant?.id];if(!this.currentVariant||!this.currentVariant.inventory_management){this.toggleInventoryQuantity(!1),this.toggleIncomingInventory(!1);return}this.currentVariant.inventory_management==="shopify"&&(variantInventoryObject.quantity<=0&&variantInventoryObject.incoming==="true"&&variantInventoryObject.quantity<this.inventoryThreshold?(this.toggleInventoryQuantity(!1),this.toggleIncomingInventory(!0,variantInventoryObject.next_incoming_date)):(this.toggleInventoryQuantity(!0,variantInventoryObject.quantity),this.toggleIncomingInventory(!1)))}toggleInventoryQuantity(show,quantity){if(show===!1){this.productInventoryNode.classList.add("hide");return}this.productInventoryNode.classList.remove("inventory-status--in-stock","inventory-status--low","inventory-status--sold-out","inventory-status--sold-out-continue-selling"),this.currentVariant&&this.currentVariant.available&&parseInt(quantity)<=parseInt(this.inventoryThreshold)&&parseInt(quantity)>0?(this.productInventoryNode.classList.add("inventory-status--low"),this.showQuantityInStock==="true"?this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.few_left_with_quantity.replace("[quantity]",quantity):this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.few_left):this.currentVariant&&this.currentVariant.available&&parseInt(quantity)>parseInt(this.inventoryThreshold)?(this.productInventoryNode.classList.add("inventory-status--in-stock"),this.showQuantityInStock==="true"?this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.in_stock_with_quantity.replace("[quantity]",quantity):this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.in_stock):this.currentVariant&&this.currentVariant.available&&parseInt(quantity)<1?(this.productInventoryNode.classList.add("inventory-status--sold-out-continue-selling"),this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.out_of_stock_continue_selling):(this.productInventoryNode.classList.add("inventory-status--sold-out"),this.productInventoryNode.firstElementChild.textContent=window.variantStrings.inventory.out_of_stock),this.productInventoryNode.classList.remove("hide")}toggleIncomingInventory(show,date){const incomingInventoryNode=document.querySelector("[data-incoming-inventory]");if(!incomingInventoryNode)return;if(show==!1&&incomingInventoryNode){incomingInventoryNode.classList.add("hide");return}let string=date?window.variantStrings.inventory.will_be_in_stock_after.replace("[date]",date):window.variantStrings.inventory.waiting_for_stock;incomingInventoryNode.classList.remove("hide"),incomingInventoryNode.firstElementChild.textContent=string}removeErrorMessage(){const section=this.closest("section");if(!section)return;const productForm=section.querySelector("product-form");productForm&&productForm.handleErrorMessage()}renderProductInfo(){fetch(`${this.dataset.url}?variant=${this.currentVariant.id}§ion_id=${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(`price-${this.dataset.section}`),skuSource=html.getElementById(`Sku-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),skuDestination=document.getElementById(`Sku-${this.dataset.section}`),destinationBuyBarInfo=document.getElementById(`buy-bar-info-${this.dataset.section}`),source=html.getElementById(`price-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),buyBarInfoSource=html.getElementById(`buy-bar-info-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`);source&&destination&&(destination.innerHTML=source.innerHTML),source&&destinationBuyBarInfo&&(destinationBuyBarInfo.innerHTML=buyBarInfoSource.innerHTML),skuSource&&skuDestination&&(skuDestination.innerHTML=skuSource.innerHTML,skuDestination.classList.toggle("hidden",skuSource.classList.contains("hidden")));const price=document.getElementById(`price-${this.dataset.section}`);price&&price.classList.remove("hidden"),this.toggleAddButton(!this.currentVariant.available,window.variantStrings.soldOut)})}toggleAddButton(disable=!0,text,modifyClass=!0){const productForm=d
1ocument.getElementById(`product-form-${this.dataset.section}`);if(!productForm)return;const addButton=productForm.querySelector('[name="add"]'),addButtonText=productForm.querySelector('[name="add"] > span'),multiplyButtons=productForm.querySelectorAll(".btn--add-multiplier");if(!addButton)return;disable?(addButton.setAttribute("disabled","disabled"),text&&(addButtonText.textContent=text),multiplyButtons&&multiplyButtons.forEach(button=>{button.disabled=!0})):(addButton.removeAttribute("disabled"),this.dataset.isPreorder=="true"?addButtonText.textContent=window.variantStrings.preOrder:addButtonText.textContent=window.variantStrings.addToCart,multiplyButtons&&multiplyButtons.forEach(button=>{button.removeAttribute("disabled")}));const productForm_BuyBar=document.getElementById(`product-form-${this.dataset.section}-product-buy-bar`);if(productForm_BuyBar){const addButton_BuyBar=productForm_BuyBar.querySelector('[name="add"]'),addButtonText_BuyBar=productForm_BuyBar.querySelector('[name="add"] > span');disable?(addButton_BuyBar.setAttribute("disabled","disabled"),text&&(addButtonText_BuyBar.textContent=text)):(addButton_BuyBar.removeAttribute("disabled"),this.dataset.isPreorder=="true"?addButtonText_BuyBar.textContent=window.variantStrings.preOrder:addButtonText_BuyBar.textContent=window.variantStrings.addToCart)}}setUnavailable(){const button=document.getElementById(`product-form-${this.dataset.section}`),addButton=button.querySelector('[name="add"]'),addButtonText=button.querySelector('[name="add"] > span'),price=document.getElementById(`price-${this.dataset.section}`);if(!addButton)return;addButtonText.textContent=window.variantStrings.unavailable,price&&price.classList.add("hidden");const button_BuyBar=document.getElementById(`product-form-${this.dataset.section}-product-buy-bar`),addButton_BuyBar=button_BuyBar.querySelector('[name="add"]'),addButtonText_BuyBar=button_BuyBar.querySelector('[name="add"] > span'),price_BuyBar=document.getElementById(`price-${this.dataset.section}-product-buy-bar`);addButton_BuyBar&&(addButtonText_BuyBar.textContent=window.variantStrings.unavailable,price_BuyBar&&price_BuyBar.classList.add("hidden"))}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}}customElements.define("variant-selects",VariantSelects);class VariantRadios extends VariantSelects{constructor(){super()}setInputAvailability(listOfOptions,listOfAvailableOptions){listOfOptions.forEach(input=>{listOfAvailableOptions.includes(input.getAttribute("value"))?input.classList.remove("disabled"):input.classList.add("disabled")})}updateOptions(){const fieldsets=Array.from(this.querySelectorAll("fieldset"));this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked).value),this.updateLegends()}updateLegends(){Array.from(this.querySelectorAll("fieldset")).forEach(fieldset=>{const legend=fieldset.querySelector("legend [data-variant-legend]"),selectedOption=Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked);legend.textContent=selectedOption.getAttribute("value")})}}customElements.define("variant-radios",VariantRadios);class ProductBuyBar extends HTMLElement{constructor(){"use strict";super();let classes={show:"show"},mainProductForm=document.querySelector(".product-form");const observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting?this.classList.remove(classes.show):window.scrollY>200&&this.classList.add(classes.show)})},{threshold:.25});observer.observe(mainProductForm),document.addEventListener("DOMContentLoaded",function(){let siteFooter=document.querySelector("footer.footer");siteFooter&&observer.observe(siteFooter)})}}customElements.define("product-buy-bar",ProductBuyBar);class UpsellCard extends HTMLElement{constructor(){super(),this.select=this.querySelector("select"),this.image=this.querySelector(".card-media img"),this.select&&this.select.addEventListener("change",event=>{const newImgSrc=event.target.options[event.target.selectedIndex].getAttribute("data-variant-img-src");newImgSrc&&this.updateImage(newImgSrc)})}updateImage(newImgSrc){this.image&&(this.image.src=newImgSrc)}}customElements.define("upsell-card",UpsellCard); 2//# sourceMappingURL=/cdn/shop/t/69/assets/template-product.js.map?v=69321583582464555981785896919
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.