UNPKG

@reflowhq/cart-react

Version:

This is a React 18+ component for rendering a Reflow shopping cart in your application.

2 lines 120 kB
var qr=Object.create;var Mt=Object.defineProperty;var jr=Object.getOwnPropertyDescriptor;var Vr=Object.getOwnPropertyNames;var $r=Object.getPrototypeOf,zr=Object.prototype.hasOwnProperty;var Qr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Kr=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Vr(t))!zr.call(e,n)&&n!==r&&Mt(e,n,{get:()=>t[n],enumerable:!(i=jr(t,n))||i.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?qr($r(e)):{},Kr(t||!e||!e.__esModule?Mt(r,"default",{value:e,enumerable:!0}):r,e));var Ue=Qr((go,jt)=>{var ei="Expected a function",Gt=NaN,ti="[object Symbol]",ri=/^\s+|\s+$/g,ii=/^[-+]0x[0-9a-f]+$/i,ni=/^0b[01]+$/i,oi=/^0o[0-7]+$/i,ai=parseInt,si=typeof global=="object"&&global&&global.Object===Object&&global,li=typeof self=="object"&&self&&self.Object===Object&&self,ci=si||li||Function("return this")(),ui=Object.prototype,di=ui.toString,hi=Math.max,pi=Math.min,Re=function(){return ci.Date.now()};function fi(e,t,r){var i,n,o,s,a,d,c=0,u=!1,g=!1,f=!0;if(typeof e!="function")throw new TypeError(ei);t=qt(t)||0,et(r)&&(u=!!r.leading,g="maxWait"in r,o=g?hi(qt(r.maxWait)||0,t):o,f="trailing"in r?!!r.trailing:f);function m(E){var v=i,P=n;return i=n=void 0,c=E,s=e.apply(P,v),s}function y(E){return c=E,a=setTimeout(C,t),u?m(E):s}function H(E){var v=E-d,P=E-c,F=t-v;return g?pi(F,o-P):F}function k(E){var v=E-d,P=E-c;return d===void 0||v>=t||v<0||g&&P>=o}function C(){var E=Re();if(k(E))return x(E);a=setTimeout(C,H(E))}function x(E){return a=void 0,f&&i?m(E):(i=n=void 0,s)}function T(){a!==void 0&&clearTimeout(a),c=0,i=d=n=a=void 0}function S(){return a===void 0?s:x(Re())}function L(){var E=Re(),v=k(E);if(i=arguments,n=this,d=E,v){if(a===void 0)return y(d);if(g)return a=setTimeout(C,t),m(d)}return a===void 0&&(a=setTimeout(C,t)),s}return L.cancel=T,L.flush=S,L}function et(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function mi(e){return!!e&&typeof e=="object"}function gi(e){return typeof e=="symbol"||mi(e)&&di.call(e)==ti}function qt(e){if(typeof e=="number")return e;if(gi(e))return Gt;if(et(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=et(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(ri,"");var r=ni.test(e);return r||oi.test(e)?ai(e.slice(2),r?2:8):ii.test(e)?Gt:+e}jt.exports=fi});import pe,{useState as Fi,useEffect as Gi}from"react";import Xr,{createContext as Zr,useContext as Ut,useEffect as Wr}from"react";var Je=Zr({});function be(){let{auth:e,hasAuth:t}=Ut(Je);if(!t)return null;if(!e)throw new Error("Missing ShoppingCartContext.Provider in the tree");return e}function U(){let{cart:e}=Ut(Je);return e}function Ft({children:e,...t}){let r=!!t.auth;return Wr(()=>{t.cart.refresh()},[]),Xr.createElement(Je.Provider,{value:{cart:t.cart,auth:t.auth,hasAuth:r}},e)}import M,{useRef as xi}from"react";import te,{useCallback as vi}from"react";import _e,{useState as Yr,useEffect as Jr}from"react";function ge({active:e=!0,originalQuantity:t,maxQuantity:r,availableQuantity:i,updateQuantity:n}){let[o,s]=Yr(()=>t);Jr(()=>{o!==t&&s(t)},[t]);function a(){return 1}function d(){return Math.min(isNaN(parseInt(i))?1/0:i,isNaN(parseInt(r))?1/0:r)}function c(){return o<d()}function u(){let m=o+1;m<=d()&&f(m)}function g(){let m=o-1;m>=a()&&f(m)}function f(m){isNaN(m)||m!==o&&(s(m),n&&n(m))}return _e.createElement("div",{className:`ref-quantity-widget${e?"":" inactive"}`},_e.createElement("div",{className:"ref-decrease",onClick:()=>g()},_e.createElement("span",null)),_e.createElement("input",{type:"text",value:o,onChange:m=>f(parseInt(m.target.value,10))}),_e.createElement("div",{className:`ref-increase${c()?"":" inactive"}`,onClick:()=>u()},_e.createElement("span",null)))}import Rr from"react";function Pe({product:e,children:t}){let r=U();function i(){r.removeLineItem(e.lineItemID)}return Rr.createElement("div",{className:"ref-product-remove",onClick:i},t)}import z from"react";function Te(e,t=100){return e.length>t?e.substring(0,t)+"...":e}function we({product:e,updateCart:t,showCategory:r=!1,showVariantBreakdown:i=!1,showPersonalization:n=!0,showPersonalizationPrice:o=!1,showQuantityWidget:s=!1,showRemoveButton:a=!1,showPriceBreakdown:d=!1,updateQuantity:c}){let u=U(),g=u.t,f=e.categories&&e.categories[0]?e.categories[0].name:g("product"),m=e.image?.sm||"",y=`${u.formatCurrency(e.unitPrice)} x ${e.quantity}`,H=i&&!!e.variant,k=`${e.name}${!i&&e.variant?" ("+e.variant.name+")":""}`,C=!1,x="";e.inStock&&(e.quantity>e.availableQuantity?(C=!0,x=g("cart.left_in_stock",{in_stock:e.availableQuantity})):e.quantity>e.maxQty&&(C=!0,x=g("cart.max_product_qty",{max_quantity:e.maxQty})));function T(S){return`${S.name}${S.inputText?': "'+S.inputText+'"':""}${S.selected?': "'+S.selected+'"':""}${S.filename?': "'+S.filename+'" ':""}${o?S.price?" +"+u.formatCurrency(S.price):" - "+g("price_free"):""}`}return z.createElement("div",{className:`ref-product${C?" ref-warning":""}`},z.createElement("img",{className:"ref-product-photo",src:m,alt:e.name}),z.createElement("div",{className:"ref-product-data"},z.createElement("div",{className:"ref-product-info"},z.createElement("div",null,z.createElement("div",{className:"ref-product-name"},k),z.createElement("div",{className:"ref-product-secondary"},r&&z.createElement("div",{className:"ref-product-category"},f),H&&z.createElement("div",{className:"ref-product-variant"},e.variant.option_name+": "+e.variant.name),d&&z.createElement("div",{className:"ref-product-price-breakdown"},y),n&&!!e.personalization?.length&&z.createElement("div",{className:"ref-product-personalization-holder"},e.personalization.map(S=>z.createElement("div",{key:T(S),title:T(S)},Te(T(S),55)))))),z.createElement("div",{className:"ref-product-price"},z.createElement("div",{className:`ref-product-total${e.inStock?"":" out-of-stock"}`},e.inStock?u.formatCurrency(e.price):g("out_of_stock")))),z.createElement("div",{className:"ref-product-controls"},z.createElement("div",null,s&&z.createElement("div",{className:"ref-product-quantity"},z.createElement(ge,{active:e.inStock,originalQuantity:e.quantity,maxQuantity:e.maxQty,availableQuantity:e.availableQuantity,updateQuantity:c})),x&&z.createElement(z.Fragment,null,z.createElement("div",{className:"ref-product-qty-message"},x),z.createElement("div",{className:"ref-product-update-cart",onClick:t},g("cart.update")))),a&&z.createElement(Pe,{product:e},g("remove")))))}var Vt=Ye(Ue());function tt({product:e}){let t=U(),r=t.t,i=vi((0,Vt.default)(a,500),[]),n="";function o(){let d=e.unitPrice;return t.getTaxPricingType()==="inclusive"&&(d+=e.tax/e.quantity),t.formatCurrency(d)}function s(){let d=e.price;return t.getTaxPricingType()==="inclusive"&&(d+=e.tax),t.formatCurrency(d)}function a(d){t.updateLineItemQuantity(e.lineItemID,d)}return e.inStock&&(e.quantity>e.availableQuantity?n=r("cart.left_in_stock",{in_stock:e.availableQuantity}):e.quantity>e.maxQty&&(n=r("cart.max_product_qty",{max_quantity:e.maxQty}))),te.createElement("div",{className:"ref-line-item"},te.createElement("div",{className:"ref-product-col"},te.createElement(we,{product:e,showCategory:!0,showVariantBreakdown:!0,showPersonalization:!0,showPersonalizationPrice:!0,showQuantityWidget:!0,showRemoveButton:!0,showPriceBreakdown:!1,updateQuantity:i})),te.createElement("div",{className:"ref-price-col"},te.createElement("div",{className:"ref-product-price"},o())),te.createElement("div",{className:"ref-quantity-col"},te.createElement("div",{className:"ref-product-quantity"},te.createElement("div",{className:"ref-quantity-container"},te.createElement(ge,{active:e.inStock,originalQuantity:e.quantity,maxQuantity:e.maxQty,availableQuantity:e.availableQuantity,updateQuantity:i})),te.createElement("div",{className:"ref-product-qty-message"},n),te.createElement(Pe,{product:e},r("remove")))),te.createElement("div",{className:"ref-total-col"},te.createElement("div",{className:"ref-product-total"},te.createElement("div",{className:(e.inStock?"":"out-of-stock ")+"ref-product-total"},e.inStock?s():r("out_of_stock")))))}import{useState as yi,useEffect as bi}from"react";function $t(e){return JSON.parse(localStorage.getItem(e)||"{}")}function _i(e,t){localStorage.setItem(e,JSON.stringify(t))}function Ei(e,t,r){var i=$t(e);return i[t]?i[t]:r instanceof Function?r():r}function Le(e){return(t,r)=>{let[i,n]=yi(()=>Ei(e,t,r));return bi(()=>{let o=$t(e);o[t]=i??"",_i(e,o)},[i]),[i,n]}}import Ni,{useState as Pi,useRef as Ti,useEffect as wi,useCallback as Li}from"react";import{useEffect as Si,useState as Ci}from"react";var rt=[];function it(e){let[t,r]=Ci(e?rt.includes(e)?"ready":"loading":"idle");return Si(()=>{if(rt.includes(e))return;if(!e){r("idle");return}let i=document.querySelector(`script[src="${e}"]`),n=o=>{let s=o.type==="load";s&&rt.push(e),r(s?"ready":"error")};return i||(i=document.createElement("script"),i.type="application/javascript",i.src=e,i.async=!0,document.body.appendChild(i),i.addEventListener("load",n),i.addEventListener("error",n)),i.addEventListener("load",n),i.addEventListener("error",n),()=>{i.removeEventListener("load",n),i.removeEventListener("error",n)}},[e]),t}function se(e,t={}){try{if(!e)throw Error("invalid");let r=new URL(e,window.location.href),i=r.search;for(let n in t)i+=i.length?"&":"?",i+=`${n}=${t[n]}`;return r.search=i,r.href}catch{return window.location.href}}var zt=Ye(Ue());function xe({fundingSource:e,style:t={},checkoutStep:r,canSubmit:i,successURL:n,onMessage:o}){let s=be(),a=U(),d=Ti(),c=a.getPaymentProvider("paypal"),u=Li((0,zt.default)(L,500),[]);if(!c)return null;let g="https://www.paypal.com/sdk/js?client-id="+c.clientID+"&disable-funding=credit,bancontact,blik,eps,giropay,ideal,mercadopago,mybank,p24,sepa,sofort,venmo&merchant-id="+c.merchantID+"&currency="+a.currency+"&integration-date=2023-03-30",m=it(g)==="ready",[y,H]=Pi("");wi(()=>{m&&u()},[m]);async function k(){if(i())try{let E={"checkout-step":r};return s&&s.isSignedIn()&&(E["auth-account-id"]=s.user.id),a.customFields&&(E["custom-fields"]=!0),await a.paypalCreateOrder(E)}catch(E){console.log(E)}}async function C(E,v){try{let P=await a.paypalOnApprove(E,v);window.location=se(n,{order_id:P.orderID,secure_hash:P.secureHash})}catch(P){if(!P.data)throw P;let F=P.data,X=Array.isArray(F.details)&&F.details[0];if(X&&X.issue==="INSTRUMENT_DECLINED")return v.restart()}}async function x(E,v){try{let P=0;return E.selected_shipping_option&&E.selected_shipping_option.id&&(P=E.selected_shipping_option.id),await a.updatePaypalShipping({orderID:E.orderID,address:E.shipping_address,selectedShippingOption:P}),v.resolve()}catch(P){return o({type:"error",title:"Couldn't update PayPal shipping",description:a.getErrorText(P)}),v.reject()}}function T(){a.refresh()}function S(){if(!i())return;let E="Sorry, your transaction could not be processed. Please try again.";y&&(E=y,H("")),o({type:"error",description:E})}function L(){paypal.Buttons({fundingSource:paypal.FUNDING[e],createOrder:k,onApprove:C,onCancel:T,onError:S,onShippingChange:x,style:t}).render(d.current)}return Ni.createElement("div",{ref:d})}import de from"react";function Ae(){return de.createElement("div",{className:"paypal-button paypal-button-gold button-demo-payment",onClick:()=>alert("Payment doesn't work in demo mode!")},de.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",height:"22",viewBox:"0 0 101 32",preserveAspectRatio:"xMinYMin meet"},de.createElement("path",{fill:"#003087",d:"M 12.237 2.8 L 4.437 2.8 C 3.937 2.8 3.437 3.2 3.337 3.7 L 0.237 23.7 C 0.137 24.1 0.437 24.4 0.837 24.4 L 4.537 24.4 C 5.037 24.4 5.537 24 5.637 23.5 L 6.437 18.1 C 6.537 17.6 6.937 17.2 7.537 17.2 L 10.037 17.2 C 15.137 17.2 18.137 14.7 18.937 9.8 C 19.237 7.7 18.937 6 17.937 4.8 C 16.837 3.5 14.837 2.8 12.237 2.8 Z M 13.137 10.1 C 12.737 12.9 10.537 12.9 8.537 12.9 L 7.337 12.9 L 8.137 7.7 C 8.137 7.4 8.437 7.2 8.737 7.2 L 9.237 7.2 C 10.637 7.2 11.937 7.2 12.637 8 C 13.137 8.4 13.337 9.1 13.137 10.1 Z"}),de.createElement("path",{fill:"#003087",d:"M 35.437 10 L 31.737 10 C 31.437 10 31.137 10.2 31.137 10.5 L 30.937 11.5 L 30.637 11.1 C 29.837 9.9 28.037 9.5 26.237 9.5 C 22.137 9.5 18.637 12.6 17.937 17 C 17.537 19.2 18.037 21.3 19.337 22.7 C 20.437 24 22.137 24.6 24.037 24.6 C 27.337 24.6 29.237 22.5 29.237 22.5 L 29.037 23.5 C 28.937 23.9 29.237 24.3 29.637 24.3 L 33.037 24.3 C 33.537 24.3 34.037 23.9 34.137 23.4 L 36.137 10.6 C 36.237 10.4 35.837 10 35.437 10 Z M 30.337 17.2 C 29.937 19.3 28.337 20.8 26.137 20.8 C 25.037 20.8 24.237 20.5 23.637 19.8 C 23.037 19.1 22.837 18.2 23.037 17.2 C 23.337 15.1 25.137 13.6 27.237 13.6 C 28.337 13.6 29.137 14 29.737 14.6 C 30.237 15.3 30.437 16.2 30.337 17.2 Z"}),de.createElement("path",{fill:"#003087",d:"M 55.337 10 L 51.637 10 C 51.237 10 50.937 10.2 50.737 10.5 L 45.537 18.1 L 43.337 10.8 C 43.237 10.3 42.737 10 42.337 10 L 38.637 10 C 38.237 10 37.837 10.4 38.037 10.9 L 42.137 23 L 38.237 28.4 C 37.937 28.8 38.237 29.4 38.737 29.4 L 42.437 29.4 C 42.837 29.4 43.137 29.2 43.337 28.9 L 55.837 10.9 C 56.137 10.6 55.837 10 55.337 10 Z"}),de.createElement("path",{fill:"#009cde",d:"M 67.737 2.8 L 59.937 2.8 C 59.437 2.8 58.937 3.2 58.837 3.7 L 55.737 23.6 C 55.637 24 55.937 24.3 56.337 24.3 L 60.337 24.3 C 60.737 24.3 61.037 24 61.037 23.7 L 61.937 18 C 62.037 17.5 62.437 17.1 63.037 17.1 L 65.537 17.1 C 70.637 17.1 73.637 14.6 74.437 9.7 C 74.737 7.6 74.437 5.9 73.437 4.7 C 72.237 3.5 70.337 2.8 67.737 2.8 Z M 68.637 10.1 C 68.237 12.9 66.037 12.9 64.037 12.9 L 62.837 12.9 L 63.637 7.7 C 63.637 7.4 63.937 7.2 64.237 7.2 L 64.737 7.2 C 66.137 7.2 67.437 7.2 68.137 8 C 68.637 8.4 68.737 9.1 68.637 10.1 Z"}),de.createElement("path",{fill:"#009cde",d:"M 90.937 10 L 87.237 10 C 86.937 10 86.637 10.2 86.637 10.5 L 86.437 11.5 L 86.137 11.1 C 85.337 9.9 83.537 9.5 81.737 9.5 C 77.637 9.5 74.137 12.6 73.437 17 C 73.037 19.2 73.537 21.3 74.837 22.7 C 75.937 24 77.637 24.6 79.537 24.6 C 82.837 24.6 84.737 22.5 84.737 22.5 L 84.537 23.5 C 84.437 23.9 84.737 24.3 85.137 24.3 L 88.537 24.3 C 89.037 24.3 89.537 23.9 89.637 23.4 L 91.637 10.6 C 91.637 10.4 91.337 10 90.937 10 Z M 85.737 17.2 C 85.337 19.3 83.737 20.8 81.537 20.8 C 80.437 20.8 79.637 20.5 79.037 19.8 C 78.437 19.1 78.237 18.2 78.437 17.2 C 78.737 15.1 80.537 13.6 82.637 13.6 C 83.737 13.6 84.537 14 85.137 14.6 C 85.737 15.3 85.937 16.2 85.737 17.2 Z"}),de.createElement("path",{fill:"#009cde",d:"M 95.337 3.3 L 92.137 23.6 C 92.037 24 92.337 24.3 92.737 24.3 L 95.937 24.3 C 96.437 24.3 96.937 23.9 97.037 23.4 L 100.237 3.5 C 100.337 3.1 100.037 2.8 99.637 2.8 L 96.037 2.8 C 95.637 2.8 95.437 3 95.337 3.3 Z"})))}import Qt from"react";function Be(){let{footerLinks:e,t}=U();return Qt.createElement("div",{className:"ref-links"},e.map(r=>Qt.createElement("a",{key:r.id,href:r.url,target:"_blank"},t("cart."+r.id))))}var Ai=({successURL:e,onMessage:t,step:r,setStep:i,demoMode:n})=>{let o=U(),{t:s,products:a,footerLinks:d,subtotal:c,taxes:u,vacationMode:g,errors:f,localFormData:m}=o,y=m.formDataKey,H=Le(y),k=xi(),[C,x]=H("termsAccepted",!1),T=!!g?.enabled,S=o.isPaypalSupported()&&!T&&!o.hasZeroValue()&&!!o.getPaymentProvider("paypal").quickCheckout,L=u?.amount||0;function E(){let G=c;return o.getTaxPricingType()==="inclusive"&&(G+=L),o.formatCurrency(G)}function v(){return k.current?k.current.checkValidity()?!0:(k.current.reportValidity(),!1):!0}function P(G){G.preventDefault();for(let W of f)if(W.severity=="fatal"&&["unavailable-quantity","product-min-qty-not-reached","product-max-qty-exceeded"].includes(W.type)){t({type:"error",title:o.getStateErrorMessage(W)});return}i("details")}function F(){let G=d.filter(Z=>Z.required);return G.length?M.createElement("form",{className:"ref-accept-terms",onSubmit:P},M.createElement("label",null,M.createElement("input",{ref:k,type:"checkbox",id:"ref-terms-agreement",required:!0,checked:C,onChange:()=>x(!C)}),M.createElement("span",{className:"ref-terms-agreement-text"},s("cart.terms_agree",{terms:""}),G.map((Z,p)=>M.createElement("span",{key:Z.id},M.createElement("a",{href:Z.url},s("cart."+Z.id)),M.createElement("span",null,p===G.length-2?" and ":p===G.length-1?"":", "))))),M.createElement("div",{className:"ref-row ref-checkout-buttons"},X(),M.createElement("button",{className:`ref-button ref-standard-checkout-button${T?" inactive":""}`,disabled:T},s("cart.checkout")))):M.createElement("div",{className:"ref-row ref-checkout-buttons"},X(),M.createElement("button",{className:`ref-button ref-standard-checkout-button${T?" inactive":""}`,disabled:T,onClick:()=>i("details")},s("cart.checkout")))}function X(){return S?n?M.createElement("div",{className:"ref-paypal-express-checkout-holder"},M.createElement(Ae,null)):M.createElement("div",{className:"ref-paypal-express-checkout-holder"},M.createElement(xe,{fundingSource:"PAYPAL",checkoutStep:r,canSubmit:v,successURL:e,onMessage:t,style:{height:42,disableMaxWidth:!0}})):null}return M.createElement("div",{className:"ref-cart","data-testid":"cart"},M.createElement("div",{className:"ref-heading"},s("shopping_cart")),M.createElement("div",{className:"ref-th"},M.createElement("div",{className:"ref-product-col"},s("product")),M.createElement("div",{className:"ref-price-col"},s("price")),M.createElement("div",{className:"ref-quantity-col"},s("quantity")),M.createElement("div",{className:"ref-total-col"},s("total"))),M.createElement("div",{className:"ref-cart-table"},a.map(G=>M.createElement(tt,{key:G.lineItemID,product:G}))),M.createElement("div",{className:"ref-footer"},M.createElement(Be,null),M.createElement("div",{className:"ref-totals"},M.createElement("div",{className:"ref-subtotal"},`${s("subtotal")}: `+E()),F())))},Kt=Ai;import ce,{useState as Mi,useEffect as Ui}from"react";import b,{useState as ke,useEffect as Bi}from"react";function nt({readOnly:e=!1,onMessage:t,updateCart:r}){let[i,n]=ke(""),[o,s]=ke(!1),[a,d]=ke({}),c=U(),{t:u,products:g,coupon:f,giftCard:m,discount:y,total:H,subtotal:k,currency:C,taxes:x,locations:T,deliveryMethod:S,shippingMethods:L}=c,[E,v]=ke(G()),[P,F]=ke(W()),X=!e&&(!f||!m);Bi(()=>{if(!c.hasPhysicalProducts()){v(""),F("");return}v(G()),F(W())},[L,S]);function G(){let q=u("shipping");if(S==="shipping"){for(let J of L)if(J.chosen)return`${u("shipping")} (${J.name})`}if(S==="pickup"){q=u("pickup_at_store");for(let J of T)if(J.chosen)return u("cart.pickup_at_store",{store:J.name})}return q}function W(){if(S==="shipping"){for(let q of L)if(q.chosen)return c.formatCurrency(q.price)}return S==="pickup"?c.formatCurrency(0):u("cart.shipping_not_selected")}function Z(q){q.preventDefault(),p(i)}function p(q){return c.applyDiscountCode({code:q}).then(J=>{t({type:"success",title:u("cart."+J.type+"_added")}),w()}).catch(J=>{Y(c.getErrorText(J))})}function I(q){return c.removeDiscountCode({code:q}).catch(()=>{t({type:"error",title:u("error")})})}function w(){n(""),j()}function j(){Y("")}function Y(q=""){d(J=>({...J,"discount-code":q}))}let re=x?.details,_=re?.taxRate,R=f?.name||f?.code.toUpperCase()||"";return b.createElement("div",{className:"ref-summary"},b.createElement("div",{className:`ref-summary-toggle ref-field-collapsible${o?" open":""}`},b.createElement("span",{className:"ref-field-toggle",onClick:()=>s(!o)},b.createElement("span",{className:"ref-field-toggle-title"},u("cart.show_summary")),b.createElement("span",{className:"ref-summary-total"},c.formatCurrency(H)))),b.createElement("div",{className:`ref-summary-content${o?" open":""}`},b.createElement("div",{className:"ref-heading"},u("cart.order_summary")),b.createElement("div",{className:"ref-products"},g.map(q=>b.createElement(we,{key:q.lineItemID,product:q,updateCart:r,showPriceBreakdown:!0,showPersonalization:!0,showRemoveButton:!q.inStock}))),b.createElement("hr",null),X&&b.createElement(b.Fragment,null,b.createElement("div",{className:"ref-discount-code"},b.createElement("form",{className:"ref-discount-code-container",onSubmit:q=>Z(q)},b.createElement("div",{className:"ref-discount-code-input-holder"},b.createElement("input",{id:"ref-discount-code-input",className:"ref-form-control",name:"discount-code",type:"text",value:i,maxLength:"32",autoComplete:"off",placeholder:u("cart.discount_code_placeholder"),onChange:q=>n(q.target.value)}),i&&b.createElement("span",{className:"ref-discount-code-input-clear",title:u("clear"),onClick:w},"\u2715")),b.createElement("button",{className:`ref-button ref-button-success ref-add-code${i?"":" inactive"}`},u("apply"))),a["discount-code"]&&b.createElement("div",{className:"ref-validation-error"},a["discount-code"])),b.createElement("hr",null)),b.createElement("div",{className:"ref-totals"},b.createElement("div",{className:"ref-subtotal"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,u("subtotal")),b.createElement("span",null,c.formatCurrency(k)))),!!f&&b.createElement("div",{className:"ref-applied-coupon"},b.createElement("div",{className:"ref-row"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,Te(R,15)),!e&&b.createElement("span",{className:"ref-remove-coupon",onClick:()=>I(f.code)},u("remove"))),b.createElement("span",null,f.errorCode?"":"-"+c.formatCurrency(y))),b.createElement("div",{className:"ref-applied-coupon-error"})),c.hasPhysicalProducts()&&b.createElement("div",{className:"ref-shipping"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,E),b.createElement("span",null,P))),x&&b.createElement("div",{className:"ref-taxes"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,_?`${_.name} (${_.rate}%)`+(re.exemption?" \u2013 "+re.exemption:""):""),b.createElement("span",null,c.formatCurrency(x.amount)))),m&&b.createElement("div",{className:"ref-applied-gift-card"},b.createElement("div",{className:"ref-row"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,m.code),!e&&b.createElement("span",{className:"ref-remove-gift-card",onClick:()=>I(m.code)},u("remove"))),b.createElement("span",null,m.errorCode?"":"-"+c.formatCurrency(m.discountAmount))),b.createElement("div",{className:"ref-row"},"("+u("cart.gift_card_balance",{amount:c.formatCurrency(m.balance)})+")"),b.createElement("div",{className:"ref-applied-gift-card-error"},c.getErrorText({data:{errorCode:m.errorCode}})||""))),b.createElement("hr",null),b.createElement("div",{className:"ref-total"},b.createElement("div",{className:"ref-row"},b.createElement("span",null,u("total")),b.createElement("span",null,c.formatCurrency(H))),b.createElement("div",{className:"ref-total-note"},u("cart.prices_currency_description",{currency:C})))))}import ot from"react";function at({instructions:e}){return e?ot.createElement("div",{className:"ref-instructions"},ot.createElement("div",{className:"ref-heading ref-payment-method-name"},e.title),ot.createElement("div",{className:"ref-payment-method-instructions"},e.description)):null}var Xt=Ye(Ue());import l,{useState as Ie,useEffect as Hi,useRef as Di,useCallback as Oi}from"react";import O from"react";function Ee({model:e={},onChange:t,fields:r,errors:i={},countries:n=[],prefix:o="",isDigital:s=!1}){r||(r=["name","city","address","country"]);let a=n.find(y=>y.country_code===e.countryCode),d=s?a?.country_code==="US":!0,c=d&&a?.has_postcode,u=d&&a?.has_regions,g=U().t;function f(y){return r.includes(y)}function m(y){return`${o?o+"-":""}${y}`}return O.createElement("div",{className:"ref-address-widget"},f("name")&&O.createElement("label",null,O.createElement("span",null,g("name")),O.createElement("input",{type:"text",className:"ref-form-control ref-field-details-name",value:e.name||"",name:m("name"),required:!0,minLength:"5",onChange:y=>t("name",y.target.value)}),i[m("name")]&&O.createElement("div",{className:"ref-validation-error"},i[m("name")])),f("address")&&O.createElement("label",null,O.createElement("span",null,g("address")),O.createElement("textarea",{row:"2",className:"ref-form-control ref-field-details-address-line",value:e.address||"",name:m("address"),required:!0,minLength:"5",onChange:y=>t("address",y.target.value)}),i[m("name")]&&O.createElement("div",{className:"ref-validation-error"},i[m("address")])),f("city")&&O.createElement("label",null,O.createElement("span",null,g("city")),O.createElement("input",{type:"text",className:"ref-form-control ref-field-details-city",value:e.city||"",name:m("city"),required:!0,minLength:"2",onChange:y=>t("city",y.target.value)}),i[m("city")]&&O.createElement("div",{className:"ref-validation-error"},i[m("city")])),f("country")&&O.createElement("div",{className:"ref-error-parent"},O.createElement("label",null,O.createElement("span",null,g("country")),O.createElement("select",{className:"ref-form-control ref-field-details-country",name:m("country"),required:!0,value:e.countryCode||"",onChange:y=>t("countryCode",y.target.value)},O.createElement("option",{value:""},g("cart.select_country")),n.map(y=>O.createElement("option",{key:y.country_code,value:y.country_code},g("geo."+y.country_code+".country_name",{},{ignoreNotFoundErrors:!0})||y.country_name)))),O.createElement("div",{className:"ref-row ref-row-region"},u&&O.createElement("label",null,O.createElement("span",null,g(a.region_title)),O.createElement("select",{className:"ref-form-control ref-field-details-region",name:m("state"),value:e.state||"",required:!0,onChange:y=>t("state",y.target.value)},O.createElement("option",{value:""},g(a.region_title)),Object.entries(a.regions).map(([y,H])=>O.createElement("option",{key:y,value:y},g("geo."+a.country_code+".regions."+y,{},{ignoreNotFoundErrors:!0})||H)))),c&&O.createElement("label",null,O.createElement("span",null,g(a.postcode_title?a.postcode_title.replace(" ","_"):"postcode")),O.createElement("input",{type:"text",className:"ref-form-control ref-field-details-postcode",name:m("postcode"),value:e.postcode||"",required:!0,onChange:y=>t("postcode",y.target.value)}))),i[m("county")]&&O.createElement("div",{className:"ref-validation-error"},i[m("county")])))}import le from"react";function st({showPhoto:e=!0,showName:t=!0,userPageURL:r="#"}){let i=be(),n=U().t;return i?le.createElement("div",{className:"reflow-auth-button"},!i.isSignedIn()&&le.createElement("div",{className:"ref-auth-button-guest"},le.createElement("div",{className:"ref-button ref-sign-in",onClick:()=>i.signIn()},n("auth.sign_in")),le.createElement("div",{className:"ref-register",onClick:()=>i.signIn()},n("auth.prompt_register")," ",le.createElement("span",{className:"text-primary"},n("auth.register")))),i.isSignedIn()&&le.createElement("div",{className:"ref-auth-button-signed"},le.createElement("a",{className:"ref-profile-info",href:r},e&&le.createElement("img",{className:"ref-profile-photo",src:i.user.photo}),t&&le.createElement("span",{className:"ref-profile-name"},i.user.name)),le.createElement("div",{className:"ref-button ref-sign-out",onClick:()=>i.signOut()},n("auth.sign_out")))):null}import ki from"react";function he({text:e,onClick:t}){return ki.createElement("div",{className:"ref-button ref-payment-button",onClick:t},e)}function lt({customFields:e,useFormData:t,formErrors:r}){return React.createElement("div",{className:"ref-custom-fields"},e?.map(i=>Ii(i,t,r)))}var Ii=(e,t,r)=>{let i="rcf-"+e.id,[n,o]=t(i),s=()=>e.type==="checkbox"?React.createElement("input",{type:"checkbox",name:i,required:e.is_required,checked:!!n,onChange:a=>o(a.target.checked)}):e.type==="text"?React.createElement("input",{type:"text",name:i,required:e.is_required,className:"ref-form-control",minLength:e.minlength||0,maxLength:e.maxlength||99,value:n||"",onChange:a=>o(a.target.value)}):e.type==="dropdown"?React.createElement("select",{name:i,required:e.is_required,className:"ref-form-control",value:n||"",onChange:a=>o(a.target.value)},e.dropdown_options.map((a,d)=>React.createElement("option",{key:d,value:a},a))):null;return React.createElement("label",{className:e.type==="checkbox"?"ref-form-checkbox-group":"",key:e.id},React.createElement("span",null,e.label),s(),r[i]&&React.createElement("div",{className:"ref-validation-error"},r[i]))};function ct({successURL:e,cancelURL:t,onMessage:r,onCheckoutSuccess:i,demoMode:n}){let o=U(),s=o.localFormData.formDataKey,a=Le(s),[d,c]=a("email"),[u,g]=a("phone"),[f,m]=a("name"),[y,H]=a("note"),[k,C]=a("shippingAddress",{}),[x,T]=a("billingAddress",{}),[S,L]=a("digitalAddress",{}),[E,v]=Ie(!0),[P,F]=Ie(()=>Ar()),[X,G]=Ie(!0),[W,Z]=Ie(!0),[p,I]=Ie({}),w=be(),j=w?.user||null,Y=U().showLoading,re=U().hideLoading,_=U().t,{locale:R,errors:q,locations:J,shippingMethods:ue,shippableCountries:Ve,taxes:$e,taxExemption:ae,vacationMode:ve,paymentProviders:Q,signInProviders:oe,collectPhone:fe,customFields:Ne,getShippableCountries:Nr,getBillableCountries:ze}=o,[Qe,wt]=[o.deliveryMethod,o.setDeliveryMethod],[Pr,Tr]=[o.selectedLocation,o.setSelectedLocation],[wr,Lr]=[o.selectedShippingMethod,o.setSelectedShippingMethod],Lt=!!ve?.enabled,xr=o.isPaypalSupported()&&!Lt&&!o.hasZeroValue(),xt=Oi((0,Xt.default)(Dr,500),[]),De=Di();function me(h){return Qe===h}function Oe(h,N,V){return{...h,[N]:V}}function Ar(){return Object.entries(x).some(([h,N])=>["city","country","name","address"].includes(h)&&N.length)}function At(){T(()=>({...k})),F(!0)}function Bt(){T({}),F(!1)}function Br(h){let N=h.address.address+", "+h.address.city+", ";return h.address.country=="US"&&h.address.state&&(N+=h.address.state+", "),N+=h.address.countryName,N}function kt(){if(!w||!w.isSignedIn())return k;let h={};if(j.name&&(k.name||(h.name=j.name)),j.meta.address){let N=j.meta.address;for(let V of["address","city","country","postcode","state"])N[V]&&!k[V]&&(h[V]=N[V])}return{...k,...h}}function It(h,N){let V;switch(Qe){case"shipping":{V=o.getShippingAddress();break}case"pickup":{let ie=J.find(ne=>ne.chosen);ie&&(V=ie.address);break}case"digital":{V=o.getDigitalAddress();break}default:break}if(!V){Ht(De.current);return}o.updateTaxExemption({address:V,deliveryMethod:Qe,exemptionType:h,exemptionValue:N})}function Ht(h){for(let N of h.querySelectorAll("input, textarea, select"))if(!N.checkValidity())return N.parentElement.scrollIntoView(),setTimeout(()=>N.reportValidity(),600),!1;return!0}function kr(){I({})}async function ye(h,N){if(n){alert("Payment doesn't work in demo mode!");return}if(Lt){let ne=ve.message||_("store_unavailable");r({type:"error",description:ne});return}if(kr(),!Ht(De.current))return;let V=new FormData(De.current),ie={...Object.fromEntries(V.entries()),"success-url":se(e,{session_id:"{CHECKOUT_SESSION_ID}"}),"cancel-url":se(t),"payment-method":h,"payment-id":N};w&&w.isSignedIn()&&(ie["auth-account-id"]=w.user.id),o.customFields&&(ie["custom-fields"]=!0),Y();try{if(await o.refresh(),!o.canFinish()){r({type:"error",title:_("cart.errors.cannot_complete"),description:o.getStateErrors()[0]});return}let ne=await o.checkout(ie);if(!ne.success)return;i(ne,h,N)}catch(ne){ne.data&&ne.data.errors&&(I(ne.data.errors),ne.data.errors.system&&r({type:"error",title:_("cart.errors.cannot_complete"),description:o.getErrorText(ne,"system")}))}finally{re()}}function Ke(h){let N=new Date(new Date().getTime()+864e5*h),V={month:"long",day:"numeric"};return N.toLocaleDateString(R,V)}function Ir(){if(n)return l.createElement(Ae,null);let h=["PAYPAL"];return o.isStripeSupported()||h.push("CARD"),l.createElement("div",{className:"ref-paypal-payment-holder"},h.map(N=>l.createElement(xe,{key:N,fundingSource:N,checkoutStep:"details",canSubmit:()=>!0,successURL:e,onMessage:r,style:{height:55,disableMaxWidth:!0}})))}function Hr(){return Q.map(h=>h.provider==="custom"?l.createElement(he,{key:h.id,text:h.name,onClick:()=>ye("custom",h.id)}):h.provider==="pay-in-store"?l.createElement(he,{key:h.provider,text:_("pay_on_pickup"),onClick:()=>ye("pay-in-store")}):h.provider==="stripe"&&h.supported&&h.paymentOptions.length?h.paymentOptions.map(N=>N.id==="card"?l.createElement("div",{key:N.id},l.createElement(he,{text:_("credit_card"),onClick:()=>ye("stripe")}),l.createElement(he,{text:"Apple Pay / Google Pay",onClick:()=>ye("stripe")})):l.createElement(he,{key:N.id,text:N.name,onClick:()=>ye("stripe")})):null)}function Dr(h,N){N&&o.updateAddress({address:N,deliveryMethod:h})}function Or(){return!!ue.length}function Dt(){return o.isShippingFilled()&&o.canShip()}function Mr(){return Dt()&&Or()}function Ur(){return!!(oe&&oe.length)}Hi(()=>{Dt()||I(h=>({...h,"shipping-country":_("cart.errors.address_not_supported")}))},[ue,q]);let Me=o.hasPhysicalProducts(),Ot=!Me,Xe=Me&&o.offersShipping(),Ze=Me&&o.offersLocalPickup(),Fr=Xe||Ze,Gr=Xe&&Ze,We=$e?.details;return l.createElement("form",{ref:De,className:"ref-details ref-checkout-form"},l.createElement("div",{className:"ref-heading"},_("cart.customer_details")),Ur()&&l.createElement("div",{className:"text-center ref-auth-button-holder"},l.createElement("div",{className:"ref-auth-button"},l.createElement(st,null))),l.createElement("label",null,l.createElement("span",null,_("email")),l.createElement("input",{type:"email",name:"email",id:"ref-field-email",className:"ref-form-control",value:d||j?.email||"",required:!0,onChange:h=>c(h.target.value)}),p.email&&l.createElement("div",{className:"ref-validation-error"},p.email)),!!fe&&l.createElement("label",{className:"ref-phone-input"},l.createElement("span",null,_("phone")),l.createElement("input",{type:"tel",name:"phone",id:"ref-field-phone",className:"ref-form-control",value:u||j?.meta.phone||"",pattern:"[0-9 \\+\\-]{5,30}",placeholder:"+1234567890",required:!0,onChange:h=>g(h.target.value)}),p.phone&&l.createElement("div",{className:"ref-validation-error"},p.phone)),(me("pickup")||Ot)&&l.createElement("label",{className:"ref-customer-name-input"},l.createElement("span",null,_("name")),l.createElement("input",{type:"text",name:"customer-name",className:"ref-form-control",value:f||j?.name||"",minLength:"5",required:!0,onChange:h=>m(h.target.value)}),p["customer-name"]&&l.createElement("div",{className:"ref-validation-error"},p["customer-name"])),Ot&&l.createElement("fieldset",{className:"ref-digital-delivery"},l.createElement("div",{className:"ref-digital-address-holder"},l.createElement(Ee,{countries:ze(),prefix:"digital",fields:["country"],isDigital:!0,model:S,onChange:(h,N)=>{L(V=>{let ie=Oe(V,h,N);return xt("digital",o.getDigitalAddress(ie)),ie})}})),l.createElement("input",{type:"hidden",name:"delivery-method",value:"digital"})),!!Ne&&l.createElement(lt,{customFields:Ne,useFormData:a,formErrors:p}),l.createElement("div",{className:"ref-heading ref-heading-delivery"},_("delivery")),Me&&!o.canDeliver()&&l.createElement("div",{className:"ref-delivery-unavailable"},_("cart.errors.delivery_unavailable")),Fr&&l.createElement("div",{className:"ref-delivery-card"+(Gr?" tabbable":"")},Ze&&l.createElement("div",{className:"ref-tab ref-local-pickup-tab "+(me("pickup")?" open":"")},l.createElement("label",{className:"ref-tab-toggle"},l.createElement("input",{type:"radio",value:"pickup",name:"delivery-method",required:!0,checked:me("pickup"),onChange:h=>wt(h.target.value)}),l.createElement("div",{className:"ref-heading-small"},_("pickup_at_store"))),l.createElement("fieldset",{className:"ref-tab-content",disabled:!me("pickup")},l.createElement("div",{className:"ref-heading-small"},_("cart.select_store")),l.createElement("div",{className:"ref-locations ref-error-parent"},J.map((h,N)=>l.createElement("label",{key:h.id},l.createElement("input",{type:"radio",value:N,name:"store-location",required:!0,checked:Pr==N,onChange:()=>Tr(N)}),l.createElement("div",{className:"ref-location-card"},l.createElement("b",{className:"ref-location-name"},h.name),l.createElement("div",{className:"ref-location-address"},l.createElement("b",null,`${_("address")}: `),Br(h)),l.createElement("div",{className:"ref-location-contacts"},h.email&&l.createElement("span",null,l.createElement("b",null,`${_("email")}: `),h.email),h.phone&&l.createElement("span",null,l.createElement("b",null,`${_("phone")}: `),h.phone),h.working_hours&&l.createElement("span",null,l.createElement("b",null,`${_("working_hours")}: `),h.working_hours),h.delivery_time&&l.createElement("span",null,l.createElement("b",null,`${_("cart.order_ready_for_pickup_label")}: `),Ke(h.delivery_time)))))),p["store-location"]&&l.createElement("div",{className:"ref-validation-error"},p["store-location"])),l.createElement("div",{className:"ref-billing-container"},P?l.createElement("fieldset",{className:"ref-billing-address"},l.createElement("div",{className:"ref-row"},l.createElement("div",{className:"ref-heading-small"},_("billing_address")),l.createElement("div",{className:"ref-button ref-remove-billing",onClick:()=>Bt()},_("remove"))),l.createElement("div",{className:"ref-billing-address-holder"},l.createElement(Ee,{countries:ze(),prefix:"billing",model:x,onChange:(h,N)=>T(V=>Oe(V,h,N))}))):l.createElement("div",{className:"ref-button ref-add-billing",onClick:()=>At()},_("cart.add_billing"))))),Xe&&l.createElement("div",{className:"ref-tab ref-shipping-tab "+(me("shipping")?" open":"")},l.createElement("label",{className:"ref-tab-toggle"},l.createElement("input",{type:"radio",value:"shipping",name:"delivery-method",required:!0,checked:me("shipping"),onChange:h=>wt(h.target.value)}),l.createElement("div",{className:"ref-heading-small"},_("cart.deliver_to_address"))),l.createElement("fieldset",{className:"ref-tab-content",disabled:!me("shipping")},l.createElement("div",{className:"ref-heading-small"},_("shipping_address")),l.createElement("div",{className:"ref-shipping-address-holder"},l.createElement(Ee,{countries:Nr(),prefix:"shipping",model:kt(),onChange:(h,N)=>{C(V=>{let ie=Oe(V,h,N);return xt("shipping",o.getShippingAddress({...kt(),...ie})),ie})}})),!!w&&w.isSignedIn()&&l.createElement("div",{className:"ref-auth-save-address"},l.createElement("label",null,l.createElement("input",{type:"checkbox",name:"auth-save-address",checked:E,onChange:h=>v(h.target.checked)}),l.createElement("span",null,_("cart.save_address")))),l.createElement("div",{className:"ref-billing-container"},P?l.createElement("fieldset",{className:"ref-billing-address"},l.createElement("div",{className:"ref-row"},l.createElement("div",{className:"ref-heading-small"},_("billing_address")),l.createElement("div",{className:"ref-button ref-remove-billing",onClick:()=>Bt()},_("remove"))),l.createElement("div",{className:"ref-billing-address-holder"},l.createElement(Ee,{countries:ze(),prefix:"billing",model:x,onChange:(h,N)=>T(V=>Oe(V,h,N))}))):l.createElement("div",{className:"ref-button ref-add-billing",onClick:()=>At()},_("cart.add_billing"))),Mr()&&l.createElement(l.Fragment,null,l.createElement("div",{className:"ref-heading-shipping-methods ref-heading-small"},_("shipping_method")),l.createElement("div",{className:"ref-shipping-methods ref-error-parent"},ue.map((h,N)=>l.createElement("label",{key:h.name,className:"ref-row"},l.createElement("div",{className:"ref-method-radio"},l.createElement("input",{type:"radio",value:N,name:"shipping-method",required:!0,checked:wr==N,onChange:()=>Lr(N)})),l.createElement("div",{className:"ref-method-name"},l.createElement("b",null,h.name),!!h.delivery_time&&l.createElement("small",null,Ke(h.delivery_time)+" - "+Ke(h.delivery_time+2)),!!h.note&&l.createElement("small",null,h.note)),l.createElement("div",{className:"ref-method-price"},o.formatCurrency(h.price)))),p["shipping-method"]&&l.createElement("div",{className:"ref-validation-error"},p["shipping-method"])))))),We?.exemptionType&&l.createElement("div",{className:"ref-tax-note"},l.createElement("hr",null),l.createElement("div",{className:`ref-field-collapsible${W?" open":""}`},l.createElement("span",{className:"ref-field-toggle",onClick:()=>Z(!W)},l.createElement("span",{className:"ref-field-toggle-title"},_("cart.tax_exemption_add"))),l.createElement("div",{className:"ref-collapse"},We.exemptionType==="file"?l.createElement("div",{className:"ref-tax-exemption-file"},ae?l.createElement("div",{className:"ref-old-tax-file"},l.createElement("a",{href:ae.download,className:"ref-tax-file-dl"},_("cart.tax_exemption_file")),l.createElement("span",{className:"ref-remove-tax-file",onClick:o.removeTaxExemptionFile},_("remove"))):l.createElement("label",{className:"ref-new-tax-file"},l.createElement("span",{className:"ref-tax-file-label"},_("cart.tax_exemption_file_prompt")),l.createElement("input",{type:"file",name:"tax-exemption-file",id:"ref-field-exemption-file",className:"ref-form-control",accept:".doc,.docx,.pdf,.jpg,.jpeg,.png",onChange:h=>It("tax-exemption-file",h.target.files[0])}),p["tax-exemption-file"]&&l.createElement("div",{className:"ref-validation-error"},p["tax-exemption-file"]))):We.exemptionType==="vat_number"?l.createElement("label",{className:"ref-tax-exemption-text"},l.createElement("span",null,_("cart.tax_exemption_number_prompt")),l.createElement("input",{type:"text",name:"tax-exemption-text",id:"ref-field-exemption-text",className:"ref-form-control",maxLength:"30",defaultValue:ae?ae?.vat_number?.input||ae?.vat_number?.number:"",onChange:h=>It("tax-exemption-text",h.target.value)}),ae&&(ae?.vat_number?.status==="invalid"?l.createElement("div",{className:"ref-validation-error"},_("cart.errors.vat_number_invalid")):ae.status=="unvalidated"?l.createElement("div",{className:"ref-validation-error"},_("cart.errors.vat_number_validation_fail")):null)):null))),l.createElement("hr",null),l.createElement("div",{className:`ref-field-collapsible ref-note-to-seller${X?" open":""}`},l.createElement("span",{className:"ref-field-toggle",onClick:()=>G(!X)},l.createElement("span",{className:"ref-field-toggle-title"},_("cart.note_to_seller"))),l.createElement("label",{className:"ref-collapse"},l.createElement("textarea",{id:"ref-field-note-seller",className:"ref-form-control",name:"note-to-seller",value:y,row:"4",maxLength:"1000",placeholder:_("cart.note_to_seller_placeholder"),onChange:h=>H(h.target.value)})),p.note&&l.createElement("div",{className:"ref-validation-error"},p.note)),l.createElement("hr",null),l.createElement("div",null,(Q.some(h=>h.supported)||o.hasZeroValue())&&l.createElement("div",{className:"ref-heading ref-heading-payment"},_("payment")),xr&&Ir(),l.createElement("div",{className:"ref-standard-payment-buttons"},o.hasZeroValue()?l.createElement(he,{text:_("cart.complete_order"),onClick:()=>ye("zero-value-cart")}):Hr())))}function ut({successURL:e,cancelURL:t,onMessage:r,step:i,setStep:n,demoMode:o}){let s=U(),{paymentProviders:a,locations:d,t:c,taxExemptionRemoved:u,setTaxExemptionRemoved:g}=s,[f,m]=Mi({}),y=i==="details",H=i==="instructions";Ui(()=>{u&&(r({type:"warning",title:c("cart.tax_exemption_cleared"),description:c("cart.tax_exemption_cleared_details")}),g(!1))},[u]);async function k(C,x,T){if(C.order&&C.order.amount==0){window.location=se(e,{order_id:C.order.id,secure_hash:C.order.secure_hash});return}if(x==="zero-value-cart"&&!C.order&&await s.refresh(),x==="stripe"&&C.stripeCheckoutURL){window.location=C.stripeCheckoutURL;return}if(x==="custom"&&C.order){let S=a.find(L=>L.id===T);if(!S)return;if(!S.instructions){window.location=se(e,{order_id:C.order.id,secure_hash:C.order.secure_hash});return}m(L=>({...L,title:S.name,description:S.instructions.replaceAll("{orderid}",C.order.id).replaceAll("{amount}",s.formatCurrency(C.order.amount))})),n("instructions")}if(x==="pay-in-store"&&C.order){let S=d.find(L=>L.chosen);if(!S||!S.instructions){window.location=se(e,{order_id:C.order.id,secure_hash:C.order.secure_hash});return}m(L=>({...L,title:c("pickup_at_store"),description:S.instructions.replaceAll("{orderid}",C.order.id).replaceAll("{amount}",s.formatCurrency(C.order.amount))})),n("instructions")}}return ce.createElement("div",{className:"ref-checkout"},ce.createElement("div",{className:"ref-checkout-content"},y&&ce.createElement(ce.Fragment,null,ce.createElement("div",{className:"ref-back",onClick:()=>n("cart")},"\u2190 ",c("cart.back_to_cart")),ce.createElement(ct,{successURL:e,cancelURL:t,onMessage:r,onCheckoutSuccess:k,demoMode:o})),H&&ce.createElement(at,{instructions:f}),ce.createElement(Be,null)),ce.createElement(nt,{readOnly:i==="instructions",onMessage:r,updateCart:()=>n("cart")}))}var qi=({cart:e,auth:t,successURL:r,cancelURL:i,onMessage:n,demoMode:o=!1})=>pe.createElement(Ft,{cart:e,auth:t},pe.createElement(ji,{successURL:r,cancelURL:i,onMessage:n,demoMode:o}));function ji({successURL:e,cancelURL:t,onMessage:r,demoMode:i}){let[n,o]=Fi("cart"),s=U(),{products:a,isLoading:d,isLoaded:c,isUnavailable:u,testMode:g,t:f}=s,m=u?f("cart.errors.unavailable"):c?s.arePaymentProvidersAvailable()?s.onlyPaypalNoDelivery()?f("cart.errors.only_paypal_no_delivery"):a.length?"":f("cart.errors.empty"):f("cart.errors.no_payment_methods"):"";Gi(()=>{!a.length&&n!=="cart"&&o("cart")},[a]);function y(){return n==="cart"?pe.createElement(Kt,{step:n,setStep:o,successURL:e,cancelURL:t,onMessage:r,demoMode:i}):pe.createElement(ut,{step:n,setStep:o,successURL:e,cancelURL:t,onMessage:r,demoMode:i})}return pe.createElement("div",{className:"reflow-shopping-cart"},!!g&&pe.createElement("div",{title:`Test Mode is enabled. The Reflow data displayed on the page is from your project's Test mode. To view Live data, remove the testMode prop from the config object.`,className:"ref-test-mode-badge"},"Test Mode"),pe.createElement("div",{className:"ref-loading-backdrop"+(d?" active":"")}),m?pe.createElement("div",{className:"ref-message"},m):c?y():null)}var Zt=qi;import K,{useState as dt,useRef as Vi}from"react";function Wt({cart:e,product:t,buttonText:r,showQuantity:i=!0,showPersonalization:n=!0,onVariantSelect:o,onMessage:s}){let a=Vi(),[d,c]=dt(t.min_quantity||1),[u,g]=dt(t.variants.enabled?t.variants.items[0].id:""),[f,m]=dt({});function y(){let p=r||e.t("add_to_cart.button_text");return L()||(p=e.t("out_of_stock")),p}function H(){return t.variants.enabled}function k(){return t.personalization.enabled}function C(){return(H()?t.variants.items.find(I=>I.id===u):t)||t}function x(p){g(p),o&&o(t.variants.items.find(I=>I.id==p))}function T(p,I,w){m(j=>({...j,[p]:{...j[p]||{},[I]:w}}))}function S(p,I){return!f[p]||!f[p][I]?null:f[p][I]}function L(){return C().in_stock}async function E(p){if(p.preventDefault(),a.current&&!a.current.checkValidity()){a.current.reportValidity();return}let I=[];for(let w of t.personalization.items){if(!v(w))continue;let j={id:w.id};switch(w.type){case"text":j.inputText=S(w.id,"text");break;case"dropdown":j.selected=S(w.id,"dropdown");break;case"file":let Y=S(w.id,"file");Y&&Y.length&&(j.file=Y[0]);break;default:break}I.push(j)}try{await e.addProduct({id:t.id,variantID:u,personalization:I},d),s&&s({title:e.t("add_to_cart.success")}),c(1),m({})}catch(w){console.error("Reflow: Couldn't add product to cart",w),s&&s({title:e.t("add_to_cart.error"),description:w.data&&w.data.errorCode?e.t(w.data.errorCode):null})}}function v(p){let I=!!S(p.id,"checkbox"),w=p.required;return I||w}function P(){return H()}function F(){return i}function X(){return n&&k()}function G(){return!0}function W(p){return v(p)}function Z(p){let I=v(p),w=I,j={display:I?"block":"none"},Y=S(p.id,p.type),re=_=>T(p.id,p.type,_.target.value);switch(p.type){case"text":return K.createElement("input",{type:"text",className:"ref-form-control ref-personalization-text-input",style:j,minLength:p.min||0,maxLength:p.max||1/0,value:Y||"",onChange:re,required:w});case"dropdown":let _=p.dropdownOptions.split(",").map(R=>R.trim()).filter(R=>!!R);return K.createElement("select",{className:"ref-form-control ref-personalization-dropdown",style:j,value:Y||_[0],onChange:re,required:w},_.map(R=>K.createElement("option",{key:R,value:R},R)));case"file":return K.createElement("input",{type:"file",className:"ref-form-control ref-personalization-file-input",style:j,accept:p.filetypes,required:w,onChange:R=>T(p.id,p.type,R.target.files)});default:return null}}return K.createElement("div",{className:"reflow-add-to-cart ref-product-controls"},P()&&K.createElement("div",{className:"ref-variant"},K.createElement("label",null,K.createElement("span",null,t.variants.option_name||""),K.createElement("select",{className:"ref-form-control ref-field-variants",name:"variant-state",required:"",value:u,onChange:p=>x(p.target.value)},t.variants.items.map(p=>K.createElement("option",{key:p.id,value:p.id},p.name))))),X()&&K.createElement("form",{ref:a,className:"ref-personalization-holder ref-personalization-form"},t.personalization.items.map(p=>K.createElement("div",{className:"ref-personalization",id:p.id,key:p.id},K.createElement("span",{className:"ref-row"},K.createElement("div",null,K.createElement("label",{className:"ref-personalization-label"},p.name,!p.required&&K.createElement("input",{type:"checkbox",className:"ref-form-control ref-personalization-checkbox",value:p.id,checked:S(p.id,"checkbox")||!1,onChange:I=>T(p.id,"checkbox",I.target.checked)}))),!p.required&&K.createElement("span",{className:"ref-price"},p.price>0?p.price_formatted:e.t("price_free"))),!!p.instructions&&K.createElement("p",{className:"ref-instructions",style:{display:W(p)?"block":"none"}},p.instructions),Z(p)))),F()&&K.createElement(ge,{active:L(),originalQuantity:d||1,maxQuantity:t.max_quantity,availableQuantity:C().available_quantity,updateQuantity:p=>c(p)}),G()&&K.createElement("a",{href:"#",className:`ref-button${L()?"":" inactive"}`,disabled:!L(),onClick:E},y()),t.min_quantity>0&&K.createElement("p",{className:"ref-min-qty-message"},e.t("add_to_cart.min_quantity_per_order",{quantity:t.min_quantity})))}import{useState as Zn,useEffect as Wn}from"react";var $i=Object.create,or=Object.defineProperty,zi=Object.getOwnPropertyDescriptor,Qi=Object.getOwnPropertyNames,Ki=Object.getPrototypeOf,Xi=Object.prototype.hasOwnProperty,Zi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Wi=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Qi(t))!Xi.call(e,n)&&n!==r&&or(e,n,{get:()=>t[n],enumerable:!(i=zi(t,n))||i.enumerable});return e},Yi=(e,t,r)=>(r=e!=null?$i(Ki(e)):{},Wi(t||!e||!e.__esModule?or(r,"default",{value:e,enumerable:!0}):r,e)),Ji=Zi((e,t)=>{var r="Expected a function",i=NaN,n="[object Symbol]",o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,d=/^0o[0-7]+$/i,c=parseInt,u=typeof global=="object"&&global&&global.Object===Object&&global,g=t