PageSourceSearch

https://chilewich.com/cdn/shop/t/334/assets/section-main-product.js?v=107680044372180815051790255855

js chilewich.com collected 2026-09-25 20:50:06 UTC 8,995 bytes, 2 lines download raw bytes

1import{addToCart,throttle}from"@nova/utils";document.addEventListener("DOMContentLoaded",()=>{const $formWrapper=document.querySelector(".js-product-qty-atc-wrapper"),$sizeGuideBtns=document.querySelectorAll(".js-size-guide-button")||[],$sizeGuideDrawer=document.querySelector(".js-size-guide-drawer")||[];if($formWrapper){let handleATCClass=function(atcBtn){const $qtyAtcContainer=document.querySelector(".js-product-qty-atc-wrapper"),$qtyAtcWrapper=document.querySelector(".product__quantity_and_buy_buttons"),fixedButtonClass="addtocart-fixed-mobile",currentScrollPosition=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,shouldShowFixedButton=(currentScrollPosition+120<$qtyAtcContainer.offsetTop||currentScrollPosition+120>$qtyAtcContainer.offsetTop+window.innerHeight)&&$qtyAtcWrapper;atcBtn.classList.toggle(fixedButtonClass,shouldShowFixedButton)},fixedAddCart=function(){const $addToCartBtn=document.querySelector("[data-scroll-fixed]");$addToCartBtn&&(handleATCClass($addToCartBtn),window.addEventListener("scroll",()=>throttle(handleATCClass($addToCartBtn),20)))},getActiveSwatch=function(){return document.querySelector('[name="color"]:checked')?.dataset.value||""},findMatchingSampleVariant=function(sampleProduct){if(sampleProduct===null)return null;if(sampleProduct.variants.length===1){const[defaultVariant]=sampleProduct.variants;return defaultVariant}const variantSelectors=document.querySelectorAll(".js-variant-picker .js-options-input:checked"),selectedOptions=Array.from(variantSelectors).map(selector=>selector.dataset.value),[firstOpt,secondOpt,thirdOpt]=selectedOptions;let matchedVariants=sampleProduct.variants.filter(variant=>variant.option1===firstOpt);const[matchedVariant]=matchedVariants;if(matchedVariants.length===1)return matchedVariant;matchedVariants=matchedVariants.filter(variant=>variant.option2===secondOpt);const[matchedVariant2]=matchedVariants;if(matchedVariants.length===1)return matchedVariant2;if(matchedVariants.length===0)return matchedVariant;matchedVariants=matchedVariants.filter(variant=>variant.option3===thirdOpt);const[matchedVariant3]=matchedVariants;return matchedVariants.length===1?matchedVariant3:matchedVariants.length===0?matchedVariant2:null},checkSampleAdd=function(){const $sampleButton=document.querySelector(".sample-add-button");if(!$sampleButton)return;const variantsTemplate=document.querySelector("#sample-product-json"),sampleProduct=variantsTemplate?JSON.parse(variantsTemplate.content.textContent.trim()):null,canAddSample=!!findMatchingSampleVariant(sampleProduct)?.available;$sampleButton.toggleAttribute("disabled",!canAddSample)},onAddSampleToCart=function(){const $sampleAddButton=document.querySelector(".sample-add-button");$sampleAddButton&&$sampleAddButton.addEventListener("click",event=>handleSampleAddClick(event))},renderForm=function(){if($formWrapper){const $form=$formWrapper.querySelector(".js-product-form");if($form){const $submitButton=$form.querySelector('[type="submit"]'),$quantityInput=document.querySelector(`nova-quantity-input[data-form-id=${$form.getAttribute("id")}]`);$form.addEventListener("submit",async event=>{event.preventDefault(),$submitButton.setAttribute("disabled",!0),$submitButton.classList.add("loading");const formData=new FormData($form),id=formData.get("id"),quantity=$quantityInput?.value||1,properties={},customCalContainer=document.querySelector("nova-custom-calculator-values"),customWItem=$form.querySelector('[name="properties[_custom_width]"]'),customHItem=$form.querySelector('[name="properties[_custom_length]"]');if(customCalContainer&&customWItem&&customHItem&&customWItem.value.trim()!==""&&customHItem.value.trim()!==""){const w=Number(customWItem.value),h=Number(customHItem.value);w&&h&&w>h&&customCalContainer.swapSize(w,h)}for(const[key,value]of formData.entries())if(key.startsWith("properties[")&&value){const propertyKey=key.replace("properties[","").replace("]","");properties[propertyKey]=value}const $sideMark=document.querySelector(".js-product-side-mark");$sideMark&&$sideMark.value.length&&(properties["Side Mark"]=$sideMark.value);const productTagsTemplate=document.querySelector("#product-tags-json");if((productTagsTemplate?JSON.parse(productTagsTemplate.content.textContent.trim()):[]).includes("sample")){const samplePrice
1=(await fetch("/cart.js").then(r=>r.json())).items.reduce((total,item)=>(total+=item.properties._is_sample?item.quantity:0,total),0)<7?0:100;properties._is_sample=!0,properties._sample_pricing=samplePrice>0?"paid":"free"}const requiredWarrantyModal=document.querySelector("#modal-required-warranty-root");let shouldShowMiniCart=!0;requiredWarrantyModal&&(shouldShowMiniCart=!1),addToCart([{id,quantity,properties}],shouldShowMiniCart).then(()=>{$submitButton.removeAttribute("disabled"),$submitButton.classList.remove("loading"),$submitButton.hasAttribute("fb-sample-handle")&&($submitButton.setAttribute("disabled",!0),document.querySelector(".js-max-qty-error-message").classList.remove("hidden")),shouldShowMiniCart||(document.dispatchEvent(new CustomEvent("nova:cart:reload",{bubbles:!0,composed:!0,detail:{open:!1}})),showRequiredWarrantyModal())})})}document.dispatchEvent(new CustomEvent("nova:product:render-additional-actions"))}};async function handleSampleAddClick(event){const button=event.target.closest(".sample-add-button");if(!button.dataset.sampleReference){console.error("Sample not available");return}try{button.classList.add("loading"),button.setAttribute("disabled",!0);const variantsTemplate=document.querySelector("#sample-product-json"),sampleProduct=variantsTemplate?JSON.parse(variantsTemplate.content.textContent.trim()):null,matchingVariant=findMatchingSampleVariant(sampleProduct);if(matchingVariant&&matchingVariant.available){const samplePrice=(await fetch("/cart.js").then(r=>r.json())).items.reduce((total,item)=>(total+=item.properties._is_sample?item.quantity:0,total),0)<7?0:100;await addToCart({id:matchingVariant.id,quantity:1,properties:{_is_sample:!0,_sample_pricing:samplePrice>0?"paid":"free"}})}else console.error("Sample not available for selected options")}catch{console.error("Unable to add sample to cart")}finally{button.classList.remove("loading"),checkSampleAdd()}}document.addEventListener("nova:product:render-additional-actions",()=>{checkSampleAdd()}),fixedAddCart(),renderForm(),onAddSampleToCart(),document.addEventListener("nova:product:render-form",event=>{const content=event.detail.html;content&&(document.querySelector(".js-product-qty-atc-wrapper").innerHTML=content.innerHTML,fixedAddCart(),renderForm())});async function reloadMiniCart(){try{const productHandle=document.querySelector(".js-product-qty-atc-wrapper").dataset.productHandle,text=await(await fetch(`/products/${productHandle}?view=cart`)).text(),content=new DOMParser().parseFromString(text,"text/html").querySelector(".view-mini-cart").innerHTML,$miniCartContainer=document.querySelector(".js-mini-cart-container");$miniCartContainer&&($miniCartContainer.innerHTML=content)}catch(error){throw console.error("Error:",error.message),error}}let cartReloadChain=Promise.resolve();document.addEventListener("nova:cart:reload",event=>{const detail=event.detail||{};cartReloadChain=cartReloadChain.catch(()=>{}).then(async()=>{const wasOpen=!!document.querySelector("nova-mini-cart")?.$cartDrawer?.value?.open;await reloadMiniCart(),(detail.open===!0||detail.open!==!1&&wasOpen)&&document.dispatchEvent(new CustomEvent("nova:cart:open",{bubbles:!0,composed:!0}))}).then(()=>{detail.resolve?.()}).catch(error=>{detail.reject?.(error)})})}if($sizeGuideDrawer)for(const $button of $sizeGuideBtns)$button.addEventListener("click",()=>{$sizeGuideDrawer.hasAttribute("open")?$sizeGuideDrawer.hide():$sizeGuideDrawer.show()});document.addEventListener("nova:product:render-title",event=>{const content=event.detail.html;content&&(document.querySelector(".js-product-title").innerHTML=content.innerHTML)}),document.addEventListener("nova:product:render-complementary-products",event=>{const content=event.detail.html;if(!content)return;const $currentRoot=document.querySelector(".js-product-complementary-products");if(!$currentRoot)return;const $incoming=content.querySelector("product-complementary-products"),$current=$currentRoot.querySelector("product-complementary-products"),nextUrl=$incoming?.getAttribute("data-url");!$current||!nextUrl||$current.getAttribute("data-url")!==nextUrl&&$current.setAttribute("data-url",nextUrl)}),document.addEventListener("nova:product:remove-from-cart",event=>{const{handle}=event.detail,$submitButton=document.querySelector('.js-product-form .js-product-buy-button[type="submit"]');$submitButton&&$submitButton.hasAttribute("fb-sample-handle")&&$submitButton.getAttribute("fb-sample-handle")===handle&&($submitButton.removeAttribute("disabled"),document.querySelector(".js-max-qty-error-message").classList.add("hidden"))})});
2//# sourceMappingURL=/cdn/shop/t/334/assets/section-main-product.js.map?v=107680044372180815051790255855

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.