1if(!customElements.get("variant-picker")){class VariantPicker extends HTMLElement{constructor(){super(),Shopify.designMode?setTimeout(()=>this.init(),200):this.init()}init(){this.selectors={error:".m-product-form-message",variantIdInput:'[name="id"]',pickerFields:["[data-picker-field]"],optionNodes:[".m-product-option--node"],productSku:"[data-variant-sku]",productAvailability:"[data-availability]",shareUrlInput:"[data-share-url]",stockCountdown:".prod__stock-countdown",productWrapper:".m-main-product--wrapper"},this.productWrapper=this.closest(this.selectors.productWrapper),this.productForm=this.productWrapper.querySelector("product-form"),this.domNodes=queryDomNodes(this.selectors,this.productWrapper);const themeProducts=window._themeProducts||{},{productId,sectionId,productUrl,hasOnlyDefaultVariant,showFeaturedMedia}=this.dataset;this.productId=productId,this.sectionId=sectionId,this.productUrl=productUrl,this.hasOnlyDefaultVariant=hasOnlyDefaultVariant==="true",this.showFeaturedMedia=showFeaturedMedia==="true",this.variantData=this.getVariantData(),this.productData=Object.assign(this.getProductJson(),themeProducts[productId]),this.handleQueryString(),this.handleVariantGroupImages(),this.selectInitialVariant(),this.setupEventListeners(),this.initOptionSwatches()}handleQueryString(){const hasQueryString=window.location.search.includes("?variant=");this.selectedVariantDefault=this.dataset.disableSelectedVariantDefault==="true"&&this.productData&&this.productData.variants.length>1&&!hasQueryString,this.selectedVariantDefault&&this.disableSelectedVariantDefault()}handleVariantGroupImages(){this.enableVariantGroupImages=this.dataset.enableVariantGroupImages==="true",this.enableVariantGroupImages&&(this.variantGroupImages=this.getVariantGroupImageData())}selectInitialVariant(){this.selectedVariant=this.productWrapper.querySelector(this.selectors.variantIdInput);const selectedVariantId=Number(this.selectedVariant.value);this.currentVariant=this.productData.variants.find(variant=>variant.id===selectedVariantId),this.productData.current_variant_id=this.currentVariant&&this.currentVariant.id,this.productData.initialVariant=this.currentVariant,this.currentVariant&&(this.getDataImageVariant(this.currentVariant.id),this.hideSoldOutAndUnavailableOptions(),this.updateButton(!this.currentVariant.available))}setupEventListeners(){this.hasSetupMediaData=!1;const mediaGalleryHandler=()=>this.getMediaGallery();mediaGalleryHandler(),document.addEventListener("matchMobile",mediaGalleryHandler),document.addEventListener("unmatchMobile",mediaGalleryHandler),this.addEventListener("change",this.onVariantChange)}async getMediaGallery(){await this.waitForMediaGallery(),this.setupMediaGallery()}waitForMediaGallery(){return new Promise(resolve=>{let isInitialized=!1;const checkMediaGallery=()=>{this.mediaGallery=this.productWrapper.querySelector("media-gallery"),this.mediaGalleryMobile=this.productWrapper.querySelector("media-gallery-mobile"),this.mediaGallery&&this.mediaGallery.view==="featured-product"?this.mediaGallery&&this.mediaGallery.mediaMode?(isInitialized=!0,resolve()):setTimeout(checkMediaGallery,100):this.mediaGallery&&this.mediaGalleryMobile&&this.mediaGallery.mediaMode&&this.mediaGalleryMobile.mediaMode?(isInitialized=!0,resolve()):setTimeout(checkMediaGallery,100)};checkMediaGallery()})}setupMediaGallery(){const isMobile=MinimogTheme.config.mqlMobile,effectiveMediaGallery=isMobile?this.mediaGalleryMobile||this.mediaGallery:this.mediaGallery;this.media=effectiveMediaGallery,this.hasSetupMediaData||(isMobile||effectiveMediaGallery.mediaMode==="slider"?(this.slides=effectiveMediaGallery.slider&&effectiveMediaGallery.slider.slides,this.slidesNav=effectiveMediaGallery.navSlider&&effectiveMediaGallery.navSlider.slides):this.mediaItems=effectiveMediaGallery.querySelectorAll(".m-product-media--item"),this.layout=isMobile?void 0:effectiveMediaGallery.layout),(!this.showFeaturedMedia||this.enableVariantGroupImages&&this.variantGroupImages.enable)&&this.updateMedia(),this.hasSetupMediaData=!0}disableSelectedVariantDefault(){this.querySelectorAll('input[type="radio"]').forEach(radioOption=>{radioOption.checked=!1}
1),this.querySelectorAll("[data-picker-field='radio']").forEach(radio=>{radio.setAttribute("data-selected-value","")}),this.querySelectorAll("[data-picker-field='select']").forEach(pickerSelect=>{const selectElm=pickerSelect.querySelector("select");selectElm&&(selectElm.value=""),pickerSelect.setAttribute("data-selected-value","")}),this.querySelectorAll(".option-label--selected").forEach(label=>{label.textContent=""});const variantIdEl=this.productForm&&this.productForm.querySelector("[name='id']");variantIdEl&&!this.hasOnlyDefaultVariant&&(variantIdEl.value="")}setProductAsUnavailable(){this.updateButton(!0),this.setUnavailable()}updateProductDetailsForVariant(){this.getDataImageVariant(this.currentVariant.id),this.updateMedia(),this.updateBrowserHistory(),this.updateVariantInput(),this.updateProductMeta(),this.updatePrice();const isSoldOut=!this.currentVariant.available,buttonText=isSoldOut?window.MinimogStrings.soldOut:"";this.updateButton(isSoldOut,buttonText),this.hideSoldOutAndUnavailableOptions()}onVariantChange(){if(this.getSelectedOptions(),this.get
1SelectedVariant(),this.updatePickupAvailability(),this.removeErrorMessage(),!this.currentVariant){this.setProductAsUnavailable();return}this.updateProductDetailsForVariant(),window.MinimogEvents.emit(`${this.productId}__VARIANT_CHANGE`,this.currentVariant,this)}getDataImageVariant(variantId){if(!this.variantGroupImages||!this.variantGroupImages.enable)return;const currentVariantMedia=this.variantGroupImages.mapping.find(variant=>Number(variant.id)===variantId);currentVariantMedia&&(this.currentVariantMedia=currentVariantMedia.media)}getProductJson(){try{const productDataElement=this.productWrapper.querySelector("#productData[type='application/json']");if(!productDataElement)throw new Error("Fallback product data element not found.");return JSON.parse(productDataElement.textContent)}catch(error){console.error("Error loading fallback product data:",error)}}getSelectedVariant(){let variant,options=[...this.options];for(let attempt=0;attempt<this.options.length&&(variant=getVariantFromOptionArray(this.productData,options),!(variant||options.length===0));attempt++)options.pop();variant&&(this.options=[...variant.options],this.updateSelectedOptions()),this.currentVariant=variant}getSelectedOptions(){const pickerFields=Array.from(this.querySelectorAll("[data-picker-field]"));this.options=pickerFields.map(field=>{if(field.dataset.pickerField==="radio"){const checkedRadio=field.querySelector("input:checked");return checkedRadio?checkedRadio.value:void 0}if(field.querySelector("select"))return field.querySelector("select").value}).filter(option=>option!==void 0)}updateSelectedOptions(){this.domNodes.pickerFields.forEach((field,index)=>{if(field.dataset.selectedValue!==this.options[index]){const selectedOption=field.querySelector(`input[value="${this.options[index].replace(/["\\]/g,"\\$&")}"]`);selectedOption&&(selectedOption.checked=!0,field.updateSelectedValue())}})}removeLoading(mediaElement){mediaElement&&(mediaElement.removeAttribute("data-media-loading"),mediaElement.firstElementChild.style.opacity=1)}handleImageZoom(mediaItems,mediaContext){const customData=mediaItems.map(item=>{const mediaType=item.dataset.mediaType;if(mediaType==="image"){const mediaData=item.querySelector(".m-product-media").dataset;return{src:mediaData.mediaSrc,width:parseInt(mediaData.mediaWidth),height:parseInt(mediaData.mediaHeight),alt:mediaData.mediaAlt,id:item.dataset.index}}else return{html:`<div class="pswp__${mediaType}">${item.innerHTML}</div>`,type:mediaType,id:item.dataset.index}});mediaContext&&mediaContext.lightbox&&(mediaContext.lightbox.destroy(),mediaContext.handlePhotoswipe(customData),mediaContext.initPhotoswipe())}updateMedia(){if(!this.currentVariant)return;let mainItems=[],navItems=[];const reorderItems=(referenceItems,items,isNav=!1,isSlider=!1)=>{let reorderedItems=[];return referenceItems.forEach((referenceItem,index)=>{const foundItem=items.find(item=>item.querySelector("[data-media-id]").dataset.mediaId===referenceItem);foundItem&&(foundItem.dataset.index=index,foundItem.dataset.swiperSlideIndex=index,reorderedItems.push(foundItem))}),items.forEach(item=>{const dataIdMedia=item.querySelector("[data-media-id]").dataset.mediaId;!referenceItems.includes(dataIdMedia)&&!reorderedItems.includes(item)&&(item.dataset.index=reorderedItems.length,item.dataset.swiperSlideIndex=reorderedItems.length,reorderedItems.push(item))}),isSlider&&reorderedItems.forEach(item=>{isNav?item.classList.toggle("swiper-slide-thumb-active",item.dataset.swiperSlideIndex==="0"):item.classList.toggle("swiper-slide-active",item.dataset.swiperSlideIndex==="0")}),reorderedItems},processItems=(currentItems,items)=>
1{currentItems.forEach(slide=>{const dataIdMedia=slide.querySelector("[data-media-id]").dataset.mediaId,isCurrentVariantMedia=this.currentVariantMedia&&this.currentVariantMedia.length>0&&this.currentVariantMedia.includes(dataIdMedia),isNotImageType=!slide.classList.contains("media-type-image");(isCurrentVariantMedia||isNotImageType||!this.currentVariantMedia||this.currentVariantMedia.length===0)&&items.push(slide)})};if(this.variantGroupImages&&this.variantGroupImages.enable)if(this.media.mediaMode==="slider"&&this.slides){processItems(this.slides,mainItems);const reorderedMainItems=reorderItems(this.currentVariantMedia,mainItems,!1,!0);if(this.media.slider.removeAllSlides(),this.media.slider.appendSlide(reorderedMainItems),this.media.slider.slideToLoop(this.layout==="layout-7"?1:0),this.media.handleSlideChange(),this.slidesNav){processItems(this.slidesNav,navItems);const reorderedNavItems=reorderItems(this.currentVariantMedia,navItems,!0,!0);this.media.navSlider&&this.media.navSlider.removeAllSlides(),this.media.navSlider&&this.media.navSlider.appendSlide(reorderedNavItems),this.media.navSlider&&this.media.navSlider.slideToLoop(0)}}else{const mediaWrapper=this.media.querySelector(".m-product-media--list");if(!mediaWrapper)return;processItems(this.mediaItems,mainItems);const reorderedItems=reorderItems(this.currentVariantMedia,mainItems);mediaWrapper.innerHTML="",reorderedItems.forEach((item,index)=>{this.layout==="layout-2"&&(item.classList.remove("m-col-span-2"),index%3===0&&item.classList.add("m-col-span-2")),mediaWrapper.append(item)})}else{let mediaSize=0;this.media&&"mediaSize"in this.media.dataset&&(mediaSize=parseInt(this.media.dataset.mediaSize,10)),mediaSize>0&&this.media.setActiveMedia(this.currentVariant)}this.removeLoading(this.media),this.handleImageZoom(mainItems,this.media)}updateBrowserHistory(){!this.currentVariant||this.dataset.updateUrl==="false"||window.history.replaceState({},"",`${this.productUrl}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.sectionId}, #product-form-installment`).forEach(productForm=>{const variantIdInput=productForm.querySelector(this.selectors.variantIdInput);variantIdInput&&(variantIdInput.value=this.currentVariant.id,variantIdInput.dispatchEvent(new Event("input",{bubbles:!0})))})}updatePickupAvailability(){const pickUpAvailability=this.productWrapper.querySelector("pickup-availability");if(!pickUpAvailability||!this.currentVariant||!this.currentVariant.available){pickUpAvailability&&(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML="");return}pickUpAvailability.fetchAvailability(this.currentVariant.id)}removeErrorMessage(){const section=this.closest("section");if(!section)return;const productForm=section.querySelector("product-form");productForm&&productForm.handleErrorMessage()}updatePrice(){const classes={onSale:"m-price--on-sale",soldOut:"m-price--sold-out"},selectors={priceWrapper:".m-price",salePrice:".m-price-item--sale",compareAtPrice:[".m-price-item--regular"],unitPrice:".m-price__unit",unitPriceWrapper:".m-price__unit-wrapper",saleBadge:".m-price__badge-sale",saleAmount:"[data-saved-price]"},mainProductPrices=this.productWrapper.querySelector(".main-product__block-price");if(!mainProductPrices)return;const moneyFormat=window.MinimogSettings.money_format,{priceWrapper,salePrice,unitPrice,compareAtPrice,saleBadge,saleAmount,unitPriceWrapper}=queryDomNodes(selectors,mainProductPrices),{compare_at_price,price,unit_price_measurement,available}=this.currentVariant,saleBadgeType=priceWrapper.dataset.saleBadgeType,onSale=compare_at_price&&compare_at_price>price,soldOut=!available;if(priceWrapper.classList.toggle(classes.onSale,onSale),priceWrapper.classList.toggle(classes.soldOut,soldOut),priceWrapper.classList.remove("m:visibility-hidden"),salePrice&&(salePrice.innerHTML=formatMoney(price,moneyFormat)),compareAtPrice&&compareAtPrice.forEach(item=>{const displayPrice=onSale?compare_at_price:price;item.innerHTML=formatMoney(displayPrice,moneyFormat)}),saleBadge&&onSale&&saleBadgeType!=="text"){let value;saleBadgeType==="fixed_amount"?value=formatMoney(compare_at_price-price,moneyFormat):value=Math.round((compare_at_price-price)*100/compare_at_price)+"%",saleAmount&&(saleAmount.innerHTML=value)}if(unit_price_measurement&&unitPrice){unitPriceWrapper.classList.remove("m:hidden");const unitPriceContent=`<span>${formatMoney(this.currentVariant.unit_price,moneyFormat)}</span>/<span data-unit-price-base-unit>${this._getBaseUnit()}</span>`;unitPrice.innerHTML=unitPriceContent}else unitPriceWrapper.classList.add("m:hidden")}_getBaseUnit=()=>{const{reference_value,reference_unit}=this.currentVariant.unit_price_measurement;return reference_value===1?reference_unit:`${reference_value}${reference_unit}`};updateButton(disable=!0,text){const productForms=document.querySelectorAll(`.product-form-${this.sectionId}`);
1productForms.length&&productForms.forEach(productForm=>{const addButton=productForm.querySelector('[name="add"]'),dynamicCheckout=productForm.querySelector(".m-product-dynamic-checkout"),addButtonText=addButton.querySelector(".m-add-to-cart--text");if(!addButton)return;disable?(addButton.setAttribute("disabled","disabled"),addButton.classList.add("disabled"),dynamicCheckout&&dynamicCheckout.classList.add("disabled"),text&&(addButtonText.textContent=text)):(addButton.removeAttribute("disabled"),addButton.classList.remove("disabled"),dynamicCheckout&&dynamicCheckout.classList.remove("disabled"),addButtonText.textContent=window.MinimogStrings.addToCart)})}updateProductMeta(){const{available,sku}=this.currentVariant,{inStock,outOfStock}=window.MinimogStrings,productAvailability=this.productWrapper.querySelector(this.selectors.productAvailability),productSku=this.productWrapper.querySelector(this.selectors.productSku),updateProductSku=()=>{productSku&&(productSku.textContent=sku||"N/A")},updateProductAvailability=()=>{if(productAvailability){const method=available?"remove":"add";productAvailability.textContent=available?inStock:outOfStock,productAvailability.classList[method]("m-product-availability--outofstock")}};updateProductSku(),updateProductAvailability()}setUnavailable(){const button=document.getElementById(`product-form-${this.sectionId}`),addButton=button?button.querySelector('[name="add"]'):null,addButtonText=addButton?addButton.querySelector(".m-add-to-cart--text"):null,priceWrapper=this.productWrapper.querySelector(".m-price"),updateButtonState=()=>{addButtonText&&(addButtonText.textContent=window.MinimogStrings.unavailable)},hidePrice=()=>{priceWrapper&&priceWrapper.classList.add("m:visibility-hidden")};addButton&&(updateButtonState(),hidePrice())}hideSoldOutAndUnavailableOptions(){const classes={soldOut:"m-product-option--node__soldout",unavailable:"m-product-option--node__unavailable"},{optionNodes}=this.domNodes,{variants,options}=this.productData;optionNodes.forEach(optNode=>{const{optionPosition,value}=optNode.dataset,optPos=Number(optionPosition),isSelectOption=optNode.tagName==="OPTION";let matchVariants=[];if(optPos===options.length){const optionsArray=[...this.currentVariant.options];optionsArray[optPos-1]=value,matchVariants.push(getVariantFromOptionArray(this.productData,optionsArray))}else matchVariants=variants.filter(v=>v.options[optPos-1]===value&&v.options[optPos-2]===this.currentVariant[`option${optPos-1}`]);if(matchVariants=matchVariants.filter(Boolean),matchVariants.length){optNode.classList.remove(classes.unavailable),isSelectOption&&optNode.removeAttribute("disabled");const method=matchVariants.every(v=>!v.available)?"add":"remove";optNode.classList[method](classes.soldOut)}else optNode.classList.add(classes.unavailable),isSelectOption&&optNode.setAttribute("disabled","true")})}getVariantData(){if(!this.variantData){const productVariants=this.querySelector('#productVariants[type="application/json"]');if(productVariants)try{this.variantData=JSON.parse(productVariants.textContent)}catch(error){console.error("Error parsing variant data:",error)}}return this.variantData||{}}getVariantGroupImageData(){if(!this.variantGroupImages){const variantGroupElement=this.querySelector('#variantGroup[type="application/json"]');if(variantGroupElement)try{this.variantGroupImages=JSON.parse(variantGroupElement.textContent)}catch(error){console.error("Error parsing variant group images data:",error)}}return this.variantGroupImages||{}}initOptionSwatches(){const{_colorSwatches=[],_imageSwatches=[]}=window.MinimogSettings;this.domNodes.optionNodes&&this.domNodes.optionNodes.forEach(optNode=>{const{optionType,optionPosition,value:optionValue}=optNode.dataset,optionValueLowerCase=optionValue&&optionValue.toLowerCase(),variantToShowSwatchImage=this.variantData.find(v=>v[`option${optionPosition}`]===optionValue),variantImage=variantToShowSwatchImage&&variantToShowSwatchImage.featured_image&&variantToShowSwatchImage.featured_image.src?getSizedImageUrl(variantToShowSwatchImage.featured_image.src,"100x"):null,customImage=_imageSwatches.find(i=>i.key===optionValueLowerCase),customColor=_colorSwatches.find(c=>c.key===optionValueLowerCase);if(variantImage||customImage&&customImage.value){const labelElement2=optNode.querySelector("label");labelElement2&&labelElement2.classList.add("has-bg-img")}const labelElement=optNode.querySelector("label");if(labelElement)switch(labelElement.classList.remove("option-loading"),optionType){case"default":case"image":labelElement.style.backgroundImage=`url(${customImage&&customImage.value||variantImage||""})`;break;case"color":labelElement.style.backgroundColor=customColor&&customColor.value||optionValueLowerCase,customImage&&customImage.value&&(labelElement.style.backgroundImage=`url(${customImage.value})`);break;default:break}})}}customElements.define("variant-picker",VariantPicker)}if(!customElements.get("variant-button")){class VariantButton extends HTMLElement{constructor(){super(),this.selectedSpan=this.querySelector(".option-label--selected"),this.addEventListener("change",this.updateSelectedValue)}updateSelectedValue(){this.value=Array.from(this.querySelectorAll("input")).find(radio=>radio.checked).value,this.setAttribute("data-selected-value",this.value),this.selectedSpan&&(this.selectedSpan.textContent=this.value,this.selectedSpan.classList.remove("m:text-color-error"))}}if(customElements.define("variant-button",VariantButton),!customElements.get("variant-select")){class VariantSelect extends VariantButton{constructor(){super()}updateSelectedValue(){this.value=this.querySelector("select").value,this.setAttribute("data-selected-value",this.value),this.selectedSpan&&(this.selectedSpan.textContent=this.value,this.selectedSpan.classList.remove("m:text-color-error"))}}customElements.define("variant-select",VariantSelect)}
1if(!customElements.get("variant-image")){class VariantImage extends VariantButton{constructor(){super()}}customElements.define("variant-image",VariantImage)}if(!customElements.get("variant-color")){class VariantColor extends VariantButton{constructor(){super()}}customElements.define("variant-color",VariantColor)}}document.addEventListener("DOMContentLoaded",function(){let variantSelectors=document.querySelectorAll("[name='id'], .m-product-option--node input"),shippingMessage=document.getElementById("shipping-message");function updateShippingMessage(selectedVariant){if(!shippingMessage)return;let variantTitle=selectedVariant?.textContent?.trim()||selectedVariant?.value?.trim();variantTitle.includes("Jet Black Color")?shippingMessage.innerHTML='<span style="background-color:red; padding:3px 10px; border-radius:2px; color: white; font-weight: bold;margin-right:5px;"">Note</span> Jet Black Color ships in 7 days!':variantTitle.includes("Ombre Custom Color")?shippingMessage.innerHTML='<span style="background-color:red; padding:3px 10px; border-radius:2px; color: white; font-weight: bold;margin-right:5px;">Note</span> Ombre Custom Color ships in 7 days!':shippingMessage.innerHTML=""}variantSelectors.forEach(function(selector){selector.addEventListener("change",function(){updateShippingMessage(this.options?this.options[this.selectedIndex]:this)})}),document.querySelectorAll(".m-product-option--node input").forEach(radio=>{if(radio.addEventListener("change",function(){let label=this.closest(".m-product-option--node").querySelector("label");updateShippingMessage(label)}),radio.checked){let label=radio.closest(".m-product-option--node").querySelector("label");updateShippingMessage(label)}})}); 2//# sourceMappingURL=/cdn/shop/t/49/assets/variant-picker.js.map?v=36248201503695823471740422230
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.