@lockerverse/react 0.2.56 → 0.2.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockerverse-payment.d.ts","names":[],"sources":["../src/types.ts","../src/lockerverse-payment.tsx"],"mappings":";;;;KAOY;EACN;EAAqB;;EACrB;EAAqB;;KAEf;KAEA;EACV;EACA;EACA;;KAGU,0BAA0B;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;KAGU,8BACP,MAAM,kBAAkB,gBACxB,kBAAkB;KAEX,0BAA0B,iCACpC,KAAK;EACH,WAAW;EACX,WAAW;EACX,qBAAqB,SAAS;EAC9B,2BACE,UAAU;EAEZ,sBAAsB,SAAS;EAC/B,gBAAgB;EAChB,WAAW;EACX,eAAe;EACf,QAAQ;EACR,QAAQ;;;;
|
|
1
|
+
{"version":3,"file":"lockerverse-payment.d.ts","names":[],"sources":["../src/types.ts","../src/lockerverse-payment.tsx"],"mappings":";;;;KAOY;EACN;EAAqB;;EACrB;EAAqB;;KAEf;KAEA;EACV;EACA;EACA;;KAGU,0BAA0B;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;KAGU,8BACP,MAAM,kBAAkB,gBACxB,kBAAkB;KAEX,0BAA0B,iCACpC,KAAK;EACH,WAAW;EACX,WAAW;EACX,qBAAqB,SAAS;EAC9B,2BACE,UAAU;EAEZ,sBAAsB,SAAS;EAC/B,gBAAgB;EAChB,WAAW;EACX,eAAe;EACf,QAAQ;EACR,QAAQ;;;;iBCg9BI,qBACd,YACA,UACA,WACA,eACA,aACA,OACA,UACA,SACA,mBACA,yBACA,oBACA,kBACA,eACA,WACA,WACA,OACA,cACA,OACA,eACG,gBACF,0CAAuB,IAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,o as i,s as a,t as o,u as s}from"./contact-validation.js";import{AddressElement as c,Elements as l,PaymentElement as u,useElements as d,useStripe as f}from"@stripe/react-stripe-js";import{loadStripe as p}from"@stripe/stripe-js";import{createContext as m,useCallback as h,useContext as g,useEffect as _,useId as v,useLayoutEffect as y,useMemo as b,useReducer as x,useRef as S,useState as C}from"react";import{array as w,minLength as ee,minValue as T,nonEmpty as te,number as E,object as ne,pipe as D,regex as re,safeInteger as ie,safeParse as O,strictObject as k,string as A,trim as j,union as ae}from"valibot";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{Select as F}from"@base-ui/react/select";import{LockerverseSdkError as I,createLockerverseCheckoutClient as L}from"@lockerverse/sdk/checkout";const oe=m(void 0);function R({children:e,container:t}){return N(oe.Provider,{value:t,children:e})}function se(){return N(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:N(`path`,{d:`m4 6 4 4 4-4`})})}function z(){return N(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:N(`path`,{d:`m3 8 3 3 7-7`})})}function B({ariaDescribedBy:e,ariaLabel:t,ariaLabelledBy:n,className:r,id:i,invalid:a=!1,name:o,onValueChange:s,options:c,value:l}){let u=g(oe),d=[`lockerverse-payment__select`,r].filter(Boolean).join(` `);return N(`div`,{className:d,children:P(F.Root,{id:i,items:c,name:o,onValueChange:e=>{e!==null&&s(e)},value:l,children:[P(F.Trigger,{"aria-describedby":e,"aria-invalid":a||void 0,"aria-label":t,"aria-labelledby":n,className:`lockerverse-payment__select-trigger`,children:[N(F.Value,{}),N(F.Icon,{"aria-hidden":`true`,className:`lockerverse-payment__select-icon`,children:N(se,{})})]}),N(F.Portal,{container:u,children:N(F.Positioner,{alignItemWithTrigger:!1,className:`lockerverse-payment__select-positioner`,sideOffset:6,children:N(F.Popup,{className:`lockerverse-payment__select-popup`,children:N(F.List,{className:`lockerverse-payment__select-list`,children:c.map(e=>P(F.Item,{className:`lockerverse-payment__select-item`,value:e.value,children:[N(F.ItemText,{children:e.label}),N(F.ItemIndicator,{"aria-hidden":`true`,className:`lockerverse-payment__select-item-indicator`,children:N(z,{})})]},e.value))})})})})]})})}const ce=[`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`],le=[`15`,`12`,`10`,`5`],V=[...le,`custom`];function ue({enabled:e,error:t,errorId:n,onChange:r,values:i}){if(!e)return null;let a=e=>r({...i,...e}),o=(e,t)=>{let n=V.indexOf(t),r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(n+1)%V.length;break;case`ArrowLeft`:case`ArrowUp`:r=(n-1+V.length)%V.length;break;case`Home`:r=0;break;case`End`:r=V.length-1;break;default:return}e.preventDefault();let i=V[r];i&&((e.currentTarget.closest(`[role="radiogroup"]`)?.querySelectorAll(`input[type="radio"]`))?.[r]?.focus(),a({tipPercent:i}))};return P(`div`,{className:`lockerverse-payment__tip-box`,children:[N(`p`,{children:`Add a tip to support the Lockerverse platform`}),P(`div`,{"aria-label":`Tip amount`,role:`radiogroup`,children:[le.map(e=>P(`label`,{className:`lockerverse-payment__tip-choice`,children:[N(`input`,{checked:i.tipPercent===e,name:`tipPercent`,onChange:()=>a({tipPercent:e}),onKeyDown:t=>o(t,e),tabIndex:i.tipPercent===e?0:-1,type:`radio`,value:e}),P(`span`,{children:[e,`%`]})]},e)),P(`label`,{className:`lockerverse-payment__tip-choice`,children:[N(`input`,{checked:i.tipPercent===`custom`,name:`tipPercent`,onChange:()=>a({tipPercent:`custom`}),onKeyDown:e=>o(e,`custom`),tabIndex:i.tipPercent===`custom`?0:-1,type:`radio`,value:`custom`}),N(`span`,{children:`Other`})]})]}),i.tipPercent===`custom`?P(`label`,{children:[N(`span`,{children:`Custom tip`}),P(`span`,{className:`lockerverse-payment__money-input`,children:[N(`span`,{"aria-hidden":`true`,children:`$`}),N(`input`,{"aria-describedby":t?n:void 0,"aria-invalid":t?`true`:void 0,inputMode:`decimal`,name:`tip`,onChange:e=>a({customTip:e.currentTarget.value}),placeholder:`0.00`,value:i.customTip})]}),t?N(`span`,{className:`lockerverse-payment__field-message`,id:n,children:t}):null]}):N(`input`,{name:`tip`,type:`hidden`,value:i.tipPercent})]})}function de({checked:e,children:t,name:n,onChange:r}){return P(`label`,{className:`lockerverse-payment__check-row`,children:[N(`input`,{checked:e,name:n,onChange:e=>r(e.currentTarget.checked),type:`checkbox`}),N(`span`,{children:t})]})}function fe({customFields:e,errors:t,fields:n,idPrefix:r,isPromoApplying:a,onChange:o,onApplyPromo:s,promoError:c,values:l}){let u=e=>o({...l,...e});return P(`div`,{className:`lockerverse-payment__additional-fields`,children:[n.memberId?P(`label`,{children:[N(`span`,{children:`Member ID`}),N(`input`,{name:`memberId`,onChange:e=>u({memberId:e.currentTarget.value}),placeholder:`Optional`,value:l.memberId})]}):null,n.merchSize?P(`div`,{className:`lockerverse-payment__field`,children:[N(`span`,{id:`${r}-merch-size-label`,children:`Size`}),N(B,{ariaLabelledBy:`${r}-merch-size-label`,name:`merchSize`,onValueChange:e=>u({merchSize:e}),options:ce.map(e=>({label:e,value:e})),value:l.merchSize})]}):null,n.promoCode?P(`div`,{className:`lockerverse-payment__field`,children:[N(`span`,{id:`${r}-promo-code-label`,children:`Promo code`}),P(`div`,{className:`lockerverse-payment__promo-control`,children:[N(`input`,{"aria-describedby":c?`${r}-promo-code-error`:void 0,"aria-invalid":c?`true`:void 0,"aria-labelledby":`${r}-promo-code-label`,name:`promoCode`,onChange:e=>u({promoCode:e.currentTarget.value}),placeholder:`Optional`,value:l.promoCode}),N(`button`,{disabled:!l.promoCode.trim()||a,onClick:s,type:`button`,children:a?`Applying…`:`Apply`})]}),c?N(`p`,{className:`lockerverse-payment__field-message`,id:`${r}-promo-code-error`,role:`alert`,children:c}):null]}):null,N(i,{choiceClassName:`lockerverse-payment__check-row`,errorClassName:`lockerverse-payment__field-message`,errors:t,fields:e,idPrefix:r,onChange:e=>u({customFields:e}),values:l.customFields})]})}function pe({amountCents:e,enabled:t,onChange:n,values:r}){return t?P(de,{checked:r.includeServiceFee,name:`includeServiceFee`,onChange:e=>n({...r,includeServiceFee:e}),children:[`Add `,me(e),` to help cover processing fees`]}):null}function me(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}const he=[`amountCents`,`discountableSubtotalCents`,`discountCents`,`serviceFeeCents`,`subtotalCents`,`tipCents`,`totalCents`],H=[`discountableSubtotalCents`,`discountCents`,`subtotalCents`];function ge(e,t,n){return(n===t.totalCents?H:he).some(n=>e[n]!==t[n])||e.payment.connectedAccountId!==t.payment.connectedAccountId||e.payment.currency!==t.payment.currency||JSON.stringify(e.appliedDiscount)!==JSON.stringify(t.appliedDiscount)||JSON.stringify(e.lineItems)!==JSON.stringify(t.lineItems)}function _e(e){return e.checkoutStatus===`success`?{kind:`success`,payment:e}:e.checkoutStatus===`failed`?{kind:`failed`,payment:e}:{kind:`unresolved`,paymentReference:e.paymentReference,reason:e.checkoutStatus===`action_required`?`action_required`:`pending`}}async function U(e,t,n){if(t.checkoutStatus!==`action_required`)return _e(t);if(!n)return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`};if(t.clientSecret)try{await n.handleNextAction({clientSecret:t.clientSecret})}catch{}try{return _e(await e.getPaymentStatus(t.paymentReference))}catch{return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`}}}async function W(e,t,n){let r;try{r=await e.submitPayment(t)}catch(n){if(!(n instanceof I&&n.recoveryRecommended))throw n;try{r=await e.getPaymentStatus(t.checkout.paymentReference)}catch{return{kind:`unresolved`,paymentReference:t.checkout.paymentReference,reason:`recovery_failed`}}}return U(e,r,n)}async function ve(e,t,n){try{return U(e,await e.getPaymentStatus(t),n)}catch{return{kind:`unresolved`,paymentReference:t,reason:`recovery_failed`}}}const ye=D(A(),j(),te()),be=D(E(),ie(),T(1)),xe=D(w(ae([k({amountCents:be,productSlug:ye}),k({productSlug:ye,quantity:be})])),ee(1)),Se=D(A(),j(),re(/^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/,`Enter a valid tip amount.`));function Ce(e){let t=O(Se,e);if(!t.success)return{message:t.issues[0]?.message??`Enter a valid tip amount.`,success:!1};let[n=`0`,r=``]=t.output.split(`.`),i=BigInt(n)*100n+BigInt(r.padEnd(2,`0`));return i>BigInt(2**53-1)?{message:`Enter a valid tip amount.`,success:!1}:{cents:Number(i),success:!0}}function we(e){let t=O(xe,e);return t.success?{success:!0,value:t.output}:{message:`Lockerverse payment configuration is invalid.`,success:!1}}function Te(e){return o(e)}function Ee(t,r){let i=r?{...t,phone:Te(t.phone)}:t,a=ne(r?{email:n,phone:e}:{email:n}),o=O(a,i);if(o.success)return{errors:{},value:o.output};let s={};for(let e of o.issues){let t=e.path?.[0]?.key;(t===`email`||t===`phone`)&&!s[t]&&(s[t]=e.message)}return{errors:s,value:null}}function G(e){throw Error(`Unexpected payment workflow value: ${String(e)}`)}function K(e,t){return t===void 0?{phase:e}:{error:t,phase:e}}function De(e){return e?{phase:`recovering`}:{phase:`editing`}}function Oe(e){return e.phase===`editing`||e.phase===`invalid`?e.error:e.phase===`refreshing_quote`?e.previousError:void 0}function ke(e){return e.phase===`succeeded`?`success`:e.phase===`unresolved`?`unresolved`:e.phase===`submitting`||e.phase===`recovering`?`submitting`:e.phase===`invalid`?`invalid`:Oe(e)?`error`:`idle`}function Ae(e){return e.phase===`submitting`}function je(e,t){if(e.phase===`succeeded`||e.phase===`unresolved`)return e;switch(t.type){case`field_changed`:return e.phase===`invalid`?K(`editing`,e.error):e;case`validation_failed`:return e.phase===`submitting`||e.phase===`recovering`?e:K(`invalid`,Oe(e));case`quote_refresh_started`:{if(e.phase===`submitting`||e.phase===`recovering`)return e;let n=Oe(e);return{...n===void 0?{}:{previousError:n},phase:`refreshing_quote`,validatePromo:t.validatePromo}}case`quote_refresh_succeeded`:return e.phase===`refreshing_quote`?{phase:`editing`}:e;case`quote_refresh_failed`:return e.phase===`refreshing_quote`?K(`editing`,t.error??e.previousError):e;case`submission_started`:return e.phase===`recovering`?e:{phase:`submitting`};case`quote_changed`:return e.phase===`submitting`?{phase:`editing`}:e;case`retryable_failure`:return K(`editing`,t.error);case`recovery_failed`:return e.phase===`recovering`?K(`editing`,t.error):e;case`succeeded`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,phase:`succeeded`}:e;case`unresolved`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,paymentReference:t.paymentReference,phase:`unresolved`,reason:t.reason}:e;default:return G(t)}}function Me(e,t){switch(t.type){case`loading`:return{configuration:t.configuration,phase:`loading`,revision:e.revision,selectionKey:t.selectionKey};case`ready`:return{catalog:t.catalog,checkoutItems:t.checkoutItems,client:t.client,configuration:t.configuration,phase:`ready`,preparedCheckout:t.preparedCheckout,revision:e.revision+1,selectionKey:t.selectionKey};case`error`:return{configuration:t.configuration,failure:t.failure,phase:`error`,revision:e.revision,selectionKey:t.selectionKey};case`checkout`:return e.phase===`ready`?{...e,preparedCheckout:t.preparedCheckout}:e;case`retry`:return{phase:`idle`,revision:e.revision+1};default:return e}}function q(e,t){let{apiBaseUrl:n,communitySlug:r,environment:i,fetch:a,requestTimeoutMs:o,sentryDsn:s,widgetSlug:c}=e,l={communitySlug:r,widgetSlug:c,...a?{fetch:a}:{},...t?{onError:t}:{},...o===void 0?{}:{requestTimeoutMs:o},...s===void 0?{}:{sentryDsn:s}};if(n===void 0){if(i===`development`)throw TypeError(`Lockerverse development checkout requires an API base URL.`);return{...l,...i===`production`?{environment:i}:{}}}return{...l,apiBaseUrl:n,...i===void 0?{}:{environment:i}}}function J(e,t,n){return e?.configuration===t&&e.selectionKey===n}function Ne({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,onError:i,paymentState:a,requestTimeoutMs:o,selection:s,sentryDsn:c,widgetSlug:l}){let u=b(()=>({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,requestTimeoutMs:o,sentryDsn:c,widgetSlug:l}),[e,t,n,r,o,c,l]),d=we(s),f=d.success?JSON.stringify(d.value):`invalid-selection`,p=b(()=>d.success?JSON.parse(f):[],[d.success,f]),[m,h]=x(Me,{phase:`idle`,revision:0}),g=S(void 0),v=S(void 0),y=S(i);return y.current=i,_(()=>{if(!d.success||a===`submitting`||a===`success`||a===`unresolved`||J(v.current,u,f)||J(g.current,u,f))return;let e=!0,t={configuration:u,selectionKey:f};g.current=t,h({configuration:u,selectionKey:f,type:`loading`});async function n(){try{let n=L(q(u,e=>y.current?.(e))),{catalog:r,checkout:i}=await n.bootstrapCheckout({items:p}),a=[...i.items];e&&(g.current=void 0,v.current=t,h({catalog:r,checkoutItems:a,client:n,configuration:u,preparedCheckout:i,selectionKey:f,type:`ready`}))}catch(n){e&&(g.current=void 0,v.current=t,h({configuration:u,failure:n instanceof Error?n.message:`Lockerverse payment could not load.`,selectionKey:f,type:`error`}))}}return n(),()=>{e=!1,J(g.current,u,f)&&(g.current=void 0)}},[u,d.success,a,f,m.revision,p]),{retryCheckout:()=>{g.current=void 0,v.current=void 0,h({type:`retry`})},selectionError:d.success?void 0:d.message,session:m,updateCheckout:e=>h({preparedCheckout:e,type:`checkout`})}}function Y(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Pe(e,t){return t.tipPercent===`custom`?t.customTip.trim()?Ce(t.customTip):{cents:0,success:!0}:{cents:Math.round(e*Number(t.tipPercent)/100),success:!0}}const Fe=[{callingCode:`+1`,label:`🇺🇸 +1`,value:`US`},{callingCode:`+52`,label:`🇲🇽 +52`,value:`MX`},{callingCode:`+380`,label:`🇺🇦 +380`,value:`UA`},{callingCode:`+48`,label:`🇵🇱 +48`,value:`PL`},{callingCode:`+1`,label:`🇨🇦 +1`,value:`CA`},{callingCode:`+49`,label:`🇩🇪 +49`,value:`DE`},{callingCode:`+44`,label:`🇬🇧 +44`,value:`GB`},{callingCode:`+46`,label:`🇸🇪 +46`,value:`SE`},{callingCode:`+358`,label:`🇫🇮 +358`,value:`FI`},{callingCode:`+1`,label:`🇵🇷 +1`,value:`PR`}];function Ie(e,t){return e.trim().startsWith(`+`)?e:`${Fe.find(e=>e.value===t)?.callingCode??`+1`}${e}`}function Le(e,t,n,r){return{...n?{email:n}:{},...e.widget.fields.serviceFee?{includeServiceFee:t.includeServiceFee}:{},...e.widget.fields.promoCode&&t.promoCode.trim()?{promoCode:t.promoCode.trim()}:{},...e.widget.fields.tipping?{tipCents:r}:{}}}function X(e,t){if(!e?.complete)throw Error(`${t} address is required.`);return e.value}function Z(e,t,n,r){if(e.widget.fields.shipping)return t.shippingMatchesBilling?n:X(r.shipping,`Shipping`)}function Re({billingAddress:e,catalog:t,email:n,phone:r,shippingAddress:i}){return{payment_method_data:{billing_details:{address:e.address,email:n,name:e.name,...t.widget.fields.phone?{phone:r}:{}}},...i?{shipping:{address:i.address,name:i.name,phone:t.widget.fields.phone?r:i.phone??null}}:{}}}function ze({catalog:e,confirmationToken:t,email:n,fieldValues:r,metadata:i,phone:o,shippingAddress:s}){return{...t?{confirmationToken:t}:{},customFieldAnswers:a(e.widget.customFields,r.customFields),email:n,...i?{metadata:i}:{},...e.widget.fields.memberId&&r.memberId.trim()?{memberId:r.memberId.trim()}:{},...e.widget.fields.merchSize?{merchSize:r.merchSize}:{},...e.widget.fields.phone?{phone:o}:{},...s?{shipping:{address:{city:s.address.city??``,country:s.address.country,line1:s.address.line1??``,...s.address.line2?{line2:s.address.line2}:{},postal_code:s.address.postal_code??``,state:s.address.state??``},name:s.name}}:{}}}function Q(e){if(!e())throw Error(`Payment component is no longer active.`)}async function Be({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:s,locallyPreviewedTotalCents:c,metadata:l,onPaymentRecoveryChange:u,phone:d,quote:f,stripe:p}){let m=a.trim().toLowerCase(),h=Te(d),g=Pe(f.subtotalCents,o);if(!g.success)throw Error(g.message);let _=Le(t,o,m,g.cents),v=await r.calculateTotal({..._,items:n});if(Q(s),v.totalCents>0&&ge(f,v,c))return{kind:`quote_changed`,quote:v};if(v.totalCents===0){let n;t.widget.fields.shipping&&(n=Z(t,o,X(e.billing,`Billing`),e)),Q(s),$(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let i=await W(r,{checkout:v,submission:ze({catalog:t,email:m,fieldValues:o,metadata:l,phone:h,...n?{shippingAddress:n}:{}})},p);return Q(s),i.kind===`failed`?{kind:`payment_failed`,message:`Order could not be completed. Review the details and try again.`}:i.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:i.paymentReference,reason:i.reason}:{kind:`payment`,payment:i.payment,quote:v}}if(!(i&&p))throw Error(`Payment form is still loading.`);await i.update({amount:v.totalCents}),Q(s);let y=await i.submit();if(Q(s),y.error)throw Error(y.error.message);let b=X(e.billing,`Billing`),x=Z(t,o,b,e),S=await p.createConfirmationToken({elements:i,params:Re({billingAddress:b,catalog:t,email:m,phone:h,shippingAddress:x})});if(Q(s),S.error)throw Error(S.error.message);$(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let C=await W(r,{checkout:v,submission:ze({catalog:t,confirmationToken:S.confirmationToken.id,email:m,fieldValues:o,metadata:l,phone:h,...x?{shippingAddress:x}:{}})},p);return Q(s),C.kind===`failed`?{kind:`payment_failed`,message:`Payment was declined. Check your payment details and try again.`}:C.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:C.paymentReference,reason:C.reason}:{kind:`payment`,payment:C.payment,quote:v}}function Ve({accentColor:e,catalog:t,checkoutItems:n,client:r,fontFamily:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,quote:d,resumePayment:f,onStateChange:p,stripeLoader:m,theme:h,visualStyle:g}){let _=f?f.connectedAccountId:d.payment.connectedAccountId,v=b(()=>m(t.payment.publishableKey,_?{stripeAccount:_}:void 0).catch(()=>null),[t.payment.publishableKey,_,m]);return N(l,{options:{amount:Math.max(d.totalCents,100),appearance:{rules:{".Input:focus":{borderColor:e,boxShadow:`0 0 0 1px ${e}`,outline:`none`}},theme:h===`light`?`stripe`:`night`,variables:{borderRadius:g?.[`--lockerverse-radius`]??`10px`,colorBackground:g?.[`--lockerverse-control`]??(h===`light`?`#f5f6f7`:`#121212`),colorDanger:g?.[`--lockerverse-danger`]??(h===`light`?`#c52b3e`:`#f08a98`),colorPrimary:e,colorText:g?.[`--lockerverse-text`]??(h===`light`?`#121416`:`#ffffff`),colorTextPlaceholder:g?.[`--lockerverse-placeholder`]??(h===`light`?`#72767d`:`#6b6b6b`),colorTextSecondary:g?.[`--lockerverse-muted`]??(h===`light`?`#62666d`:`#a1a1aa`),focusBoxShadow:`none`,focusOutline:`none`,fontFamily:i,fontSizeBase:`16px`}},currency:d.payment.currency,excludedPaymentMethodTypes:[`us_bank_account`],mode:`payment`,syncAddressCheckbox:`none`},stripe:v,children:N($e,{catalog:t,checkoutItems:n,client:r,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,onStateChange:p,quote:d,resumePayment:f})},`${t.payment.publishableKey}:${_??`platform`}`)}function He({label:e}){return P(`div`,{className:`lockerverse-payment__stripe-loader`,role:`status`,children:[N(`p`,{children:e}),P(`div`,{"aria-hidden":`true`,children:[N(`span`,{}),N(`span`,{}),N(`span`,{})]})]})}function Ue({onError:e,onReady:t,ready:n}){return P(`div`,{className:`lockerverse-payment__stripe-element`,"data-ready":n,children:[n?null:N(He,{label:`Loading payment form...`}),N(`div`,{className:`lockerverse-payment__stripe-mount`,children:N(u,{onLoadError:({error:t})=>e(t.message??`Payment form failed to load.`),onReady:t,options:{business:{name:`Lockerverse`},fields:{billingDetails:{address:`never`,email:`never`,name:`never`,phone:`never`}},layout:`tabs`,terms:{applePay:`auto`,auBecsDebit:`never`,bancontact:`never`,card:`always`,cashapp:`never`,googlePay:`never`,ideal:`never`,paypal:`auto`,sepaDebit:`never`,sofort:`never`,usBankAccount:`never`},wallets:{applePay:`auto`,googlePay:`never`}}})})]})}function We({label:e,mode:t,onChange:n,onError:r,onReady:i,ready:a}){return P(`div`,{className:`lockerverse-payment__address`,children:[N(`h2`,{children:e}),P(`div`,{className:`lockerverse-payment__stripe-element lockerverse-payment__stripe-element--address`,"data-ready":a,children:[a?null:N(He,{label:`Loading ${e.toLowerCase()}...`}),N(`div`,{className:`lockerverse-payment__stripe-mount`,children:N(c,{onChange:n,onLoadError:({error:t})=>r(t.message??`${e} failed to load.`),onReady:i,options:{autocomplete:{mode:`automatic`},mode:t}})})]})]})}function Ge({message:e}){return e?N(`p`,{className:`lockerverse-payment__field-message`,role:`alert`,children:e}):null}function Ke({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isShippingAddressReady:a,onAddressChange:o,onFieldValuesChange:s,onStripeLoadError:c,setIsBillingAddressReady:l,setIsPaymentReady:u,setIsShippingAddressReady:d}){let f=t>0;return P(M,{children:[f?N(Ue,{onError:c,onReady:()=>u(!0),ready:i}):null,f||e.widget.fields.shipping?N(We,{label:f?`Billing address`:`Shipping address`,mode:`billing`,onChange:e=>o(`billing`,e),onError:c,onReady:()=>l(!0),ready:r}):null,e.widget.fields.shipping?P(`div`,{className:`lockerverse-payment__shipping`,children:[N(de,{checked:n.shippingMatchesBilling,name:`shippingMatchesBilling`,onChange:e=>{s({...n,shippingMatchesBilling:e}),e?o(`shipping`,null):d(!1)},children:`Shipping is same as billing information`}),n.shippingMatchesBilling?null:N(We,{label:`Shipping address`,mode:`shipping`,onChange:e=>o(`shipping`,e),onError:c,onReady:()=>d(!0),ready:a})]}):null]})}function qe({displayedBaseCents:e,displayedTipCents:t,displayedTotalCents:n,quote:r}){let i=Math.max(0,e-r.subtotalCents+r.discountCents);return P(`section`,{"aria-label":`Payment summary`,className:`lockerverse-payment__payment-summary`,children:[N(`h2`,{children:`Order summary`}),N(`div`,{className:`lockerverse-payment__payment-summary-items`,children:r.lineItems.map(e=>P(`div`,{className:`lockerverse-payment__payment-summary-row`,children:[P(`span`,{children:[e.productName,e.quantity>1?P(M,{children:[` `,P(`small`,{children:[`× `,e.quantity]})]}):null]}),N(`strong`,{children:Y(e.subtotalCents)})]},e.listingId))}),P(`div`,{className:`lockerverse-payment__payment-summary-totals`,children:[i>0?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail`,children:[N(`span`,{children:`Service fee`}),N(`strong`,{children:Y(i)})]}):null,r.discountCents>0&&r.appliedDiscount?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-discount`,children:[P(`span`,{children:[r.appliedDiscount.source===`email_list`?`Email discount`:`Promo code discount`,` `,`(`,r.appliedDiscount.percentageOff,`% off)`]}),P(`strong`,{children:[`-`,Y(r.discountCents)]})]}):null,t>0?P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail lockerverse-payment__payment-summary-tip`,children:[N(`span`,{children:`Tip`}),N(`strong`,{children:Y(t)})]}):null,P(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-total`,children:[N(`span`,{children:`Total`}),N(`strong`,{children:Y(n)})]})]})]})}function Je({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isRequiredShippingReady:a,isSubmitting:o,onFieldValuesChange:s,quote:c}){let l=t===0,u=l?!e.widget.fields.shipping||r&&a:i&&r&&a,d=l?`Complete order`:`Pay ${Y(t)}`;return o&&(d=l?`Completing…`:`Processing…`),P(`div`,{className:`lockerverse-payment__actions`,children:[N(pe,{amountCents:c.serviceFeeCents||Math.round(c.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4),enabled:e.widget.fields.serviceFee,onChange:s,values:n}),N(`button`,{"aria-busy":o,"aria-label":l?`Complete order`:`Process payment for ${Y(t)} total`,disabled:o||!u,type:`submit`,children:d})]})}function $(e,t){try{e?.(t)}catch{}}function Ye(e,t){let n=e.elements.namedItem(t);if(n instanceof HTMLElement){n.focus();return}n instanceof RadioNodeList&&Array.from(n).find(e=>e instanceof HTMLElement)?.focus()}function Xe({customFieldErrors:e,emailRef:t,form:n,parsedTipSuccess:r,phoneRef:i,validationErrors:a}){if(a.email){t.current?.focus();return}if(a.phone){i.current?.focus();return}if(!r){n.querySelector(`[name="tip"]`)?.focus();return}let[o]=Object.keys(e);o&&Ye(n,`custom:${o}`)}function Ze({onPaymentComplete:e,onPaymentRecoveryChange:t,onPaymentUncertain:n,onQuoteChange:r,result:i,setDisplayedTotalCents:a,transitionWorkflow:o}){if(i.kind===`quote_changed`){let e=`The total changed to ${Y(i.quote.totalCents)}. Review it and pay again.`;r(i.quote,e),a(i.quote.totalCents),o({type:`quote_changed`});return}if(i.kind===`payment_failed`){$(t,null),o({error:i.message,type:`retryable_failure`});return}if(i.kind===`payment_unresolved`){o({message:`Payment is still processing. Do not submit it again.`,paymentReference:i.paymentReference,reason:i.reason,type:`unresolved`});try{n?.({paymentReference:i.paymentReference,reason:i.reason})}catch{}return}r(i.quote),$(t,null),o({message:i.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{e?.(i.payment)}catch{}}function Qe({email:e,emailDiscountPercentOff:t,emailErrorId:n,emailId:r,emailRef:i,errors:a,onEmailBlur:o,onEmailChange:s,onPhoneChange:c,onPhoneCountryChange:l,phone:u,phoneCountry:d,phoneEnabled:f,phoneErrorId:p,phoneId:m,phoneRef:h}){return P(`div`,{className:`lockerverse-payment__contact`,children:[N(`label`,{htmlFor:r,children:`Email`}),N(`input`,{"aria-describedby":a.email?n:void 0,"aria-invalid":a.email?`true`:void 0,autoComplete:`email`,id:r,name:`email`,onBlur:o,onChange:e=>s(e.currentTarget.value),placeholder:`name@example.com`,ref:i,type:`email`,value:e}),a.email?N(`p`,{className:`lockerverse-payment__field-message`,id:n,children:a.email}):null,t===void 0?null:P(`p`,{className:`lockerverse-payment__discount-message`,role:`status`,children:[`Your email qualifies for `,t,`% off.`]}),f?P(M,{children:[N(`label`,{htmlFor:m,children:`Phone`}),P(`div`,{className:`lockerverse-payment__phone-control`,children:[N(B,{ariaLabel:`Phone number country`,className:`lockerverse-payment__select--phone-country`,name:`phoneCountry`,onValueChange:l,options:Fe,value:d}),N(`input`,{"aria-describedby":a.phone?p:void 0,"aria-invalid":a.phone?`true`:void 0,autoComplete:`tel`,id:m,inputMode:`tel`,name:`phone`,onChange:e=>c(e.currentTarget.value),placeholder:`(201) 555-0123`,ref:h,type:`tel`,value:u})]}),a.phone?N(`p`,{className:`lockerverse-payment__field-message`,id:p,children:a.phone}):null]}):null]})}function $e({catalog:e,checkoutItems:n,client:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m}){let[g,y]=C(``),[b,w]=C(``),[ee,T]=C(`US`),[te,E]=C({}),[ne,D]=C({}),[re,ie]=C(),[O,k]=C(),[A,j]=x(je,m,De),[ae,M]=C(!1),[F,I]=C(!1),[L,oe]=C(!1),[R,se]=C({customFields:t(e.widget.customFields),customTip:``,includeServiceFee:e.widget.fields.serviceFee,memberId:``,merchSize:`M`,promoCode:``,shippingMatchesBilling:!0,tipPercent:`10`}),[z,B]=C(p.totalCents),ce=S({billing:null,shipping:null}),le=S(null),V=S(null),de=S(null),pe=S(!1),me=S(0),he=S(p.totalCents>0),H=S(0),ge=S(A);ge.current=A;let _e=d(),U=f(),W=`lockerverse-${v()}`,ye=`${W}-email`,be=`${ye}-error`,xe=`${W}-phone`,Se=`${xe}-error`,Ce=`${W}-tip-error`,we=Oe(A),Te=A.phase===`succeeded`||A.phase===`unresolved`?A.message:void 0,G=Ae(A),K=A.phase===`refreshing_quote`,Me=A.phase===`recovering`,q=e.widget.fields.tipping?Pe(p.subtotalCents,R):{cents:0,success:!0},J=q.success?q.cents:null,Ne=J??0,Y=z-Ne,Fe=!e.widget.fields.shipping||R.shippingMatchesBilling||L,X=h((e,t=!1)=>{let n=ge.current,r=je(n,e);r!==n&&(ge.current=r,j(e),t&&u(ke(r)))},[u]),Z=h(e=>{X(e,!0)},[X]),Re=h(()=>{let e=H.current+1;return H.current=e,()=>H.current===e},[]);_(()=>()=>{H.current+=1},[]),_(()=>{if(J===null)return;let t=e.widget.fields.serviceFee&&R.includeServiceFee?p.serviceFeeCents||Math.round(p.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4):0,n=p.totalCents-p.serviceFeeCents-p.tipCents+t+J;B(n),n>0&&_e?.update({amount:n})},[e.widget.fields.serviceFee,e.widget.fields.tipping,_e,R.includeServiceFee,R.tipPercent,R.customTip,J,p.serviceFeeCents,p.tipCents,p.totalCents]),_(()=>{G&&de.current?.focus()},[G]),_(()=>{let e=z>0;e&&!he.current&&(M(!1),I(!1)),he.current=e},[z]),_(()=>{if(!(m&&U)||pe.current)return;pe.current=!0;let e=Re();return u(ke(ge.current)),ve(i,m.paymentReference,U).then(t=>{if(e()){if(t.kind===`failed`){$(s,null),Z({error:`The previous payment failed. Check your details and try again.`,type:`recovery_failed`});return}if(t.kind===`unresolved`){Z({message:`Payment is still processing. Do not submit it again.`,paymentReference:t.paymentReference,reason:t.reason,type:`unresolved`});try{c?.({paymentReference:t.paymentReference,reason:t.reason})}catch{}return}$(s,null),Z({message:t.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{o?.(t.payment)}catch{}}}),()=>{e()&&(H.current+=1),pe.current=!1}},[i,o,s,c,u,m,U,Re,Z]);function ze(e){X({type:`field_changed`}),E(t=>{let n={...t};return delete n[e],n})}function Q(e){e.promoCode!==R.promoCode&&k(void 0),se(e),D({}),ie(void 0),X({type:`field_changed`})}function Ve(e){Z({error:e,type:`retryable_failure`})}function He(e){k(e.appliedDiscount?.source===`promo_code`?void 0:`This promo code is invalid or cannot be applied.`)}function Ue(e,t){if(t){k(`This promo code is invalid or cannot be applied.`);return}return e instanceof Error?e.message:`The order total could not be updated.`}async function We(t=!1,r=!1){let a=Ee({email:g.trim().toLowerCase(),phone:``},!1);if(!(q.success&&(a.value||t)))return;me.current+=1;let o=me.current;X({type:`quote_refresh_started`,validatePromo:r});try{let t=await i.calculateTotal({...Le(e,R,a.value?.email??``,q.cents),items:n});if(o!==me.current)return;X({type:`quote_refresh_succeeded`}),B(t.totalCents),l(t),r&&He(t)}catch(e){if(o===me.current){let t=Ue(e,r);X(t===void 0?{type:`quote_refresh_failed`}:{error:t,type:`quote_refresh_failed`})}}}async function Ye(){k(void 0),await We(!0,!0)}async function $e(t){t.preventDefault();let u=Ee({email:g,phone:Ie(b,ee)},e.widget.fields.phone),d=r(e.widget.customFields,R.customFields);if(!(u.value&&q.success)||Object.keys(d).length>0){E(u.errors),D(d),ie(q.success?void 0:q.message),Z({type:`validation_failed`});let e=t.currentTarget;queueMicrotask(()=>{Xe({customFieldErrors:d,emailRef:le,form:e,parsedTipSuccess:q.success,phoneRef:V,validationErrors:u.errors})});return}E({}),D({}),Z({type:`submission_started`});let f=Re();try{let t=await Be({addresses:ce.current,catalog:e,checkoutItems:n,client:i,elements:_e,email:g,fieldValues:R,isAttemptActive:f,locallyPreviewedTotalCents:z,metadata:a,onPaymentRecoveryChange:s,phone:Ie(b,ee),quote:p,stripe:U});if(!f())return;Ze({onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,result:t,setDisplayedTotalCents:B,transitionWorkflow:Z})}catch(e){if(!f())return;$(s,null),Z({error:e instanceof Error?e.message:`Payment could not be completed.`,type:`retryable_failure`})}}return Te?N(`p`,{className:`lockerverse-payment__payment-status`,ref:de,role:`status`,tabIndex:-1,children:Te}):Me?N(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:`Recovering payment…`}):P(`form`,{"aria-busy":G,className:`lockerverse-payment__form`,noValidate:!0,onSubmit:$e,children:[N(`div`,{"data-lockerverse-input-region":``,inert:G?!0:void 0,children:P(`fieldset`,{className:`lockerverse-payment__input-fieldset`,disabled:G,children:[N(qe,{displayedBaseCents:Y,displayedTipCents:Ne,displayedTotalCents:z,quote:p}),N(ue,{enabled:e.widget.fields.tipping,error:re,errorId:Ce,onChange:Q,values:R}),N(Qe,{email:g,emailDiscountPercentOff:p.appliedDiscount?.source===`email_list`?p.appliedDiscount.percentageOff:void 0,emailErrorId:be,emailId:ye,emailRef:le,errors:te,onEmailBlur:()=>We(),onEmailChange:e=>{y(e),ze(`email`)},onPhoneChange:e=>{w(e),ze(`phone`)},onPhoneCountryChange:e=>{T(e),X({type:`field_changed`})},phone:b,phoneCountry:ee,phoneEnabled:e.widget.fields.phone,phoneErrorId:Se,phoneId:xe,phoneRef:V}),N(Ke,{catalog:e,displayedTotalCents:z,fieldValues:R,isBillingAddressReady:F,isPaymentReady:ae,isShippingAddressReady:L,onAddressChange:(e,t)=>{ce.current[e]=t},onFieldValuesChange:Q,onStripeLoadError:Ve,setIsBillingAddressReady:I,setIsPaymentReady:M,setIsShippingAddressReady:oe}),N(fe,{customFields:e.widget.customFields,errors:ne,fields:e.widget.fields,idPrefix:W,isPromoApplying:K,onApplyPromo:Ye,onChange:Q,promoError:O,values:R}),N(Je,{catalog:e,displayedTotalCents:z,fieldValues:R,isBillingAddressReady:F,isPaymentReady:ae,isRequiredShippingReady:Fe,isSubmitting:G,onFieldValuesChange:Q,quote:p})]})}),G?N(`p`,{className:`lockerverse-payment__sr-only`,ref:de,role:`status`,tabIndex:-1,children:z===0?`Completing order…`:`Processing payment…`}):null,N(Ge,{message:we})]})}function et(){return P(`div`,{className:`lockerverse-payment__skeleton-loader-block`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-label`}),P(`div`,{className:`lockerverse-payment__skeleton-loader-content`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-full`}),P(`div`,{className:`lockerverse-payment__skeleton-loader-grid`,children:[N(`span`,{className:`lockerverse-payment__skeleton-loader-half`}),N(`span`,{className:`lockerverse-payment__skeleton-loader-half`})]})]})]})}function tt(){return P(`div`,{className:`lockerverse-payment__loading`,children:[N(`span`,{"aria-live":`polite`,className:`lockerverse-payment__sr-only`,role:`status`,children:`Loading payment…`}),P(`div`,{"aria-hidden":`true`,className:`lockerverse-payment__skeleton`,children:[P(`div`,{className:`lockerverse-payment__skeleton-branding`,children:[N(`span`,{className:`lockerverse-payment__skeleton-avatar`}),N(`span`,{className:`lockerverse-payment__skeleton-community`})]}),P(`div`,{className:`lockerverse-payment__skeleton-contact`,children:[P(`div`,{className:`lockerverse-payment__skeleton-field`,children:[N(`span`,{className:`lockerverse-payment__skeleton-label`}),N(`span`,{className:`lockerverse-payment__skeleton-input`})]}),P(`div`,{className:`lockerverse-payment__skeleton-field`,children:[N(`span`,{className:`lockerverse-payment__skeleton-label`}),N(`span`,{className:`lockerverse-payment__skeleton-input`})]})]}),N(et,{}),N(et,{}),P(`div`,{className:`lockerverse-payment__skeleton-actions`,children:[N(`span`,{className:`lockerverse-payment__skeleton-check-line`}),N(`span`,{className:`lockerverse-payment__skeleton-button`})]})]})]})}function nt({apiBaseUrl:e,branding:t,className:n,communitySlug:r,environment:i,fetch:a,metadata:o,onError:c,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,requestTimeoutMs:f,resumePayment:m,selection:g,sentryDsn:v,style:b,stripeLoader:x=p,theme:w=`dark`,widgetSlug:ee,...T}){let te=S(m).current,E=S(null),[ne,D]=C(),[re,ie]=C(`idle`),O=S(void 0),{retryCheckout:k,selectionError:A,session:j,updateCheckout:ae}=Ne({apiBaseUrl:e,communitySlug:r,environment:i,fetch:a,onError:c,paymentState:re,requestTimeoutMs:f,selection:g,sentryDsn:v,widgetSlug:ee}),M=j.phase===`ready`?j.revision:void 0,F=h(e=>{M!==void 0&&(O.current=M),ie(e)},[M]);_(()=>{j.phase===`loading`&&D(void 0)},[j.phase]),y(()=>{j.phase===`ready`&&O.current!==j.revision&&ie(e=>e===`success`||e===`unresolved`?e:`idle`)},[j.phase,j.revision]);let I=[`lockerverse-payment`,n].filter(Boolean).join(` `),L=t??(j.phase===`ready`?j.catalog.community:null),oe=b?.[`--lockerverse-accent`]??L?.accentColor??`#38d77a`,se=s(oe),z={...b,...L?.accentColor&&b?.[`--lockerverse-accent`]===void 0?{"--lockerverse-accent":L.accentColor}:{},...se&&b?.[`--lockerverse-accent-contrast`]===void 0?{"--lockerverse-accent-contrast":se}:{}};if(A)return N(`section`,{...T,className:I,"data-lockerverse-theme":w,role:`alert`,style:z,children:A});if(j.phase===`error`)return P(`section`,{...T,className:I,"data-lockerverse-theme":w,style:z,children:[N(`p`,{role:`alert`,children:j.failure}),N(`button`,{onClick:k,type:`button`,children:`Retry`})]});if(j.phase!==`ready`)return N(`section`,{...T,"aria-busy":`true`,"aria-label":`Payment`,className:I,"data-lockerverse-theme":w,style:z,children:N(tt,{})});let{catalog:B,checkoutItems:ce,client:le,preparedCheckout:V}=j;return P(`section`,{...T,"aria-label":`Payment`,className:I,"data-lockerverse-theme":w,"data-payment-state":re,ref:E,style:z,children:[P(`header`,{children:[B.widget.showCommunityBranding&&L?P(`div`,{className:`lockerverse-payment__branding`,children:[L.imageUrl?N(`img`,{alt:L.name,height:`48`,src:L.imageUrl,width:`48`}):null,N(`strong`,{children:L.name})]}):null,N(`h1`,{children:B.widget.title??B.widget.name}),B.widget.description?N(`p`,{children:B.widget.description}):null]}),ne?N(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:ne}):null,N(R,{container:E,children:N(Ve,{accentColor:b?.[`--lockerverse-accent`]??L?.accentColor??`#38d77a`,catalog:B,checkoutItems:ce,client:le,fontFamily:b?.[`--lockerverse-font-family`]??`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,metadata:o,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,onQuoteChange:(e,t)=>{D(t),ae(e)},onStateChange:F,quote:V,resumePayment:te,stripeLoader:x,theme:w,visualStyle:z})})]})}export{nt as t};
|
|
1
|
+
import{a as e,c as t,i as n,l as r,o as i,s as a,t as o,u as s}from"./contact-validation.js";import{AddressElement as c,Elements as l,PaymentElement as u,useElements as d,useStripe as f}from"@stripe/react-stripe-js";import{loadStripe as p}from"@stripe/stripe-js";import{createContext as m,useCallback as h,useContext as g,useEffect as _,useId as v,useLayoutEffect as y,useMemo as b,useReducer as x,useRef as S,useState as C}from"react";import{array as w,minLength as ee,minValue as T,nonEmpty as E,number as D,object as O,pipe as k,regex as A,safeInteger as j,safeParse as M,strictObject as N,string as P,trim as F,union as I}from"valibot";import{Fragment as L,jsx as R,jsxs as z}from"react/jsx-runtime";import{Select as B}from"@base-ui/react/select";import{LockerverseSdkError as V,createLockerverseCheckoutClient as H}from"@lockerverse/sdk/checkout";const U=m(void 0);function te({children:e,container:t}){return R(U.Provider,{value:t,children:e})}function W(){return R(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:R(`path`,{d:`m4 6 4 4 4-4`})})}function G(){return R(`svg`,{"aria-hidden":`true`,fill:`none`,viewBox:`0 0 16 16`,children:R(`path`,{d:`m3 8 3 3 7-7`})})}function K({ariaDescribedBy:e,ariaLabel:t,ariaLabelledBy:n,className:r,id:i,invalid:a=!1,name:o,onValueChange:s,options:c,value:l}){let u=g(U),d=[`lockerverse-payment__select`,r].filter(Boolean).join(` `);return R(`div`,{className:d,children:z(B.Root,{id:i,items:c,name:o,onValueChange:e=>{e!==null&&s(e)},value:l,children:[z(B.Trigger,{"aria-describedby":e,"aria-invalid":a||void 0,"aria-label":t,"aria-labelledby":n,className:`lockerverse-payment__select-trigger`,children:[R(B.Value,{}),R(B.Icon,{"aria-hidden":`true`,className:`lockerverse-payment__select-icon`,children:R(W,{})})]}),R(B.Portal,{container:u,children:R(B.Positioner,{alignItemWithTrigger:!1,className:`lockerverse-payment__select-positioner`,sideOffset:6,children:R(B.Popup,{className:`lockerverse-payment__select-popup`,children:R(B.List,{className:`lockerverse-payment__select-list`,children:c.map(e=>z(B.Item,{className:`lockerverse-payment__select-item`,value:e.value,children:[R(B.ItemText,{children:e.label}),R(B.ItemIndicator,{"aria-hidden":`true`,className:`lockerverse-payment__select-item-indicator`,children:R(G,{})})]},e.value))})})})})]})})}const ne=[`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`],q=[`15`,`12`,`10`,`5`],J=[...q,`custom`];function re({enabled:e,error:t,errorId:n,onChange:r,values:i}){if(!e)return null;let a=e=>r({...i,...e}),o=(e,t)=>{let n=J.indexOf(t),r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(n+1)%J.length;break;case`ArrowLeft`:case`ArrowUp`:r=(n-1+J.length)%J.length;break;case`Home`:r=0;break;case`End`:r=J.length-1;break;default:return}e.preventDefault();let i=J[r];i&&((e.currentTarget.closest(`[role="radiogroup"]`)?.querySelectorAll(`input[type="radio"]`))?.[r]?.focus(),a({tipPercent:i}))};return z(`div`,{className:`lockerverse-payment__tip-box`,children:[R(`p`,{children:`Add a tip to support the Lockerverse platform`}),z(`div`,{"aria-label":`Tip amount`,role:`radiogroup`,children:[q.map(e=>z(`label`,{className:`lockerverse-payment__tip-choice`,children:[R(`input`,{checked:i.tipPercent===e,name:`tipPercent`,onChange:()=>a({tipPercent:e}),onKeyDown:t=>o(t,e),tabIndex:i.tipPercent===e?0:-1,type:`radio`,value:e}),z(`span`,{children:[e,`%`]})]},e)),z(`label`,{className:`lockerverse-payment__tip-choice`,children:[R(`input`,{checked:i.tipPercent===`custom`,name:`tipPercent`,onChange:()=>a({tipPercent:`custom`}),onKeyDown:e=>o(e,`custom`),tabIndex:i.tipPercent===`custom`?0:-1,type:`radio`,value:`custom`}),R(`span`,{children:`Other`})]})]}),i.tipPercent===`custom`?z(`label`,{children:[R(`span`,{children:`Custom tip`}),z(`span`,{className:`lockerverse-payment__money-input`,children:[R(`span`,{"aria-hidden":`true`,children:`$`}),R(`input`,{"aria-describedby":t?n:void 0,"aria-invalid":t?`true`:void 0,inputMode:`decimal`,name:`tip`,onChange:e=>a({customTip:e.currentTarget.value}),placeholder:`0.00`,value:i.customTip})]}),t?R(`span`,{className:`lockerverse-payment__field-message`,id:n,children:t}):null]}):R(`input`,{name:`tip`,type:`hidden`,value:i.tipPercent})]})}function ie({checked:e,children:t,name:n,onChange:r}){return z(`label`,{className:`lockerverse-payment__check-row`,children:[R(`input`,{checked:e,name:n,onChange:e=>r(e.currentTarget.checked),type:`checkbox`}),R(`span`,{children:t})]})}function ae({customFields:e,errors:t,fields:n,idPrefix:r,isPromoApplying:a,onChange:o,onApplyPromo:s,promoError:c,values:l}){let u=e=>o({...l,...e});return z(`div`,{className:`lockerverse-payment__additional-fields`,children:[n.memberId?z(`label`,{children:[R(`span`,{children:`Member ID`}),R(`input`,{name:`memberId`,onChange:e=>u({memberId:e.currentTarget.value}),placeholder:`Optional`,value:l.memberId})]}):null,n.merchSize?z(`div`,{className:`lockerverse-payment__field`,children:[R(`span`,{id:`${r}-merch-size-label`,children:`Size`}),R(K,{ariaLabelledBy:`${r}-merch-size-label`,name:`merchSize`,onValueChange:e=>u({merchSize:e}),options:ne.map(e=>({label:e,value:e})),value:l.merchSize})]}):null,n.promoCode?z(`div`,{className:`lockerverse-payment__field`,children:[R(`span`,{id:`${r}-promo-code-label`,children:`Promo code`}),z(`div`,{className:`lockerverse-payment__promo-control`,children:[R(`input`,{"aria-describedby":c?`${r}-promo-code-error`:void 0,"aria-invalid":c?`true`:void 0,"aria-labelledby":`${r}-promo-code-label`,name:`promoCode`,onChange:e=>u({promoCode:e.currentTarget.value}),placeholder:`Optional`,value:l.promoCode}),R(`button`,{disabled:!l.promoCode.trim()||a,onClick:s,type:`button`,children:a?`Applying…`:`Apply`})]}),c?R(`p`,{className:`lockerverse-payment__field-message`,id:`${r}-promo-code-error`,role:`alert`,children:c}):null]}):null,R(i,{choiceClassName:`lockerverse-payment__check-row`,errorClassName:`lockerverse-payment__field-message`,errors:t,fields:e,idPrefix:r,onChange:e=>u({customFields:e}),values:l.customFields})]})}function oe({amountCents:e,enabled:t,onChange:n,values:r}){return t?z(ie,{checked:r.includeServiceFee,name:`includeServiceFee`,onChange:e=>n({...r,includeServiceFee:e}),children:[`Add `,se(e),` to help cover processing fees`]}):null}function se(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Y(e){return o(e)}function ce(t,r){let i=r?{...t,phone:Y(t.phone)}:t,a=O(r?{email:n,phone:e}:{email:n}),o=M(a,i);if(o.success)return{errors:{},value:o.output};let s={};for(let e of o.issues){let t=e.path?.[0]?.key;(t===`email`||t===`phone`)&&!s[t]&&(s[t]=e.message)}return{errors:s,value:null}}const le=k(P(),F(),E()),ue=k(D(),j(),T(1)),de=k(w(I([N({amountCents:ue,productSlug:le}),N({productSlug:le,quantity:ue})])),ee(1)),fe=k(P(),F(),A(/^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/,`Enter a valid tip amount.`));function pe(e){let t=M(fe,e);if(!t.success)return{message:t.issues[0]?.message??`Enter a valid tip amount.`,success:!1};let[n=`0`,r=``]=t.output.split(`.`),i=BigInt(n)*100n+BigInt(r.padEnd(2,`0`));return i>BigInt(2**53-1)?{message:`Enter a valid tip amount.`,success:!1}:{cents:Number(i),success:!0}}function me(e){let t=M(de,e);return t.success?{success:!0,value:t.output}:{message:`Lockerverse payment configuration is invalid.`,success:!1}}function he(e,t){switch(t.type){case`loading`:return{configuration:t.configuration,phase:`loading`,revision:e.revision,selectionKey:t.selectionKey};case`ready`:return{catalog:t.catalog,checkoutItems:t.checkoutItems,client:t.client,configuration:t.configuration,phase:`ready`,preparedCheckout:t.preparedCheckout,revision:e.revision+1,selectionKey:t.selectionKey};case`error`:return{configuration:t.configuration,failure:t.failure,phase:`error`,revision:e.revision,selectionKey:t.selectionKey};case`checkout`:return e.phase===`ready`?{...e,preparedCheckout:t.preparedCheckout}:e;case`retry`:return{phase:`idle`,revision:e.revision+1};default:return e}}function ge(e,t){let{apiBaseUrl:n,communitySlug:r,environment:i,fetch:a,requestTimeoutMs:o,sentryDsn:s,widgetSlug:c}=e,l={communitySlug:r,widgetSlug:c,...a?{fetch:a}:{},...t?{onError:t}:{},...o===void 0?{}:{requestTimeoutMs:o},...s===void 0?{}:{sentryDsn:s}};if(n===void 0){if(i===`development`)throw TypeError(`Lockerverse development checkout requires an API base URL.`);return{...l,...i===`production`?{environment:i}:{}}}return{...l,apiBaseUrl:n,...i===void 0?{}:{environment:i}}}function X(e,t,n){return e?.configuration===t&&e.selectionKey===n}function _e({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,onError:i,paymentState:a,requestTimeoutMs:o,selection:s,sentryDsn:c,widgetSlug:l}){let u=b(()=>({apiBaseUrl:e,communitySlug:t,environment:n,fetch:r,requestTimeoutMs:o,sentryDsn:c,widgetSlug:l}),[e,t,n,r,o,c,l]),d=me(s),f=d.success?JSON.stringify(d.value):`invalid-selection`,p=b(()=>d.success?JSON.parse(f):[],[d.success,f]),[m,h]=x(he,{phase:`idle`,revision:0}),g=S(void 0),v=S(void 0),y=S(i);return y.current=i,_(()=>{if(!d.success||a===`submitting`||a===`success`||a===`unresolved`||X(v.current,u,f)||X(g.current,u,f))return;let e=!0,t={configuration:u,selectionKey:f};g.current=t,h({configuration:u,selectionKey:f,type:`loading`});async function n(){try{let n=H(ge(u,e=>y.current?.(e))),{catalog:r,checkout:i}=await n.bootstrapCheckout({items:p}),a=[...i.items];e&&(g.current=void 0,v.current=t,h({catalog:r,checkoutItems:a,client:n,configuration:u,preparedCheckout:i,selectionKey:f,type:`ready`}))}catch(n){e&&(g.current=void 0,v.current=t,h({configuration:u,failure:n instanceof Error?n.message:`Lockerverse payment could not load.`,selectionKey:f,type:`error`}))}}return n(),()=>{e=!1,X(g.current,u,f)&&(g.current=void 0)}},[u,d.success,a,f,m.revision,p]),{retryCheckout:()=>{g.current=void 0,v.current=void 0,h({type:`retry`})},selectionError:d.success?void 0:d.message,session:m,updateCheckout:e=>h({preparedCheckout:e,type:`checkout`})}}const ve=[`amountCents`,`discountableSubtotalCents`,`discountCents`,`serviceFeeCents`,`subtotalCents`,`tipCents`,`totalCents`],ye=[`discountableSubtotalCents`,`discountCents`,`subtotalCents`];function be(e,t,n){return(n===t.totalCents?ye:ve).some(n=>e[n]!==t[n])||e.payment.connectedAccountId!==t.payment.connectedAccountId||e.payment.currency!==t.payment.currency||JSON.stringify(e.appliedDiscount)!==JSON.stringify(t.appliedDiscount)||JSON.stringify(e.lineItems)!==JSON.stringify(t.lineItems)}function xe(e){return e.checkoutStatus===`success`?{kind:`success`,payment:e}:e.checkoutStatus===`failed`?{kind:`failed`,payment:e}:{kind:`unresolved`,paymentReference:e.paymentReference,reason:e.checkoutStatus===`action_required`?`action_required`:`pending`}}async function Se(e,t,n){if(t.checkoutStatus!==`action_required`)return xe(t);if(!n)return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`};if(t.clientSecret)try{await n.handleNextAction({clientSecret:t.clientSecret})}catch{}try{return xe(await e.getPaymentStatus(t.paymentReference))}catch{return{kind:`unresolved`,paymentReference:t.paymentReference,reason:`action_required`}}}async function Ce(e,t,n){let r;try{r=await e.submitPayment(t)}catch(n){if(!(n instanceof V&&n.recoveryRecommended))throw n;try{r=await e.getPaymentStatus(t.checkout.paymentReference)}catch{return{kind:`unresolved`,paymentReference:t.checkout.paymentReference,reason:`recovery_failed`}}}return Se(e,r,n)}async function we(e,t,n){try{return Se(e,await e.getPaymentStatus(t),n)}catch{return{kind:`unresolved`,paymentReference:t,reason:`recovery_failed`}}}function Te(e){throw Error(`Unexpected payment workflow value: ${String(e)}`)}function Ee(e,t){return t===void 0?{phase:e}:{error:t,phase:e}}function De(e){return e?{phase:`recovering`}:{phase:`editing`}}function Oe(e){return e.phase===`editing`||e.phase===`invalid`?e.error:e.phase===`refreshing_quote`?e.previousError:void 0}function ke(e){return e.phase===`succeeded`?`success`:e.phase===`unresolved`?`unresolved`:e.phase===`submitting`||e.phase===`recovering`?`submitting`:e.phase===`invalid`?`invalid`:Oe(e)?`error`:`idle`}function Ae(e){return e.phase===`submitting`}function je(e,t){if(e.phase===`succeeded`||e.phase===`unresolved`)return e;switch(t.type){case`field_changed`:return e.phase===`invalid`?Ee(`editing`,e.error):e;case`validation_failed`:return e.phase===`submitting`||e.phase===`recovering`?e:Ee(`invalid`,Oe(e));case`quote_refresh_started`:{if(e.phase===`submitting`||e.phase===`recovering`)return e;let n=Oe(e);return{...n===void 0?{}:{previousError:n},phase:`refreshing_quote`,validatePromo:t.validatePromo}}case`quote_refresh_succeeded`:return e.phase===`refreshing_quote`?{phase:`editing`}:e;case`quote_refresh_failed`:return e.phase===`refreshing_quote`?Ee(`editing`,t.error??e.previousError):e;case`submission_started`:return e.phase===`recovering`?e:{phase:`submitting`};case`quote_changed`:return e.phase===`submitting`?{phase:`editing`}:e;case`retryable_failure`:return Ee(`editing`,t.error);case`recovery_failed`:return e.phase===`recovering`?Ee(`editing`,t.error):e;case`succeeded`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,phase:`succeeded`}:e;case`unresolved`:return e.phase===`submitting`||e.phase===`recovering`?{message:t.message,paymentReference:t.paymentReference,phase:`unresolved`,reason:t.reason}:e;default:return Te(t)}}function Me(e,t){return t.tipPercent===`custom`?t.customTip.trim()?pe(t.customTip):{cents:0,success:!0}:{cents:Math.round(e*Number(t.tipPercent)/100),success:!0}}function Ne(e,t,n,r){return{...n?{email:n}:{},...e.widget.fields.serviceFee?{includeServiceFee:t.includeServiceFee}:{},...e.widget.fields.promoCode&&t.promoCode.trim()?{promoCode:t.promoCode.trim()}:{},...e.widget.fields.tipping?{tipCents:r}:{}}}function Pe(e,t){if(!e?.complete)throw Error(`${t} address is required.`);return e.value}function Fe(e,t,n,r){if(e.widget.fields.shipping)return t.shippingMatchesBilling?n:Pe(r.shipping,`Shipping`)}function Ie({billingAddress:e,catalog:t,email:n,phone:r,shippingAddress:i}){return{payment_method_data:{billing_details:{address:e.address,email:n,name:e.name,...t.widget.fields.phone?{phone:r}:{}}},...i?{shipping:{address:i.address,name:i.name,phone:t.widget.fields.phone?r:i.phone??null}}:{}}}function Le({catalog:e,confirmationToken:t,email:n,fieldValues:r,metadata:i,phone:o,shippingAddress:s}){return{...t?{confirmationToken:t}:{},customFieldAnswers:a(e.widget.customFields,r.customFields),email:n,...i?{metadata:i}:{},...e.widget.fields.memberId&&r.memberId.trim()?{memberId:r.memberId.trim()}:{},...e.widget.fields.merchSize?{merchSize:r.merchSize}:{},...e.widget.fields.phone?{phone:o}:{},...s?{shipping:{address:{city:s.address.city??``,country:s.address.country,line1:s.address.line1??``,...s.address.line2?{line2:s.address.line2}:{},postal_code:s.address.postal_code??``,state:s.address.state??``},name:s.name}}:{}}}function Z(e,t){try{e?.(t)}catch{}}function Q(e){if(!e())throw Error(`Payment component is no longer active.`)}async function Re({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:s,locallyPreviewedTotalCents:c,metadata:l,onPaymentRecoveryChange:u,phone:d,quote:f,stripe:p}){let m=a.trim().toLowerCase(),h=Y(d),g=Me(f.subtotalCents,o);if(!g.success)throw Error(g.message);let _=Ne(t,o,m,g.cents),v=await r.calculateTotal({..._,items:n});if(Q(s),v.totalCents>0&&be(f,v,c))return{kind:`quote_changed`,quote:v};if(v.totalCents===0){let n;t.widget.fields.shipping&&(n=Fe(t,o,Pe(e.billing,`Billing`),e)),Q(s),Z(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let i=await Ce(r,{checkout:v,submission:Le({catalog:t,email:m,fieldValues:o,metadata:l,phone:h,...n?{shippingAddress:n}:{}})},p);return Q(s),i.kind===`failed`?{kind:`payment_failed`,message:`Order could not be completed. Review the details and try again.`}:i.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:i.paymentReference,reason:i.reason}:{kind:`payment`,payment:i.payment,quote:v}}if(!(i&&p))throw Error(`Payment form is still loading.`);await i.update({amount:v.totalCents}),Q(s);let y=await i.submit();if(Q(s),y.error)throw Error(y.error.message);let b=Pe(e.billing,`Billing`),x=Fe(t,o,b,e),S=await p.createConfirmationToken({elements:i,params:Ie({billingAddress:b,catalog:t,email:m,phone:h,shippingAddress:x})});if(Q(s),S.error)throw Error(S.error.message);Z(u,{connectedAccountId:v.payment.connectedAccountId,paymentReference:v.paymentReference});let C=await Ce(r,{checkout:v,submission:Le({catalog:t,confirmationToken:S.confirmationToken.id,email:m,fieldValues:o,metadata:l,phone:h,...x?{shippingAddress:x}:{}})},p);return Q(s),C.kind===`failed`?{kind:`payment_failed`,message:`Payment was declined. Check your payment details and try again.`}:C.kind===`unresolved`?{kind:`payment_unresolved`,paymentReference:C.paymentReference,reason:C.reason}:{kind:`payment`,payment:C.payment,quote:v}}function ze(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}function Be(e,t){if(!t)return e instanceof Error?e.message:`The order total could not be updated.`}function Ve({nextQuote:e,onQuoteChange:t,setDisplayedTotalCents:n,setPromoError:r,updateWorkflow:i,validatePromo:a}){i({type:`quote_refresh_succeeded`}),n(e.totalCents),t(e),a&&r(e.appliedDiscount?.source===`promo_code`?void 0:`This promo code is invalid or cannot be applied.`)}function He({error:e,setPromoError:t,updateWorkflow:n,validatePromo:r}){r&&t(`This promo code is invalid or cannot be applied.`);let i=Be(e,r);n(i===void 0?{type:`quote_refresh_failed`}:{error:i,type:`quote_refresh_failed`})}function Ue({onPaymentComplete:e,onPaymentRecoveryChange:t,onPaymentUncertain:n,onQuoteChange:r,result:i,setDisplayedTotalCents:a,transitionWorkflow:o}){if(i.kind===`quote_changed`){let e=`The total changed to ${ze(i.quote.totalCents)}. Review it and pay again.`;r(i.quote,e),a(i.quote.totalCents),o({type:`quote_changed`});return}if(i.kind===`payment_failed`){Z(t,null),o({error:i.message,type:`retryable_failure`});return}if(i.kind===`payment_unresolved`){o({message:`Payment is still processing. Do not submit it again.`,paymentReference:i.paymentReference,reason:i.reason,type:`unresolved`});try{n?.({paymentReference:i.paymentReference,reason:i.reason})}catch{}return}r(i.quote),Z(t,null),o({message:i.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{e?.(i.payment)}catch{}}function We(e){let{catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,metadata:s,onPaymentComplete:c,onPaymentRecoveryChange:l,onPaymentUncertain:u,onQuoteChange:d,onStateChange:f,quote:p,resumePayment:m,stripe:g}=e,[v,y]=x(je,m,De),[b,w]=C(p.totalCents),[ee,T]=C(),E=S(!1),D=S(0),O=S(0),k=S(v);k.current=v;let A=h((e,t=!1)=>{let n=k.current,r=je(n,e);r!==n&&(k.current=r,y(e),t&&f(ke(r)))},[f]),j=h(e=>A(e,!0),[A]),M=h(()=>{let e=O.current+1;return O.current=e,()=>O.current===e},[]);_(()=>()=>{O.current+=1},[]);let N=t.widget.fields.tipping?Me(p.subtotalCents,o):{cents:0,success:!0},P=N.success?N.cents:null;_(()=>{if(P===null)return;let e=t.widget.fields.serviceFee&&o.includeServiceFee?p.serviceFeeCents||Math.round(p.subtotalCents*t.pricingPolicy.serviceFeeRateBasisPoints/1e4):0,n=p.totalCents-p.serviceFeeCents-p.tipCents+e+P;w(n),n>0&&i?.update({amount:n})},[t.pricingPolicy.serviceFeeRateBasisPoints,t.widget.fields.serviceFee,i,o.includeServiceFee,P,p.serviceFeeCents,p.tipCents,p.totalCents,p.subtotalCents]),_(()=>{if(!(m&&g)||E.current)return;E.current=!0;let e=M();return f(ke(k.current)),we(r,m.paymentReference,g).then(t=>{if(e()){if(t.kind===`failed`){Z(l,null),j({error:`The previous payment failed. Check your details and try again.`,type:`recovery_failed`});return}if(t.kind===`unresolved`){j({message:`Payment is still processing. Do not submit it again.`,paymentReference:t.paymentReference,reason:t.reason,type:`unresolved`});try{u?.({paymentReference:t.paymentReference,reason:t.reason})}catch{}return}Z(l,null),j({message:t.payment.paymentRequired?`Payment completed successfully.`:`Order confirmed. No payment was required.`,type:`succeeded`});try{c?.(t.payment)}catch{}}}),()=>{e()&&(O.current+=1),E.current=!1}},[r,c,l,u,f,m,g,M,j]);let F=h((e=!1)=>{e&&T(void 0),A({type:`field_changed`})},[A]);async function I(e=!1,i=!1){let s=ce({email:a.trim().toLowerCase(),phone:``},!1);if(!(N.success&&(s.value||e)))return;D.current+=1;let c=D.current;A({type:`quote_refresh_started`,validatePromo:i});try{let e=await r.calculateTotal({...Ne(t,o,s.value?.email??``,N.cents),items:n});if(c!==D.current)return;Ve({nextQuote:e,onQuoteChange:d,setDisplayedTotalCents:w,setPromoError:T,updateWorkflow:A,validatePromo:i})}catch(e){if(c!==D.current)return;He({error:e,setPromoError:T,updateWorkflow:A,validatePromo:i})}}async function L(){T(void 0),await I(!0,!0)}async function R({addresses:e,phone:f}){j({type:`submission_started`});let m=M();try{let h=await Re({addresses:e,catalog:t,checkoutItems:n,client:r,elements:i,email:a,fieldValues:o,isAttemptActive:m,locallyPreviewedTotalCents:b,metadata:s,onPaymentRecoveryChange:l,phone:f,quote:p,stripe:g});if(!m())return;Ue({onPaymentComplete:c,onPaymentRecoveryChange:l,onPaymentUncertain:u,onQuoteChange:d,result:h,setDisplayedTotalCents:w,transitionWorkflow:j})}catch(e){if(!m())return;Z(l,null),j({error:e instanceof Error?e.message:`Payment could not be completed.`,type:`retryable_failure`})}}let z=v.phase===`succeeded`||v.phase===`unresolved`?v.message:void 0;return{commands:{applyPromo:L,fieldChanged:F,refreshAuthoritativeTotal:I,reportStripeLoadError:e=>j({error:e,type:`retryable_failure`}),reportValidationFailure:()=>j({type:`validation_failed`}),submit:R},state:{displayedTotalCents:b,isRecovering:v.phase===`recovering`,isRefreshingQuote:v.phase===`refreshing_quote`,isSubmitting:Ae(v),parsedTip:N,paymentError:Oe(v),promoError:ee,terminalMessage:z}}}function $(e){return new Intl.NumberFormat(`en-US`,{currency:`USD`,style:`currency`}).format(e/100)}const Ge=[{callingCode:`+1`,label:`🇺🇸 +1`,value:`US`},{callingCode:`+52`,label:`🇲🇽 +52`,value:`MX`},{callingCode:`+380`,label:`🇺🇦 +380`,value:`UA`},{callingCode:`+48`,label:`🇵🇱 +48`,value:`PL`},{callingCode:`+1`,label:`🇨🇦 +1`,value:`CA`},{callingCode:`+49`,label:`🇩🇪 +49`,value:`DE`},{callingCode:`+44`,label:`🇬🇧 +44`,value:`GB`},{callingCode:`+46`,label:`🇸🇪 +46`,value:`SE`},{callingCode:`+358`,label:`🇫🇮 +358`,value:`FI`},{callingCode:`+1`,label:`🇵🇷 +1`,value:`PR`}];function Ke(e,t){return e.trim().startsWith(`+`)?e:`${Ge.find(e=>e.value===t)?.callingCode??`+1`}${e}`}function qe({accentColor:e,catalog:t,checkoutItems:n,client:r,fontFamily:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,quote:d,resumePayment:f,onStateChange:p,stripeLoader:m,theme:h,visualStyle:g}){let _=f?f.connectedAccountId:d.payment.connectedAccountId,v=b(()=>m(t.payment.publishableKey,_?{stripeAccount:_}:void 0).catch(()=>null),[t.payment.publishableKey,_,m]);return R(l,{options:{amount:Math.max(d.totalCents,100),appearance:{rules:{".Input:focus":{borderColor:e,boxShadow:`0 0 0 1px ${e}`,outline:`none`}},theme:h===`light`?`stripe`:`night`,variables:{borderRadius:g?.[`--lockerverse-radius`]??`10px`,colorBackground:g?.[`--lockerverse-control`]??(h===`light`?`#f5f6f7`:`#121212`),colorDanger:g?.[`--lockerverse-danger`]??(h===`light`?`#c52b3e`:`#f08a98`),colorPrimary:e,colorText:g?.[`--lockerverse-text`]??(h===`light`?`#121416`:`#ffffff`),colorTextPlaceholder:g?.[`--lockerverse-placeholder`]??(h===`light`?`#72767d`:`#6b6b6b`),colorTextSecondary:g?.[`--lockerverse-muted`]??(h===`light`?`#62666d`:`#a1a1aa`),focusBoxShadow:`none`,focusOutline:`none`,fontFamily:i,fontSizeBase:`16px`}},currency:d.payment.currency,excludedPaymentMethodTypes:[`us_bank_account`],mode:`payment`,syncAddressCheckbox:`none`},stripe:v,children:R(it,{catalog:t,checkoutItems:n,client:r,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:u,onStateChange:p,quote:d,resumePayment:f})},`${t.payment.publishableKey}:${_??`platform`}`)}function Je({label:e}){return z(`div`,{className:`lockerverse-payment__stripe-loader`,role:`status`,children:[R(`p`,{children:e}),z(`div`,{"aria-hidden":`true`,children:[R(`span`,{}),R(`span`,{}),R(`span`,{})]})]})}function Ye({onError:e,onReady:t,ready:n}){return z(`div`,{className:`lockerverse-payment__stripe-element`,"data-ready":n,children:[n?null:R(Je,{label:`Loading payment form...`}),R(`div`,{className:`lockerverse-payment__stripe-mount`,children:R(u,{onLoadError:({error:t})=>e(t.message??`Payment form failed to load.`),onReady:t,options:{business:{name:`Lockerverse`},fields:{billingDetails:{address:`never`,email:`never`,name:`never`,phone:`never`}},layout:`tabs`,terms:{applePay:`auto`,auBecsDebit:`never`,bancontact:`never`,card:`always`,cashapp:`never`,googlePay:`never`,ideal:`never`,paypal:`auto`,sepaDebit:`never`,sofort:`never`,usBankAccount:`never`},wallets:{applePay:`auto`,googlePay:`never`}}})})]})}function Xe({label:e,mode:t,onChange:n,onError:r,onReady:i,ready:a}){return z(`div`,{className:`lockerverse-payment__address`,children:[R(`h2`,{children:e}),z(`div`,{className:`lockerverse-payment__stripe-element lockerverse-payment__stripe-element--address`,"data-ready":a,children:[a?null:R(Je,{label:`Loading ${e.toLowerCase()}...`}),R(`div`,{className:`lockerverse-payment__stripe-mount`,children:R(c,{onChange:n,onLoadError:({error:t})=>r(t.message??`${e} failed to load.`),onReady:i,options:{autocomplete:{mode:`automatic`},mode:t}})})]})]})}function Ze({message:e}){return e?R(`p`,{className:`lockerverse-payment__field-message`,role:`alert`,children:e}):null}function Qe({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isShippingAddressReady:a,onAddressChange:o,onFieldValuesChange:s,onStripeLoadError:c,setIsBillingAddressReady:l,setIsPaymentReady:u,setIsShippingAddressReady:d}){let f=t>0;return z(L,{children:[f?R(Ye,{onError:c,onReady:()=>u(!0),ready:i}):null,f||e.widget.fields.shipping?R(Xe,{label:f?`Billing address`:`Shipping address`,mode:`billing`,onChange:e=>o(`billing`,e),onError:c,onReady:()=>l(!0),ready:r}):null,e.widget.fields.shipping?z(`div`,{className:`lockerverse-payment__shipping`,children:[R(ie,{checked:n.shippingMatchesBilling,name:`shippingMatchesBilling`,onChange:e=>{s({...n,shippingMatchesBilling:e}),e?o(`shipping`,null):d(!1)},children:`Shipping is same as billing information`}),n.shippingMatchesBilling?null:R(Xe,{label:`Shipping address`,mode:`shipping`,onChange:e=>o(`shipping`,e),onError:c,onReady:()=>d(!0),ready:a})]}):null]})}function $e({displayedBaseCents:e,displayedTipCents:t,displayedTotalCents:n,quote:r}){let i=Math.max(0,e-r.subtotalCents+r.discountCents);return z(`section`,{"aria-label":`Payment summary`,className:`lockerverse-payment__payment-summary`,children:[R(`h2`,{children:`Order summary`}),R(`div`,{className:`lockerverse-payment__payment-summary-items`,children:r.lineItems.map(e=>z(`div`,{className:`lockerverse-payment__payment-summary-row`,children:[z(`span`,{children:[e.productName,e.quantity>1?z(L,{children:[` `,z(`small`,{children:[`× `,e.quantity]})]}):null]}),R(`strong`,{children:$(e.subtotalCents)})]},e.listingId))}),z(`div`,{className:`lockerverse-payment__payment-summary-totals`,children:[i>0?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail`,children:[R(`span`,{children:`Service fee`}),R(`strong`,{children:$(i)})]}):null,r.discountCents>0&&r.appliedDiscount?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-discount`,children:[z(`span`,{children:[r.appliedDiscount.source===`email_list`?`Email discount`:`Promo code discount`,` `,`(`,r.appliedDiscount.percentageOff,`% off)`]}),z(`strong`,{children:[`-`,$(r.discountCents)]})]}):null,t>0?z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-detail lockerverse-payment__payment-summary-tip`,children:[R(`span`,{children:`Tip`}),R(`strong`,{children:$(t)})]}):null,z(`div`,{className:`lockerverse-payment__payment-summary-row lockerverse-payment__payment-summary-total`,children:[R(`span`,{children:`Total`}),R(`strong`,{children:$(n)})]})]})]})}function et({catalog:e,displayedTotalCents:t,fieldValues:n,isBillingAddressReady:r,isPaymentReady:i,isRequiredShippingReady:a,isSubmitting:o,onFieldValuesChange:s,quote:c}){let l=t===0,u=l?!e.widget.fields.shipping||r&&a:i&&r&&a,d=l?`Complete order`:`Pay ${$(t)}`;return o&&(d=l?`Completing…`:`Processing…`),z(`div`,{className:`lockerverse-payment__actions`,children:[R(oe,{amountCents:c.serviceFeeCents||Math.round(c.subtotalCents*e.pricingPolicy.serviceFeeRateBasisPoints/1e4),enabled:e.widget.fields.serviceFee,onChange:s,values:n}),R(`button`,{"aria-busy":o,"aria-label":l?`Complete order`:`Process payment for ${$(t)} total`,disabled:o||!u,type:`submit`,children:d})]})}function tt(e,t){let n=e.elements.namedItem(t);if(n instanceof HTMLElement){n.focus();return}n instanceof RadioNodeList&&Array.from(n).find(e=>e instanceof HTMLElement)?.focus()}function nt({customFieldErrors:e,emailRef:t,form:n,parsedTipSuccess:r,phoneRef:i,validationErrors:a}){if(a.email){t.current?.focus();return}if(a.phone){i.current?.focus();return}if(!r){n.querySelector(`[name="tip"]`)?.focus();return}let[o]=Object.keys(e);o&&tt(n,`custom:${o}`)}function rt({email:e,emailDiscountPercentOff:t,emailErrorId:n,emailId:r,emailRef:i,errors:a,onEmailBlur:o,onEmailChange:s,onPhoneChange:c,onPhoneCountryChange:l,phone:u,phoneCountry:d,phoneEnabled:f,phoneErrorId:p,phoneId:m,phoneRef:h}){return z(`div`,{className:`lockerverse-payment__contact`,children:[R(`label`,{htmlFor:r,children:`Email`}),R(`input`,{"aria-describedby":a.email?n:void 0,"aria-invalid":a.email?`true`:void 0,autoComplete:`email`,id:r,name:`email`,onBlur:o,onChange:e=>s(e.currentTarget.value),placeholder:`name@example.com`,ref:i,type:`email`,value:e}),a.email?R(`p`,{className:`lockerverse-payment__field-message`,id:n,children:a.email}):null,t===void 0?null:z(`p`,{className:`lockerverse-payment__discount-message`,role:`status`,children:[`Your email qualifies for `,t,`% off.`]}),f?z(L,{children:[R(`label`,{htmlFor:m,children:`Phone`}),z(`div`,{className:`lockerverse-payment__phone-control`,children:[R(K,{ariaLabel:`Phone number country`,className:`lockerverse-payment__select--phone-country`,name:`phoneCountry`,onValueChange:l,options:Ge,value:d}),R(`input`,{"aria-describedby":a.phone?p:void 0,"aria-invalid":a.phone?`true`:void 0,autoComplete:`tel`,id:m,inputMode:`tel`,name:`phone`,onChange:e=>c(e.currentTarget.value),placeholder:`(201) 555-0123`,ref:h,type:`tel`,value:u})]}),a.phone?R(`p`,{className:`lockerverse-payment__field-message`,id:p,children:a.phone}):null]}):null]})}function it({catalog:e,checkoutItems:n,client:i,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m}){let[h,g]=C(``),[y,b]=C(``),[x,w]=C(`US`),[ee,T]=C({}),[E,D]=C({}),[O,k]=C(),[A,j]=C(!1),[M,N]=C(!1),[P,F]=C(!1),[I,L]=C({customFields:t(e.widget.customFields),customTip:``,includeServiceFee:e.widget.fields.serviceFee,memberId:``,merchSize:`M`,promoCode:``,shippingMatchesBilling:!0,tipPercent:`10`}),B=S({billing:null,shipping:null}),V=S(null),H=S(null),U=S(null),te=S(p.totalCents>0),W=We({catalog:e,checkoutItems:n,client:i,elements:d(),email:h,fieldValues:I,metadata:a,onPaymentComplete:o,onPaymentRecoveryChange:s,onPaymentUncertain:c,onQuoteChange:l,onStateChange:u,quote:p,resumePayment:m,stripe:f()}),{displayedTotalCents:G,isRecovering:K,isRefreshingQuote:ne,isSubmitting:q,parsedTip:J,paymentError:ie,promoError:oe,terminalMessage:se}=W.state,Y=`lockerverse-${v()}`,le=`${Y}-email`,ue=`${le}-error`,de=`${Y}-phone`,fe=`${de}-error`,pe=`${Y}-tip-error`,me=(J.success?J.cents:null)??0,he=G-me,ge=!e.widget.fields.shipping||I.shippingMatchesBilling||P;_(()=>{q&&U.current?.focus()},[q]),_(()=>{let e=G>0;e&&!te.current&&(j(!1),N(!1)),te.current=e},[G]);function X(e){W.commands.fieldChanged(),T(t=>{let n={...t};return delete n[e],n})}function _e(e){W.commands.fieldChanged(e.promoCode!==I.promoCode),L(e),D({}),k(void 0)}async function ve(t){t.preventDefault();let n=ce({email:h,phone:Ke(y,x)},e.widget.fields.phone),i=r(e.widget.customFields,I.customFields);if(!(n.value&&J.success)||Object.keys(i).length>0){T(n.errors),D(i),k(J.success?void 0:J.message),W.commands.reportValidationFailure();let e=t.currentTarget;queueMicrotask(()=>{nt({customFieldErrors:i,emailRef:V,form:e,parsedTipSuccess:J.success,phoneRef:H,validationErrors:n.errors})});return}T({}),D({}),await W.commands.submit({addresses:B.current,phone:Ke(y,x)})}return se?R(`p`,{className:`lockerverse-payment__payment-status`,ref:U,role:`status`,tabIndex:-1,children:se}):K?R(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:`Recovering payment…`}):z(`form`,{"aria-busy":q,className:`lockerverse-payment__form`,noValidate:!0,onSubmit:ve,children:[R(`div`,{"data-lockerverse-input-region":``,inert:q?!0:void 0,children:z(`fieldset`,{className:`lockerverse-payment__input-fieldset`,disabled:q,children:[R($e,{displayedBaseCents:he,displayedTipCents:me,displayedTotalCents:G,quote:p}),R(re,{enabled:e.widget.fields.tipping,error:O,errorId:pe,onChange:_e,values:I}),R(rt,{email:h,emailDiscountPercentOff:p.appliedDiscount?.source===`email_list`?p.appliedDiscount.percentageOff:void 0,emailErrorId:ue,emailId:le,emailRef:V,errors:ee,onEmailBlur:()=>W.commands.refreshAuthoritativeTotal(),onEmailChange:e=>{g(e),X(`email`)},onPhoneChange:e=>{b(e),X(`phone`)},onPhoneCountryChange:e=>{w(e),W.commands.fieldChanged()},phone:y,phoneCountry:x,phoneEnabled:e.widget.fields.phone,phoneErrorId:fe,phoneId:de,phoneRef:H}),R(Qe,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isShippingAddressReady:P,onAddressChange:(e,t)=>{B.current[e]=t},onFieldValuesChange:_e,onStripeLoadError:W.commands.reportStripeLoadError,setIsBillingAddressReady:N,setIsPaymentReady:j,setIsShippingAddressReady:F}),R(ae,{customFields:e.widget.customFields,errors:E,fields:e.widget.fields,idPrefix:Y,isPromoApplying:ne,onApplyPromo:W.commands.applyPromo,onChange:_e,promoError:oe,values:I}),R(et,{catalog:e,displayedTotalCents:G,fieldValues:I,isBillingAddressReady:M,isPaymentReady:A,isRequiredShippingReady:ge,isSubmitting:q,onFieldValuesChange:_e,quote:p})]})}),q?R(`p`,{className:`lockerverse-payment__sr-only`,ref:U,role:`status`,tabIndex:-1,children:G===0?`Completing order…`:`Processing payment…`}):null,R(Ze,{message:ie})]})}function at(){return z(`div`,{className:`lockerverse-payment__skeleton-loader-block`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-label`}),z(`div`,{className:`lockerverse-payment__skeleton-loader-content`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-full`}),z(`div`,{className:`lockerverse-payment__skeleton-loader-grid`,children:[R(`span`,{className:`lockerverse-payment__skeleton-loader-half`}),R(`span`,{className:`lockerverse-payment__skeleton-loader-half`})]})]})]})}function ot(){return z(`div`,{className:`lockerverse-payment__loading`,children:[R(`span`,{"aria-live":`polite`,className:`lockerverse-payment__sr-only`,role:`status`,children:`Loading payment…`}),z(`div`,{"aria-hidden":`true`,className:`lockerverse-payment__skeleton`,children:[z(`div`,{className:`lockerverse-payment__skeleton-branding`,children:[R(`span`,{className:`lockerverse-payment__skeleton-avatar`}),R(`span`,{className:`lockerverse-payment__skeleton-community`})]}),z(`div`,{className:`lockerverse-payment__skeleton-contact`,children:[z(`div`,{className:`lockerverse-payment__skeleton-field`,children:[R(`span`,{className:`lockerverse-payment__skeleton-label`}),R(`span`,{className:`lockerverse-payment__skeleton-input`})]}),z(`div`,{className:`lockerverse-payment__skeleton-field`,children:[R(`span`,{className:`lockerverse-payment__skeleton-label`}),R(`span`,{className:`lockerverse-payment__skeleton-input`})]})]}),R(at,{}),R(at,{}),z(`div`,{className:`lockerverse-payment__skeleton-actions`,children:[R(`span`,{className:`lockerverse-payment__skeleton-check-line`}),R(`span`,{className:`lockerverse-payment__skeleton-button`})]})]})]})}function st({apiBaseUrl:e,branding:t,className:n,communitySlug:r,environment:i,fetch:a,metadata:o,onError:c,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,requestTimeoutMs:f,resumePayment:m,selection:g,sentryDsn:v,style:b,stripeLoader:x=p,theme:w=`dark`,widgetSlug:ee,...T}){let E=S(m).current,D=S(null),[O,k]=C(),[A,j]=C(`idle`),M=S(void 0),{retryCheckout:N,selectionError:P,session:F,updateCheckout:I}=_e({apiBaseUrl:e,communitySlug:r,environment:i,fetch:a,onError:c,paymentState:A,requestTimeoutMs:f,selection:g,sentryDsn:v,widgetSlug:ee}),L=F.phase===`ready`?F.revision:void 0,B=h(e=>{L!==void 0&&(M.current=L),j(e)},[L]);_(()=>{F.phase===`loading`&&k(void 0)},[F.phase]),y(()=>{F.phase===`ready`&&M.current!==F.revision&&j(e=>e===`success`||e===`unresolved`?e:`idle`)},[F.phase,F.revision]);let V=[`lockerverse-payment`,n].filter(Boolean).join(` `),H=t??(F.phase===`ready`?F.catalog.community:null),U=b?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,W=s(U),G={...b,...H?.accentColor&&b?.[`--lockerverse-accent`]===void 0?{"--lockerverse-accent":H.accentColor}:{},...W&&b?.[`--lockerverse-accent-contrast`]===void 0?{"--lockerverse-accent-contrast":W}:{}};if(P)return R(`section`,{...T,className:V,"data-lockerverse-theme":w,role:`alert`,style:G,children:P});if(F.phase===`error`)return z(`section`,{...T,className:V,"data-lockerverse-theme":w,style:G,children:[R(`p`,{role:`alert`,children:F.failure}),R(`button`,{onClick:N,type:`button`,children:`Retry`})]});if(F.phase!==`ready`)return R(`section`,{...T,"aria-busy":`true`,"aria-label":`Payment`,className:V,"data-lockerverse-theme":w,style:G,children:R(ot,{})});let{catalog:K,checkoutItems:ne,client:q,preparedCheckout:J}=F;return z(`section`,{...T,"aria-label":`Payment`,className:V,"data-lockerverse-theme":w,"data-payment-state":A,ref:D,style:G,children:[z(`header`,{children:[K.widget.showCommunityBranding&&H?z(`div`,{className:`lockerverse-payment__branding`,children:[H.imageUrl?R(`img`,{alt:H.name,height:`48`,src:H.imageUrl,width:`48`}):null,R(`strong`,{children:H.name})]}):null,R(`h1`,{children:K.widget.title??K.widget.name}),K.widget.description?R(`p`,{children:K.widget.description}):null]}),O?R(`p`,{className:`lockerverse-payment__payment-status`,role:`status`,children:O}):null,R(te,{container:D,children:R(qe,{accentColor:b?.[`--lockerverse-accent`]??H?.accentColor??`#38d77a`,catalog:K,checkoutItems:ne,client:q,fontFamily:b?.[`--lockerverse-font-family`]??`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,metadata:o,onPaymentComplete:l,onPaymentRecoveryChange:u,onPaymentUncertain:d,onQuoteChange:(e,t)=>{k(t),I(e)},onStateChange:B,quote:J,resumePayment:E,stripeLoader:x,theme:w,visualStyle:G})})]})}export{st as t};
|
|
2
2
|
//# sourceMappingURL=lockerverse-payment.js.map
|