1import{Component}from"@theme/component";import{fetchConfig,onAnimationEnd,preloadImage}from"@theme/utilities";import{ThemeEvents,CartAddEvent,CartErrorEvent}from"@theme/events";import{cartPerformance}from"@theme/performance";import{morph}from"@theme/morph";export const ADD_TO_CART_TEXT_ANIMATION_DURATION=2e3;const ERROR_MESSAGE_DISPLAY_DURATION=1e4,ERROR_BUTTON_REENABLE_DELAY=1e3,SUCCESS_MESSAGE_DISPLAY_DURATION=5e3;export class AddToCartComponent extends Component{requiredRefs=["addToCartButton"];#animationTimeout;#cleanupTimeout;connectedCallback(){super.connectedCallback(),this.addEventListener("pointerenter",this.#preloadImage)}disconnectedCallback(){super.disconnectedCallback(),this.#animationTimeout&&clearTimeout(this.#animationTimeout),this.#cleanupTimeout&&clearTimeout(this.#cleanupTimeout),this.removeEventListener("pointerenter",this.#preloadImage)}disable(){this.refs.addToCartButton.disabled=!0}enable(){this.refs.addToCartButton.disabled=!1}handleClick(event){const form=this.closest("form");if(!form?.checkValidity())return;const quantitySelector=form.querySelector("quantity-selector-component");if(quantitySelector?.canAddToCart&&!quantitySelector.canAddToCart().canAdd)return;const embroideryBox=document.querySelector(".embroidery-box-rewamp"),embroideryShowEmbRadio=embroideryBox?embroideryBox.querySelector("#showEmb"):null,embroideryDontShowEmbRadio=document.getElementById("dontShowEmbroidery"),embroideryVariantId=embroideryBox?.getAttribute("data-selected-variant-id");if(embroideryShowEmbRadio!==null||embroideryDontShowEmbRadio!==null){const isAddEmbroiderySelected=embroideryShowEmbRadio?.checked,isDontShowEmbroiderySelected=embroideryDontShowEmbRadio?.checked;if(!(isAddEmbroiderySelected||isDontShowEmbroiderySelected)||isAddEmbroiderySelected&&!embroideryVariantId)return}const engravingBox=document.querySelector(".engraving-box"),engravingShowEmbRadio=engravingBox?engravingBox.querySelector("#showEmb"):null,engravingDontShowEngraveRadio=engravingBox?engravingBox.querySelector("#dontShowEngrave"):null,engravingVariantId=engravingBox?.getAttribute("data-selected-variant-id"),engravingFilledCheckbox=engravingBox?engravingBox.querySelector("input.engraving_filled"):null,isEngravingConfigured=!!engravingVariantId&&engravingFilledCheckbox?.checked===!0;if(engravingShowEmbRadio!==null||engravingDontShowEngraveRadio!==null){const isAddEngravingSelected=engravingShowEmbRadio?.checked,isDontShowEngravingSelected=engravingDontShowEngraveRadio?.checked;if(!(isAddEngravingSelected||isDontShowEngravingSelected||isEngravingConfigured)||isAddEngravingSelected&&!isEngravingConfigured)return}const separateProductPicker_topWrapper=document.querySelector('.separate-product-picker[data-picker-type="top"]'),separateProductPicker_bottomWrapper=document.querySelector('.separate-product-picker[data-picker-type="bottom"]'),separateProductPicker_topVariantId=document.getElementById("top_product_variant_id")?.value,separateProductPicker_bottomVariantId=document.getElementById("bottom_product_variant_id")?.value,separateProductPicker_isTopActive=separateProductPicker_topWrapper!==null,separateProductPicker_isBottomActive=separateProductPicker_bottomWrapper!==null;if(separateProductPicker_isTopActive&&!separateProductPicker_topVariantId||separateProductPicker_isBottomActive&&!separateProductPicker_bottomVariantId)return;this.animateAddToCart(),this.dataset.addToCartAnimation==="true"&&!event.target.closest(".quick-add-modal")&&this.#animateFlyToCart()}#preloadImage=()=>{const image=this.dataset.productVariantMedia;image&&preloadImage(image)};#animateFlyToCart(){const{addToCartButton}=this.refs,cartIcon=document.querySelector(".header-actions__cart-icon"),image=this.dataset.productVariantMedia;if(!cartIcon||!addToCartButton||!image)return;const flyToCartElement=document.createElement("fly-to-cart");flyToCartElement.style.setProperty("background-image",`url(${image})`),flyToCartElement.source=addToCartButton,flyToCartElement.destination=cartIcon,document.body.appendChild(flyToCartElement)}animateAddToCart(){const{addToCartButton}=this.refs;this.#animationTimeout&&clearTimeout(this.#animationTimeout),this.#cleanupTimeout&&clearTimeout(this.#cleanupTimeout),addToCartButton.classList.contains("atc-added")||addToCartButton.classList.add("atc-added"),this.#animationTimeout=setTimeout(()=>{this.#cleanupTimeout=setTimeout(()=>{this.refs.addToCartButton.classList.remove("atc-added")},10)},ADD_TO_CART_TEXT_ANIMATION_DURATION)}}customElements.get("add-to-cart-component")||customElements.define("add-to-cart-component",AddToCartComponent);class ProductFormComponent extends Component{requiredRefs=["variantId","liveRegion"];#abortController=new AbortController;#timeout;connectedCallback(){super.connectedCallback();const{signal}=this.#abortController,target=this.closest(".shopify-section, dialog, product-card");target?.addEventListener(ThemeEvents.variantUpdate,this.#onVariantUpdate,{signal}),target?.addEventListener(ThemeEvents.variantSelected,this.#onVariantSelected,{signal}),document.addEventListener(ThemeEvents.cartUpdate,this.#onCartUpdate,{signal})}disconnectedCallback(){super.disconnectedCallback(),this.#abortController.abort()}async#fetchAndUpdateCartQuantity(){const variantIdInput=this.querySelector('input[name="id"]');if(!variantIdInput?.value)return 0;try{const cartItem=(await(await fetch("/cart.js")).json()).items.find(item=>item.variant_id.toString()===variantIdInput.value.toString()),cartQty=cartItem?cartItem.quantity:0,quantitySelector=this.querySelector("quantity-selector-component");return quantitySelector?.setCartQuantity&&quantitySelector.setCartQuantity(cartQty),this.#updateQuantityLabel(cartQty),cartQty}catch(error){return console.error("Failed to fetch cart quantity:",error),0}}#onCartUpdate=async event=>{event.detail?.sourceId===this.id||event.detail?.data?.source==="product-form-component"||await this.#fetchAndUpdateCartQuantity()};handleSubmit(event){const{addToCartTextError,addToCartButtonContainer}=this.refs;if(event.preventDefault(),this.#timeout&&clearTimeout(this.#timeout),addToCartButtonContainer?.refs.addToCartButton?.disabled)return;const form=this.querySelector("form");if(!form)throw new Error("Product form element missing");const quantitySelector=this.querySelector("quantity-selector-component");if(quantitySelector?.canAddToCart){const validation=quantitySelector.canAddToCart();if(!validation.canAdd){addToCartButtonContainer?.disable();const errorMessage=(this.dataset.quantityErrorMax||"").replace("{{ maximum }}",validation.maxQuantity.toString());if(addToCartTextError){addToCartTextError.classList.remove("hidden");const textNode=addToCartTextError.childNodes[2];if(textNode)textNode.textContent=errorMessage;else{const newTextNode=document.createTextNode(errorMessage);addToCartTextError.appendChild(newTextNode)}this.#setLiveRegionText(errorMessage),this.#timeout&&clearTimeout(this.#timeout),this.#timeout=setTimeout(()=>{addToCartTextError&&(addToCartTextError.classList.add("hidden"),this.#clearLiveRegionText())},ERROR_MESSAGE_DISPLAY_DURATION)}setTimeout(()=>{addToCartButtonContainer?.enable()},ERROR_BUTTON_REENABLE_DELAY);return}}const formData=new FormData(form),embroideryBox=document.querySelector(".embroidery-box-rewamp"),embroideryShowEmbRadio=embroideryBox?embroideryBox.querySelector("#showEmb"):null,embroideryDontShowEmbRadio=document.getElementById("dontShowEmbroidery"),embroideryVariantId=embroideryBox?.getAttribute("data-selected-variant-id"),embroiderySectionExists=embroideryShowEmbRadio!==null||embroideryDontShowEmbRadio!==null,isAddEmbroiderySelected=embroideryShowEmbRadio?.checked,isDontShowEmbroiderySelected=embroideryDontShowEmbRadio?.checked;if(embroiderySectionExists&&!(isAddEmbroiderySelected||isDontShowEmbroiderySelected)){const embSelectOpt=embroideryBox?.querySelector(".emb_select_opt");embSelectOpt&&(embSelectOpt.style.display="flex",embSelectOpt.closest(".embroidery-box")?.classList.add("css-animation"),setTimeout(()=>{embSelectOpt.closest(".embroidery-box")?.classList.remove("css-animation")},1e3),this.#timeout=setTimeout(()=>{embSelectOpt&&(embSelectOpt.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}if(isAddEmbroiderySelected&&!embroideryVariantId){const embSelectOpt=embroideryBox?.querySelector(".emb_select_opt");embSelectOpt&&(embSelectOpt.style.display="flex",embSelectOpt.closest(".embroidery-box")?.classList.add("css-animation"),setTimeout(()=>{embSelectOpt.closest(".embroidery-box")?.classList.remove("css-animation")},1e3),this.#timeout=setTimeout(()=>{embSelectOpt&&(embSelectOpt.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}const engravingBox=document.querySelector(".engraving-box"),engravingShowEmbRadio=engravingBox?engravingBox.querySelector("#showEmb"):null,engravingDontShowEngraveRadio=engravingBox?engravingBox.querySelector("#dontShowEngrave"):null,engravingVariantId=engravingBox?.getAttribute("data-selected-variant-id"),engravingFilledCheckbox=engravingBox?engravingBox.querySelector("input.engraving_filled"):null,isEngravingConfigured=!!engravingVariantId&&engravingFilledCheckbox?.checked===!0,engravingSectionExists=engravingShowEmbRadio!==null||engravingDontShowEngraveRadio!==null,isAddEngravingSelected=engravingShowEmbRadio?.checked,isDontShowEngravingSelected=engravingDontShowEngraveRadio?.checked;if(engravingSectionExists&&!(isAddEngravingSelected||isDontShowEngravingSelected||isEngravingConfigured)){const engravingSelectOpt=engravingBox?.querySelector(".emb_select_opt");engravingSelectOpt&&(engravingSelectOpt.style.display="flex",engravingSelectOpt.closest(".engraving-box")?.classList.add("css-animation"),setTimeout(()=>{engravingSelectOpt.closest(".engraving-box")?.classList.remove("css-animation")},1e3),this.#timeout=setTimeout(()=>{engravingSelectOpt&&(engravingSelectOpt.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}if(isAddEngravingSelected&&!isEngravingConfigured){const engravingSelectOpt=engravingBox?.querySelector(".emb_select_opt");engravingSelectOpt&&(engravingSelectOpt.style.display="flex",engravingSelectOpt.closest(".engraving-box")?.classList.add("css-animation"),setTimeout(()=>{engravingSelectOpt.closest(".engraving-box")?.classList.remove("css-animation")},1e3),this.#timeout=setTimeout(()=>{engravingSelectOpt&&(engravingSelectOpt.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}const separateProductPicker_topWrapper=document.querySelector('.separate-product-picker[data-
1picker-type="top"]'),separateProductPicker_bottomWrapper=document.querySelector('.separate-product-picker[data-picker-type="bottom"]'),separateProductPicker_topVariantId=document.getElementById("top_product_variant_id")?.value,separateProductPicker_bottomVariantId=document.getElementById("bottom_product_variant_id")?.value,separateProductPicker_isTopActive=separateProductPicker_topWrapper!==null,separateProductPicker_isBottomActive=separateProductPicker_bottomWrapper!==null;if(separateProductPicker_isTopActive&&!separateProductPicker_topVariantId){const separateProductPicker_topErrorDiv=separateProductPicker_topWrapper?.querySelector(".product-picker-error");separateProductPicker_topErrorDiv&&(separateProductPicker_topErrorDiv.style.display="block",this.#timeout=setTimeout(()=>{separateProductPicker_topErrorDiv&&(separateProductPicker_topErrorDiv.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}if(separateProductPicker_isBottomActive&&!separateProductPicker_bottomVariantId){const separateProductPicker_bottomErrorDiv=separateProductPicker_bottomWrapper?.querySelector(".product-picker-error");separateProductPicker_bottomErrorDiv&&(separateProductPicker_bottomErrorDiv.style.display="block",this.#timeout=setTimeout(()=>{separateProductPicker_bottomErrorDiv&&(separateProductPicker_bottomErrorDiv.style.display="none")},ERROR_MESSAGE_DISPLAY_DURATION));return}const isEmbroideryFilledCheckedForMultiple=(embroideryBox?embroideryBox.querySelector("input.embroidery_filled"):null)?.checked===!0,isEngravingFilledCheckedForMultiple=(engravingBox?engravingBox.querySelector("input.engraving_filled"):null)?.checked===!0,separateProductPicker_needsMultipleProducts=isAddEmbroiderySelected&&embroideryVariantId&&isEmbroideryFilledCheckedForMultiple||isEngravingConfigured&&engravingVariantId&&isEngravingFilledCheckedForMultiple||separateProductPicker_isTopActive||separateProductPicker_isBottomActive,separateProductPicker_shouldExcludeMain=separateProductPicker_isTopActive||separateProductPicker_isBottomActive;if(separateProductPicker_needsMultipleProducts){const separateProductPicker_mainProductId=formData.get("id"),separateProductPicker_mainProductQuantity=formData.get("quantity")||"1",uniqueCode2=Math.floor(Math.random()*1e6).toString().padStart(6,"0");let separateProductPicker_pairId;separateProductPicker_isTopActive&&separateProductPicker_isBottomActive&&separateProductPicker_topVariantId&&separateProductPicker_bottomVariantId?separateProductPicker_pairId=`${separateProductPicker_topVariantId}_${separateProductPicker_bottomVariantId}_${uniqueCode2}`:separateProductPicker_pairId=`${separateProductPicker_mainProductId||separateProductPicker_topVariantId||separateProductPicker_bottomVariantId}_${uniqueCode2}`;const separateProductPicker_items=[];!separateProductPicker_shouldExcludeMain&&separateProductPicker_mainProductId&&separateProductPicker_items.push({id:separateProductPicker_mainProductId.toString(),quantity:Number(separateProductPicker_mainProductQuantity),properties:{_PairId:separateProductPicker_pairId}}),separateProductPicker_isBottomActive&&separateProductPicker_bottomVariantId&&separateProductPicker_items.push({id:separateProductPicker_bottomVariantId,quantity:Number(separateProductPicker_mainProductQuantity),properties:{_PairId:separateProductPicker_pairId}}),separateProductPicker_isTopActive&&separateProductPicker_topVariantId&&separateProductPicker_items.push({id:separateProductPicker_topVariantId,quantity:Number(separateProductPicker_mainProductQuantity),properties:{_PairId:separateProductPicker_pairId}});const isEmbroideryFilledChecked=(embroideryBox?embroideryBox.querySelector("input.embroidery_filled"):null)?.checked===!0;if(isAddEmbroiderySelected&&embroideryVariantId&&isEmbroideryFilledChecked){const embroideryProperties=this.#getEmbroideryProperties(embroideryBox,separateProductPicker_pairId,embroideryVariantId);separateProductPicker_items.push({id:embroideryVariantId,quantity:Number(separateProductPicker_mainProductQuantity),properties:embroideryProperties})}const isEngravingFilledChecked=(engravingBox?engravingBox.querySelector("input.engraving_filled"):null)?.checked===!0;if(isEngravingConfigured&&engravingVariantId&&isEngravingFilledChecked){const engravingProperties=this.#getEngravingProperties(engravingBox,separateProductPicker_pairId,engravingVariantId);separateProductPicker_items.push({id:engravingVariantId,quantity:Number(separateProductPicker_mainProductQuantity),properties:engravingProperties})}if(separateProductPicker_items.length===0)throw new Error("No products to add to cart");const separateProductPicker_cartItemsComponents=document.querySelectorAll("cart-items-component");let separateProductPicker_cartItemComponentsSectionIds=[];
1separateProductPicker_cartItemsComponents.forEach(separateProductPicker_item=>{separateProductPicker_item instanceof HTMLElement&&separateProductPicker_item.dataset.sectionId&&separateProductPicker_cartItemComponentsSectionIds.push(separateProductPicker_item.dataset.sectionId)});const separateProductPicker_requestBody={items:separateProductPicker_items};separateProductPicker_cartItemComponentsSectionIds.length>0&&(separateProductPicker_requestBody.sections=separateProductPicker_cartItemComponentsSectionIds.join(",")),fetch(Theme.routes.cart_add_url,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(separateProductPicker_requestBody)}).then(response=>response.json()).then(response=>{if(response.status){if(this.dispatchEvent(new CartErrorEvent(form.getAttribute("id")||"",response.message,response.description,response.errors)),!addToCartTextError)return;addToCartTextError.classList.remove("hidden");const textNode=addToCartTextError.childNodes[2];if(textNode)textNode.textContent=response.message;else{const newTextNode=document.createTextNode(response.message);addToCartTextError.appendChild(newTextNode)}this.#setLiveRegionText(response.message),this.#timeout=setTimeout(()=>{addToCartTextError&&(addToCartTextError.classList.add("hidden"),this.#clearLiveRegionText())},ERROR_MESSAGE_DISPLAY_DURATION),this.dispatchEvent(new CartAddEvent({},this.id,{didError:!0,source:"product-form-component",itemCount:Number(separateProductPicker_mainProductQuantity),productId:this.dataset.productId}));return}else{let separateProductPicker_id="";if(separateProductPicker_shouldExcludeMain&&separateProductPicker_items&&separateProductPicker_items.length>0&&separateProductPicker_items[0]?separateProductPicker_id=separateProductPicker_items[0].id:separateProductPicker_mainProductId?separateProductPicker_id=separateProductPicker_mainProductId:separateProductPicker_items&&separateProductPicker_items.length>0&&separateProductPicker_items[0]&&(separateProductPicker_id=separateProductPicker_items[0].id),addToCartTextError&&(addToCartTextError.classList.add("hidden"),addToCartTextError.removeAttribute("aria-live")),!separateProductPicker_id)throw new Error("Form ID is required");if(this.refs.addToCartButtonContainer?.refs.addToCartButton){const separateProductPicker_addedText=this.refs.addToCartButtonContainer.refs.addToCartButton.querySelector(".add-to-cart-text--added")?.textContent?.trim()||Theme.translations.added;this.#setLiveRegionText(separateProductPicker_addedText),setTimeout(()=>{this.#clearLiveRegionText()},SUCCESS_MESSAGE_DISPLAY_DURATION)}this.#fetchAndUpdateCartQuantity(),this.dispatchEvent(new CartAddEvent({},separateProductPicker_id.toString(),{source:"product-form-component",itemCount:Number(separateProductPicker_mainProductQuantity),productId:this.dataset.productId,sections:response.sections})),this.#resetEmbroiderySelection(),this.#resetEngravingSelection()}}).catch(error=>{console.error(error)}).finally(()=>{cartPerformance.measureFromEvent("add:user-action",event)});return}const uniqueCode=Math.floor(Math.random()*1e6).toString().padStart(6,"0"),variantId=formData.get("id");if(variantId){const pairId=`${String(variantId)}_${uniqueCode}`;formData.append("properties[_PairId]",pairId)}const cartItemsComponents=document.querySelectorAll("cart-items-component");let cartItemComponentsSectionIds=[];cartItemsComponents.forEach(item=>{item instanceof HTMLElement&&item.dataset.sectionId&&cartItemComponentsSectionIds.push(item.dataset.sectionId),formData.append("sections",cartItemComponentsSectionIds.join(","))});const fetchCfg=fetchConfig("javascript",{body:formData});fetch(Theme.routes.cart_add_url,{...fetchCfg,headers:{...fetchCfg.headers,Accept:"text/html"}}).then(response=>response.json()).then(response=>{if(response.status){if(this.dispatchEvent(new CartErrorEvent(form.getAttribute("id")||"",response.message,response.description,response.errors)),!addToCartTextError)return;addToCartTextError.classList.remove("hidden");const textNode=addToCartTextError.childNodes[2];if(textNode)textNode.textContent=response.message;else{const newTextNode=document.createTextNode(response.message);addToCartTextError.appendChild(newTextNode)}this.#setLiveRegionText(response.message),this.#timeout=setTimeout(()=>{addToCartTextError&&(addToCartTextError.classList.add("hidden"),this.#clearLiveRegionText())},ERROR_MESSAGE_DISPLAY_DURATION),this.dispatchEvent(new CartAddEvent({},this.id,{didError:!0,source:"product-form-component",itemCount:Number(formData.get("quantity"))||Number(this.dataset.quantityDefault),productId:this.dataset.productId}));return}else{const id=formData.get("id");if(addToCartTextError&&(addToCartTextError.classList.add("hidden"),addToCartTextError.removeAttribute("aria-live")),!id)throw new Error("Form ID is required");if(this.refs.addToCartButtonContainer?.refs.addToCartButton){const addedText=this.refs.addToCartButtonContainer.refs.addToCartButton.querySelector(".add-to-cart-text--added")?.textContent?.trim()||Theme.translations.added;this.#setLiveRegionText(addedText),setTimeout(()=>{this.#clearLiveRegionText()},SUCCESS_MESSAGE_DISPLAY_DURATION)}this.#fetchAndUpdateCartQuantity(),this.dispatchEvent(new CartAddEvent({},id.toString(),{source:"product-form-component",itemCount:Number(formData.get("quantity"))||Number(this.dataset.quantityDefault),productId:this.dataset.productId,sections:response.sections})),this.#resetEmbroiderySelection(),this.#resetEngravingSelection()}}).catch(error=>{console.error(error)}).finally(()=>{cartPerformance.measureFromEvent("add:user-action",event)})}#updateQuantityLabel(cartQty){const quantityLabel=this.refs.quantityLabelCartCount;if(quantityLabel){const inCartText=quantityLabel.textContent?.match(/\((\d+)\s+(.+)\)/);inCartText&&inCartText[2]&&(quantityLabel.textContent=`(${cartQty} ${inCartText[2]})`),quantityLabel.classList.toggle("hidden",cartQty===0)}}#setLiveRegionText(text){const liveRegion=this.refs.liveRegion;liveRegion.textContent=text}#clearLiveRegionText(){const liveRegion=this.refs.liveRegion;liveRegion.textContent=""}#resetEmbroiderySelection(){try{const embroideryBox=document.querySelector(".embroidery-box-rewamp");if(!embroideryBox)return;const showEmbRadio=embroideryBox.querySelector("#showEmb"),dontShowEmbRadio=document.getElementById("dontShowEmbroidery");showEmbRadio&&(showEmbRadio.checked=!1),dontShowEmbRadio&&(dontShowEmbRadio.checked=!1),embroideryBox.querySelectorAll("input[name='embroidery']").forEach(rb=>{rb instanceof HTMLElement&&rb.parentElement?.classList.remove("checked")}),embroideryBox.removeAttribute("data-selected-variant-id"),embroideryBox.removeAttribute("data-bottom-embroidery-enabled"),embroideryBox.removeAttribute("data-bottom-embroidery-text"),embroideryBox.removeAttribute("data-bottom-embroidery-sku");const embroideryDeleteFn=window.EmbroideryDelete;typeof embroideryDeleteFn=="function"&&embroideryDeleteFn()}catch(error){console.error("Error resetting embroidery selection:",error)}}#resetEngravingSelection(){try{const engravingBox=document.querySelector(".engraving-box");if(!engravingBox)return;const engravingShowEmbRadio=engravingBox.querySelector("#showEmb"),engravingDontShowEngraveRadio=engravingBox.querySelector("#dontShowEngrave");engravingShowEmbRadio&&(engravingShowEmbRadio.checked=!1),engravingDontShowEngraveRadio&&(engravingDontShowEngraveRadio.checked=!1),engravingBox.querySelectorAll("input[name='engraving']").forEach(rb=>{rb instanceof HTMLElement&&rb.parentElement?.classList.remove("checked")}),engravingBox.removeAttribute("data-selected-variant-id"),engravingBox.removeAttribute("data-selected-variant-sku"),engravingBox.removeAttribute("data-engraving-text"),engravingBox.removeAttribute("data-engraving-selected"),engravingBox.removeAttribute("data-engraving-font-type"),engravingBox.removeAttribute("data-engraving-enabled");const engravingDeleteFn=window.Engravingdelete;typeof engravingDeleteFn=="function"&&engravingDeleteFn()}catch(error){console.error("Error resetting engraving selection:",error)}}#isBottomEmbroideryLineItem(embroideryBox,variantId){if(!embroideryBox)return!1;if(embroideryBox.querySelector(".added_list label[data-embrtype]")?.getAttribute("data-embrtype")==="bottomemb")return!0;const bottomVariant=(window.embroideryProductBottom?.variants||[]).find(v=>String(v?.title||"").trim().toLowerCase()==="bottom");return!!(bottomVariant&&String(bottomVariant.id)===String(variantId))}#findVariantSkuById(variantId,pickerType){if(!variantId)return"";const variantIdString=String(variantId);if(pickerType){const scopedScript=document.querySelector(`script[data-picker-variants="${pickerType}"]`),scopedSku=this.#readSkuFromVariantScript(scopedScript,variantIdString);if(scopedSku)return scopedSku}const pickerScripts=document.querySelectorAll("script[data-picker-variants], script[data-variant-picker-variants]");for(const script of pickerScripts){const sku=this.#readSkuFromVariantScript(script,variantIdString);if(sku)return sku}return""}#readSkuFromVariantScript(script,variantIdString){if(!script?.textContent)return"";try{const variants=JSON.parse(script.textContent);return Array.isArray(variants)&&variants.find(v=>v&&String(v.id)===variantIdString)?.sku||""}catch{return""}}#resolveTopGarmentSku(embroideryBox,variantId){if(!embroideryBox||this.#isBottomEmbroideryLineItem(embroideryBox,variantId))return"";const topVariantInput=document.getElementById("top_product_variant_id");if(topVariantInput?.value){const inputSku=topVariantInput.getAttribute("data-sku");if(inputSku)return inputSku;const pickerSku=this.#findVariantSkuById(topVariantInput.value,"top");if(pickerSku)return pickerSku}const mainVariantInput=this.querySelector('input[name="id"]');if(mainVariantInput?.value){const mainSku=this.#findVariantSkuById(mainVariantInput.value);if(mainSku)return mainSku}return embroideryBox.getAttribute("data-selected-variant-sku")||""}#resolveBottomGarmentSku(embroideryBox,variantId){if(!embroideryBox||embroideryBox.getAttribute("data-bottom-embroidery-enabled")!=="true")return"";const bottomVariantInput=document.getElementById("bottom_product_variant_id");if(bottomVariantInput?.value){const inputSku=bottomVariantInput.getAttribute("data-sku");if(inputSku)return inputSku;const pickerSku=this.#findVariantSkuById(bottomVariantInput.value,"bottom");if(pickerSku)return pickerSku}if(this.#isBottomEmbroideryLineItem(embroideryBox,variantId)){const garmentSku=embroideryBox.getAttribute("data-selected-variant-sku");if(garmentSku)return garmentSku;const mainVariantInput=this.querySelector('input[name="id"]');if(mainVariantInput?.value){const mainSku=this.#findVariantSkuById(mainVariantInput.value);if(mainSku)return mainSku}}return embroideryBox.getAttribute("data-bottom-embroidery-sku")||""}#getEmbroideryProperties(embroideryBox,pairId,variantId){const properties={_PairId:pairId,_Embroidery:"true"};if(!embroideryBox)return properties;const topGarmentSku=this.#resolveTopGarmentSku(embroideryBox,variantId);topGarmentSku&&(properties._SKU=topGarmentSku);const textOnlySection=embroideryBox.querySelector(".list_row_only_Text"),textBottomSection=embroideryBox.querySelector(".list_row_only_Text_bottom"),iconOnlySection=embroideryBox.querySelector(".list_row_only_Image"),bothSection=embroideryBox.querySelector(".list_row_both");let activeSection=null;if(bothSection&&bothSection.style.display!=="none"&&window.getComputedStyle(bothSection).display!=="none"?activeSection=bothSection:textBottomSection&&textBottomSection.style.display!=="none"&&window.getComputedStyle(textBottomSection).display!=="none"?activeSection=textBottomSection:textOnlySection&&textOnlySection.style.display!=="none"&&window.getComputedStyle(textOnlySection).display!=="none"?activeSection=textOnlySection:iconOnlySection&&iconOnlySection.style.display!=="none"&&window.getComputedStyle(iconOnlySection).display!=="none"&&(activeSection=iconOnlySection),!activeSection){const allSections=[bothSection,textBottomSection,textOnlySection,iconOnlySection].filter(s=>s!==null);for(const section of allSections){const htmlSection=section;if(htmlSection&&htmlSection.style.display!=="none"&&window.getComputedStyle(htmlSection).display!=="none"){activeSection=htmlSection;break}}}const searchContainer=activeSection||embroideryBox;let textEmbElement=searchContainer.querySelector(".property_line__textEmb.property_line__textEmbfirst");
1textEmbElement||(textEmbElement=embroideryBox.querySelector(".property_line__textEmb.property_line__textEmbfirst"));let textValue="";if(textEmbElement){const htmlTextEmb=textEmbElement;textValue=(htmlTextEmb.textContent||htmlTextEmb.innerText||"").trim(),textValue&&(this.#isBottomEmbroideryLineItem(embroideryBox,variantId)||(properties._text=textValue,properties.first_name=textValue.split(",")[0]?.trim()||"",properties.designation=textValue.split(",")[1]?.trim()||""))}let colorElement=searchContainer.querySelector(".property_line.property_line_colorValue");if(colorElement||(colorElement=embroideryBox.querySelector(".property_line.property_line_colorValue")),colorElement){const htmlColor=colorElement,colorValue=(htmlColor.textContent||htmlColor.innerText||"").trim();colorValue&&(properties.Color=colorValue)}let fontElement=searchContainer.querySelector(".property_line_FontStyle");if(fontElement||(fontElement=embroideryBox.querySelector(".property_line_FontStyle")),fontElement){const htmlFont=fontElement,fontValue=(htmlFont.textContent||htmlFont.innerText||"").trim();fontValue&&(properties.Font=fontValue)}let iconElement=searchContainer.querySelector(".property_line.property_line_Iconname_Name");iconElement||(iconElement=embroideryBox.querySelector(".property_line.property_line_Iconname_Name"));let iconValue="";if(iconElement){const htmlIcon=iconElement;iconValue=(htmlIcon.textContent||htmlIcon.innerText||"").trim(),iconValue&&(properties.Icon=iconValue)}let textPositionElement=searchContainer.querySelector(".property_line_TextPositionPlacement");if(textPositionElement||(textPositionElement=embroideryBox.querySelector(".property_line_TextPositionPlacement")),textPositionElement&&textValue){const htmlTextPos=textPositionElement,textPositionValue=(htmlTextPos.textContent||htmlTextPos.innerText||"").trim();textPositionValue&&(properties["_Text Position"]=textPositionValue)}let iconPlacementElement=searchContainer.querySelector(".property_line_Iconname_NamePlacement");if(iconPlacementElement||(iconPlacementElement=embroideryBox.querySelector(".property_line_Iconname_NamePlacement")),iconPlacementElement&&iconValue){const htmlIconPlace=iconPlacementElement,iconPlacementValue=(htmlIconPlace.textContent||htmlIconPlace.innerText||"").trim();iconPlacementValue&&(properties["_Icon Placement"]=iconPlacementValue)}const imageUrl=embroideryBox.getAttribute("data-selected-variant-img");imageUrl&&(console.log("imageUrl,imageUrl",imageUrl),properties.customUpload=imageUrl);const bottomEmbroideryEnabled=embroideryBox.getAttribute("data-bottom-embroidery-enabled"),bottomEmbroideryText=embroideryBox.getAttribute("data-bottom-embroidery-text"),bottomGarmentSku=this.#resolveBottomGarmentSku(embroideryBox,variantId);return bottomEmbroideryEnabled==="true"&&bottomEmbroideryText&&(properties["Bottom Embroidery Text"]=bottomEmbroideryText),bottomEmbroideryEnabled==="true"&&bottomGarmentSku&&(properties["_Bottom SKU"]=bottomGarmentSku),properties}#getEngravingProperties(engravingBox,pairId,variantId){const properties={_PairId:pairId,_Engraving:"true"};if(!engravingBox)return properties;const engravingSku=engravingBox.getAttribute("data-selected-variant-sku");engravingSku&&(properties._sku=engravingSku);const engravingText=engravingBox.getAttribute("data-engraving-text");engravingText&&(properties.Added_text=engravingText);const engravingSelected=engravingBox.getAttribute("data-engraving-selected");engravingSelected&&(properties._Engraving_Selected=engravingSelected);const fontType=engravingBox.getAttribute("data-engraving-font-type");return fontType&&(properties._Font_Type=fontType),properties}#morphOrUpdateElement(currentElement,newElement,insertReferenceElement=null){currentElement&&newElement?morph(currentElement,newElement):currentElement&&!newElement?currentElement.remove():!currentElement&&newElement&&insertReferenceElement&&insertReferenceElement.insertAdjacentElement("beforebegin",newElement.cloneNode(!0))}#onVariantUpdate=async event=>{if(event.detail.data.newProduct)this.dataset.productId=event.detail.data.newProduct.id;else if(event.detail.data.productId!==this.dataset.productId)return;const{variantId,addToCartButtonContainer}=this.refs,currentAddToCartButton=addToCartButtonContainer?.refs.addToCartButton,newAddToCartButton=event.detail.data.html.querySelector('[ref="addToCartButton"]');if(variantId.value=event.detail.resource?.id??"",!currentAddToCartButton&&!this.refs.acceleratedCheckoutButtonContainer)return;if(currentAddToCartButton&&(event.detail.resource==null||event.detail.resource.available==!1?addToCartButtonContainer.disable():addToCartButtonContainer.enable(),newAddToCartButton&&morph(currentAddToCartButton,newAddToCartButton)),this.refs.acceleratedCheckoutButtonContainer&&(event.detail.resource==null||event.detail.resource.available==!1?this.refs.acceleratedCheckoutButtonContainer?.setAttribute("hidden","true"):this.refs.acceleratedCheckoutButtonContainer?.removeAttribute("hidden")),event.detail.resource){const productVariantMedia=event.detail.resource.featured_media?.preview_image?.src;productVariantMedia&&addToCartButtonContainer?.setAttribute("data-product-variant-media",productVariantMedia+"&width=100")}const quantitySelector=this.querySelector("quantity-selector-component"),newQuantityInput=event.detail.data.html.querySelector('quantity-selector-component input[ref="quantityInput"]');quantitySelector?.updateConstraints&&newQuantityInput&&quantitySelector.updateConstraints(newQuantityInput.min,newQuantityInput.max||null,newQuantityInput.step);const quantityRules=this.refs.quantityRules,newQuantityRules=event.detail.data.html.querySelector(".quantity-rules");if(!!quantityRules!=!!newQuantityRules&&quantitySelector){const currentQuantityValue=quantitySelector.getValue?.(),currentProductFormButtons=this.refs.productFormButtons,newProductFormButtons=event.detail.data.html.querySelector(".product-form-buttons");if(currentProductFormButtons&&newProductFormButtons){morph(currentProductFormButtons,newProductFormButtons);const newQuantitySelector=this.querySelector("quantity-selector-component"),newQuantityInputElement=event.detail.data.html.querySelector('quantity-selector-component input[ref="quantityInput"]');newQuantitySelector?.updateConstraints&&newQuantityInputElement&¤tQuantityValue&&(newQuantitySelector.setValue(currentQuantityValue),newQuantitySelector.updateConstraints(newQuantityInputElement.min,newQuantityInputElement.max||null,newQuantityInputElement.step))}}else{const quantityLabel=this.querySelector(".quantity-label"),newQuantityLabel=event.detail.data.html.querySelector(".quantity-label");this.#morphOrUpdateElement(quantityLabel,newQuantityLabel,quantitySelector);const addToCartButton=this.querySelector('[ref="addToCartButtonContainer"]');this.#morphOrUpdateElement(quantityRules,newQuantityRules,addToCartButton)}await this.#fetchAndUpdateCartQuantity()};#onVariantSelected=()=>{this.refs.addToCartButtonContainer?.disable()}}customElements.get("product-form-component")||customElements.define("product-form-component",ProductFormComponent);class FlyToCart extends HTMLElement{source;destination;connectedCallback(){this.#animate()}#animate(){const rect=this.getBoundingClientRect(),sourceRect=this.source.getBoundingClientRect(),destinationRect=this.destination.getBoundingClientRect(),offset={x:rect.width/2,y:rect.height/2},startPoint={x:sourceRect.left+sourceRect.width/2-offset.x,y:sourceRect.top+sourceRect.height/2-offset.y},endPoint={x:destinationRect.left+destinationRect.width/2-offset.x,y:destinationRect.top+destinationRect.height/2-offset.y},controlPoint1={x:startPoint.x,y:startPoint.y-200},controlPoint2={x:endPoint.x-300,y:endPoint.y-100};let startTime=null;const duration=600;this.style.opacity="1";const animate=currentTime=>{startTime||(startTime=currentTime);const elapsed=currentTime-startTime,progress=Math.min(elapsed/duration,1),position=bezierPoint(progress,startPoint,controlPoint1,controlPoint2,endPoint);this.style.setProperty("--x",`${position.x}px`),this.style.setProperty("--y",`${position.y}px`);const scale=1-progress*.5;this.style.setProperty("--scale",`${scale}`),progress<1?requestAnimationFrame(animate):(this.style.opacity="0",onAnimationEnd(this,()=>this.remove()))};this.style.setProperty("--x",`${startPoint.x}px`),this.style.setProperty("--y",`${startPoint.y}px`),requestAnimationFrame(animate)}}function bezierPoint(t,p0,p1,p2,p3){const cX=3*(p1.x-p0.x),bX=3*(p2.x-p1.x)-cX,aX=p3.x-p0.x-cX-bX,cY=3*(p1.y-p0.y),bY=3*(p2.y-p1.y)-cY,aY=p3.y-p0.y-cY-bY,x=aX*Math.pow(t,3)+bX*Math.pow(t,2)+cX*t+p0.x,y=aY*Math.pow(t,3)+bY*Math.pow(t,2)+cY*t+p0.y;return{x,y}}customElements.get("fly-to-cart")||customElements.define("fly-to-cart",FlyToCart); 2//# sourceMappingURL=/cdn/shop/t/571/assets/product-form.js.map?v=35555018623813296481787310914
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.