1class VariantSelects extends HTMLElement{constructor(){super(),this.addEventListener("change",this.onVariantChange)}onVariantChange(){this.updateOptions(),this.updateMasterId(),this.updateExternalVariants(),this.toggleAddButton(!0,"",!1),this.updatePickupAvailability(),this.currentVariant?(this.updateMedia(),this.updateURL(),this.updateVariantInput(),this.updateFinance(),this.renderProductInfo(),window.BAO.dispatchEvent(window.BAO.EVENTS.VARIANT.CHANGED)):(this.toggleAddButton(!0,"",!0),this.setUnavailable())}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))}updateExternalVariants(){document.querySelectorAll("[data-variant-external-id]").forEach(input=>input.value=this.currentVariant.id),document.querySelectorAll("[data-variant-external-add]").forEach(button=>button.disabled=!this.currentVariant.available)}updateMedia(){if(!this.currentVariant||!this.currentVariant?.featured_media||!document.querySelector(`[data-media-id="${this.dataset.section}-${this.currentVariant.featured_media.id}"]`))return;const variantIndex=window.BAO.utils.getElements(".prd-Media_Item").findIndex(mediaItem=>mediaItem.getAttribute("data-media-id")===`${this.dataset.section}-${this.currentVariant.featured_media.id}`);new window.KeenSlider551(window.BAO.utils.getElement('[data-el="product-media.slides"]'),{slides:".car-Carousel_Slide"}).moveToSlide(variantIndex)}updateURL(){this.currentVariant&&window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}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=""))}updateFinance(){const priceMessage=window.BAO.utils.getElement(".prd-Details_PriceMessage span");if(priceMessage){Number.prototype.toFixedNoRounding=function(n){const reg=new RegExp(`^-?\\d+(?:\\.\\d{0,${n}})?`,"g"),a=this.toString().match(reg)[0],dot=a.indexOf(".");if(dot===-1)return`${a}.${"0".repeat(n)}`;const b=n-(a.length-dot)+1;return b>0?a+"0".repeat(b):a};const originalPrice=this.currentVariant.price,maxFinancePrice=15e5;let deposit=originalPrice/10;originalPrice>maxFinancePrice&&(deposit=originalPrice-maxFinancePrice);const splitCost=((originalPrice-deposit)/48/100).toFixedNoRounding(2),splitCostFormatted=new Intl.NumberFormat("en-GB",{style:"currency",currency:"GBP",maximumFractionDigits:2}).format(splitCost);priceMessage.innerHTML=splitCostFormatted}}renderProductInfo(){fetch(`${this.dataset.url}?variant=${this.currentVariant.id}§ion_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const id=`price-${this.dataset.section}`,html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(id),source=html.getElementById(id);source&&destination&&(destination.innerHTML=source.innerHTML);const skuid=`sku-${this.dataset.section}`,skudestination=document.getElementById(skuid),skusource=html.getElementById(skuid);skusource&&skudestination&&(skudestination.innerHTML=skusource.innerHTML),document.getElementById(`price-${this.dataset.section}`)?.classList.remove("visibility-hidden"),this.toggleAddButton(!this.currentVariant.available,window.variantStrings.soldOut)})}toggleAddButton(disable=!0,text,modifyClass=!0){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');addButton&&(disable?(addButton.setAttribute("disabled",!0),text&&(addButton.querySelector("[data-product-add-to-cart-text]").textContent=text)):(addButton.removeAttribute("disabled"),addButton.querySelector("[data-product-add-to-cart-text]").textContent=window.variantStrings.addToCart))}setUnavailable(){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');addButton&&(addButton.querySelector("[data-product-add-to-cart-text]").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("variant-selects",VariantSelects);class VariantRadios extends VariantSelects{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-radios",VariantRadios); 2//# sourceMappingURL=/cdn/shop/t/303/assets/variants.js.map?v=174983429036153653861789638874
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.