PageSourceSearch

https://diabetesexpress.ca/cdn/shop/t/68/assets/variant-picker.js?v=143941507225618734201785947011

js diabetesexpress.ca collected 2026-09-24 15:16:24 UTC 9,778 bytes, 2 lines download raw bytes

1if(!customElements.get("variant-picker")){class VariantPicker extends HTMLElement{constructor(){super(),this.section=this.closest(".js-product"),this.productForm=this.section.querySelector(".js-product-form-main"),this.optionSelectors=this.querySelectorAll(".option-selector"),this.data=this.getProductData(),this.variant=this.getSelectedVariant(),this.selectedOptions=this.getSelectedOptions(),this.preSelection=!this.variant&&this.selectedOptions.find(o=>o===null)===null,this.addEventListener("change",this.handleVariantChange.bind(this)),setTimeout(()=>{this.updateAvailability(),this.updateAddToCartButton()})}handleVariantChange(evt){this.selectedOptions=this.getSelectedOptions(),this.variant=this.getSelectedVariant(),this.preSelection=!this.variant&&this.selectedOptions.find(o=>o===null)===null,this.variant&&(this.updateMedia(),this.updateUrl(evt),this.updateVariantInput()),this.updateAddToCartButton(),this.updateAvailability(),this.updatePrice(),this.updateWeight(),this.updateBarcode(),this.updateBackorderText(),this.updatePickupAvailability(),this.updateSku(),this.updateMetafieldVisibility(),VariantPicker.updateLabelText(evt),this.preSelection||this.dispatchEvent(new CustomEvent("on:variant:change",{bubbles:!0,detail:{form:this.productForm,variant:this.variant,product:this.data.product}}))}updateMetafieldVisibility(){document.querySelectorAll("[data-variant-metafield]").forEach(elem=>{elem.classList.toggle("hidden",elem.dataset.variantMetafield!==this.variant?.id.toString())})}updateAddToCartButton(){if(this.productForm=this.section.querySelector(".js-product-form-main"),!this.productForm)return;this.addBtn=this.addBtn||this.productForm.querySelector('[name="add"]');const variantAvailable=this.variant&&this.variant.available;if(this.addBtn.disabled=!variantAvailable||this.preSelection,this.preSelection)this.addBtn.textContent=theme.strings.noSelectedVariant;else{const unavailableStr=this.variant?theme.strings.noStock:theme.strings.noVariant;this.addBtn.textContent=variantAvailable?this.addBtn.dataset.addToCartText:unavailableStr}}static updateOptionAvailability(optionEl,exists,available){const el=optionEl,unavailableText=exists?theme.strings.noStock:theme.strings.noVariant;if(el.classList.toggle("is-unavailable",!available),el.classList.toggle("is-nonexistent",!exists),optionEl.classList.contains("custom-select__option")){const em=el.querySelector("em");em&&(em.hidden=available),available||(em?em.textContent=unavailableText:el.innerHTML=`${el.innerHTML} <em class="pointer-events-none">${unavailableText}</em>`)}else available?el.nextElementSibling.removeAttribute("title"):el.nextElementSibling.title=unavailableText}updateAvailability(){if(this.dataset.showAvailability==="false")return;const{availabilityMethod}=this.dataset;let currVariant=this.variant;this.variant||(currVariant={options:this.selectedOptions}),availabilityMethod==="selection"?(this.querySelectorAll(".js-option").forEach(optionEl=>{VariantPicker.updateOptionAvailability(optionEl,!1,!1)}),this.optionSelectors.forEach((selector,selectorIndex)=>
1{this.data.product.variants.forEach(variant=>{let matchCount=0;if(variant.options.forEach((option,optionIndex)=>{option===currVariant.options[optionIndex]&&optionIndex!==selectorIndex&&(matchCount+=1)}),matchCount===currVariant.options.length-1){const options=selector.querySelectorAll(".js-option"),optionEl=Array.from(options).find(opt=>selector.dataset.selectorType==="dropdown"?opt.dataset.value===variant.options[selectorIndex]:opt.value===variant.options[selectorIndex]);optionEl&&VariantPicker.updateOptionAvailability(optionEl,!0,variant.available)}})})):this.optionSelectors.forEach((selector,selectorIndex)=>{selector.querySelectorAll('.js-option:not([data-value=""])').forEach(option=>{const optionValue=selector.dataset.selectorType==="dropdown"?option.dataset.value:option.value;let variantsExist=!1,variantsAvailable=!1;this.data.product.variants.forEach(v=>{let matches=0;for(let i=0;i<selectorIndex;i+=1)(v.options[i]===this.selectedOptions[i]||this.selectedOptions[i]===null)&&(matches+=1);v.options[selectorIndex]===optionValue&&matches===selectorIndex&&(variantsExist=!0,v.available&&(variantsAvailable=!0))}),VariantPicker.updateOptionAvailability(option,variantsExist,variantsAvailable)})})}updateBackorderText(){if(this.backorder=this.backorder||this.section.querySelector(".backorder"),!this.backorder)return;let hideBackorder=!0;if(this.variant&&this.variant.available){const{inventory}=this.data.formatted[this.variant.id];if(this.variant.inventory_management&&inventory==="none"){const backorderProdEl=this.backorder.querySelector(".backorder__product"),prodTitleEl=this.section.querySelector(".product-title"),variantTitle=this.variant.title.includes("Default")?"":` - ${this.variant.title}`;backorderProdEl.textContent=`${prodTitleEl.textContent}${variantTitle}`,hideBackorder=!1}}this.backorder.hidden=hideBackorder}static updateLabelText(evt){const selector=evt.target.closest(".option-selector");if(selector.dataset.selectorType==="dropdown")return;const colorText=selector.querySelector(".js-color-text");colorText&&(colorText.textContent=evt.target.nextElementSibling.querySelector(".js-value").textContent)}updateMedia(){if(this.variant.featured_media)if(this.section.matches("quick-add-drawer"))this.section.updateMedia(this.variant.featured_media.id);else{if(this.mediaGallery=this.mediaGallery||this.section.querySelector("media-gallery"),!this.mediaGallery)return;const variantMedia=this.mediaGallery.querySelector(`[data-media-id="${this.variant.featured_media.id}"]`);this.mediaGallery.setActiveMedia(variantMedia,!0,!0)}}updatePickupAvailability(){this.pickUpAvailability=this.pickUpAvailability||this.section.querySelector("pickup-availability"),this.pickUpAvailability&&(this.variant&&this.variant.available?this.pickUpAvailability.getAvailability(this.variant.id):(this.pickUpAvailability.removeAttribute("available"),this.pickUpAvailability.innerHTML=""))}updatePrice(){if(this.price=this.price||this.section.querySelector(".product-info__price > .price"),!this.price)return;let{variant}=this;if(this.preSelection){variant=this.data.product.variants[0];for(let i=1;i<this.data.product.variants.length;i+=1)this.data.product.variants[i].price<variant.price&&(variant=this.data.product.variants[i])}if(this.variant){const priceCurrentEl=this.price.querySelector(".price__current"),priceWasEl=this.price.querySelector(".price__was"),unitPriceEl=this.price.querySelector(".unit-price");if(priceCurrentEl.innerHTML=this.data.formatted[this.variant.id].price,priceWasEl&&(priceWasEl.innerHTML=this.data.formatted[this.variant.id].compareAtPrice||""),this.variant.unit_price_measurement){const valueEl=this.price.querySelector(".unit-price__price"),unitEl=this.price.querySelector(".unit-price__unit"),value=this.variant.unit_price_measurement.reference_value,unit=this.variant.unit_price_measurement.reference_unit;valueEl.innerHTML=this.data.formatted[this.variant.id].unitPrice,unitEl.textContent=value===1?unit:`${value} ${unit}`}unitPriceEl.hidden=!this.variant.unit_price_measurement,this.price.classList.toggle("price--on-sale",this.variant.compare_at_price>this.variant.price),this.price.classList.toggle("price--sold-out",!this.variant.available&&!this.preSelection)}this.price.querySelector(".price__default").hidden=!this.variant&&!this.preSelection,this.price.querySelector(".price__no-variant").hidden=this.variant||this.preSelection;const from=this.price.querySelector(".price__from");from&&(from.hidden=!this.preSelection)}updateWeight(){if(this.weights=this.weights||this.section.querySelectorAll(".product-info__weight"),this.weights.length===0)return;const weightAvailable=this.variant&&this.variant.weight>0;
1this.weights.forEach(weight=>{weight.textContent=weightAvailable?this.data.formatted[this.variant.id].weight:"",weight.hidden=!weightAvailable})}updateBarcode(){if(this.barcodes=this.barcodes||this.section.querySelectorAll(".product-info__barcode-value"),this.barcodes.length===0)return;const barcodeAvailable=this.variant&&this.variant.barcode;this.barcodes.forEach(barcode=>{barcode.textContent=barcodeAvailable?this.variant.barcode:"",barcode.parentNode.hidden=!barcodeAvailable})}updateSku(){if(this.sku=this.sku||this.section.querySelector(".product-sku__value"),!this.sku)return;const skuAvailable=this.variant&&this.variant.sku;this.sku.textContent=skuAvailable?this.variant.sku:"",this.sku.parentNode.hidden=!skuAvailable}updateUrl(evt){!evt||evt.type!=="change"||this.dataset.updateUrl==="false"||window.history.replaceState({},"",`${this.dataset.url}?variant=${this.variant.id}`)}updateVariantInput(){this.forms=this.forms||this.section.querySelectorAll(".js-product-form-main, .js-instalments-form"),this.forms.forEach(form=>{const input=form.querySelector('input[name="id"]');input.value=this.variant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}getSelectedOptions(){const selectedOptions=[];return this.optionSelectors.forEach(selector=>{if(selector.dataset.selectorType==="dropdown"){const selectedText=selector.querySelector(".custom-select__btn").textContent.trim();selectedOptions.push(selectedText===this.dataset.placeholderText?null:selectedText)}else{const selected=selector.querySelector("input:checked");selectedOptions.push(selected?selected.value:null)}}),selectedOptions}getProductData(){const dataEl=this.querySelector('[type="application/json"]');return JSON.parse(dataEl.textContent)}getSelectedVariant(){const selectedOptions=this.getSelectedOptions();return this.data.product.variants.find(v=>v.options.every((val,index)=>val===selectedOptions[index]))}}customElements.define("variant-picker",VariantPicker)}
2//# sourceMappingURL=/cdn/shop/t/68/assets/variant-picker.js.map?v=143941507225618734201785947011

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.