PageSourceSearch

https://moscot.com/cdn/shop/t/1679/assets/the-lab.js?v=50377769280673275141789993537

js moscot.com collected 2026-09-25 02:36:02 UTC 12,892 bytes, 2 lines download raw bytes

1window.initLemtoshLab=function(){if(!document.querySelector(".the_lab_sections"))return;function setEqualHeight(){window.innerWidth<=999?window.setGridHeight&&(window.setGridHeight(".lemtoshlab_sections .info_heading"),window.setGridHeight(".lemtoshlab_sections .info_content")):document.querySelectorAll(".lemtoshlab_sections .info_content").forEach(h=>{h.style.minHeight="auto"})}setTimeout(setEqualHeight,1e3),window.removeEventListener("resize",setEqualHeight),window.addEventListener("resize",setEqualHeight);const closeButton=document.querySelector(".js-lab-close-button");closeButton&&closeButton.addEventListener("click",function(){document.referrer?window.history.back():window.location.href="/"});function updateTabIndex(){document.querySelectorAll("section").forEach(section=>{const isActive=section.classList.contains("active");section.querySelectorAll("a, button, input, textarea, select, [tabindex]").forEach(element=>{element.setAttribute("tabindex",isActive?"0":"-1")})})}updateTabIndex(),document.querySelectorAll(".js-action-button").forEach(button=>{button.addEventListener("click",function(){const targetSection=document.querySelector(`.${this.getAttribute("data-section")}`);targetSection&&targetSection.classList.add("active");const currentSection=this.closest("section");if(currentSection&&currentSection.classList.remove("active"),updateTabIndex(),this.dataset.section=="lemtoshLab_frame"){const breadcrumb=document.querySelector("div.breadcrumb");breadcrumb&&breadcrumb.classList.remove("hidden")}else if(this.dataset.section=="lemtoshLab_banner"){const breadcrumb=document.querySelector("div.breadcrumb");breadcrumb&&breadcrumb.classList.add("hidden")}this.dataset.moveTo=="tintSection"&&tintSection.initSliders()}),button.classList.contains("arrow-animate")&&button.addEventListener("animationend",()=>{button.classList.remove("animate")})});const tintProductsJsonEl=document.getElementById("tint_products_json");if(!tintProductsJsonEl)return;let tint_products_json=JSON.parse(tintProductsJsonEl.innerHTML),activeProduct=null,frameSection={init:function(){this.frameImage=document.querySelector("#slider-frames"),this.frameVariant=document.querySelector("#variants-frames"),this.frameValue=document.querySelectorAll("frame-value"),this.buttonNext=document.querySelector(".lemtoshLab_frame .button--next"),this.variants=document.querySelectorAll("[data-product]"),this.frameImage&&(this.slider=new KeenSlider(this.frameImage,{loop:!0,breakpoints:{"(max-width: 999px)":{slides:{perView:1,spacing:0},defaultAnimation:{duration:500},detailsChanged:s=>{s.slides.forEach((element,idx)=>{element.style.opacity=s.track.details.slides[idx].portion,element.querySelector("img").style.transform="none"})},renderMode:"custom"},"(min-width: 1000px)":{slides:{origin:"center",perView:1.8,spacing:0},defaultAnimation:{duration:1e3},detailsChanged:s=>{s.slides.forEach((element,idx)=>{element.querySelector("img").style.transform=`scale(max(${s.track.details.slides[idx].portion},0.7))`,element.style.opacity=1})}}},created:slider=>{this._triggerButtons(slider);const activeBtn=this.frameVariant.querySelector(".variant-button.active");activeBtn&&activeBtn.click()},slideChanged:slider=>{this._changeButtons(slider),this.buttonNext&&this.buttonNext.classList.add("animate")}}))},_triggerButtons:function(slider){this.frameVariant.querySelectorAll("[data-slide-to]").forEach(button=>{button.addEventListener("click",()=>{const slideTo=parseInt(button.getAttribute("data-slide-to"));slider.moveToIdx(slideTo),this._optionVariants(button.dataset.productId,button.dataset.frameValue)})}
1),slider.slides.forEach(slide=>{slide.addEventListener("click",()=>{slider.moveToIdx(parseInt(slide.dataset.slide))})})},_changeButtons:function(slider){const buttons=this.frameVariant.querySelectorAll("[data-slide-to]"),activeSlideIndex=slider.track.details.rel;buttons.forEach(button=>{button.classList.remove("active"),button.setAttribute("aria-checked","false")}),buttons[activeSlideIndex]&&(buttons[activeSlideIndex].classList.add("active"),buttons[activeSlideIndex].setAttribute("aria-checked","true"),this._optionVariants(buttons[activeSlideIndex].dataset.productId,buttons[activeSlideIndex].dataset.frameValue))},_optionVariants:function(productID,productFrame){this.variants.forEach(variant=>{variant.dataset.product==productID?variant.classList.add("active"):variant.classList.remove("active")}),this.frameValue.forEach(name=>{name.innerText=productFrame}),sizeSection._resetButtons(),activeProduct=tint_products_json[productID]}},sizeSection={init:function(params){this.sizeImage=document.querySelector("#slider-sizes"),this.sizeVariant=document.querySelector("#variants-sizes"),this.buttonPrevious=document.querySelector(".lemtoshLab_sizes .button--previous"),this.buttonNext=document.querySelector(".lemtoshLab_sizes .button--next"),this.sizeValue=document.querySelectorAll("size-value"),this._triggerButtons()},variantButtons:function(){return this.sizeVariant?this.sizeVariant.querySelectorAll(".variant-button"):[]},_triggerButtons:function(){const buttons=this.variantButtons();buttons.forEach(button=>{button.addEventListener("click",()=>{buttons.forEach(b=>{b.classList.remove("active"),b.setAttribute("aria-checked","false")}),button.classList.add("active"),button.setAttribute("aria-checked","true"),this.buttonNext&&(this.buttonNext.disabled=!1,this.buttonNext.classList.add("animate")),this.sizeValue.forEach(name=>{name.innerText=button.dataset.sizeValue}),tintSection._setupcolors(button.dataset.size)})})},_resetButtons:function(){this.variantButtons().forEach(button=>{button.classList.remove("active")}),this.buttonNext&&(this.buttonNext.disabled=!0)}},tintSection={activeSlider:null,activeTintImageSlider:null,init:function(){if(this.tintImage=document.querySelector("#slider-tint"),this.tintVariant=document.querySelector("#variants-tints"),this.tintValue=document.querySelectorAll("tint-value"),this.ATCForm=document.querySelector("#bundle-add-to-cart-form"),this.variantPiceEle=document.querySelectorAll("price"),this.tintBackground=document.querySelector("#tint-background"),!this.tintImage||!this.tintVariant)return;this._triggerButtons();const submitBtn=this.ATCForm.querySelector('.button--submit[type="submit"]');submitBtn&&submitBtn.addEventListener("animationend",function(){this.classList.remove("animate")});const resizeTint=()=>{window.matchMedia("(min-width:1000px)").matches==!0?this.tintVariant&&this.tintImage&&(this.tintVariant.style.minHeight=`${this.tintImage.clientHeight}px`):this.tintVariant&&this.tintVariant.style.removeProperty("min-height")};resizeTint(),window.removeEventListener("resize",resizeTint),window.addEventListener("resize",resizeTint)},initSliders:function(){this.activeSlider&&this.activeSlider.destroy();let updateClasses=slider=>
1{slider.slides.forEach(slide=>{slide.classList.remove("next","next-one","previous","previous-one"),slide.setAttribute("aria-hidden","true"),slide.setAttribute("tabindex","-1"),slide.setAttribute("aria-checked","false")});let length=slider.slides.length,currentSlide=slider.track.details.rel,next=currentSlide+1>=length?0:currentSlide+1,nextOne=currentSlide+2>=length?currentSlide+2-length:currentSlide+2,previous=currentSlide-1<0?length-1:currentSlide-1,previousOne=currentSlide-2<0?length-2+currentSlide:currentSlide-2,nextElement=slider.slides[next],nextOneElement=slider.slides[nextOne],previousElement=slider.slides[previous],previousOneElement=slider.slides[previousOne],currentElement=slider.slides[currentSlide];if(nextElement.classList.add("next"),nextOneElement.classList.add("next-one"),previousElement.classList.add("previous"),previousOneElement.classList.add("previous-one"),nextElement.setAttribute("aria-hidden","false"),nextOneElement.setAttribute("aria-hidden","false"),previousElement.setAttribute("aria-hidden","false"),previousOneElement.setAttribute("aria-hidden","false"),currentElement.setAttribute("aria-hidden","false"),currentElement.setAttribute("aria-checked","true"),nextElement.setAttribute("tabindex","0"),nextOneElement.setAttribute("tabindex","0"),previousElement.setAttribute("tabindex","0"),previousOneElement.setAttribute("tabindex","0"),currentElement.setAttribute("tabindex","0"),document.body.classList.contains("user-is-tabbing")){let elements=[nextElement,nextOneElement,previousElement,previousOneElement],elementToFocus=elements.reduce((minElement,currentElement2)=>{let currentSlideTo=parseInt(currentElement2.getAttribute("data-slide-to"),10),minSlideTo=parseInt(minElement.getAttribute("data-slide-to"),10);return currentSlideTo<minSlideTo?currentElement2:minElement},elements[0]);elementToFocus&&setTimeout(()=>{elementToFocus.focus()},200)}};if(!activeProduct||!activeProduct.product||!this.tintVariant)return;const mobileslider=this.tintVariant.querySelector(`.slider-variant[data-product="${activeProduct.product.id}"]`);mobileslider&&(this.activeSlider=new KeenSlider(mobileslider,{loop:!0,slides:{perView:"auto",spacing:18,origin:"center"},breakpoints:{"(min-width: 1000px)":{drag:!1,slides:{perView:"auto",origin:"center",spacing:180}},"(min-width: 1280px)":{drag:!1,slides:{perView:"auto",origin:"center",spacing:220}},"(min-width: 1440px)":{drag:!1,slides:{perView:"auto",origin:"center",spacing:220}},"(min-width: 1600px)":{drag:!1,slides:{perView:"auto",origin:"center",spacing:200}}},selector:mobileslider.querySelectorAll(".variant-button:not([disabled])"),created:slider=>{slider.slides.forEach((slide,index)=>{slide.dataset.slideTo=index}),setTimeout(()=>{const firstSlide=slider.slides[0];firstSlide&&firstSlide.dispatchEvent(new Event("click"))},100),updateClasses(slider)},updated:slider=>{console.log("updated")},slideChanged:slider=>{updateClasses(slider)}}),document.querySelectorAll(".js-slider-nav-button").forEach(button=>{const newBtn=button.cloneNode(!0);button.parentNode.replaceChild(newBtn,button),newBtn.addEventListener("click",()=>{if(!this.activeSlider)return;let slides=this.activeSlider.slides,activeSlide=slides[this.activeSlider.track.details.rel],activeSlideIndex=slides.indexOf(activeSlide),nextSlide=slides[activeSlideIndex+1]||slides[0],previousSlide=slides[activeSlideIndex-1]||slides[slides.length-1];newBtn.classList.contains("keen-slider__next")?nextSlide.click():previousSlide.click()})}))},_triggerButtons:function(){const buttons=this.tintVariant.querySelectorAll(".variant-button");buttons.forEach(button=>{button.addEventListener("click",()=>{let tintColor=button.dataset.tintValue;buttons.forEach(b=>b.classList.remove("active")),button.classList.add("active"),this.tintValue.forEach(name=>{name.innerText=tintColor});const slideTo=parseInt(button.getAttribute("data-slide-to"));this.activeSlider&&this.activeSlider.moveToIdx(slideTo),this._selectTintImage(tintColor),this._setSelectedVaraint(tintColor)})})},_selectTintImage(color){if(!this.tintImage)return;
1let tintSliderElement=this.tintImage.querySelector(`[data-product="${activeProduct.product.id}"]`);tintSliderElement&&tintSliderElement.querySelectorAll(".tint-image").forEach(image=>image.classList.toggle("active",image.dataset.tintValue==color))},_setSelectedVaraint(color){if(!this.ATCForm)return;let selectedVariant=this.sizeVaraints.filter(variant=>variant[activeProduct.colorOptionKey]==color)[0];if(selectedVariant){const idInput=this.ATCForm.querySelector('[name="id"]');idInput&&(idInput.value=selectedVariant.id);const submitBtn=this.ATCForm.querySelector('.button--submit[type="submit"]');submitBtn&&submitBtn.classList.add("animate"),this.variantPiceEle.forEach(element=>{activeProduct.varaintPrices&&(element.innerHTML=activeProduct.varaintPrices[selectedVariant.id])}),this.tintBackground&&activeProduct.varaintGradients&&(this.tintBackground.style.background=activeProduct.varaintGradients[selectedVariant.id])}},_setupcolors:function(size){if(!activeProduct||!activeProduct.product)return;this.sizeVaraints=activeProduct.product.variants.filter(variant=>variant[activeProduct.sizeOptionKey]==size&&variant.available==!0);let availableColors=this.sizeVaraints.map(varaint=>varaint[activeProduct.colorOptionKey]);if(!this.tintVariant)return;
1let activeProductColors=this.tintVariant.querySelector(`[data-product="${activeProduct.product.id}"]`);if(activeProductColors&&activeProductColors.querySelectorAll(".variant-button").forEach(button=>{button.disabled=!availableColors.includes(button.dataset.tintValue)}),!this.tintImage)return;let activetintImage=this.tintImage.querySelector(`[data-product="${activeProduct.product.id}"]`);activetintImage&&activetintImage.querySelectorAll(".tint-image").forEach(image=>{image.classList.toggle("hidden",!availableColors.includes(image.dataset.tintValue))})}};frameSection.init(),sizeSection.init(),tintSection.init()},document.addEventListener("DOMContentLoaded",()=>{window.initLemtoshLab()});
2//# sourceMappingURL=/cdn/shop/t/1679/assets/the-lab.js.map?v=50377769280673275141789993537

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.