1import{f as T}from"./format-money.DRT3JhpN.min.js";import{a,P as u,b as E,c as h,d as _}from"./product-form.C7Jnd8Go.min.js";import{a as p}from"./quantity-selector.OOsx2xG-.min.js";import{a as g,g as m,c as A,p as C}from"./ga4-tracking.BWVfjqDa.min.js";import{e as f,f as O}from"./nosto-tracking.DwotH_KL.min.js";class D extends HTMLElement{constructor(){super(),this.productData=null,this.productVariantSku=null,this.clickAndCollect=null,this.hasTrackedViewItem=!1,this.onAddToCartClick=()=>{this.giftCardForm?this.addGiftCardToCart():this.addToCart()},this.getSelectedOptions=()=>{const e=[];return this.querySelectorAll(a.OPTION_VALUES).forEach(t=>{if(t instanceof HTMLInputElement&&t.checked){const s=t.getAttribute(u.PRODUCT_OPTION_VALUE_NAME);s&&e.push(s)}}),e},this.updatedSelectedOption=e=>{const i=e.target;if(!i)return;const t=i.getAttribute(u.PRODUCT_OPTION_NAME),s=i.getAttribute(u.PRODUCT_OPTION_VALUE_NAME),o=i.getAttribute(u.PRODUCT_OPTION_VALUE_ID);if(s?.includes(":")){const c=s.split(":")[0];c&&(this.productGallery&&this.productGallery.syncVariantMedia(c),this.productGalleryModal&&this.productGalleryModal.syncVariantMedia(c))}const r=i.closest("fieldset");r&&r.querySelectorAll(a.RADIO_INPUT).forEach(c=>{c instanceof HTMLInputElement&&(c.checked=!1,c.removeAttribute("checked"))}),i.checked=!0,i.setAttribute("checked","");const n=this.querySelector(`output[for="${t}"]`);n&&(s?.includes(":")?n.textContent=s.split(":")?.[0]??"":n.textContent=s??""),this.selectedOptions=this.getSelectedOptions(),this.updateVariantState();const l=this.getCurrentVariant();if(l){this.updatePrice(l.price,l.compare_at_price),this.updateQuantity(l?.inventory_quantity),this.updateBadgesAndExchanges(l.metafields?.discountMessage??"",l.metafields?.isFinalSale??!1),this.updateVariantSku(l),this.clickAndCollect?.resetState&&this.clickAndCollect.resetState();const c=this.productMain?.querySelectorAll(a.PDP_WISHLIST_BUTTON_WRAPPER_SELECTOR)??null;c&&c.forEach(S=>S.updateWishlistState()),this.wishlistDialog&&this.updateWishlistDialog(l.id)}this.dispatchEvent(new CustomEvent(E.PRODUCT_OPTION_CHANGED,{detail:{optionName:t,optionValue:s,optionId:o}}))},this.updateQuantity=e=>{if(!e&&e!==0)return;const i=this.querySelector(a.QUANTITY_SELECTOR),t=i?.querySelector(a.QUANTITY_INPUT_ELEMENT);!i||!t||(i.setAttribute(u.DATA_QUANTITY_MAX,e.toString()),t.setAttribute(u.INPUT_MAX,e.toString()))},this.updatePrice=(e,i)=>{const t=typeof i=="number"&&i>e,s=this.isPdp?this.parentElement:this.productMain,o=s?.querySelector(a.PRICE_ELEMENT),r=s?.querySelector(a.COMPARE_AT_PRICE_ELEMENT),n=s?.querySelector(a.SAVINGS_PRICE_ELEMENT),l={symbol:CHROMA.currency.symbol,isoCode:CHROMA.currency.iso_code,showSymbol:!0,showIsoCode:CHROMA.currency.show_iso_code};if(o&&(o.innerText=T(e,void 0,l)??"",o.classList.toggle("text-sale",t),o.classList.toggle("text-primary",!t)),r&&(r.classList.toggle(h.HIDDEN,!t),t&&(r.innerText=T(i,void 0,l)||"")),n){const c=t?i-e:0;n.classList.toggle(h.HIDDEN,!t),n.innerText=t?`${CHROMA_TRANSLATIONS?.product?.savingsText} ${T(c,void 0,l)}`:""}},this.updateBadgesAndExchanges=(e,i)=>{const t=this.isPdp?this.parentElement:this.productMain,s=t?.querySelector(a.BADGES_SELECTOR),o=t?.querySelector(a.DISCOUNT_MESSAGE_SELECTOR),r=t?.querySelector(a.FINAL_SALE_SELECTOR),n=t?.querySelector(a.EXCHANGES_MESSAGE_SELECTOR),l=e?.toLowerCase()==="null",c=!!e&&!l;s?.classList.add(h.HIDDEN),o?.classList.add(h.BADGE_HIDDEN),r?.classList.add(h.BADGE_HIDDEN),n?.classList.remove(h.SHOW_DESKTOP),o&&(o.innerText=""),(c||i)&&s?.classList.remove(h.HIDDEN),c?(o?.classList.remove(h.BADGE_HIDDEN),o&&(o.innerText=e),r?.classList.add(h.BADGE_HIDDEN)):i&&(r?.classList.remove(h.BADGE_HIDDEN),n?.classList.add(h.SHOW_DESKTOP))},this.updateWishlistDialog=e=>{if(this.wishlistDialog?.setAttribute("data-id",e.toString()),!window.theWishlist)return;window.theWishlist.checkVariantInWishlist(e)?(this.wishlistDialogTitle&&(this.wishlistDialogTitle.innerText=CHROMA_TRANSLATIONS.wishlist.removeFromList),this.addRemoveWishlist&&(this.addRemoveWishlist.innerText=CHROMA_TRANSLATIONS.wishlist.removeFromList,this.addRemoveWishlist.setAttribute(u.DATA_FILLED,""))):(this.wishlistDialogTitle&&(this.wishlistDialogTitle.innerText=CHROMA_TRANSLATIONS.wishlist.addToList),this.addRemoveWishlist&&(this.addRemoveWishlist.innerText=CHROMA_TRANSLATIONS.wishlist.addToList,this.addRemoveWishlist.removeAttribute(u.DATA_FILLED)))},this.updateUrl=e=>{const i=new URL(window.location.href);i.searchParams.set("variant",e.toString()),window.history.replaceState({},"",i.toString())}
1,this.getSelectedVariant=()=>{const e=this.getCurrentVariant();return e?e.id:null},this.getCurrentVariant=()=>this.productData?this.productData.variants.find(e=>e.options.every((i,t)=>i===this.selectedOptions[t]))??null:null,this.updateAvailabilityStates=()=>{if(!this.productData)return;this.querySelectorAll(a.OPTION_VALUES).forEach(i=>{if(!(i instanceof HTMLInputElement))return;const t=i.getAttribute(u.PRODUCT_OPTION_NAME),s=i.getAttribute(u.PRODUCT_OPTION_VALUE_NAME);if(!t||!s)return;const o=this.isOptionCombinationAvailable(t,s),r=i.nextElementSibling;r&&r.classList.toggle("out-of-stock",!o)})},this.isOptionCombinationAvailable=(e,i)=>{if(!this.productData)return!1;const t=this.productData.options_with_values?.findIndex(r=>r.name===e)??this.productData.options?.findIndex(r=>r===e)??-1;if(t===-1)return!1;if(_.includes(e.toLowerCase()))return this.productData.variants.some(r=>r.options[t]===i&&r.available);const o=[...this.selectedOptions];return o[t]=i,this.productData.variants.some(r=>o.every((n,l)=>!n||r.options[l]===n)&&r.available)},this.updateAddToCartButtonState=e=>{if(!this.addToCartButton)return;const i=!!e?.available;this.addToCartButton.disabled=!i,this.addToCartButton.textContent=i?CHROMA_TRANSLATIONS.product.addToCart:CHROMA_TRANSLATIONS.product.soldOut},this.getProperties=()=>({}),this.addToCart=()=>{let e;try{e=this.getSelectedVariant()}catch(c){console.error(c);return}const i=this.addToCartQuantity?.getAttribute(p.QUANTITY_VALUE),t=i?parseInt(i,10):1,s={id:e,quantity:t,properties:this.getProperties()},o=this.dialogTrigger?.dataset.typeNosto??"",r=this.dialogTrigger?.dataset.resultId??null,n=this.dialogTrigger?.dataset.listIndex?Number(this.dialogTrigger.dataset.listIndex):void 0,l=this.dialogTrigger?g(o,{resultId:r}):void 0;if(window.cartService.addToCart(s,this.addToCartButton,{listContext:l,listIndex:Number.isFinite(n)?n:void 0}).catch(()=>{}),this.dialogTrigger&&o){if(o==="recommendation"&&r&&this.dialogTrigger.dataset.id){f(this.dialogTrigger.dataset.id,r);return}if(!this.dialogTrigger.dataset.id)return;O(o,this.dialogTrigger.dataset.id,`${window.location.origin}${window.Shopify.routes.root}products/${this.dialogTrigger.dataset.handle}`)}},this.validateGiftCardForm=()=>this.giftCardForm?this.giftCardForm.checkValidity()?!0:(this.giftCardForm.reportValidity(),!1):!1,this.addGiftCardToCart=async()=>{if(!this.getSelectedVariant()||!this.validateGiftCardForm()||!this.giftCardForm)return;let e=1;if(this.addToCartQuantity){const n=this.addToCartQuantity.getAttribute(p.QUANTITY_VALUE);e=n?parseInt(n,10):1}const i=new FormData(this.giftCardForm),t=Object.fromEntries(i.entries()),s={};t.sender_name&&typeof t.sender_name=="string"&&t.sender_name.trim()&&(s["Sender Name"]=t.sender_name.trim()),t.recipient_email&&typeof t.recipient_email=="string"&&t.recipient_email.trim()&&(s["Recipient Email"]=t.recipient_email.trim()),t.recipient_name&&typeof t.recipient_name=="string"&&t.recipient_name.trim()&&(s["Recipient Name"]=t.recipient_name.trim()),t.message&&typeof t.message=="string"&&t.message.trim()&&(s["Gift Card Message"]=t.message.trim());const o=t.send_on&&t.send_later&&t.send_later==="on";o&&typeof t.send_on=="string"&&t.send_on.trim()&&(s.EcertDeliveryDate=t.send_on.trim()),o&&(s["Send Later"]="Yes");const r={id:this.getSelectedVariant(),quantity:e,properties:Object.fromEntries(Object.entries(s).map(([n,l])=>[n,String(l)]))};try{await window.cartService.addToCart(r,this.addToCartButton),this.giftCardForm.reset()}catch(n){console.error("Error adding to cart:",n)}},this.updateVariantSku=e=>{if(!this.productVariantSku)return;const i=e.sku??null;i?(this.productVariantSku.textContent=i,this.productVariantSku.parentElement?.classList.remove(h.HIDDEN)):(this.productVariantSku.textContent="",this.productVariantSku.parentElement?.classList.add(h.HIDDEN))},this.trackViewItem=()=>{if(!this.isPdp||this.hasTrackedViewItem||!this.productData)return;const e=this.getCurrentVariant()??this.productData.variants[0]??null;if(!e)return;const i=m(),t=A({productId:this.productData.id,productTitle:this.productData.title,vendor:this.productData.vendor,productType:this.productData.type,variant:e,quantity:1});t.item_id&&(C("ee_view_item",{currency:i,value:t.price??0,items:[t]}),this.hasTrackedViewItem=!0)},this.isPdp=this.getAttribute(u.IS_PDP)==="true",this.addToCartButton=null,this.addToCartQuantity=null,this.optionValuesEls=[],this.selectedOptions=this.getSelectedOptions(),this.productMain=null,this.dialogTrigger=null,this.wishlistDialog=null,this.wishlistDialogTitle=null,this.addRemoveWishlist=null,this.productGallery=null,this.productGalleryModal=null,this.showMoreSwatches=[],this.giftCardForm=null,this.productVariantSku=null;const d=this.querySelector(a.PRODUCT_DATA);if(d)try{this.productData=JSON.parse(d.innerHTML)}catch(e){console.error(e),this.productData=null}}connectedCallback(){this.resolveElements(),this.addToCartButton?.addEventListener("click",this.onAddToCartClick),this.optionValuesEls.forEac
1h(d=>{d.addEventListener("change",this.updatedSelectedOption)}),this.showMoreSwatches.forEach(d=>{d.addEventListener("click",this.handleShowMoreSwatches)}),this.selectedOptions=this.getSelectedOptions(),this.isPdp&&(this.updateVariantState(),this.trackViewItem())}resolveElements(){this.addToCartButton=this.querySelector(a.ADD_TO_CART_BUTTON),this.addToCartQuantity=this.querySelector(a.ADD_TO_CART_QUANTITY),this.optionValuesEls=this.querySelectorAll(a.OPTION_VALUES),this.showMoreSwatches=this.querySelectorAll(a.SHOW_MORE_SWATCHES_SELECTOR),this.giftCardForm=this.querySelector(a.GIFT_CARD_FORM),this.clickAndCollect=this.querySelector(a.CLICK_AND_COLLECT_SELECTOR),this.productVariantSku=this.querySelector(a.PRODUCT_VARIANT_SKU_SELECTOR),this.productMain=this.closest(u.PRODUCT_MAIN),this.dialogTrigger=this.closest(a.PRODUCT_QUICK_ADD),this.wishlistDialog=this.closest(a.WISHLIST_DIALOG_SELECTOR),this.wishlistDialogTitle=this.wishlistDialog?.querySelector(a.WISHLIST_DIALOG_TITLE_SELECTOR)??null,this.addRemoveWishlist=this.wishlistDialog?.querySelector(a.ADD_REMOVE_WISHLIST_SELECTOR)??null,this.productGallery=this.productMain?.querySelector(a.PRODUCT_GALLERY)??null,this.productGalleryModal=this.productMain?.querySelector(a.PRODUCT_GALLERY_MODAL)??null}disconnectedCallback(){this.addToCartButton?.removeEventListener("click",this.onAddToCartClick),this.optionValuesEls.forEach(d=>{d.removeEventListener("change",this.updatedSelectedOption)}),this.showMoreSwatches.forEach(d=>{d.removeEventListener("click",this.handleShowMoreSwatches)})}updateVariantState(){const d=this.getCurrentVariant();d&&(!this.dialogTrigger&&!this.wishlistDialog&&this.updateUrl(d.id),this.updateAddToCartButtonState(d),this.updateAvailabilityStates())}handleShowMoreSwatches(){const d=this.parentElement;d&&(d.classList.contains(h.SHOW_MORE)?(d.classList.remove(h.SHOW_MORE),this.dataset.textShowMore&&(this.innerText=this.dataset.textShowMore)):(d.classList.add(h.SHOW_MORE),this.dataset.textShowLess&&(this.innerText=this.dataset.textShowLess)))}}customElements.get("product-form")||customElements.define("product-form",D);
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.