1class VariantSelects extends HTMLElement{constructor(){super(),this.addEventListener("change",event=>{this.setupData(),this.onVariantChange(event)})}setupData(){const themeProducts=window._themeProducts||{};this.productData=themeProducts[this.dataset.productId];const pickerFields=Array.from(this.querySelectorAll("fieldset"));this.options=pickerFields.map(field=>{const type=field.dataset.pickerField;return Array.from(field.querySelectorAll("input")).find(radio=>radio.checked)?.value}),this.getVariantFromOptionArray(this.productData,this.options)}onVariantChange(event){this.updateOptions(),this.updateMasterId(),this.updatePickupAvailability(),this.updateOptionValue(event),this.currentVariant?(this.updateVariantOptions(),this.updateMedia(),this.updateURL(),this.updateVariantInput(),this.renderProductInfo(),this.currentVariant.available&&document.querySelector(".product-summary .product-form-buttons")?.classList.remove("disabled-btn")):(this.toggleAddButton(!1,"",!0),this.setUnavailable())}updateVariantOptions(){const optionNodes=document.querySelectorAll("[data-single-option]"),variants=this.variantData;optionNodes.forEach(optNode=>{const{optionPosition,value}=optNode.dataset,optPos=Number(optionPosition),maxOptions=3;let matchVariants=[];if(optPos===maxOptions){const variant=this.currentVariant,optionsArray=Array.from(variant.options);optionsArray[maxOptions-1]=value,matchVariants.push(this.getVariantFromOptionArray(this.productData,optionsArray))}else matchVariants=variants.filter(v=>v.options[optPos-1]===value&&v.options[optPos-2]===this.currentVariant[`option${optPos-1}`]);matchVariants=matchVariants.filter(Boolean);const unavailableOptClass="unavailable-opt";if(matchVariants.length){optNode.classList.remove(unavailableOptClass);const method=matchVariants.every(v=>v.available===!1)?"add":"remove";optNode.classList[method]("soldout-opt")}else optNode.classList.add(unavailableOptClass)})}getVariantFromOptionArray(product,options){var result=product.variants.filter(function(variant){return options.every(function(option,index){return variant.options[index]===option})});return result[0]||null}updateOptions(){this.options=Array.from(this.querySelectorAll("select"),select=>select.value)}updateOptionValue(event){event.target.closest(".product-filter").querySelector("label.form-label span").innerHTML=event.target.value}updateMasterId(){this.currentVariant=this.getVariantData().find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateMedia(fromRenderProductInfo){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const newMedia=document.querySelector(`[data-media-id="${this.dataset.section}-${this.currentVariant.featured_media.id}-main"]`);let select_element=document.getElementById("product-swipe");if(!newMedia)return;const gallery=document.getElementById(`product-gallery-${this.dataset.section}`)||!1;if(gallery&&(gallery.dataset.groupImage||!1)==="true"&&fromRenderProductInfo!=!0)return;const isVariantImg=newMedia.getAttribute("variant_img_added");if($(select_element).hasClass("grid-style")){var viewportWidth=$(window).width();if(viewportWidth>991)$("html, body").animate({scrollTop:$(newMedia).offset().top-80});else{const parent=newMedia.parentElement;var mediaIndex=newMedia.getAttribute("data-index"),mainSwiper=document.querySelector(".mobille-media-slider")?.swiper||!1;mainSwiper&&mainSwiper.slideTo(mediaIndex)}}else{const parent=newMedia.parentElement,mediaIndex2=newMedia.getAttribute("data-index"),thumbSwiper=document.querySelector(".product-image-thumb")?.swiper||!1;thumbSwiper&&thumbSwiper.slideToLoop(mediaIndex2-1);const mainSwiper2=document.querySelector(".product-image-main")?.swiper||!1;mainSwiper2&&mainSwiper2.slideTo(mediaIndex2-1)}}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=""))}renderProductInfo(){var _this=this;fetch(`${this.dataset.url}?variant=${this.currentVariant.id}§ion_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html"),updateSections=["product-gallery","price","sku","stock","pre-order","stock-label","cart-btn","badge"],sectionId=this.dataset.section;let sale=this.currentVariant.compare_at_price/100,curt_price=this.currentVariant.price/100,dis_per=Math.round((sale-curt_price)*100/sale);setTimeout(function(){$(".sav-per").text(dis_per)},100),updateSections.forEach(function(updateSection){const sectionSelector=`${updateSection}-${sectionId}`,sourceElem=html.getElementById(sectionSelector),destElem=document.getElementById(sectionSelector);if(sourceElem&&destElem)if(updateSection=="product-gallery"){if((destElem.dataset.groupImage||!1)==="true"){destElem.innerHTML=sourceElem.innerHTML;const newMedia=destElem.querySelector(`[data-media-id="${_this.dataset.section}-${_this.currentVariant.featured_media.id}-main"]`),isVariantImg=JSON.parse(newMedia.getAttribute("variant_img_added")),slideCount=destElem.querySelectorAll(".product-style-2-main-img .swiper-slide").length;let select_element=document.getElementById("product-swipe");if($(select_element).hasClass("grid-style"))if($(window).width()>991)isVariantImg?$("html, body").animate({scrollTop:0},0):setTimeout(function(){$("html, body").animate({scrollTop:$(newMedia).offset().top-parseInt(document.body.style.getPropertyValue("--top-space").replace("px",""))+15},500)},250);else{$(".product-media-grid-wrapper").addClass("swiper"),$(".product-media-grid-wrapper .product-gallery-slider").addClass("swiper-wrapper"),$(".product-media-grid-wrapper .product-gallery-slider").removeClass("row"),$(".product-media-grid-wrapper .product-gallery-slider .gallary-item").addClass("swiper-slide"),$(".product-media-grid-wrapper .product-gallery-slider .gallary-item").removeClass("col");const myswiper=new Swiper(".product-media-grid-wrapper",{slidesPerView:1,loop:!0,autoplay:{delay:5e3,disableOnInteraction:!1},pagination:{el:".product-swiper-pagination",clickable:!0},keyboard:{enabled:!0,onlyInViewport:!0},speed:500}),parent=newMedia.parentElement;var mediaIndex=newMedia.getAttribute("data-index"),mainSwiper=document.querySelector(".mobille-media-slider")?.swiper||!1;mainSwiper&&mainSwiper.slideTo(mediaIndex)}else{const mainSlider=destElem.querySelector(".product-image-main, .product-style-2-main-img");mainSlider&&window.SlideshowObjs.forEach(function(slideshowObj){if(slideshowObj.classList.contains("product-image-main")||slideshowObj.classList.contains("product-style-2-main-img")){const sliderOptions=slideshowObj.sliderOptions;setProductThumbSliderHeight(),slideCount!=null&&slideCount===1?sliderOptions.loop=!1:sliderOptions.loop=!0;const swiperObj=new Swiper(mainSlider,sliderOptions);if(isVariantImg)_this.updateMedia(!1);else{_this.updateMedia(!0);const SectionId=_this.dataset.section,featuredMediaID=_this.currentVariant.featured_media.id,gallery=document.getElementById(`product-gallery-${SectionId}`)||!1,unGroupMedia=document.querySelector(`[data-media-id="${SectionId}-${featuredMediaID}-main"]`),parent=unGroupMedia.parentElement,mediaIndex2=unGroupMedia.getAttribute("data-index"),thumbSwiper=document.querySelector(".product-image-thumb")?.swiper||!1;if(slideshowObj.classList.contains("product-image-main")){thumbSwiper&&thumbSwiper.slideToLoop(mediaIndex2);const mainSwiper2=document.querySelector(".product-image-main")?.swiper||!1;mainSwiper2&&mainSwiper2.slideTo(mediaIndex2)}else{thumbSwiper&&thumbSwiper.slideToLoop(mediaIndex2-1);const mainSwiper2=document.querySelector(".product-image-main")?.swiper||!1;mainSwiper2&&mainSwiper2.slideTo(mediaIndex2-1)}}window.ZOOM&&$(".product-image-main .product-media.media-image").length&&$(".product-image-main .product-media.media-image").each(function(){$(this).zoom({url:$(this).find("img").attr("data-master-image")})})}})}}}else destElem.innerHTML=sourceElem.innerHTML}),document.getElementById(`price-${this.dataset.section}`)?.classList.remove("visibility-hidden"),this.toggleAddButton(!this.currentVariant.available,window.variantStrings.soldOut);const stickyVariantDropdown=document.querySelector(".product-variants-dd")||!1;stickyVariantDropdown&&(stickyVariantDropdown.value=this.currentVariant.id,window.updateStickyAddtocartInfo(this.currentVariant.id))})}toggleAddButton(disable=!0,text,modifyClass=!0){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');if(!addButton)return;if(disable==!0)if(window.isBackInStock==!0&&this.currentVariant){addButton.classList.add("notify-me"),addButton.removeAttribute("disabled"),text&&(addButton.innerHTML="Notify me when available"),$(".shopify-payment-button").hide();const productImgSrc=this.currentVariant.featured_image.src,productVariantsTitle=this.currentVariant.title,productPrice
1=Shopify.formatMoney(this.currentVariant.price);$(".notify-me").on("click",function(){$(".product-img-item").attr("src",productImgSrc),$(".variant-title").text(productVariantsTitle),$(".variant-price").text(productPrice),$("[name='contact[variant]']").val(productVariantsTitle),$.magnificPopup.open({items:{src:$(".back-in-stock-popup").html(),type:"inline"}})})}else $(".notify-me").off("click"),addButton.classList.remove("notify-me"),addButton.setAttribute("disabled",!0),document.querySelector(".product-summary .product-form-buttons")?.classList.add("disabled-btn"),text&&(addButton.innerHTML=text);else $(".product-form__error-message-wrapper").addClass("d-none"),$(".notify-me").off("click"),addButton.classList.remove("notify-me"),$(".shopify-payment-button").show(),addButton.removeAttribute("disabled");const slected_variant=document.querySelectorAll(".product-filter:not(:first-child) [data-single-option]:checked"),Allvariant=document.querySelectorAll(".product-filter:not(:first-child) [data-single-option]");slected_variant.forEach(function(selectItem,selectItemIndex){if(selectItem.classList.contains("soldout-opt")==!0&&window.isBackInStock==!1){var productOnloadAvailableVariant="";Allvariant.forEach(function(allItem,allItemIndex){!allItem.classList.contains("unavailable-opt")&&!allItem.classList.contains("soldout-opt")&&(productOnloadAvailableVariant=allItem)}),$(productOnloadAvailableVariant).trigger("click")}})}setUnavailable(){const addButton=document.getElementById(`product-form-${this.dataset.section}`)?.querySelector('[name="add"]');if(!addButton)return;addButton.innerHTML=window.variantStrings.unavailable,document.getElementById(`price-${this.dataset.section}`)?.classList.add("visibility-hidden"),document.querySelector(".product-summary .product-form-buttons")?.classList.add("disabled-btn");const optionNodes=document.querySelectorAll(".product-filter:not(:first-child) [data-single-option]:checked"),Allvariant=document.querySelectorAll(".product-filter:not(:first-child) [data-single-option]");optionNodes.forEach(function(optionItem,optionItemIndex){optionItem.classList.add("unavailable-opt")});var productOnChangeAvailableVariant="";Allvariant.forEach(function(optionItem,optionItemIndex){optionItem.classList.contains("unavailable-opt")||(productOnChangeAvailableVariant=optionItem)}),$(productOnChangeAvailableVariant).trigger("click")}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"));var options=[];fieldsets.forEach(function(fieldset){fieldset.classList.contains("dropdown")?options.push(fieldset.querySelector("select").value):options.push(fieldset.querySelector("input:checked").value)}),this.options=options}}customElements.define("variant-radios",VariantRadios); 2//# sourceMappingURL=/cdn/shop/t/4/assets/variants.js.map?v=128598503066358012821690911947
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.