var Wt=Object.defineProperty;var at=(t,n)=>()=>(t&&(n=t(t=0)),n);var Jt=(t,n)=>{for(var e in n)Wt(t,e,{get:n[e],enumerable:!0})};function W(t){return typeof document>"u"?null:document.querySelector(`meta[name="${t}"]`)?.getAttribute("content")??null}function st(){let t=W("caddy-currency-decimals"),n=W("caddy-price-trim-zeros");return{currencySymbol:W("caddy-currency-symbol")||"",currencyDecimals:t!==null?parseInt(t,10):null,currencyDecimalSep:W("caddy-currency-dec-sep"),currencyThousandSep:W("caddy-currency-thousand-sep"),currencyPosition:W("caddy-currency-position"),priceTrimZeros:n==="1"?!0:n==="0"?!1:null}}function dt(){try{let{store:t}=window.wp?.interactivity||{};return t&&t("caddy/cart")?.state||null}catch{return null}}function St(t,n=null){return typeof n=="boolean"?n:t?.priceTrimZeros===!0}function _(t){let n=dt(),e=st(),o=parseFloat(t)||0,a=Number.isFinite(e.currencyDecimals)?e.currencyDecimals:n?.currencyDecimals??2,r=e.currencyDecimalSep||n?.currencyDecimalSep||".",c=e.currencyThousandSep||n?.currencyThousandSep||",",d=e.currencyPosition||n?.currencyPosition||"left",i=e.currencySymbol||n?.currencySymbol||"",l=o.toFixed(a).split(".");l[0]=l[0].replace(/\B(?=(\d{3})+(?!\d))/g,c);let p=l.join(r);switch(St(n,e.priceTrimZeros)&&(p=p.replace(new RegExp("\\"+r+"0+$"),"")),d){case"left":return i+p;case"right":return p+i;case"left_space":return i+" "+p;case"right_space":return p+" "+i;default:return i+p}}function A(t){let n=parseFloat(t)||0,e=dt(),o=st(),a=Number.isFinite(o.currencyDecimals)?o.currencyDecimals:e?.currencyDecimals??2,r=o.currencyDecimalSep||e?.currencyDecimalSep||".",c=o.currencyThousandSep||e?.currencyThousandSep||",",d=n.toFixed(a).split(".");d[0]=d[0].replace(/\B(?=(\d{3})+(?!\d))/g,c);let i=d.join(r);return St(e,o.priceTrimZeros)&&(i=i.replace(new RegExp("\\"+r+"0+$"),"")),i}function I(t){if(!t)return 0;let n=st(),e=dt(),o=Number.isFinite(n.currencyDecimals)?n.currencyDecimals:e?.currencyDecimals??2,a=Math.pow(10,o);return Math.round(parseFloat(t))/a}var G=at(()=>{});function Y(t){let n=document.createElement("textarea");return n.innerHTML=t,n.value}function ot(t){return Y(Y(t))}function tt(){let t=document.querySelector('meta[name="wc-placeholder-image"]');return t?t.getAttribute("content"):""}function Ct(t){if(!t)return tt();let n=new URL(t);return n.pathname=n.pathname.replace(/\/\/+/g,"/"),n.toString()}var rt=at(()=>{});import{store as Xt}from"@wordpress/interactivity";function _t(t){let n=Y(t||"").trim();return n?/^[a-z0-9]+(?:[-_][a-z0-9]+)+$/.test(n)?n.replace(/[-_]+/g," ").replace(/\b[a-z]/g,e=>e.toUpperCase()):n:""}function ut(t){let n=I(t.prices?.regular_price),e=I(t.prices?.sale_price),o=I(t.totals?.line_total);try{let{state:P}=Xt("caddy/cart");P?.taxDisplayCart==="incl"&&(o+=I(t.totals?.line_total_tax||"0"))}catch{}let a=e<n,r=a?e:n,c=r*t.quantity,d=n*t.quantity,i=e*t.quantity,l=0;a&&n>0&&(l=Math.round((n-e)/n*100));let p="";t.variation&&Array.isArray(t.variation)?p=t.variation.map(P=>_t(P.value)).filter(Boolean).join(", "):t.item_data&&Array.isArray(t.item_data)&&(p=t.item_data.map(P=>_t(P.display||P.value)).filter(Boolean).join(", "));let w=Y(t.name),f=t.type==="bundle",s=!!t.extensions?.bundles?.bundled_by,m=t.extensions?.bundles?.bundled_by||null,u="cc-cart-product-list cc-cart-item";f&&(u+=" bundle"),s&&(u+=" bundled_child");let h=t.quantity_limits||{},S=h.maximum||1/0,v=h.minimum||1,C=S===1,q=s&&v<S,x=s,b=!1,g=s&&!q,T=!f&&c===0&&d===0;return s&&!q&&(u+=" bundled_fixed_qty"),{cartKey:t.key,productId:t.id,quantity:t.quantity,name:w,variationText:p,price:A(c),priceHtml:_(c),regularPrice:n,regularLineTotal:d,regularPriceFormatted:A(d),regularPriceHtml:a?_(d):"",salePrice:A(i),unitPrice:r,isOnSale:a,savingsPercentage:l,lineTotal:o,lineTotalFormatted:t.totals?.line_total_formatted||_(o),image:Ct(t.images?.[0]?.thumbnail||t.images?.[0]?.src),permalink:t.permalink||`${window.location.origin}/?p=${t.id}`,isBundleContainer:f,isBundledItem:s,bundledBy:m,shouldHideControls:x,hideQuantity:b,hideQuantityButtons:g,hidePrice:T,itemClass:u,showSalePrice:a,showSavings:a&&l>0,soldIndividually:C,maxQuantity:S,minQuantity:v,isAtMinQty:t.quantity<=v,isAtMaxQty:t.quantity>=S}}function k(t){let n=t.map(e=>ut(e));for(let e of n)if(e.isBundleContainer&&parseFloat(e.price)===0){let o=n.filter(a=>a.bundledBy===e.cartKey);if(o.length>0){let a=o.reduce((r,c)=>r+(parseFloat(c.price)||0),0);a>0&&(e.price=A(a),e.priceHtml=_(a),e.regularLineTotal=a,e.regularPriceFormatted=A(a),e.lineTotal=a,e.lineTotalFormatted=_(a))}}return n}var mt=at(()=>{G();rt()});var At={};Jt(At,{initializeRecommendationsModule:()=>ee});import{store as D}from"@wordpress/interactivity";function $(t){return String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function J(t){return $(t)}function yt(t){if(!t)return"";try{let n=new URL(t,window.location.origin);if(n.protocol==="http:"||n.protocol==="https:")return n.href}catch{}return""}function gt(t,n){let e=$(n||"");t.innerHTML=`<p>${e}</p>`}function X(t,n,e){if(t?.i18n?.[n])return t.i18n[n];let o=document.querySelector(".cc-cart-container[data-label-add-to-cart]");if(!o?.dataset)return e;switch(n){case"addToCart":return o.dataset.labelAddToCart||e;case"seeOptions":return o.dataset.labelSeeOptions||e;case"viewProducts":return o.dataset.labelViewProducts||e;default:return e}}function te(t){t&&(t.i18n||(t.i18n={}),t.i18n.addToCart=t.i18n.addToCart||X(t,"addToCart","Add to cart"),t.i18n.seeOptions=t.i18n.seeOptions||X(t,"seeOptions","Select options"),t.i18n.viewProducts=t.i18n.viewProducts||X(t,"viewProducts","View products"))}function ee(t){let{updateCartTotals:n,updateAppliedCouponsDisplay:e}=t,o=null,a=[],r=!1;function c(){let s=document.getElementById("cc-store-api-recommendations");if(!s||s.dataset.enabled==="disabled")return;let{state:u}=D("caddy/cart");if(te(u),!r&&u.initialRecommendations&&u.initialRecommendations.length>0){if(r=!0,d(u.initialRecommendations,s),u.items&&u.items.length>0){let b=u.items.filter(T=>!T.isBundledItem);o=(b.length>0?b[b.length-1]:u.items[u.items.length-1]).productId,a=[...u.items.map(T=>T.productId)]}else o=0,a=[];return}if(!u.items||u.items.length===0){o!==0&&(o=0,a=[],i(0,s));return}let h=u.items.filter(b=>!b.isBundledItem),v=(h.length>0?h[h.length-1]:u.items[u.items.length-1]).productId,C=u.items.map(b=>b.productId),q=[...C].sort().join(","),x=[...a].sort().join(",");if(!(v===o&&q===x)){if(o=v,a=[...C],!v||v===0){i(null,s);return}i(v,s,C)}}function d(s,m){if(!s||s.length===0){let{state:h}=D("caddy/cart");gt(m,h.i18n?.recommendationsEmpty||"No recommendations available");return}let u=s.map((h,S)=>`<div class="cc-slide" data-product-index="${S}"></div>`).join("");m.innerHTML=u,w(),m.dataset.productsData=JSON.stringify(s),s.forEach((h,S)=>{l(S,h,m)}),f()}async function i(s,m,u=[]){try{m.innerHTML=`<div class="cc-slide" data-product-index="0" style="width: 400px;">
<div class="up-sells-product" style="width: 400px;">
<div class="cc-up-sells-image">
<div style="width: 95px; height: 95px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px;"></div>
</div>
<div class="cc-up-sells-details">
<div style="height: 18px; width: 160px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px; margin-bottom: 12px;"></div>
<div style="height: 16px; width: 90px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px; margin-bottom: 15px;"></div>
<div style="height: 38px; width: 120px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px;"></div>
</div>
</div>
</div>`,!s&&m&&(s=m.dataset.productId||m.getAttribute("data-product-id"),s=parseInt(s),(isNaN(s)||s===0)&&(s=null));let h;s?(h=`${window.location.origin}/wp-json/caddy/v1/recommendations/${s}?limit=3`,u.length>0&&(h+=`&exclude=${u.join(",")}`)):h=`${window.location.origin}/wp-json/wc/store/v1/products?per_page=3&orderby=popularity&_fields=id,name,permalink,prices,images,type`;let S=await fetch(h,{credentials:"same-origin",headers:{"Content-Type":"application/json"}});if(!S.ok){let{state:x}=D("caddy/cart");throw new Error(x.i18n.recommendationsLoadError)}let v=await S.json(),C=v.products||v;if(!C||C.length===0){let{state:x}=D("caddy/cart");gt(m,x.i18n.recommendationsEmpty);return}let q=C.map((x,b)=>b===0?`<div class="cc-slide" data-product-index="${b}" style="width: 400px;">
<div class="up-sells-product" style="width: 400px;">
<div class="cc-up-sells-image">
<div style="width: 95px; height: 95px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px;"></div>
</div>
<div class="cc-up-sells-details">
<div style="height: 18px; width: 160px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px; margin-bottom: 12px;"></div>
<div style="height: 16px; width: 90px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px; margin-bottom: 15px;"></div>
<div style="height: 38px; width: 120px; background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: cc-skeleton-loading 1.5s infinite; border-radius: 4px;"></div>
</div>
</div>
</div>`:`<div class="cc-slide" data-product-index="${b}"></div>`).join("");m.innerHTML=q,w(),m.dataset.productsData=JSON.stringify(C),setTimeout(()=>{l(0,C[0],m),p(C,m)},10)}catch{let{state:S}=D("caddy/cart");gt(m,S.i18n.recommendationsLoadError)}}function l(s,m,u){let h=u.querySelector(`[data-product-index="${s}"]`);if(!h||h.dataset.populated==="true")return;let S=m.prices?.sale_price?I(m.prices.sale_price):null,v=m.prices?.regular_price?I(m.prices.regular_price):null,C=S&&S<v,q="";C&&v&&S?q=`
<del><span class="woocommerce-Price-amount amount">${$(_(v))}</span></del>
<span class="woocommerce-Price-amount amount">${$(_(S))}</span>
`:v&&(q=`<span class="woocommerce-Price-amount amount">${$(_(v))}</span>`);let x=m.images&&m.images[0]?m.images[0].thumbnail||m.images[0].src:null,b=yt(x)||yt(tt()),g=ot(m.name||""),T=$(g),P=yt(m.permalink)||"#",R=Number.parseInt(m.id,10)||0,N=x?`<img src="${J(b)}" alt="${T}" loading="lazy" class="attachment-woocommerce_thumbnail" />`:`<img src="${J(b)}" alt="${T}" loading="lazy" class="attachment-woocommerce_thumbnail wc-placeholder" />`,H=m.type==="variable",ct=m.type==="grouped",{state:K}=D("caddy/cart"),vt=K.i18n||{},nt="";H?nt=`<a href="${J(P)}" class="button product_type_variable">${$(X(K,"seeOptions","Select options"))}</a>`:ct?nt=`<a href="${J(P)}" class="button product_type_grouped">${$(X(K,"viewProducts","View products"))}</a>`:nt=`<a href="?add-to-cart=${R}" class="button product_type_simple add_to_cart_button" data-product_id="${R}" data-quantity="1">${$(X(K,"addToCart","Add to cart"))}</a>`;let Kt=`
<div class="up-sells-product">
<div class="cc-up-sells-image">
<a href="${J(P)}">${N}</a>
</div>
<div class="cc-up-sells-details">
<a href="${J(P)}" class="title">${T}</a>
<div class="cc_item_total_price">
<span class="price">${q}</span>
</div>
${nt}
</div>
</div>
`;h.innerHTML=Kt,h.dataset.populated="true"}function p(s,m){et&&(et.disconnect(),et=null);let u=new Set,h=v=>{v>0&&!u.has(v)&&s[v]&&(u.add(v),l(v,s[v],m),f())};m.parentElement&&(et=new MutationObserver(()=>{let v=m.style.transform;if(v){let C=v.match(/translateX\(([-\d.]+)%\)/);if(C){let q=parseFloat(C[1]),x=100/s.length,b=Math.round(Math.abs(q)/x);h(b),h(b+1)}}}),et.observe(m,{attributes:!0,attributeFilter:["style"]})),f()}function w(){let s=document.querySelector(".cc-pl-recommendations"),m=s?.querySelectorAll(".cc-slide"),u=document.querySelector(".caddy-prev"),h=document.querySelector(".caddy-next");if(!s||!m||m.length===0)return;if(u){let g=u.cloneNode(!0);u.parentNode.replaceChild(g,u)}if(h){let g=h.cloneNode(!0);h.parentNode.replaceChild(g,h)}let S=document.querySelector(".caddy-prev"),v=document.querySelector(".caddy-next"),C=0,q=m.length,x=s.parentElement;x&&(x.style.overflow="hidden",x.style.position="relative"),s.style.display="flex",s.style.transition="transform 0.3s ease",s.style.width=`${q*100}%`,m.forEach(g=>{g.style.flex="0 0 auto",g.style.width=`${100/q}%`,g.style.paddingRight="10px",g.style.boxSizing="border-box"});function b(){let g=-(C*(100/q));s.style.transform=`translateX(${g}%)`,S&&(S.style.opacity=C>0?"1":"0.1",S.style.pointerEvents=C>0?"auto":"none"),v&&(v.style.opacity=C<q-1?"1":"0.1",v.style.pointerEvents=C<q-1?"auto":"none")}[v,S].forEach(g=>{g&&(g.style.userSelect="none",g.style.webkitUserSelect="none",g.style.cursor="pointer",g.style.outline="none")}),v&&v.addEventListener("click",g=>{g.preventDefault(),g.stopPropagation(),C<q-1&&(C++,b())}),S&&S.addEventListener("click",g=>{g.preventDefault(),g.stopPropagation(),C>0&&(C--,b())}),b()}function f(){let s=document.querySelector(".cc-pl-recommendations");if(!s)return;s.querySelectorAll("a.add_to_cart_button").forEach(u=>{u.dataset.caddyRecHandled!=="true"&&(u.dataset.caddyRecHandled="true",u.addEventListener("click",async h=>{if(u.classList.contains("product_type_variable")||u.classList.contains("product_type_grouped")||!u.classList.contains("add_to_cart_button"))return;h.preventDefault(),h.stopPropagation();let S=u.dataset.product_id||u.getAttribute("data-product_id"),v=u.dataset.quantity||1;if(!S)return;let C=u.textContent,{state:q}=D("caddy/cart");u.textContent=q.i18n.adding,u.classList.add("loading");try{let x={id:parseInt(S),quantity:parseInt(v)},b=`${window.location.origin}/wp-json/wc/store/v1/cart/add-item`,g=null,T=document.querySelector('meta[name="wc-store-api-nonce"]');T&&(g=T.getAttribute("content"));let P={"Content-Type":"application/json"};g&&(P.Nonce=g);let R=await fetch(b,{method:"POST",credentials:"same-origin",headers:P,body:JSON.stringify(x)});if(R.ok){let N=await R.json(),H=D("caddy/cart"),ct=k(N.items);H.state.items=ct,H.state.cartCount=N.items_count,H.state.isItemSingular=N.items_count===1,n(H.state,N),H.state.coupons=N.coupons||[],H.state.discountTotal=N.totals.total_discount?I(N.totals.total_discount):0,e(N.coupons||[]),document.dispatchEvent(new CustomEvent("wc_add_to_cart",{detail:{productId:S,quantity:v}})),c();let{state:K}=D("caddy/cart");K.isOpen||setTimeout(()=>{D("caddy/cart").actions.openCart("cart",!0)},100);let{state:vt}=D("caddy/cart");u.textContent=vt.i18n.addedCheckmark,setTimeout(()=>{u.textContent=C},1500)}else{let{state:N}=D("caddy/cart");u.textContent=N.i18n.error||"Error",u.classList.remove("loading"),setTimeout(()=>{u.textContent=C},2e3)}}catch{let{state:b}=D("caddy/cart");u.textContent=b.i18n.error||"Error",u.classList.remove("loading"),setTimeout(()=>{u.textContent=C},2e3)}}))})}return{initializeRecommendations:c}}var et,Et=at(()=>{rt();mt();G();et=null});G();import{store as y,getContext as B}from"@wordpress/interactivity";function lt(t){let n=t.headers.get("Nonce")||t.headers.get("X-WC-Store-API-Nonce");if(n){let e=document.querySelector('meta[name="wc-store-api-nonce"]');e&&e.setAttribute("content",n)}}mt();function pt(t,n=300,e){t.style.transitionProperty="height, margin, padding",t.style.transitionDuration=n+"ms",t.style.boxSizing="border-box",t.style.height=t.offsetHeight+"px",t.offsetHeight,t.style.overflow="hidden",t.style.height=0,t.style.paddingTop=0,t.style.paddingBottom=0,t.style.marginTop=0,t.style.marginBottom=0,window.setTimeout(()=>{t.style.display="none",t.style.removeProperty("height"),t.style.removeProperty("padding-top"),t.style.removeProperty("padding-bottom"),t.style.removeProperty("margin-top"),t.style.removeProperty("margin-bottom"),t.style.removeProperty("overflow"),t.style.removeProperty("transition-duration"),t.style.removeProperty("transition-property"),e&&e()},n)}function bt(t,n=300,e){t.style.removeProperty("display");let o=window.getComputedStyle(t).display;o==="none"&&(o="block"),t.style.display=o;let a=t.offsetHeight;t.style.overflow="hidden",t.style.height=0,t.style.paddingTop=0,t.style.paddingBottom=0,t.style.marginTop=0,t.style.marginBottom=0,t.offsetHeight,t.style.boxSizing="border-box",t.style.transitionProperty="height, margin, padding",t.style.transitionDuration=n+"ms",t.style.height=a+"px",t.style.removeProperty("padding-top"),t.style.removeProperty("padding-bottom"),t.style.removeProperty("margin-top"),t.style.removeProperty("margin-bottom"),window.setTimeout(()=>{t.style.removeProperty("height"),t.style.removeProperty("overflow"),t.style.removeProperty("transition-duration"),t.style.removeProperty("transition-property"),e&&e()},n)}rt();var Tt={matches(t){return t.classList.contains("bundle_form")},buildApiData(t,n){let e={},o=new Set;t.querySelectorAll('input[name^="bundle_selected_optional_"]').forEach(r=>{let c=r.name.match(/^bundle_selected_optional_(\d+)$/);c&&o.add(c[1])});for(let[r,c]of n.entries()){let d;if(d=r.match(/^bundle_quantity_(\d+)$/)){let i=d[1];e[i]||(e[i]={bundled_item_id:parseInt(i)});let l=parseInt(c);e[i].quantity=isNaN(l)?1:l}else if(d=r.match(/^bundle_variation_id_(\d+)$/)){let i=d[1];e[i]||(e[i]={bundled_item_id:parseInt(i)});let l=parseInt(c)||0;l>0&&(e[i].variation_id=l)}else if(d=r.match(/^bundle_(attribute_[^_]+(?:_[^_]+)*)_(\d+)$/)){let i=d[1],l=d[2];e[l]||(e[l]={bundled_item_id:parseInt(l)}),e[l].attributes||(e[l].attributes=[]),e[l].attributes.push({name:i.replace("attribute_",""),option:c})}else if(d=r.match(/^bundle_selected_optional_(\d+)$/)){let i=d[1];e[i]||(e[i]={bundled_item_id:parseInt(i)}),e[i].optional_selected=!0}}let a=Object.values(e).filter(r=>{let c=String(r.bundled_item_id);return!(o.has(c)&&r.optional_selected!==!0||r.quantity===0)});return a.length>0?{bundle_configuration:a}:null}};var xt={matches(t){return t.querySelector(".bundle_data")&&!t.classList.contains("bundle_form")},buildApiData(){return null},async afterAddToCart(t,n,e,{refreshCartFromServer:o,initializeRecommendations:a,storeApiUrl:r,headers:c}){let d=t.querySelector(".bundle_data"),l=JSON.parse(d.getAttribute("data-bundle_form_data")||"{}").product_ids||{},p=!1,w={};for(let[f,s]of n.entries()){let m;if(m=f.match(/^bundle_quantity_(\d+)$/)){let u=m[1];w[u]||(w[u]={}),w[u].quantity=parseInt(s)||0}else if(m=f.match(/^bundle_selected_optional_(\d+)$/)){let u=m[1];w[u]||(w[u]={}),w[u].selected=!0}}for(let[f,s]of Object.entries(w)){if(s.selected!==!0||!s.quantity||s.quantity<=0)continue;let m=l[f];m&&(await fetch(r,{method:"POST",credentials:"same-origin",headers:c,body:JSON.stringify({id:parseInt(m),quantity:s.quantity})}),p=!0)}p&&(await o(),a())}};var qt=[Tt,xt];G();import{store as U}from"@wordpress/interactivity";function Lt(){document.addEventListener("click",function(t){if(t.target.closest(".cc-coupon-title")){t.preventDefault();let e=document.querySelector(".cc-coupon-form"),o=document.querySelector(".cc-coupon");e&&o&&(window.getComputedStyle(e).display==="none"?(o.classList.add("cc-coupon-open"),bt(e,300)):pt(e,300,function(){o.classList.remove("cc-coupon-open")}))}}),document.addEventListener("click",function(t){if(t.target.matches(".cc-coupon .woocommerce-error")){let n=t.target;if(t.pageX-n.getBoundingClientRect().left>n.offsetWidth-40){let o=n.closest(".woocommerce-notices-wrapper");o&&(o.style.transition="opacity 200ms ease",o.style.opacity="0",setTimeout(()=>{o.style.display="none"},200))}}})}function Pt(t){document.addEventListener("submit",async function(n){if(n.target&&n.target.id==="apply_coupon_form"){n.preventDefault();let e=document.getElementById("cc_coupon_code"),o=e?e.value.trim():"";if(!o)return;await Gt(o,t)}}),document.addEventListener("click",async function(n){let e=n.target.closest(".cc-remove-coupon");if(e){n.preventDefault();let o=e.closest(".cc-applied-coupon"),a=o?o.querySelector(".cc_applied_code").textContent.trim():"";a&&await Yt(a,t)}})}function M(t){let n=document.querySelector(".cc-discounts");if(!n){t.length>0&&(Vt(t),It(t));return}if(t.length===0){n.style.display="none";return}n.style.display="";let e=n.querySelector(".cc-discount");e&&(e.innerHTML="",t.forEach(o=>{let a=Zt(o.code);e.appendChild(a)})),It(t)}function Vt(t){let n=document.querySelector(".cc-totals");if(n){let e=`
<div class="cc-discounts">
<div class="cc-discount">
${t.map(o=>ft(o.code)).join("")}
</div>
<div class="cc-savings"></div>
</div>
`;n.insertAdjacentHTML("beforebegin",e)}else{let e=document.querySelector(".cc-coupon");if(!e)return;let o=`
<div class="cc-discounts">
<div class="cc-discount">
${t.map(a=>ft(a.code)).join("")}
</div>
<div class="cc-savings"></div>
</div>
`;e.insertAdjacentHTML("afterend",o)}}function ft(t){let n=window.caddyConfig?.pluginDir||"/wp-content/plugins/caddy/",e=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");return`
<div class="cc-applied-coupon">
<img src="${n}public/img/tag-icon.svg" alt="Discount Code">
<span class="cc_applied_code">${e}</span>
<a href="javascript:void(0);" class="cc-remove-coupon"><i class="ccicon-close"></i></a>
</div>
`}function Zt(t){let n=document.createElement("div");return n.className="cc-applied-coupon",n.innerHTML=ft(t),n.firstElementChild}function It(t){let n=document.querySelector(".cc-savings");if(!n)return;let{state:e}=U("caddy/cart"),o=e.discountTotal||0;if(o===0&&e.items){let a=e.items.reduce((c,d)=>c+(d.lineTotal||0),0),r=e.cartSubtotal||0;o=a-r}o>0?n.innerHTML=`<span class="cc-discount-amount">-${_(o)}</span>`:n.innerHTML=""}async function Gt(t,n){let e=document.querySelector("#cc-cart");e&&(e.style.opacity="0.3");let o=document.querySelector(".cc-coupon .woocommerce-notices-wrapper");o&&(o.innerHTML="");try{let a=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),r=await fetch("/wp-json/wc/store/v1/cart/apply-coupon",{method:"POST",headers:{"Content-Type":"application/json",...a?{Nonce:a}:{}},credentials:"same-origin",body:JSON.stringify({code:t})}),c=await r.json();if(!r.ok){let{state:w}=U("caddy/cart");throw new Error(c.message||w.i18n.errorApplyCouponFailed)}let{state:d}=U("caddy/cart");n(d,c),d.coupons=c.coupons||[],d.discountTotal=c.totals.total_discount?parseFloat(c.totals.total_discount)/100:0,M(c.coupons||[]);let i=document.getElementById("cc_coupon_code");i&&(i.value="");let l=document.querySelector(".cc-coupon-form"),p=document.querySelector(".cc-coupon");l&&p&&pt(l,300,function(){p.classList.remove("cc-coupon-open")})}catch(a){if(o){let{state:r}=U("caddy/cart");for(;o.firstChild;)o.removeChild(o.firstChild);let c=document.createElement("div");c.className="woocommerce-error",c.setAttribute("role","alert"),c.textContent=a.message||r.i18n.errorApplyCouponTryAgain,o.appendChild(c)}}finally{e&&(e.style.opacity="1")}}async function Yt(t,n){let e=document.querySelector("#cc-cart");e&&(e.style.opacity="0.3");try{let o=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),a=await fetch("/wp-json/wc/store/v1/cart/remove-coupon",{method:"POST",headers:{"Content-Type":"application/json",...o?{Nonce:o}:{}},credentials:"same-origin",body:JSON.stringify({code:t})}),r=await a.json();if(!a.ok){let{state:d}=U("caddy/cart");throw new Error(r.message||d.i18n.errorRemoveCouponFailed)}let{state:c}=U("caddy/cart");n(c,r),c.coupons=r.coupons||[],c.discountTotal=r.totals.total_discount?parseFloat(r.totals.total_discount)/100:0,M(r.coupons||[])}catch(o){let a=document.querySelector(".cc-coupon .woocommerce-notices-wrapper");if(a){let{state:r}=U("caddy/cart");for(;a.firstChild;)a.removeChild(a.firstChild);let c=document.createElement("div");c.className="woocommerce-error",c.setAttribute("role","alert"),c.textContent=o.message||r.i18n.errorRemoveCouponTryAgain,a.appendChild(c)}}finally{e&&(e.style.opacity="1")}}var Rt=!1,Dt;function V(t,n){let e=y("caddy/cart")?.state;if(e?.i18n?.[t])return e.i18n[t];let o=document.querySelector(".cc-cart-container[data-label-add-to-cart]");if(!o?.dataset)return n;switch(t){case"addToCart":return o.dataset.labelAddToCart||n;case"seeOptions":return o.dataset.labelSeeOptions||n;case"viewProducts":return o.dataset.labelViewProducts||n;default:return n}}function ne(){let t=y("caddy/cart");t?.state&&(t.state.i18n||(t.state.i18n={}),t.state.i18n.addToCart=t.state.i18n.addToCart||V("addToCart","Add to cart"),t.state.i18n.seeOptions=t.state.i18n.seeOptions||V("seeOptions","Select options"),t.state.i18n.viewProducts=t.state.i18n.viewProducts||V("viewProducts","View products"))}var Qe=y("caddy/cart",{state:{get savedItemsCount(){let t=y("caddy/cart").state;return t.savedItems&&t.savedItems.length||0},get freeShippingRemainingFormatted(){return Ot()},get freeShippingPercentage(){return Ft()},get freeShippingAchieved(){return jt()},get recommendationTransform(){let t=y("caddy/cart").state,n=t.recommendationIndex||0,e=t._dragOffset||0;return e!==0?`translateX(calc(-${n*100}% + ${e}px))`:`translateX(-${n*100}%)`},get recommendationSliderWidth(){return"auto"},get isFirstRecommendation(){return(y("caddy/cart").state.recommendationIndex||0)===0},get isLastRecommendation(){let t=y("caddy/cart").state,n=t.recommendationIndex||0,e=t.recommendations&&t.recommendations.length||0;return n>=e-1}},actions:{async toggleCart(){let{state:t,actions:n}=y("caddy/cart");t.isOpen?n.closeCart():await n.openCart()},async openCart(t="cart",n=!1){let{state:e}=y("caddy/cart");if(e.isOpen=!0,document.body.classList.add("cc-window-open"),E(e.cartCount),e.recommendations!==void 0?it(e):$t(),!n&&!Rt)try{let o=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),a=await fetch("/wp-json/wc/store/v1/cart",{headers:o?{Nonce:o}:{}});if(lt(a),a.ok){let r=await a.json(),c=r.totals?.total_price||"0",d=String(Math.round((e.cartSubtotal||0)*100));if(e.cartCount!==r.items_count||c!==d){let i=k(r.items);e.items=i,e.cartCount=r.items_count,e.isItemSingular=r.items_count===1,O(e,r),E(e.cartCount),L(e.cartCount),e.coupons=r.coupons||[],setTimeout(()=>Ut(i),100),Z()}}}catch{}setTimeout(()=>{t==="saves"&&window._caddySwitchToSavedTab?window._caddySwitchToSavedTab():window._caddySwitchToCartTab&&window._caddySwitchToCartTab()},50)},closeCart(){let{state:t}=y("caddy/cart");t.isOpen=!1,document.body.classList.remove("cc-window-open")},handleHeaderBack(){let t=document.querySelector(".cc-screen-tab.cc-tab-active, .cc-screen-tab.cc-active:not(#cc-cart)");t&&t.id!=="cc-cart"?window._caddySwitchToCartTab?window._caddySwitchToCartTab():re("#cc-cart"):y("caddy/cart").actions.closeCart()},async increaseQuantity(){let t=B(),n=t.item.cartKey,e=t.item.quantity;if(t.item.isAtMaxQty)return;let o=e+1,{state:a}=y("caddy/cart"),r=a.items.findIndex(c=>c.cartKey===n);if(!(r!==-1&&a.items[r].hideQuantityButtons)&&!(r!==-1&&a.items[r].maxQuantity&&o>a.items[r].maxQuantity)&&!(r!==-1&&a.items[r].isUpdating)){if(r!==-1){a.items[r].isUpdating=!0;let d=a.items[r].unitPrice*o;if(a.items[r].quantity=o,a.items[r].isAtMinQty=o<=(a.items[r].minQuantity||1),a.items[r].isAtMaxQty=o>=(a.items[r].maxQuantity||1/0),delete a.items[r].price,a.items[r].price=A(d),a.items[r].priceHtml=_(d),a.items[r].lineTotal=d,a.cartCount=a.items.reduce((l,p)=>l+p.quantity,0),a.isItemSingular=a.cartCount===1,E(a.cartCount),L(a.cartCount),!(a.coupons&&a.coupons.length>0)){let l=a.items.reduce((p,w)=>p+(w.lineTotal||0),0);a.cartSubtotal=l,a.cartSubtotalFormatted=_(l),a.cartTotal=_(l),Q(a,!0)}}try{await Nt(n,o,r)}catch{if(r!==-1){let i=a.items[r].unitPrice*e;a.items[r].quantity=e,a.items[r].isAtMinQty=e<=(a.items[r].minQuantity||1),a.items[r].isAtMaxQty=e>=(a.items[r].maxQuantity||1/0),delete a.items[r].price,a.items[r].price=A(i),a.items[r].priceHtml=_(i),a.items[r].lineTotal=i,a.cartCount=a.items.reduce((l,p)=>l+p.quantity,0),a.isItemSingular=a.cartCount===1,Q(a),E(a.cartCount),L(a.cartCount)}}finally{r!==-1&&(a.items[r].isUpdating=!1)}}},async decreaseQuantity(){let t=B(),n=t.item.cartKey,e=t.item.quantity,{state:o}=y("caddy/cart"),a=o.items.findIndex(d=>d.cartKey===n);if(a!==-1&&o.items[a].hideQuantityButtons)return;let r=t.item.minQuantity||1;if(e<=r)return;let c=e-1;if(!(a!==-1&&o.items[a].isUpdating)){if(a!==-1){o.items[a].isUpdating=!0;let i=o.items[a].unitPrice*c;if(o.items[a].quantity=c,o.items[a].isAtMinQty=c<=(o.items[a].minQuantity||1),o.items[a].isAtMaxQty=c>=(o.items[a].maxQuantity||1/0),delete o.items[a].price,o.items[a].price=A(i),o.items[a].priceHtml=_(i),o.items[a].lineTotal=i,o.cartCount=o.items.reduce((p,w)=>p+w.quantity,0),o.isItemSingular=o.cartCount===1,E(o.cartCount),L(o.cartCount),!(o.coupons&&o.coupons.length>0)){let p=o.items.reduce((w,f)=>w+(f.lineTotal||0),0);o.cartSubtotal=p,o.cartSubtotalFormatted=_(p),o.cartTotal=_(p),Q(o,!0)}}try{await Nt(n,c,a)}catch{if(a!==-1){let l=o.items[a].unitPrice*e;o.items[a].quantity=e,o.items[a].isAtMinQty=e<=(o.items[a].minQuantity||1),o.items[a].isAtMaxQty=e>=(o.items[a].maxQuantity||1/0),delete o.items[a].price,o.items[a].price=A(l),o.items[a].priceHtml=_(l),o.items[a].lineTotal=l,o.cartCount=o.items.reduce((p,w)=>p+w.quantity,0),o.isItemSingular=o.cartCount===1,Q(o),E(o.cartCount),L(o.cartCount)}}finally{a!==-1&&(o.items[a].isUpdating=!1)}}},async removeItem(){let n=B().item.cartKey,{state:e}=y("caddy/cart"),o=e.items.findIndex(c=>c.cartKey===n);if(o===-1)return;let a=e.items[o];if(e.items.splice(o,1),a.isBundleContainer)for(let c=e.items.length-1;c>=0;c--)e.items[c].bundledBy===n&&e.items.splice(c,1);e.cartCount=e.items.reduce((c,d)=>c+d.quantity,0),e.isItemSingular=e.cartCount===1,E(e.cartCount),L(e.cartCount);let r=e.items.reduce((c,d)=>c+d.lineTotal,0);e.cartSubtotal=Math.round(r*100)/100,Q(e,!0),F.add(n);try{await oe(()=>Ht(n)),F.delete(n)}catch(c){F.delete(n),console.error("ERROR in removeItem:",c,{cartKey:n,itemName:a.name}),await j()}finally{e.isLoading=!1}},updateTotals(){let{state:t}=y("caddy/cart"),n=t.items.reduce((e,o)=>e+o.lineTotal,0);t.cartTotal=_(n),t.cartSubtotal=n,t.cartSubtotalFormatted=_(n),t.cartCount=t.items.reduce((e,o)=>e+o.quantity,0),t.isItemSingular=t.cartCount===1},prevRecommendation(){let{state:t}=y("caddy/cart");t.recommendationIndex>0&&t.recommendationIndex--},nextRecommendation(){let{state:t}=y("caddy/cart"),n=t.recommendations&&t.recommendations.length||0;t.recommendationIndex<n-1&&t.recommendationIndex++},onSliderPointerDown(t){let{state:n}=y("caddy/cart");if(t.button&&t.button!==0)return;n._isDragging=!1,n._dragStartX=t.clientX,n._dragOffset=0;let e=t.target.closest(".cc-pl-recommendations");e&&(e.style.transition="none")},onSliderPointerMove(t){let{state:n}=y("caddy/cart");if(typeof n._dragStartX>"u"||n._dragStartX===null)return;let e=t.clientX-n._dragStartX;Math.abs(e)>5&&(n._isDragging=!0,n._dragOffset=e)},onSliderPointerUp(t){let{state:n}=y("caddy/cart");if(!n._isDragging){n._dragStartX=void 0;return}let e=n._dragOffset||0;n._dragOffset=0,n._dragStartX=void 0,n._isDragging=!1;let o=t.target.closest(".cc-pl-recommendations");o&&(o.style.transition="");let a=t.target.closest(".cc-pl-upsells-wrapper");if(a){let c=d=>{d.preventDefault(),d.stopPropagation()};a.addEventListener("click",c,{capture:!0,once:!0})}let r=n.recommendations&&n.recommendations.length||0;e<-50&&n.recommendationIndex<r-1?n.recommendationIndex++:e>50&&n.recommendationIndex>0&&n.recommendationIndex--},async addRecommendationToCart(){let n=B().rec;if(!n||!n.id)return;let{state:e}=y("caddy/cart"),o=e.recommendations.findIndex(a=>a.id===n.id);o!==-1&&(e.recommendations[o].isAdding=!0);try{let a=`${window.location.origin}/wp-json/wc/store/v1/cart/add-item`,r=null,c=document.querySelector('meta[name="wc-store-api-nonce"]');c&&(r=c.getAttribute("content"));let d={"Content-Type":"application/json"};r&&(d.Nonce=r);let i=await fetch(a,{method:"POST",credentials:"same-origin",headers:d,body:JSON.stringify({id:parseInt(n.id),quantity:1})});if(i.ok){let l=await i.json(),p=k(l.items);e.items=p,e.cartCount=l.items_count,e.isItemSingular=l.items_count===1,O(e,l),E(e.cartCount),L(e.cartCount),e.coupons=l.coupons||[],e.discountTotal=z(e,l),M(l.coupons||[]),window._caddyAddingToCart=!0,document.dispatchEvent(new CustomEvent("wc_add_to_cart",{detail:{productId:n.id,quantity:1}})),window._caddyAddingToCart=!1,await it(e)}}catch(a){console.error("Error adding recommendation to cart:",a)}finally{o!==-1&&e.recommendations[o]&&(e.recommendations[o].isAdding=!1)}}},callbacks:{updateFreeShippingMeter(){let{state:t}=y("caddy/cart");if(Dt===t.cartSubtotal)return;Dt=t.cartSubtotal;let n=document.querySelector(".cc-fs-amount");if(n){let o=Ot();n.innerHTML=o}let e=document.querySelector(".cc-fs-meter-used");if(e){let o=Ft();e.style.width=o,jt()?e.classList.add("cc-bar-active"):e.classList.remove("cc-bar-active")}},cleanupServerRendered(){let{state:t}=y("caddy/cart");if(!t.items||t.items.length===0)return;document.querySelectorAll(".cc-cart-item:not(.cc-ssr-item)").length>0&&document.querySelectorAll(".cc-ssr-item").forEach(o=>{o.remove()})},async init(){let{state:t}=y("caddy/cart"),n=B();ne(),$t(),n&&n.autoOpen&&t.cartCount>0&&new URLSearchParams(window.location.search).get("add-to-cart")&&setTimeout(()=>{y("caddy/cart").actions.openCart()},100),document.addEventListener("wc_cart_emptied",()=>{t.items=[],t.cartCount=0,t.cartTotal=_(0),t.cartSubtotal=0,t.cartSubtotalFormatted=_(0),L(t.cartCount)}),document.addEventListener("click",a=>{if(a.target.closest(".cc_cart_items_list")){a.preventDefault(),y("caddy/cart").actions.openCart();return}if(a.target.closest(".cc_saved_items_list")){a.preventDefault(),y("caddy/cart").actions.openCart("saves");return}}),document.addEventListener("wc_add_to_cart",async()=>{if(!(window._caddyMovingToCart||window._caddyAddingToCart))try{await j();let{state:a}=y("caddy/cart");a.items&&a.items.length>0&&Z()}catch{}}),document.addEventListener("keydown",a=>{a.key==="Escape"&&t.isOpen&&y("caddy/cart").actions.closeCart()});let e=document.querySelectorAll('form.cart, form.variations_form, .woocommerce form[action*="add-to-cart"], form:has(input[name="add-to-cart"]), form:has(input[name="product_id"])'),o=document.querySelectorAll("a.add_to_cart_button, .wc-block-grid__product-add-to-cart a");e.forEach(a=>{a.dataset.caddyIntercepted="true",a.onsubmit=null;let r=a.submit;a.submit=function(){return!1},a.addEventListener("submit",async c=>{c.preventDefault(),c.stopImmediatePropagation();let d=new FormData(a),i=a.querySelector('button[name="add-to-cart"], input[name="add-to-cart"]'),l=d.get("add-to-cart")||d.get("product_id")||i&&i.value,p=parseInt(d.get("quantity"))||1,w=d.get("variation_id")||"";t.isLoading=!0;let f=a.querySelector('[type="submit"]'),s=f?f.textContent:"";f&&(f.textContent=t.i18n.adding,f.disabled=!0);try{let m=a.classList.contains("bundle_form"),u=parseInt(w)||0,h={id:u>0&&!m?u:parseInt(l),quantity:parseInt(p)};if(u>0){let g=[];for(let[T,P]of d.entries())T.startsWith("attribute_")&&g.push({attribute:T.replace("attribute_",""),value:P});g.length>0&&(h.variation=g)}let S=qt.filter(g=>g.matches(a,d));for(let g of S){let T=g.buildApiData(a,d,l);T&&Object.assign(h,T)}let v=`${window.location.origin}/wp-json/wc/store/v1/cart/add-item`,C=null,q=document.querySelector('meta[name="wc-store-api-nonce"]');q&&(C=q.getAttribute("content"));let x={"Content-Type":"application/json"};C&&(x.Nonce=C);let b=await fetch(v,{method:"POST",credentials:"same-origin",headers:x,body:JSON.stringify(h)});if(b.ok){let g=await b.json(),T=y("caddy/cart"),P=k(g.items);T.state.items=P,T.state.cartCount=g.items_count,T.state.isItemSingular=g.items_count===1,O(T.state,g),E(T.state.cartCount),L(T.state.cartCount),T.state.cartHash=g.cartHash||"updated",T.state.coupons=g.coupons||[],T.state.discountTotal=z(T.state,g),M(g.coupons||[]),window._caddyAddingToCart=!0,document.dispatchEvent(new CustomEvent("wc_add_to_cart",{detail:{productId:l,quantity:p,variation:w}})),window._caddyAddingToCart=!1;for(let R of S)R.afterAddToCart&&await R.afterAddToCart(a,d,g,{refreshCartFromServer:j,initializeRecommendations:Z,storeApiUrl:v,headers:x});setTimeout(()=>{y("caddy/cart").actions.openCart("cart",!0)},100),f&&(f.textContent=t.i18n.added,setTimeout(()=>{f&&(f.textContent=s)},1500))}else{let g="";try{g=(await b.json()).message||""}catch{g=""}throw new Error(g||`Store API returned status: ${b.status}`)}}catch(m){let u=m.message||t.i18n.errorTryAgain,h=a.closest(".product")?.querySelector(".woocommerce-notices-wrapper")||document.querySelector(".woocommerce-notices-wrapper");if(h){for(;h.firstChild;)h.removeChild(h.firstChild);let S=document.createElement("ul");S.className="woocommerce-error",S.setAttribute("role","alert");let v=document.createElement("li");v.textContent=u.replace(/&quot;/g,'"').replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#039;/g,"'"),S.appendChild(v),h.appendChild(S),h.scrollIntoView({behavior:"smooth",block:"nearest"})}f&&(f.textContent=s)}finally{t.isLoading=!1,f&&(f.disabled=!1)}return!1},!0)}),o.forEach(a=>{a.dataset.caddyIntercepted="true",a.addEventListener("click",async r=>{if(a.classList.contains("product_type_variable")||a.classList.contains("product_type_grouped")||!a.classList.contains("add_to_cart_button"))return;r.preventDefault(),r.stopPropagation();let c=a.dataset.product_id||a.getAttribute("data-product_id"),d=a.dataset.quantity||1;if(c){t.isLoading=!0,a.classList.add("loading"),a.disabled=!0;try{let i=`${window.location.origin}/wp-json/wc/store/v1/cart/add-item`,l=null,p=document.querySelector('meta[name="wc-store-api-nonce"]');p&&(l=p.getAttribute("content"));let w={"Content-Type":"application/json"};l&&(w.Nonce=l);let f=await fetch(i,{method:"POST",credentials:"same-origin",headers:w,body:JSON.stringify({id:c,quantity:parseInt(d)})});if(f.ok){let s=await f.json(),m=y("caddy/cart"),u=k(s.items);m.state.items=u,m.state.cartCount=s.items_count,m.state.isItemSingular=s.items_count===1,O(m.state,s),E(m.state.cartCount),L(m.state.cartCount),m.state.cartHash=s.cartHash||"updated",m.state.coupons=s.coupons||[],m.state.discountTotal=z(m.state,s),M(s.coupons||[]),window._caddyAddingToCart=!0,document.dispatchEvent(new CustomEvent("wc_add_to_cart",{detail:{productId:c,quantity:d}})),window._caddyAddingToCart=!1,setTimeout(()=>{y("caddy/cart").actions.openCart("cart",!0)},100),a.classList.remove("loading"),a.classList.add("added"),setTimeout(()=>{a.classList.remove("added")},1500)}else{let{state:s}=y("caddy/cart");throw new Error(s.i18n.errorAddToCartFailed)}}catch{window.location.href=a.href}finally{t.isLoading=!1,a.classList.remove("loading"),a.disabled=!1}}})})},debugPricing(){let{state:t}=y("caddy/cart"),n=B()},debugSavings(){let t=B()},debugCartItem(){let t=B()}}});document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll('form.cart, form.variations_form, form:has(input[name="add-to-cart"]), form:has(input[name="product_id"])').forEach(e=>{e.addEventListener("submit",async function(o){if(e.dataset.caddyIntercepted==="true")return;o.preventDefault();let a=new FormData(e),r=e.querySelector('button[name="add-to-cart"]')?.value||a.get("add-to-cart")||a.get("product_id")||e.querySelector('input[name="add-to-cart"]')?.value,c=parseInt(a.get("quantity"))||1,d=a.get("variation_id")||0,i=e.querySelector('[type="submit"]'),l=i?.textContent||"",{state:p}=y("caddy/cart");i&&(i.textContent=p.i18n.adding,i.disabled=!0);try{let w=new URLSearchParams;w.append("add-to-cart",r);for(let[s,m]of a.entries())(s.startsWith("quantity[")||s.startsWith("attribute_")||s==="variation_id")&&w.append(s,m);if(e.querySelector('input[name^="quantity["]')||(w.append("quantity",c),d&&w.append("variation_id",d)),(await fetch(window.location.href,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:w})).ok){if(await j(),y("caddy/cart").actions.openCart("cart",!0),i){let{state:s}=y("caddy/cart");i.textContent=s.i18n.added,setTimeout(()=>{i&&(i.textContent=l)},1500)}}else{let{state:s}=y("caddy/cart");throw new Error(s.i18n.errorAddToCartFailed)}}catch{if(i){let{state:f}=y("caddy/cart");i.textContent=f.i18n.error,setTimeout(()=>{i&&(i.textContent=l)},2e3)}}finally{i&&(i.disabled=!1)}})}),document.querySelectorAll("a.add_to_cart_button, .wc-block-grid__product-add-to-cart a, .woocommerce ul.products li.product .button[data-product_id]").forEach(e=>{e.addEventListener("click",async function(o){if(this.dataset.caddyIntercepted==="true"||this.classList.contains("product_type_variable")||this.classList.contains("product_type_grouped")||!this.classList.contains("add_to_cart_button"))return;o.preventDefault(),o.stopPropagation();let a=this.dataset.product_id||this.getAttribute("data-product_id"),r=parseInt(this.dataset.quantity)||1;if(a){this.disabled=!0,this.classList.add("loading");try{let c={id:parseInt(a),quantity:parseInt(r)},d=`${window.location.origin}/wp-json/wc/store/v1/cart/add-item`,i=null,l=document.querySelector('meta[name="wc-store-api-nonce"]');l&&(i=l.getAttribute("content"));let p={"Content-Type":"application/json"};i&&(p.Nonce=i);let w=await fetch(d,{method:"POST",credentials:"same-origin",headers:p,body:JSON.stringify(c)});if(w.ok){let f=await w.json(),s=y("caddy/cart"),m=k(f.items);s.state.items=m,s.state.cartCount=f.items_count,s.state.isItemSingular=f.items_count===1,O(s.state,f),E(s.state.cartCount),L(s.state.cartCount),s.state.coupons=f.coupons||[],s.state.discountTotal=z(s.state,f),M(f.coupons||[]),y("caddy/cart").actions.openCart("cart",!0),this.classList.remove("loading"),this.classList.add("added"),setTimeout(()=>{this.classList.remove("added")},1500)}else{let f=await w.text();throw new Error(`Store API returned status: ${w.status} - ${f}`)}}catch{}finally{this.disabled=!1,this.classList.remove("loading")}}})})});async function Nt(t,n,e){let o=`${window.location.origin}/wp-json/wc/store/v1/cart/items/${t}`,a=null,r=document.querySelector('meta[name="wc-store-api-nonce"]');r&&(a=r.getAttribute("content"));let c={"Content-Type":"application/json"};a&&(c.Nonce=a);let d={quantity:parseInt(n)},i=await fetch(o,{method:"PUT",headers:c,credentials:"same-origin",body:JSON.stringify(d)});if(!i.ok){let f=await i.text(),{state:s}=y("caddy/cart");throw new Error(s.i18n.errorUpdateFailed)}let l=await i.json(),p=y("caddy/cart"),w=p.state.items.findIndex(f=>f.cartKey===l.key);if(w!==-1){let f=p.state.items[w];f.quantity=l.quantity;let s=I(l.totals.line_subtotal);p.state.taxDisplayCart==="incl"&&(s+=I(l.totals.line_subtotal_tax||0)),f.lineTotal=s,delete f.price,f.price=A(s),f.priceHtml=_(s),p.state.cartCount=p.state.items.reduce((m,u)=>m+u.quantity,0),p.state.isItemSingular=p.state.cartCount===1,Q(p.state),E(p.state.cartCount),L(p.state.cartCount)}return document.dispatchEvent(new CustomEvent("caddy_cart_updated",{detail:{item:l}})),zt(),{success:!0}}async function Ht(t){let n=`${window.location.origin}/wp-json/wc/store/v1/cart/items/${t}`,e=null,o=document.querySelector('meta[name="wc-store-api-nonce"]');o&&(e=o.getAttribute("content"));let a={"Content-Type":"application/json"};e&&(a.Nonce=e);let r=await fetch(n,{method:"DELETE",headers:a,credentials:"same-origin",keepalive:!0});if(!r.ok){let i;try{i=await r.json()}catch{i=await r.text()}console.error("Failed to remove cart item:",{status:r.status,statusText:r.statusText,cartKey:t,url:n,error:i,currentCartState:y("caddy/cart").state.items.map(p=>({key:p.cartKey,name:p.name}))});let{state:l}=y("caddy/cart");throw new Error(l.i18n.errorRemoveFailed)}let c=r.headers.get("content-type"),d=null;if(c&&c.includes("application/json")){let i=await r.text();if(i&&i.trim().length>0)try{d=JSON.parse(i)}catch{console.warn("DELETE response is not valid JSON, skipping cart data update:",i)}}if(d){let i=y("caddy/cart"),l=k(d.items),p=F.size>0?l.filter(s=>!F.has(s.cartKey)):l,w=new Set(i.state.items.map(s=>s.cartKey)),f=new Set(p.map(s=>s.cartKey));for(let s=i.state.items.length-1;s>=0;s--)f.has(i.state.items[s].cartKey)||i.state.items.splice(s,1);i.state.cartCount=i.state.items.reduce((s,m)=>s+m.quantity,0),E(i.state.cartCount),L(i.state.cartCount),Q(i.state),i.state.cartHash=d.cartHash||"updated",i.state.coupons=d.coupons||[],i.state.discountTotal=z(i.state,d),L(i.state.cartCount),M(d.coupons||[]),document.dispatchEvent(new CustomEvent("caddy_cart_updated",{detail:{cartData:d}})),Z()}else Z();return zt(),{success:!0}}function Bt(t){return!t||t.length===0?0:t.reduce((n,e)=>{let o=e.regularPrice||0,a=e.quantity||0;return n+o*a},0)}function z(t,n){let e=I(n?.totals?.total_discount||0);return t?.taxDisplayCart==="incl"&&(e+=I(n?.totals?.total_discount_tax||0)),e}function Qt(t,n){let e=I(n?.totals?.total_items||0);return t?.taxDisplayCart==="incl"&&(e+=I(n?.totals?.total_items_tax||0)),e-z(t,n)}function O(t,n){t.cartSubtotal=Qt(t,n),t.cartSubtotalDisplay=A(t.cartSubtotal),t.cartSubtotalFormatted=_(t.cartSubtotal),t.originalTotal=Bt(t.items),t.originalTotalDisplay=A(t.originalTotal),t.originalTotalFormatted=_(t.originalTotal),t.hasDiscount=t.originalTotal>t.cartSubtotal,t.cartTotal=n.totals.total_formatted||_(I(n.totals.total_price))}function Q(t,n=!1){n?(t.cartSubtotalDisplay=A(t.cartSubtotal),t.cartSubtotalFormatted=_(t.cartSubtotal),t.cartTotal=_(t.cartSubtotal)):(t.cartSubtotal=t.items.reduce((e,o)=>e+o.lineTotal,0),t.cartSubtotalDisplay=A(t.cartSubtotal),t.cartSubtotalFormatted=_(t.cartSubtotal),t.cartTotal=_(t.cartSubtotal)),t.originalTotal=Bt(t.items),t.originalTotalDisplay=A(t.originalTotal),t.originalTotalFormatted=_(t.originalTotal),t.hasDiscount=t.originalTotal>t.cartSubtotal}function ae(){if("BroadcastChannel"in window){let t=new BroadcastChannel("caddy_cart_sync");t.addEventListener("message",async n=>{n.data.type==="cart_updated"&&await j()}),window.caddyCartChannel=t}else window.addEventListener("storage",async t=>{t.key==="caddy_cart_update"&&await j()});document.addEventListener("visibilitychange",async()=>{document.hidden||await j()}),window.addEventListener("beforeunload",()=>{if(F.size===0)return;let n=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),e={"Content-Type":"application/json"};n&&(e.Nonce=n);for(let o of F)fetch(`${window.location.origin}/wp-json/wc/store/v1/cart/items/${o}`,{method:"DELETE",headers:e,credentials:"same-origin",keepalive:!0})})}function zt(){window.caddyCartChannel?window.caddyCartChannel.postMessage({type:"cart_updated",timestamp:Date.now()}):(localStorage.setItem("caddy_cart_update",JSON.stringify({timestamp:Date.now()})),setTimeout(()=>{localStorage.removeItem("caddy_cart_update")},100))}var ht=!1,wt=!1,F=new Set,Mt=Promise.resolve();function oe(t){let n=Mt.then(t,t);return Mt=n.catch(()=>{}),n}function E(t){let n=document.querySelector(".cc-cart .cc-body");n&&(t===0?n.classList.add("cc-empty"):n.classList.remove("cc-empty"))}function re(t){document.querySelectorAll(".cc-screen-tab").forEach(c=>{c.classList.remove("cc-active"),c.classList.remove("cc-tab-active")}),document.querySelectorAll("[data-tabs] a").forEach(c=>{c.classList.remove("active"),c.setAttribute("aria-selected","false")});let n=document.querySelector(t);n&&(t==="#cc-cart"?n.classList.add("cc-active"):n.classList.add("cc-tab-active"));let e=document.querySelector(`[data-tabs] a[href="${t}"]`);e&&(e.classList.add("active"),e.setAttribute("aria-selected","true"));let o=document.querySelector(".cc-header-title"),a=document.querySelector(".cc-header-back-close"),r=document.querySelector(".cc-header-back-arrow");if(o)if(o._originalContent||(o._originalContent=o.cloneNode(!0)),t==="#cc-cart")o.replaceChildren(...o._originalContent.cloneNode(!0).childNodes);else{let{state:c}=y("caddy/cart"),d={"#cc-saves":c?.i18n?.yourSaves||"Your Saves","#cc-offers":c?.i18n?.yourOffers||"Your Offers"};o.textContent=d[t]||c?.i18n?.yourCart||"Your Cart"}a&&r&&(t==="#cc-cart"?(a.style.display="",r.style.display="none"):(a.style.display="none",r.style.display=""))}function L(t){document.querySelectorAll(".cc_cart_count").forEach(e=>{e.textContent=t,t===0?e.classList.add("cc_cart_zero"):e.classList.remove("cc_cart_zero")})}async function j(){if(ht){wt=!0;return}ht=!0;let{state:t}=y("caddy/cart");t.isLoading=!0;try{let n=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),e=await fetch("/wp-json/wc/store/v1/cart",{credentials:"same-origin",headers:n?{Nonce:n}:{}});lt(e);let o=await e.json();if(e.ok&&o)if(o.items&&o.items.length>0){let a=o.items.map(c=>{let d=ut(c),i=t.items.find(l=>l.cartKey===d.cartKey);return i&&i.isUpdating&&(d.isUpdating=!0),d}),r=F.size>0?a.filter(c=>!F.has(c.cartKey)):a;t.items=r,t.cartCount=r.reduce((c,d)=>c+d.quantity,0),t.isItemSingular=o.items_count===1,O(t,o),t.coupons=o.coupons||[],t.discountTotal=z(t,o),E(t.cartCount),L(t.cartCount),M(o.coupons||[])}else t.items=[],t.cartCount=0,E(t.cartCount),L(t.cartCount),t.cartSubtotal=0,t.cartSubtotalFormatted=_(0),t.cartTotal="$0.00",L(t.cartCount)}catch(n){console.warn("Caddy: Failed to refresh cart from server:",n)}finally{ht=!1,t.isLoading=!1,wt&&(wt=!1,j())}}var kt=!1;function Z(){let{state:t}=y("caddy/cart");if(t.recommendations!==void 0){it(t);return}if(window._caddyInitializeRecommendations){window._caddyInitializeRecommendations();return}}function $t(){if(kt)return;kt=!0;let{state:t}=y("caddy/cart");if(t.recommendations===void 0)return;if(t.recommendations.length>0){t.recommendationsLoading=!1;return}let n=()=>{it(t)};"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,100)}async function it(t){let n=null,e=[];if(t.items&&t.items.length>0){let o=t.items.filter(r=>!r.isBundledItem);n=(o.length>0?o[o.length-1]:t.items[t.items.length-1]).productId,e=t.items.map(r=>r.productId)}t.recommendationsLoading=!0,t.recommendationIndex=0;try{let o;n?(o=`${window.location.origin}/wp-json/caddy/v1/recommendations/${n}?limit=3`,e.length>0&&(o+=`&exclude=${e.join(",")}`)):o=`${window.location.origin}/wp-json/wc/store/v1/products?per_page=3&orderby=popularity&_fields=id,name,permalink,prices,images,type`;let a=await fetch(o,{credentials:"same-origin",headers:{"Content-Type":"application/json"}});if(!a.ok)throw new Error("Failed to fetch recommendations");let r=await a.json(),c=r.products||r;if(!c||c.length===0){t.recommendations=[],t.recommendationsLoading=!1,t.showRecommendations=!1;return}let d=c.map(i=>{let l=i.prices?.sale_price?I(i.prices.sale_price):null,p=i.prices?.regular_price?I(i.prices.regular_price):null,w=l||p,f=l&&l<p,s=i.images&&i.images[0]?i.images[0].thumbnail||i.images[0].src:"",m=s?s.replace(/([^:])\/\/+/g,"$1/"):tt(),u=i.type==="variable",h=i.type==="grouped",S=!u&&!h,v=ot(i.name||"");return{id:i.id,name:v,permalink:i.permalink,price:_(w),regularPrice:f?_(p):"",isOnSale:f,image:m,type:i.type,isVariable:u,isGrouped:h,isSimple:S,buttonText:u?V("seeOptions","Select options"):h?V("viewProducts","View products"):V("addToCart","Add to cart"),isAdding:!1}});t.recommendations=d,t.showRecommendations=d.length>0}catch(o){console.error("Error loading recommendations:",o),t.recommendations=[],t.showRecommendations=!1}finally{t.recommendationsLoading=!1}}function Ot(){let t=document.querySelector(".cc-fs[data-free-shipping-amount]");if(!t)return"";let n=parseFloat(t.dataset.freeShippingAmount),{state:e}=y("caddy/cart"),o=e.cartSubtotal||0,a=Math.max(0,n-o);return _(a)}function Ft(){let t=document.querySelector(".cc-fs[data-free-shipping-amount]");if(!t)return"0%";let n=parseFloat(t.dataset.freeShippingAmount),{state:e}=y("caddy/cart"),o=e.cartSubtotal||0;return Math.min(o/n*100,100)+"%"}function jt(){let t=document.querySelector(".cc-fs[data-free-shipping-amount]");if(!t)return!1;let n=parseFloat(t.dataset.freeShippingAmount),{state:e}=y("caddy/cart");return(e.cartSubtotal||0)>=n}document.addEventListener("DOMContentLoaded",async()=>{ae();let n=y("caddy/cart").state.recommendations!==void 0,e=document.getElementById("cc-store-api-recommendations");if(!n&&e)try{let{initializeRecommendationsModule:r}=await Promise.resolve().then(()=>(Et(),At)),c=r({updateCartTotals:O,updateAppliedCouponsDisplay:M});window._caddyInitializeRecommendations=c.initializeRecommendations}catch{}if(document.querySelector(".cc-save-nav, #cc-saves, .save_for_later_btn"))try{let{initializeSaveForLater:r}=await import("./modules/sfl-module.js");r({updateCartTotalsFromItems:Q,removeItemFromServer:Ht,refreshCartFromServer:j,updateCartEmptyClass:E,updateCartWidgetCount:L,updateCartTotals:O,updateAppliedCouponsDisplay:M,initializeRecommendations:Z})}catch{}let a=y("caddy/cart");L(a.state.cartCount||0);try{localStorage.removeItem("caddy_cart_update"),localStorage.removeItem("caddy_last_cart_update"),localStorage.removeItem("wc_cart_hash"),window.wc_cart_fragments_params&&window.wc_cart_fragments_params.fragment_name&&sessionStorage.removeItem(window.wc_cart_fragments_params.fragment_name)}catch{}Rt=!0;try{let r=document.querySelector('meta[name="wc-store-api-nonce"]')?.getAttribute("content"),c=await fetch("/wp-json/wc/store/v1/cart",{headers:r?{Nonce:r}:{}});if(c.ok){let d=await c.json(),i=y("caddy/cart");if(d.items&&d.items.length>0){let l=k(d.items);l.forEach((C,q)=>{});let p=i.state.items,w=p.length!==l.length||l.some((C,q)=>{let x=p[q];return!x||x.cartKey!==C.cartKey||x.quantity!==C.quantity||x.lineTotal!==C.lineTotal});w&&(i.state.items=l);let f=d.items_count,s=d.totals.total_formatted||_(I(d.totals.total_price)),m=Qt(i.state,d),u=_(m),h=z(i.state,d),S=i.state.cartCount!==f||i.state.cartTotal!==s||i.state.cartSubtotal!==m||i.state.discountTotal!==h;S&&(i.state.cartCount=f,i.state.cartTotal=s,i.state.cartSubtotal=m,i.state.cartSubtotalFormatted=u,i.state.discountTotal=h);let v=JSON.stringify(i.state.coupons)!==JSON.stringify(d.coupons||[]);v&&(i.state.coupons=d.coupons||[]),(w||S||v)&&(L(i.state.cartCount),updateSavedItemsWidgetCount(i.state.savedItems.length),M(d.coupons||[]),setTimeout(()=>Ut(l),100))}}}catch{}Lt(),Pt(O)});function Ut(t){document.querySelectorAll(".cc-cart-item").forEach((e,o)=>{if(o>=t.length)return;let a=t[o],r=e.querySelector(".cc-sale-price-wrapper"),c=e.querySelector(".cc_saved_amount"),d=a.isOnSale&&a.savingsPercentage>0;r&&(d?r.style.display="":r.style.display="none"),c&&(d?c.style.display="":c.style.display="none")})}export{Z as initializeRecommendations,j as refreshCartFromServer,Ht as removeItemFromServer,M as updateAppliedCouponsDisplay,E as updateCartEmptyClass,O as updateCartTotals,Q as updateCartTotalsFromItems,L as updateCartWidgetCount};