@flopay/react 1.13.4 → 1.14.0

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.
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";var Oc=Object.create;var Va=Object.defineProperty;var Lc=Object.getOwnPropertyDescriptor;var Nc=Object.getOwnPropertyNames;var Uc=Object.getPrototypeOf,zc=Object.prototype.hasOwnProperty;var qc=(e,t)=>{for(var r in t)Va(e,r,{get:t[r],enumerable:!0})},ll=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Nc(t))!zc.call(e,a)&&a!==r&&Va(e,a,{get:()=>t[a],enumerable:!(n=Lc(t,a))||n.enumerable});return e};var Vi=(e,t,r)=>(r=e!=null?Oc(Uc(e)):{},ll(t||!e||!e.__esModule?Va(r,"default",{value:e,enumerable:!0}):r,e)),jc=e=>ll(Va({},"__esModule",{value:!0}),e);var gu={};qc(gu,{DirectPayPalButton:()=>ga,FloPayAutomaticPaymentButton:()=>oc,FloPayCardSetup:()=>ac,FloPayCardSetupError:()=>Ma,FloPayCheckout:()=>Pi,FloPayPaymentMethodSetup:()=>gc,FloPayProvider:()=>Pa,SplitCardForm:()=>yi,VaultCardFields:()=>lo,dropThirdPartyOnlyError:()=>Pc.dropThirdPartyOnlyError,useCheckout:()=>vl,useFloPay:()=>Jn,usePayPalFloPay:()=>Ka});module.exports=jc(gu);var Pc=require("@flopay/shared");var vi=require("@flopay/js"),pn=require("@flopay/shared"),yt=require("react");var $t=require("react/jsx-runtime");function Vc(){return(0,$t.jsxs)($t.Fragment,{children:[(0,$t.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,$t.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,$t.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,$t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem"},"aria-hidden":"true",children:(0,$t.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function Wc(){return(0,$t.jsx)($t.Fragment,{children:"Go back"})}function $c(){return(0,$t.jsx)($t.Fragment,{children:"Secure card checkout"})}function Fo(e){return e!==void 0&&(e===""||e===null||e===!1)}function Bo({content:e}){return(0,$t.jsx)($t.Fragment,{children:e===void 0?(0,$t.jsx)(Vc,{}):e})}function Do({content:e}){return(0,$t.jsx)($t.Fragment,{children:e===void 0?(0,$t.jsx)(Wc,{}):e})}function da({content:e}){return(0,$t.jsx)($t.Fragment,{children:e===void 0?(0,$t.jsx)($c,{}):e})}var Pt=require("@flopay/shared"),Sn=require("@flopay/shared"),No=require("@flopay/shared"),ho=require("@flopay/shared"),Hc="Checkout is temporarily unavailable. Please try again later.";function Wi(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof Pt.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function Kc(e){return e.type==="validation_error"||e.code==="checkout_session_not_found"||e.code==="checkout_session_expired"||e.code==="checkout_session_completed"||e.code==="session_auto_completed"}function cl(){return new Pt.FloPayError(Hc,"api_error",{code:"CheckoutInitializationFailed"})}function dl(e,t,r){let n=e?.data.session,a=n?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(r&&((0,Pt.isMountableVaultBlock)(n?.vault)||n?.gateways?.pcivault||a?.includes("card")||(0,Pt.canRecoverHostedCardForm)(n))||t&&e?.data.paypal?.publishableKey)}function ul(e,t){if(t&&(!(e instanceof Pt.FloPayError)||e.type==="authentication_error"))return Wi(e);if(!(e instanceof Pt.FloPayError&&Kc(e))){if(!t&&!(e instanceof Pt.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,Pt.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof Pt.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof Pt.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function Oo(e,t,r,n={}){let a;return(i={})=>{if(a!==void 0)return a;let l={...n,...i,email:i.email?.trim()||n.email?.trim()},u=(0,Pt.isCardHolderNamePlaceholder)(l.firstName,l.lastName);if(!(0,Pt.isValidEmail)(l.email))return Promise.reject(new Pt.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let p={};for(let[v,R]of Object.entries(l)){if(u&&v.endsWith("Name")||typeof R!="string")continue;let w=R.trim();w&&(p[v]=w)}return a=e.claimCheckoutSession(t,r,{accountData:p}),a.catch(()=>{}),a}}function pl(e,t){if(!t)return e;if(!e)return t;let r;return"checkoutMetadata"in t?r=t:"checkoutMetadata"in e&&(r=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...r?{checkoutMetadata:r.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function $i(e,t){return t?{...e,account:{...e.account,...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,..."checkoutMetadata"in t?{checkoutMetadata:t.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}:e}function ml(e,t){let r=e.products??[...(e.subscriptions??[]).map(i=>({type:"subscription",code:i.code??i.providerPlanId,name:i.subscriptionName??i.providerPlanName??i.code??i.providerPlanId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata})),...(e.items??[]).map(i=>({type:"item",code:i.code??i.providerItemId,name:i.itemName??i.providerItemName??i.code??i.providerItemId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata}))],n=r.reduce((i,l)=>i+(l.overrideAmount??l.totalAmount??0),0),a=e.currency??r.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:r.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(n*100),currency:a,status:"open",captureMethod:e.captureMethod,customer:{id:e.account.userId,email:e.account.email??"",firstName:e.account.firstName,lastName:e.account.lastName,gender:e.account.gender??void 0,city:e.account.city??void 0,state:e.account.state??void 0,country:e.account.country??void 0,zip:e.account.zip??void 0},successUrl:e.successUrl,cancelUrl:e.cancelUrl,checkoutMode:t??e.checkoutMode??"full",products:r.map((i,l)=>({uuid:`synthetic-${i.type??"item"}-${l}`,checkoutSessionId:"",type:i.type??"item",code:i.code,name:i.name??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount??null,currency:i.currency??a,metadata:i.metadata??null}))}}function Hi(e,t){return t?{...e,...t}:e}function Cr(e,t,r){let n=typeof t=="string"?t:t.message,a=typeof t=="string"?r?.code:r?.code??t.code,i=typeof t=="string"?r?.declineCode:r?.declineCode??t.declineCode,l=typeof t=="string"?void 0:t.sessionId;return{method:e,message:n,...a?{code:a}:{},...i?{declineCode:i}:{},...l?{sessionId:l}:{}}}function io(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}function Gn(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Yn(e){return e?.status==="authorized"||e?.status==="complete"}function so(e,t){if(e.data.session)return e.data.session;let r=e.raw,n=r?.latestTransactionAttempt?.result,a=r?.status==="authorized"||n==="AUTHORIZED";return a||r?.status==="completed"||n==="SUCCESS"?{...t,status:a?"authorized":"complete"}:r?.status==="expired"?{...t,status:"expired"}:void 0}function yl(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function Wa(e){let t=yl(e);return new Pt.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function $a(e){return e instanceof Pt.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function Lo(e){return yl(e)?new Pt.FloPayError("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new Pt.FloPayError("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new Pt.FloPayError(Pt.CHECKOUT_PROCESSING_TIMEOUT_MESSAGE,"api_error",{code:"checkout_processing_timeout"})}function ua(e,t){return e==="processing"||(0,Pt.isMoneySettledOutcome)(e,t)}function fl(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function gl(e,t){let r=e;if((0,Pt.isSetupIntentClientSecret)(t)){if(!r?.retrieveSetupIntent)return null;let{setupIntent:i,error:l}=await r.retrieveSetupIntent(t);if(l)throw new Pt.FloPayError(l.message??"Failed to retrieve setup intent.","api_error",{...l.code?{code:l.code}:{}});return i??null}if(!r?.retrievePaymentIntent)return null;let{paymentIntent:n,error:a}=await r.retrievePaymentIntent(t);if(a)throw new Pt.FloPayError(a.message??"Failed to retrieve payment intent.","api_error",{...a.code?{code:a.code}:{}});return n??null}var Gc=["apple_pay","google_pay"];function hl(e,t="automatic",r){let n=(0,Pt.resolveSetupFutureUsage)(r,Gc,"wallet");return{...(0,Pt.resolveWalletModeOptions)(e,t),paymentMethodTypes:["card"],...n?{setupFutureUsage:n}:{}}}var Yc=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Ki(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:"deferred_contract_mismatch"}:t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:Yc.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function pa(e){let t=[e?.id,e?.originalPaymentMethodId];for(let r of t)if(typeof r=="string"&&r.startsWith("pm_"))return r}var eo=require("@flopay/js"),Ve=require("@flopay/shared"),C=Vi(require("react"),1);var Gi=require("react"),an=(0,Gi.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),wn=(0,Gi.createContext)({session:null,loading:!1,error:null});var Ja=require("@flopay/js"),ct=require("@flopay/shared"),wl=require("@paypal/paypal-js"),_=require("react");var Ha=require("@flopay/shared"),kn=require("react"),sn=require("@flopay/shared"),Xn=require("react/jsx-runtime");function Uo(){let[e,t]=(0,kn.useState)(null),r=(0,kn.useRef)(null),n=(0,kn.useRef)(0),a=(0,kn.useCallback)((l,u)=>(r.current?.(null),n.current+=1,t({id:n.current,methodLabel:l,identity:u}),new Promise(p=>{r.current=p})),[]),i=(0,kn.useCallback)(l=>{let u=r.current;r.current=null,t(null),u?.(l)},[]);return(0,kn.useEffect)(()=>()=>{r.current?.(null),r.current=null},[]),{request:e,collect:a,finish:i}}function zo({identity:e,methodLabel:t,onComplete:r,onCancel:n,submitting:a=!1,testId:i="flopay-buyer-identity-pane"}){let[l,u]=(0,kn.useState)(e.email?.trim()??""),p=(0,Ha.isValidEmail)(l.trim());return(0,Xn.jsxs)("div",{"data-testid":i,style:{display:"flex",flexDirection:"column",gap:"0.75rem",padding:"0.875rem",border:"1px solid #d1d5db",borderRadius:8,background:"#fff",color:"#262833"},children:[(0,Xn.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Xn.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Xn.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:l,onChange:v=>u(v.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Xn.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[n&&(0,Xn.jsx)("button",{type:"button",onClick:n,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Xn.jsxs)("button",{type:"button",disabled:!p||a,onClick:()=>{r((0,Ha.compactBuyerIdentity)({...e,email:l.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}var Se=require("@flopay/shared");var Pl=require("@flopay/shared"),ma=require("react");function Jn(){return(0,ma.useContext)(an).flopay}function Ka(){return(0,ma.useContext)(an).paypalFlopay??null}function vl(){return(0,ma.useContext)(wn)}function bl(){return(0,ma.useContext)(an).billingApiUrl||(0,Pl.resolveBillingApiUrl)()}var Xc=require("@flopay/shared"),Un=require("@flopay/shared"),zn=require("@flopay/shared");var qo=require("@flopay/shared"),vo=require("react");var Ga=require("react"),Po=typeof window>"u"?Ga.useEffect:Ga.useLayoutEffect;var Yi=require("@flopay/shared");function jo(e,t){let r=(0,vo.useRef)(e);r.current=e;let n=(0,vo.useRef)(new Set),a=(0,vo.useRef)(t),i=(0,vo.useRef)(t);return Po(()=>{i.current=t,a.current!==t&&(a.current=t,n.current.clear())},[t]),(0,vo.useCallback)(l=>{if(i.current!==t)return;let u=(0,qo.projectFloInstrument)(l);if(u){if(qo.FLO_INSTRUMENT_ONCE_NAMES.has(u.name)){if(n.current.has(u.name))return;n.current.add(u.name)}(0,qo.invokeMerchantCallback)(()=>r.current?.(u))}},[t])}var it=require("@flopay/shared");var Cl=require("react"),ya=(0,Cl.createContext)(null);function Ya(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Jc=Symbol.for("@flopay/js.telemetry.bridge.v1"),Zc=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function Qc(){return{error:()=>{},log:()=>{},performance:()=>{},terminal:()=>{},now:()=>globalThis.performance?.now()??0,elapsed:e=>Math.max(0,(globalThis.performance?.now()??e)-e),setCheckoutContext:()=>{},beginCheckout:()=>globalThis.performance?.now()??0,disable:()=>{},subscribe:()=>()=>{},flush:async()=>{},destroy:()=>{}}}function ed(e){let t=Qc(),r=(a,i)=>a?a.bind(e):i,n=r(e.now,t.now);return{error:r(e.error,t.error),log:r(e.log,t.log),performance:r(e.performance,t.performance),terminal:r(e.terminal,t.terminal),now:n,elapsed:e.elapsed?e.elapsed.bind(e):a=>Math.max(0,n()-a),setCheckoutContext:r(e.setCheckoutContext,t.setCheckoutContext),beginCheckout:r(e.beginCheckout,t.beginCheckout),disable:r(e.disable,t.disable),subscribe:r(e.subscribe,t.subscribe),flush:r(e.flush,t.flush),destroy:r(e.destroy,t.destroy)}}function Xa(e){let t=globalThis[Zc];return ed(t?.(e)??{})}function Sr(e){if(e)return e[Jc]}var ur=require("react");function fa(e,t){let r=(0,ur.useRef)(0),n=(0,ur.useRef)(null),a=(0,ur.useRef)(null),i=(0,ur.useRef)(e),l=(0,ur.useRef)(t?.onHandoffObserved),u=(0,ur.useRef)(t?.defersMissingTerminal),p=(0,ur.useRef)(t?.onMissingTerminalDeferred);(0,ur.useEffect)(()=>{i.current=e,l.current=t?.onHandoffObserved,u.current=t?.defersMissingTerminal,p.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let v=(0,ur.useCallback)((f=a.current)=>{f?.timer&&(clearTimeout(f.timer),f.timer=null)},[]),R=(0,ur.useCallback)(f=>{v();let P=r.current+1;return r.current=P,n.current=null,a.current={generation:P,method:f,timer:null,yieldedControl:!1},P},[v]),w=(0,ur.useCallback)(f=>{let P=a.current;return f!==void 0&&P?.generation!==f?!1:(v(P),a.current=null,(f===void 0||n.current===f)&&(n.current=null),!0)},[v]),x=(0,ur.useCallback)(f=>{let P=a.current,ee=f??P?.generation??r.current;(f===void 0||P?.generation===f)&&(v(P),a.current=null),n.current=ee},[v]),K=(0,ur.useCallback)(f=>n.current===(f??r.current),[]),T=(0,ur.useCallback)(f=>a.current?.generation===f&&n.current!==f,[]),V=(0,ur.useCallback)(()=>{let f=a.current;f&&(v(f),!f.yieldedControl&&(f.yieldedControl=!0,l.current?.(f.method)))},[v]),A=(0,ur.useCallback)(()=>{let f=a.current;!f?.yieldedControl||document.visibilityState!=="visible"||(v(f),f.timer=setTimeout(()=>{if(f.timer=null,a.current?.generation===f.generation){if(u.current?.(f.method)){p.current?.(f.method,f.generation);return}a.current=null,n.current=f.generation,i.current(f.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},Se.EXTERNAL_METHOD_CALLBACK_GRACE_MS))},[v]);return(0,ur.useEffect)(()=>{let f=()=>{document.visibilityState==="visible"?A():V()};return document.addEventListener("visibilitychange",f),window.addEventListener("blur",V),window.addEventListener("focus",A),()=>{document.removeEventListener("visibilitychange",f),window.removeEventListener("blur",V),window.removeEventListener("focus",A),v()}},[v,V,A]),{startAttempt:R,finishAttempt:w,invalidateAttempt:x,isAttemptInvalidated:K,isAttemptCurrent:T,generationRef:r}}var ln=require("react/jsx-runtime"),Za=45,td=1e3,rd=11e3,nd={width:"100%",minHeight:Za,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"},od={script_rejected:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"rejected"},namespace_unusable:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"returned_error"},pre_ready_callback:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"returned_error"},render_rejected:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"rejected"},watchdog_expired:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"watchdog_expired"}};function ad(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:od[e.kind]??null}}function Sl(e,t){return e==="watchdog_expired"?"paypal_render_timeout":(0,Se.isPayPalAcknowledgementDeadWindow)(t)?"paypal_init_timeout":"paypal_init_failure"}function id(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function kl({sessionId:e,nonce:t,billingApiUrl:r,email:n,billingName:a,onBuyerIdentityReady:i,clientId:l,environment:u,currency:p,isSubscription:v,providerObjectType:R,approvalPresentation:w,onTokenizedBody:x,onComplete:K,onErrorChange:T,onDecline:V,onTechnicalFailure:A,isProcessing:f=!1,onLoadStateChange:P,onInitializationStateChange:ee,allowAutomaticRetry:D=!0,onButtonClick:ue,runBeforeButtonClick:F,session:ne,existingOrderId:_e,telemetry:ie,telemetryContext:We,onInstrument:kt,debug:de=!1}){let G=Jn(),pt=jo(kt,e),we=(0,_.useMemo)(()=>{if(G)return null;let g=Xa({billingApiUrl:r,sdkPackage:"@flopay/react",sdkVersion:ct.SDK_VERSION,enabled:ie!==!1});return g.setCheckoutContext(We??{}),g.beginCheckout(We??{}),g},[r,G,ie,We?.checkoutMode,We?.layout]),xe=(0,_.useMemo)(()=>Sr(G),[G]);(0,_.useEffect)(()=>()=>{we&&we.flush().catch(()=>{}).finally(()=>we.destroy())},[we]);let ke=(0,_.useMemo)(()=>({error:g=>{xe?xe.error(g):we?.error(g),pt({class:"technical_error",errorCode:g.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":g.errorCode,requestCategory:g.requestCategory,provider:g.provider})},log:g=>{xe?xe.log(g):we?.log(g),pt({class:"lifecycle",name:g.name,provider:g.provider})},performance:g=>{xe?xe.performance(g):we?.performance(g)},terminal:g=>{xe?xe.terminal(g):we?.terminal(g)},startTiming:()=>xe?.now()??we?.now()??0,elapsed:g=>xe?.elapsed(g)??Math.max(0,(we?.now()??g)-g)}),[pt,xe,we]),Z=(0,_.useRef)(null),pe=(0,_.useRef)(0),Re=(0,_.useRef)(null),Fe=(0,_.useRef)(null),rt=(0,_.useRef)(null),me=(0,_.useContext)(ya),N=(0,_.useRef)(null);N.current||(N.current=Ya());let H=me??N.current,ye=(0,_.useRef)(null),$e=(0,_.useRef)(!1),[he,M]=(0,_.useState)(!1),[Ye,Te]=(0,_.useState)(!1),[tt,Ze]=(0,_.useState)(0),ze=(0,_.useRef)(0),[He,Le]=(0,_.useState)(!1),Et=(0,_.useRef)(!1),zt=(0,_.useRef)(!1),[ft,Ft]=(0,_.useState)(!1),[q,Pe]=(0,_.useState)(!1),{request:st,collect:W,finish:Ee}=Uo(),nt=(0,_.useRef)({sessionId:e,required:(0,ct.paypalProviderIdentityRequired)(n,ne)});nt.current.sessionId!==e&&(nt.current={sessionId:e,required:(0,ct.paypalProviderIdentityRequired)(n,ne)});let Ke=nt.current.required,Rt=(0,_.useMemo)(()=>r.replace(/\/+$/,""),[r]),b=ne?.gateways?.paypal?.providerObjectType??R,L=b??(v?"subscription":"order"),[qe]=(0,_.useState)(Un.detectPayPalEnvironment),fe=ne?.gateways?.paypal?.approvalPresentation??w,h=(0,zn.resolvePayPalPresentationMode)(qe,fe==="app_switch"?"app_switch":void 0,L),ve=(0,ct.usesPayPalVaultedChannel)(b),j=(0,_.useMemo)(()=>JSON.stringify([Rt,l,p,u??"",L,ve,h,e,_e??""]),[Rt,l,p,u,_e,L,ve,h,e]),Y=(0,_.useRef)(j),te=Y.current!==j,k=(0,_.useRef)(de),Q=(0,_.useRef)(null),[be,Be]=(0,_.useState)([]),S=(0,_.useCallback)(g=>{k.current&&Be(It=>[...It,`${new Date().toISOString().slice(11,23)} ${g}`])},[]);(0,_.useEffect)(()=>{k.current=de,de&&S("debug:enabled"),Q.current?.setEnabled(de)},[S,de]);let Bt=(0,_.useRef)(x),rr=(0,_.useRef)(K),sr=(0,_.useRef)(T),Ht=(0,_.useRef)(V),Kt=(0,_.useRef)(A),Lr=(0,_.useRef)(ue),_r=(0,_.useRef)(P),jt=(0,_.useRef)(ee),Zr=(0,_.useRef)(i),Gt=(0,_.useRef)(F),_n=(0,_.useRef)(ne),Yt=(0,_.useRef)(n),Qr=(0,_.useRef)(a),ot=(0,_.useRef)(t),dt=(0,_.useRef)(null),Vt=(0,_.useRef)(new Map),xr=(0,_.useRef)(new Map),Ar=(0,_.useRef)(!1);(0,_.useEffect)(()=>(Ar.current=!0,()=>{Ar.current=!1}),[]),(0,_.useEffect)(()=>{Bt.current=x},[x]),(0,_.useEffect)(()=>{Zr.current=i},[i]),(0,_.useEffect)(()=>{rr.current=K},[K]),(0,_.useEffect)(()=>{sr.current=T},[T]),(0,_.useEffect)(()=>{Ht.current=V},[V]),(0,_.useEffect)(()=>{Kt.current=A},[A]),(0,_.useEffect)(()=>{Lr.current=ue},[ue]),(0,_.useEffect)(()=>{_r.current=P},[P]),(0,_.useEffect)(()=>{jt.current=ee},[ee]),(0,_.useEffect)(()=>{Gt.current=F},[F]),(0,_.useEffect)(()=>{_n.current=ne},[ne]),(0,_.useEffect)(()=>{Yt.current=n},[n]),(0,_.useEffect)(()=>{Qr.current=a},[a]),(0,_.useEffect)(()=>{ot.current=t},[t]),(0,_.useEffect)(()=>{ze.current=tt},[tt]),(0,_.useEffect)(()=>{He&&ye.current?.focus()},[He,tt]);let Fr=(0,_.useCallback)(()=>{window.setTimeout(()=>{ye.current?.focus()},0)},[]),Rr=(0,_.useCallback)(()=>{M(!1),Ze(g=>g+1)},[]),Tr=(0,_.useCallback)(()=>{Le(!1),(Z.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??Z.current)?.focus?.()},[]);(0,_.useEffect)(()=>{!he||!$e.current||($e.current=!1,Tr())},[Tr,he,tt]);let gr=(0,_.useCallback)((g,It)=>{let se=It?.popupBlocked??(0,Se.isPopupBlockedError)(g);se&&H.markBlocked();let Ae=(0,Se.buildExternalMethodRecoveryMessage)("PayPal",se,qe.inAppBrowser),xt=Kt.current;if(xt){let bt=se&&qe.inAppBrowser?new ct.FloPayError(Ae,"api_error",{code:It?.code??"paypal_popup_blocked"}):g;xt("paypal",bt,It);return}sr.current?.(Ae)},[H,qe.inAppBrowser]),mr=(0,_.useCallback)(g=>{let It=Re.current,se=Fe.current;It===null||!se||(ke.log({...se,popupCapability:H.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:g}),ke.performance({...se,popupCapability:H.current(),stage:"overlay_return",durationMs:ke.elapsed(It),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:g}),Re.current=null)},[H,ke]),Xt=(0,_.useCallback)((g,It,se)=>{let Ae=Fe.current;mr("overlay_timeout"),Ae&&ke.error({...Ae,popupCapability:H.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),gr(It,{...se,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:h,terminalReason:"overlay_timeout"}),Le(!0),Rr(),Fr()},[mr,Fr,gr,H,h,Rr,ke]),Dt=(0,_.useCallback)(()=>{H.markAvailable();let g=Fe.current;g&&(rt.current=g.attempt,ke.log({...g,popupCapability:H.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[H,ke]),{finishAttempt:hr,generationRef:Pr,invalidateAttempt:De,isAttemptCurrent:mn,isAttemptInvalidated:Nr,startAttempt:Tn}=fa(Xt,{onHandoffObserved:Dt}),lr=(0,_.useCallback)(()=>(Le(!1),Tn("paypal")),[Tn]),Er=(0,_.useCallback)(g=>{De(g?.generation),g?.showRetry&&Le(!0),g?.remount&&Rr(),g?.focus!==!1&&Fr()},[Fr,De,Rr]),Mn=g=>{let It=dt.current;return It&&xr.current.set(g,It),g};(0,_.useEffect)(()=>{Y.current!==j&&(Y.current=j,Et.current=!1,zt.current=!1,M(!1),Te(!1),Ft(!1),jt.current?.("loading"))},[j]),(0,_.useEffect)(()=>{(0,it.invokeMerchantCallback)(()=>_r.current?.(he&&!ft))},[he,ft]);let en=(0,ct.normalizeGatewayEnvironment)(u);(0,_.useEffect)(()=>{let g={attempt:Pr.current+1,inAppBrowser:qe.inAppBrowser,appFamily:qe.appFamily,popupCapability:H.current(),presentationMode:h},It=()=>({...Fe.current??g,popupCapability:H.current()}),se={error:m=>ke.error({...m,...It()}),log:m=>ke.log({...m,...It()}),performance:m=>ke.performance({...m,...It()}),terminal:m=>ke.terminal({...m,...It()}),startTiming:ke.startTiming,elapsed:ke.elapsed},Ae=l?`${l.slice(0,6)}\u2026(len ${l.length})`:"(empty)",xt=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(S(`mount clientId=${Ae} env=${u??"(unset)"}\u2192${en??"live"} ccy=${p} sub=${v}`),S(`ua=${xt.slice(0,80)}${xt.length>80?"\u2026":""}`),!l){S("FAIL: clientId empty \u2014 gateway misconfigured"),Ft(!0),se.error({errorCode:"CONFIGURATION_INVALID",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),console.error("[FloPay] DirectPayPal: clientId empty \u2014 gateway misconfigured");return}if(!Z.current){S("FAIL: containerRef not attached");return}pe.current=se.startTiming(),se.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let bt=!1,At=!1,Qe=()=>bt||At,Ur=ve?L:void 0,ro,Ot=!1,Hr=()=>{ro=(0,ct.generateIdempotencyKey)(),ro||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Ot=!0},yn=null,fn=!1,Zt=null,xn=!1,An=()=>{!Zt||xn||(xn=!0,Zt.close().catch(()=>{}))},zr=!1,Fn=!1,tn=Z.current,Bn=null,$n=null,Kr=[],gn=null,hn=!1,Nt=!1,Gr=null,Br=m=>{if(!m||typeof m.getBoundingClientRect!="function")return"(no rect)";let y=m.getBoundingClientRect();return`${Math.round(y.width)}\xD7${Math.round(y.height)}`},Pn=m=>{if(!m)return"(empty)";try{let y=new URL(m,typeof window>"u"?"https://localhost":window.location.href),I=y.pathname.toLowerCase();return I.includes("checkcaptcha")||I.includes("captcha")?`CAPTCHA(${y.host}${I})`:I.includes("risk")||I.includes("challenge")?`RISK(${y.host}${I})`:I.includes("smart/buttons")?`smart-buttons(${y.host})`:`${y.host}${I}`.slice(0,100)}catch{return m.slice(0,80)}},vn=m=>{let y=m.getAttribute("src"),I=m.getAttribute("srcdoc"),ce=m.getAttribute("name"),Oe=m.getAttribute("sandbox"),Xe=[];return y&&Xe.push(`src=${Pn(y)}`),I&&Xe.push(`srcdoc[${I.length}ch]`),!y&&!I&&Xe.push("src=(empty) srcdoc=(empty)"),ce&&Xe.push(`name=${ce.slice(0,40)}`),Oe!==null&&Xe.push(`sandbox="${Oe.slice(0,40)}"`),Xe.join(" ")},Ct=m=>{if(!(m instanceof HTMLIFrameElement))return"";try{let y=m.contentDocument;if(!y)return"cd=null";let I=y.body?.children.length??0,ce=y.body?.innerHTML.length??0,Oe=y.head?.innerHTML.length??0;return`cd=same-origin readyState=${y.readyState} body[${I}children,${ce}ch] head[${Oe}ch]`}catch(y){return`cd=cross-origin(${y.message.slice(0,30)})`}},cr=[],vr=m=>{if(Qe())return;let y=m.message??String(m.error??"(no message)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(S(`window:error ${y.slice(0,140)}`),cr.push(y))},qr=m=>{if(Qe())return;let y=m.reason instanceof Error?m.reason.message:String(m.reason??"(no reason)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(S(`window:rejection ${y.slice(0,140)}`),cr.push(y))},no={value:0},Dn=()=>{Bn?.disconnect(),Bn=null,$n?.disconnect(),$n=null;for(let m of Kr.splice(0))clearTimeout(m);Nt=!1,hn&&typeof window<"u"&&(window.removeEventListener("error",vr),window.removeEventListener("unhandledrejection",qr)),hn=!1},Hn=()=>{if(!(hn||Qe()||zr)){if(hn=!0,cr.length=0,no.value=0,typeof window<"u"&&(window.addEventListener("error",vr),window.addEventListener("unhandledrejection",qr)),typeof PerformanceObserver<"u")try{$n=new PerformanceObserver(m=>{if(!Qe())for(let y of m.getEntries()){if(!y.name.toLowerCase().includes("paypal"))continue;no.value+=1;let I=Math.round(y.duration);S(`net ${I}ms ${y.name.slice(0,90)}`)}}),$n.observe({type:"resource",buffered:!0})}catch{}Gr?.()}},rn=()=>{gn&&(clearTimeout(gn),gn=null)},dr=()=>{Dn(),rn()},oo={setEnabled:m=>{m?Hn():Dn()}};Q.current=oo,k.current&&Hn();let yr=ct.isPayPalTeardownMessage,z=m=>{if(Qe()||yr(m))return;let y=(0,ho.applyFriendlyMessageOverride)(m)??m;(0,it.invokeMerchantCallback)(()=>sr.current?.(y))},O=(m,y)=>{if(bt||fn)return;fn=!0,At=!0,dr(),An();let I=ad({kind:m,generationActive:!0,automaticRetryAllowed:D,automaticRetryUsed:Et.current});if(I.action==="retry"){Et.current=!0,M(!1),Pe(!1),Te(!0),jt.current?.("retrying"),yn=setTimeout(()=>{bt||Ze(ce=>ce+1)},td);return}if(M(!1),Pe(!1),Te(!1),Ft(!0),I.action!=="ignore"){if(jt.current?.("exhausted"),I.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",y);return}if(I.report){let ce=(0,Se.classifyExternalMethodFailure)({code:Sl(m,y),message:y},{inAppBrowser:qe.inAppBrowser,handoffObserved:!1});ce.popupBlocked&&H.markBlocked(),se.error({errorCode:ce.popupBlocked?ce.errorCode:I.report.errorCode,stage:I.report.stage,operationOutcome:I.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:ce.terminalReason})}zt.current||(zt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Sl(m,y)))}};Ft(!1);let le=async(m,y=dt.current)=>{if(Qe())return;let I=y?.sessionId??e;if(Bt.current){await Bt.current(m,{sessionId:I,accountPatch:y?.accountPatch,nonce:y?.nonce});return}let ce=se.startTiming();se.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let Oe=()=>{se.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),se.performance({stage:"processing",durationMs:se.elapsed(ce),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let Xe=(0,ct.buildPayPalProcessPaymentRequest)({body:m,sessionId:I,nonce:y?.nonce??ot.current,accountPatch:y?.accountPatch,session:_n.current,email:Yt.current}),Me=await new Ja.PaymentAPI(Rt,{telemetry:!1}).processPayment(Xe.userId,Xe.params);if(Me.ok){if(At||bt&&Ar.current)return;Oe(),se.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),(0,it.invokeMerchantCallback)(()=>rr.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(Qe())return;let et=await Me.json().catch(()=>null),lt=(0,ct.describePayPalProcessFailure)(et),St=lt.message;Oe(),Me.status===400&&(typeof et?.declineCode=="string"||!Array.isArray(et?.fields))?se.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):Me.status===400||Me.status===422?se.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):se.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:id(Me.status),failureCategory:Me.status>=500?"server_error":void 0}),z(St),(0,it.invokeMerchantCallback)(()=>Ht.current?.(Cr("paypal",St,{code:lt.code,declineCode:lt.declineCode})));return}catch(Xe){if(Qe())return;Oe(),se.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let er=(0,ct.friendlyPayPalFailureMessage)(Xe instanceof Error?Xe.message:void 0);z(er),(0,it.invokeMerchantCallback)(()=>Ht.current?.(Cr("paypal",er)));return}},ge=()=>new ct.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),_t=m=>Qe()?Promise.reject(ge()):Promise.resolve(m),Qt=async m=>{if(Qe())throw ge();Ot||Hr();let y=dt.current,I=y?.sessionId??e,ce=y?.nonce??ot.current;se.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let Oe;try{Oe=await new Ja.PaymentAPI(Rt,{telemetry:!1}).createSessionIntent(I,ce??"",(0,ct.buildPayPalSessionIntentRequest)(Ur),{idempotencyKey:ro})}catch(Xe){throw se.error({...(0,ct.classifyTelemetryFailure)(Xe,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),Xe}if(Qe())throw ge();if(Oe.provider!=="paypal"||Oe.providerObjectType!==L)throw new Error(m);return se.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),Oe.providerObjectId},Ne=(m,y)=>{let I=y?.nonce??ot.current;if(!I)return;let ce=y?.sessionId??e,Oe=(0,ct.resolvePayPalDeclineReason)(m);new Ja.PaymentAPI(Rt,{telemetry:!1}).reportSessionIntentDecline(ce,I,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Oe}).catch(()=>{})},X=tt;S("loadScript:scheduled (deferred 1 tick)");let J=null,$=setTimeout(()=>{if(bt){S("loadScript:skipped (cancelled before defer ran)");return}S("loadScript:start");let m=en==="live"?"production":en,y={};L==="subscription"?y={intent:"subscription",vault:!0}:L==="order"&&(y={intent:"capture"}),J=(0,wl.loadScript)({clientId:l,currency:p,...y,...m?{environment:m}:{},...m==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let I=!1;J.then(ce=>{if(I=!0,S(`loadScript:resolved inactive=${Qe()} ns=${!!ce} buttons=${!!ce?.Buttons}`),Qe())return;if(!ce?.Buttons){S("FAIL: namespace missing Buttons factory"),O("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}se.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),se.performance({stage:"provider_ready",durationMs:se.elapsed(pe.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),se.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let Oe=async(Ce,U)=>{if(Qe()||ze.current!==X)return;let oe=Ce.vaultSetupToken??Ce.subscriptionID??Ce.orderID??"",gt=oe?xr.current.get(oe):Vt.current.get(X);if(!(!gt||!mn(gt.generation))&&hr(gt.generation)){xr.current.delete(oe),Vt.current.delete(gt.surfaceKey),mr("approved");try{if(Pe(!0),(0,it.invokeMerchantCallback)(()=>sr.current?.(null)),!oe)throw new ct.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let Ge=(0,ct.resolvePayPalApprovalIdentity)({accountPatch:gt.accountPatch,email:Yt.current,billingName:Qr.current,session:_n.current});if((0,ct.needsPayPalPayerDetails)(Ge))try{Ge=(0,ct.mergePayPalPayerIdentity)(Ge,await U?.order?.get?.())}catch{}if((Zr.current||Ke)&&!(0,ct.isValidEmail)(Ge.email)){let Tt=await W("PayPal",Ge);if(!Tt)return;Ge=Tt}(0,ct.isValidEmail)(Ge.email)&&(gt.accountPatch=(0,sn.compactBuyerIdentity)({...gt.accountPatch,...Ge}),await Zr.current?.(Ge));let at=(0,ct.buildPayPalTokenizedBody)(oe,Ur);await le(at,gt)}catch(Ge){z(Ge instanceof Error?Ge.message:"PayPal capture failed.")}finally{Qe()||Pe(!1)}}},Xe=Ce=>{let U=_e?()=>_t(_e):()=>Qt(Ce);return async()=>Mn(await U())},er=ce.Buttons({style:{layout:"horizontal",height:Za,tagline:!1},...h==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(Ce,U)=>{if(Qe()){await U.reject();return}Hr();let oe=Gt.current,gt={};if(oe)try{let Tt=await oe("paypal");if(Qe()){await U.reject();return}if(!Tt.proceed){dt.current=null,Vt.current.delete(X),await U.reject();return}gt={sessionId:Tt.sessionId,accountPatch:Tt.accountPatch,nonce:Tt.nonce}}catch(Tt){S(`onClick:runBeforeButtonClick rejected msg=${(Tt instanceof Error?Tt.message:String(Tt)).slice(0,120)}`),dt.current=null,Vt.current.delete(X),await U.reject();return}(0,it.invokeMerchantCallback)(()=>Lr.current?.("paypal"));let Ge=lr(),at={generation:Ge,surfaceKey:X,...gt};dt.current=at,Vt.current.set(X,at),Fe.current={...g,attempt:Ge},await U.resolve(),se.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),se.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),Re.current=se.startTiming()},createOrder:L==="order"?Xe("Failed to create PayPal order."):void 0,createSubscription:L==="subscription"?Xe("Failed to create PayPal subscription."):void 0,createVaultSetupToken:L==="setup_token"?async()=>Mn(await Qt("Failed to create PayPal setup token.")):void 0,onApprove:Oe,onCancel:()=>{if(Qe())return;let Ce=Vt.current.get(X)??dt.current;Ce&&Vt.current.delete(Ce.surfaceKey),dt.current=null,mr("cancelled"),se.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),$e.current=!0,Er({generation:Ce?.generation,remount:!0,focus:!1})},onError:Ce=>{if(Qe()||ze.current!==X)return;let U=Ce instanceof Error?Ce.message:"PayPal failed to render.";if(S(`onError rendered=${zr} msg=${U.slice(0,120)}`),zr){let oe=Vt.current.get(X)??dt.current;if(oe&&!mn(oe.generation)||!oe&&Nr())return;if(yr(U)){hr(oe?.generation);return}let{errorCode:gt,popupBlocked:Ge,providerDeclined:at,terminalReason:Tt}=(0,Se.classifyExternalMethodFailure)(Ce,{inAppBrowser:qe.inAppBrowser,handoffObserved:oe!=null&&rt.current===oe.generation});if(Ge&&H.markBlocked(),mr(Tt),at){se.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Tt}),Ne(Ce,oe),(0,it.invokeMerchantCallback)(()=>Ht.current?.(Cr("paypal",U))),oe&&Vt.current.delete(oe.surfaceKey),dt.current=null,hr(oe?.generation);return}se.error({errorCode:gt,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:Tt}),oe&&Vt.current.delete(oe.surfaceKey),dt.current=null,Er({generation:oe?.generation,remount:!0,showRetry:!0,focus:!0}),gr(Ce,{code:"paypal_runtime_failed",popupBlocked:Ge,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:h,terminalReason:Tt});return}O(yr(U)?"teardown":"pre_ready_callback",U)}}),Me=er.isEligible();if(S(`isEligible=${Me}`),se.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!Me){M(!1),O("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}Fn=!0,Zt=er,Gr=()=>{if(!hn||Nt||Qe()||zr)return;Nt=!0,S(`container:dims ${Br(tn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(Bn=new MutationObserver(U=>{if(!Qe()){for(let oe of U)if(oe.type==="childList")oe.addedNodes.forEach(gt=>{if(!(gt instanceof Element))return;let Ge=gt.tagName.toLowerCase(),at=(gt.getAttribute("title")??"").slice(0,40),Tt=Ge==="iframe"?` ${vn(gt)}`:"";S(`child+ ${Ge}${at?` title="${at}"`:""}${Tt} dims=${Br(gt)}`)});else if(oe.type==="attributes"&&oe.target instanceof Element){let gt=oe.target;if(gt.tagName.toLowerCase()!=="iframe")continue;let Ge=oe.attributeName;(Ge==="src"||Ge==="srcdoc")&&S(`attr~ iframe ${Ge}=${Ge==="srcdoc"?`[${(gt.getAttribute("srcdoc")??"").length}ch]`:Pn(gt.getAttribute("src"))} dims=${Br(gt)}`)}}}),Bn.observe(tn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let Ce=U=>{if(Qe()||zr)return;let oe=tn.querySelectorAll("iframe"),gt=typeof document<"u"&&"hasStorageAccess"in document;S(`watchdog:${U} container=${Br(tn)} children=${tn.childElementCount} iframes=${oe.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${gt} paypalNetRequests=${no.value}`),oe.forEach((Ge,at)=>{let Tt=(Ge.getAttribute("title")??"").slice(0,40);S(` iframe[${at}] ${Br(Ge)}${Tt?` title="${Tt}"`:""} ${vn(Ge)}`);let vt=Ct(Ge);vt&&S(` ${vt}`)}),cr.length===0&&S(" (no PayPal/zoid window errors captured)")};Kr.push(setTimeout(()=>Ce("3s"),3e3)),Kr.push(setTimeout(()=>Ce("8s"),8e3)),Kr.push(setTimeout(()=>Ce("15s"),15e3))},Gr(),S("render:start");let lt=se.startTiming();gn=setTimeout(()=>{Qe()||zr||(S("watchdog:11s retryable render timeout"),O("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},rd);let St=er.render(tn);(async()=>{try{if(await St,S(`render:resolved inactive=${Qe()}`),dr(),Qe()){An();return}zr=!0,M(!0),Te(!1),jt.current?.("ready"),se.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),se.performance({stage:"checkout_render",durationMs:se.elapsed(lt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(Ce){let U=Ce instanceof Error?Ce.message:"PayPal failed to render.";S(`render:rejected msg=${U.slice(0,120)}`),dr(),O(yr(U)?"teardown":"render_rejected",U)}})()}).catch(ce=>{let Oe=ce instanceof Error?ce.message:"PayPal operation failed.";S(`provider:failed msg=${Oe.slice(0,120)}`);let Xe="script_rejected";I&&yr(Oe)?Xe="teardown":I&&Fn&&(Xe="render_rejected"),O(Xe,Oe)})},0);return()=>{bt=!0,clearTimeout($),yn&&clearTimeout(yn),dr(),Q.current===oo&&(Q.current=null),An(),Re.current=null,Fe.current=null}},[D,Rt,l,p,u,L,h,ve,e,_e,tt,ke,W,Ke,S,mr]);let Jt=de?(0,ln.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:ft?"#fef2f2":"#f3f4f6",border:`1px solid ${ft?"#fca5a5":"#d1d5db"}`,borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflowY:"auto"},children:[`FloPay/DirectPayPal-debug (ready=${he} failed=${ft})`,be.length===0?`
1
+ "use strict";var Lc=Object.create;var Wa=Object.defineProperty;var Nc=Object.getOwnPropertyDescriptor;var Uc=Object.getOwnPropertyNames;var zc=Object.getPrototypeOf,qc=Object.prototype.hasOwnProperty;var jc=(e,t)=>{for(var r in t)Wa(e,r,{get:t[r],enumerable:!0})},cl=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Uc(t))!qc.call(e,a)&&a!==r&&Wa(e,a,{get:()=>t[a],enumerable:!(n=Nc(t,a))||n.enumerable});return e};var Wi=(e,t,r)=>(r=e!=null?Lc(zc(e)):{},cl(t||!e||!e.__esModule?Wa(r,"default",{value:e,enumerable:!0}):r,e)),Vc=e=>cl(Wa({},"__esModule",{value:!0}),e);var hu={};jc(hu,{DirectPayPalButton:()=>ha,FloPayAutomaticPaymentButton:()=>ac,FloPayCardSetup:()=>ic,FloPayCardSetupError:()=>xa,FloPayCheckout:()=>vi,FloPayPaymentMethodSetup:()=>hc,FloPayProvider:()=>va,SplitCardForm:()=>fi,VaultCardFields:()=>co,dropThirdPartyOnlyError:()=>vc.dropThirdPartyOnlyError,useCheckout:()=>Cl,useFloPay:()=>Qn,usePayPalFloPay:()=>Ga});module.exports=Vc(hu);var vc=require("@flopay/shared");var Ci=require("@flopay/js"),gn=require("@flopay/shared"),yt=require("react");var Kt=require("react/jsx-runtime");function Wc(){return(0,Kt.jsxs)(Kt.Fragment,{children:[(0,Kt.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,Kt.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,Kt.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,Kt.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem"},"aria-hidden":"true",children:(0,Kt.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function $c(){return(0,Kt.jsx)(Kt.Fragment,{children:"Go back"})}function Hc(){return(0,Kt.jsx)(Kt.Fragment,{children:"Secure card checkout"})}function Bo(e){return e!==void 0&&(e===""||e===null||e===!1)}function Do({content:e}){return(0,Kt.jsx)(Kt.Fragment,{children:e===void 0?(0,Kt.jsx)(Wc,{}):e})}function Oo({content:e}){return(0,Kt.jsx)(Kt.Fragment,{children:e===void 0?(0,Kt.jsx)($c,{}):e})}function ua({content:e}){return(0,Kt.jsx)(Kt.Fragment,{children:e===void 0?(0,Kt.jsx)(Hc,{}):e})}var Pt=require("@flopay/shared"),kn=require("@flopay/shared"),Uo=require("@flopay/shared"),vo=require("@flopay/shared"),Kc="Checkout is temporarily unavailable. Please try again later.";function $i(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof Pt.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function Gc(e){return e.type==="validation_error"||e.code==="checkout_session_not_found"||e.code==="checkout_session_expired"||e.code==="checkout_session_completed"||e.code==="session_auto_completed"}function dl(){return new Pt.FloPayError(Kc,"api_error",{code:"CheckoutInitializationFailed"})}function ul(e,t,r){let n=e?.data.session,a=n?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(r&&((0,Pt.isMountableVaultBlock)(n?.vault)||n?.gateways?.pcivault||a?.includes("card")||(0,Pt.canRecoverHostedCardForm)(n))||t&&e?.data.paypal?.publishableKey)}function pl(e,t){if(t&&(!(e instanceof Pt.FloPayError)||e.type==="authentication_error"))return $i(e);if(!(e instanceof Pt.FloPayError&&Gc(e))){if(!t&&!(e instanceof Pt.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,Pt.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof Pt.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof Pt.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function Lo(e,t,r,n={}){let a;return(i={})=>{if(a!==void 0)return a;let l={...n,...i,email:i.email?.trim()||n.email?.trim()},u=(0,Pt.isCardHolderNamePlaceholder)(l.firstName,l.lastName);if(!(0,Pt.isValidEmail)(l.email))return Promise.reject(new Pt.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let p={};for(let[P,E]of Object.entries(l)){if(u&&P.endsWith("Name")||typeof E!="string")continue;let S=E.trim();S&&(p[P]=S)}return a=e.claimCheckoutSession(t,r,{accountData:p}),a.catch(()=>{}),a}}function ml(e,t){if(!t)return e;if(!e)return t;let r;return"checkoutMetadata"in t?r=t:"checkoutMetadata"in e&&(r=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...r?{checkoutMetadata:r.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function Hi(e,t){return t?{...e,account:{...e.account,...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,..."checkoutMetadata"in t?{checkoutMetadata:t.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}:e}function yl(e,t){let r=e.products??[...(e.subscriptions??[]).map(i=>({type:"subscription",code:i.code??i.providerPlanId,name:i.subscriptionName??i.providerPlanName??i.code??i.providerPlanId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata})),...(e.items??[]).map(i=>({type:"item",code:i.code??i.providerItemId,name:i.itemName??i.providerItemName??i.code??i.providerItemId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata}))],n=r.reduce((i,l)=>i+(l.overrideAmount??l.totalAmount??0),0),a=e.currency??r.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:r.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(n*100),currency:a,status:"open",captureMethod:e.captureMethod,customer:{id:e.account.userId,email:e.account.email??"",firstName:e.account.firstName,lastName:e.account.lastName,gender:e.account.gender??void 0,city:e.account.city??void 0,state:e.account.state??void 0,country:e.account.country??void 0,zip:e.account.zip??void 0},successUrl:e.successUrl,cancelUrl:e.cancelUrl,checkoutMode:t??e.checkoutMode??"full",products:r.map((i,l)=>({uuid:`synthetic-${i.type??"item"}-${l}`,checkoutSessionId:"",type:i.type??"item",code:i.code,name:i.name??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount??null,currency:i.currency??a,metadata:i.metadata??null}))}}function Ki(e,t){return t?{...e,...t}:e}function hr(e,t,r){let n=typeof t=="string"?t:t.message,a=typeof t=="string"?r?.code:r?.code??t.code,i=typeof t=="string"?r?.declineCode:r?.declineCode??t.declineCode,l=typeof t=="string"?void 0:t.sessionId;return{method:e,message:n,...a?{code:a}:{},...i?{declineCode:i}:{},...l?{sessionId:l}:{}}}function so(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}function Xn(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Jn(e){return e?.status==="authorized"||e?.status==="complete"}function lo(e,t){if(e.data.session)return e.data.session;let r=e.raw,n=r?.latestTransactionAttempt?.result,a=r?.status==="authorized"||n==="AUTHORIZED";return a||r?.status==="completed"||n==="SUCCESS"?{...t,status:a?"authorized":"complete"}:r?.status==="expired"?{...t,status:"expired"}:void 0}function fl(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function $a(e){let t=fl(e);return new Pt.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function Ha(e){return e instanceof Pt.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function No(e){return fl(e)?new Pt.FloPayError("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new Pt.FloPayError("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new Pt.FloPayError(Pt.CHECKOUT_PROCESSING_TIMEOUT_MESSAGE,"api_error",{code:"checkout_processing_timeout"})}function pa(e,t){return e==="processing"||(0,Pt.isMoneySettledOutcome)(e,t)}function gl(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function hl(e,t){let r=e;if((0,Pt.isSetupIntentClientSecret)(t)){if(!r?.retrieveSetupIntent)return null;let{setupIntent:i,error:l}=await r.retrieveSetupIntent(t);if(l)throw new Pt.FloPayError(l.message??"Failed to retrieve setup intent.","api_error",{...l.code?{code:l.code}:{}});return i??null}if(!r?.retrievePaymentIntent)return null;let{paymentIntent:n,error:a}=await r.retrievePaymentIntent(t);if(a)throw new Pt.FloPayError(a.message??"Failed to retrieve payment intent.","api_error",{...a.code?{code:a.code}:{}});return n??null}var Yc=["apple_pay","google_pay"];function Pl(e,t="automatic",r){let n=(0,Pt.resolveSetupFutureUsage)(r,Yc,"wallet");return{...(0,Pt.resolveWalletModeOptions)(e,t),paymentMethodTypes:["card"],...n?{setupFutureUsage:n}:{}}}var Xc=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Gi(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:"deferred_contract_mismatch"}:t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:Xc.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function ma(e){let t=[e?.id,e?.originalPaymentMethodId];for(let r of t)if(typeof r=="string"&&r.startsWith("pm_"))return r}var ro=require("@flopay/js"),Ke=require("@flopay/shared"),C=Wi(require("react"),1);var Yi=require("react"),dn=(0,Yi.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),Rn=(0,Yi.createContext)({session:null,loading:!1,error:null});var Za=require("@flopay/js"),rt=require("@flopay/shared"),kl=require("@paypal/paypal-js"),R=require("react");var Ka=require("@flopay/shared"),En=require("react"),un=require("@flopay/shared"),Zn=require("react/jsx-runtime");function zo(){let[e,t]=(0,En.useState)(null),r=(0,En.useRef)(null),n=(0,En.useRef)(0),a=(0,En.useCallback)((l,u)=>(r.current?.(null),n.current+=1,t({id:n.current,methodLabel:l,identity:u}),new Promise(p=>{r.current=p})),[]),i=(0,En.useCallback)(l=>{let u=r.current;r.current=null,t(null),u?.(l)},[]);return(0,En.useEffect)(()=>()=>{r.current?.(null),r.current=null},[]),{request:e,collect:a,finish:i}}function qo({identity:e,methodLabel:t,onComplete:r,onCancel:n,submitting:a=!1,testId:i="flopay-buyer-identity-pane"}){let[l,u]=(0,En.useState)(e.email?.trim()??""),p=(0,Ka.isValidEmail)(l.trim());return(0,Zn.jsxs)("div",{"data-testid":i,style:{display:"flex",flexDirection:"column",gap:"0.75rem",padding:"0.875rem",border:"1px solid #d1d5db",borderRadius:8,background:"#fff",color:"#262833"},children:[(0,Zn.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Zn.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Zn.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:l,onChange:P=>u(P.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Zn.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[n&&(0,Zn.jsx)("button",{type:"button",onClick:n,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Zn.jsxs)("button",{type:"button",disabled:!p||a,onClick:()=>{r((0,Ka.compactBuyerIdentity)({...e,email:l.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}var Se=require("@flopay/shared");var vl=require("@flopay/shared"),ya=require("react");function Qn(){return(0,ya.useContext)(dn).flopay}function Ga(){return(0,ya.useContext)(dn).paypalFlopay??null}function Cl(){return(0,ya.useContext)(Rn)}function bl(){return(0,ya.useContext)(dn).billingApiUrl||(0,vl.resolveBillingApiUrl)()}var Jc=require("@flopay/shared"),Un=require("@flopay/shared"),zn=require("@flopay/shared");var jo=require("@flopay/shared"),bo=require("react");var Ya=require("react"),Co=typeof window>"u"?Ya.useEffect:Ya.useLayoutEffect;var Xi=require("@flopay/shared");function Vo(e,t){let r=(0,bo.useRef)(e);r.current=e;let n=(0,bo.useRef)(new Set),a=(0,bo.useRef)(t),i=(0,bo.useRef)(t);return Co(()=>{i.current=t,a.current!==t&&(a.current=t,n.current.clear())},[t]),(0,bo.useCallback)(l=>{if(i.current!==t)return;let u=(0,jo.projectFloInstrument)(l);if(u){if(jo.FLO_INSTRUMENT_ONCE_NAMES.has(u.name)){if(n.current.has(u.name))return;n.current.add(u.name)}(0,jo.invokeMerchantCallback)(()=>r.current?.(u))}},[t])}var tt=require("@flopay/shared");var Sl=require("react"),fa=(0,Sl.createContext)(null);function Xa(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Zc=Symbol.for("@flopay/js.telemetry.bridge.v1"),Qc=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function ed(){return{error:()=>{},log:()=>{},performance:()=>{},terminal:()=>{},now:()=>globalThis.performance?.now()??0,elapsed:e=>Math.max(0,(globalThis.performance?.now()??e)-e),setCheckoutContext:()=>{},beginCheckout:()=>globalThis.performance?.now()??0,disable:()=>{},subscribe:()=>()=>{},flush:async()=>{},destroy:()=>{}}}function td(e){let t=ed(),r=(a,i)=>a?a.bind(e):i,n=r(e.now,t.now);return{error:r(e.error,t.error),log:r(e.log,t.log),performance:r(e.performance,t.performance),terminal:r(e.terminal,t.terminal),now:n,elapsed:e.elapsed?e.elapsed.bind(e):a=>Math.max(0,n()-a),setCheckoutContext:r(e.setCheckoutContext,t.setCheckoutContext),beginCheckout:r(e.beginCheckout,t.beginCheckout),disable:r(e.disable,t.disable),subscribe:r(e.subscribe,t.subscribe),flush:r(e.flush,t.flush),destroy:r(e.destroy,t.destroy)}}function Ja(e){let t=globalThis[Qc];return td(t?.(e)??{})}function Pr(e){if(e)return e[Zc]}var dr=require("react");function ga(e,t){let r=(0,dr.useRef)(0),n=(0,dr.useRef)(null),a=(0,dr.useRef)(null),i=(0,dr.useRef)(e),l=(0,dr.useRef)(t?.onHandoffObserved),u=(0,dr.useRef)(t?.defersMissingTerminal),p=(0,dr.useRef)(t?.onMissingTerminalDeferred);(0,dr.useEffect)(()=>{i.current=e,l.current=t?.onHandoffObserved,u.current=t?.defersMissingTerminal,p.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let P=(0,dr.useCallback)((y=a.current)=>{y?.timer&&(clearTimeout(y.timer),y.timer=null)},[]),E=(0,dr.useCallback)(y=>{P();let v=r.current+1;return r.current=v,n.current=null,a.current={generation:v,method:y,timer:null,yieldedControl:!1},v},[P]),S=(0,dr.useCallback)(y=>{let v=a.current;return y!==void 0&&v?.generation!==y?!1:(P(v),a.current=null,(y===void 0||n.current===y)&&(n.current=null),!0)},[P]),I=(0,dr.useCallback)(y=>{let v=a.current,pe=y??v?.generation??r.current;(y===void 0||v?.generation===y)&&(P(v),a.current=null),n.current=pe},[P]),K=(0,dr.useCallback)(y=>n.current===(y??r.current),[]),_=(0,dr.useCallback)(y=>a.current?.generation===y&&n.current!==y,[]),X=(0,dr.useCallback)(()=>{let y=a.current;y&&(P(y),!y.yieldedControl&&(y.yieldedControl=!0,l.current?.(y.method)))},[P]),T=(0,dr.useCallback)(()=>{let y=a.current;!y?.yieldedControl||document.visibilityState!=="visible"||(P(y),y.timer=setTimeout(()=>{if(y.timer=null,a.current?.generation===y.generation){if(u.current?.(y.method)){p.current?.(y.method,y.generation);return}a.current=null,n.current=y.generation,i.current(y.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},Se.EXTERNAL_METHOD_CALLBACK_GRACE_MS))},[P]);return(0,dr.useEffect)(()=>{let y=()=>{document.visibilityState==="visible"?T():X()};return document.addEventListener("visibilitychange",y),window.addEventListener("blur",X),window.addEventListener("focus",T),()=>{document.removeEventListener("visibilitychange",y),window.removeEventListener("blur",X),window.removeEventListener("focus",T),P()}},[P,X,T]),{startAttempt:E,finishAttempt:S,invalidateAttempt:I,isAttemptInvalidated:K,isAttemptCurrent:_,generationRef:r}}var pn=require("react/jsx-runtime"),Qa=45,rd=1e3,nd=11e3,od={width:"100%",minHeight:Qa,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"},ad={script_rejected:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"rejected"},namespace_unusable:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"returned_error"},pre_ready_callback:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"returned_error"},render_rejected:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"rejected"},watchdog_expired:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"watchdog_expired"}};function id(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:ad[e.kind]??null}}function wl(e,t){return e==="watchdog_expired"?"paypal_render_timeout":(0,Se.isPayPalAcknowledgementDeadWindow)(t)?"paypal_init_timeout":"paypal_init_failure"}function sd(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function Rl({sessionId:e,nonce:t,billingApiUrl:r,email:n,billingName:a,onBuyerIdentityReady:i,clientId:l,environment:u,currency:p,isSubscription:P,providerObjectType:E,approvalPresentation:S,onTokenizedBody:I,onComplete:K,onErrorChange:_,onDecline:X,onCancel:T,onTechnicalFailure:y,isProcessing:v=!1,onLoadStateChange:pe,onInitializationStateChange:b,allowAutomaticRetry:Te=!0,onButtonClick:B,runBeforeButtonClick:ae,session:me,existingOrderId:ue,telemetry:Ae,telemetryContext:ct,onInstrument:Ge,debug:D=!1}){let bt=Qn(),Xe=Vo(Ge,e),Le=(0,R.useMemo)(()=>{if(bt)return null;let Y=Ja({billingApiUrl:r,sdkPackage:"@flopay/react",sdkVersion:rt.SDK_VERSION,enabled:Ae!==!1});return Y.setCheckoutContext(ct??{}),Y.beginCheckout(ct??{}),Y},[r,bt,Ae,ct?.checkoutMode,ct?.layout]),fe=(0,R.useMemo)(()=>Pr(bt),[bt]);(0,R.useEffect)(()=>()=>{Le&&Le.flush().catch(()=>{}).finally(()=>Le.destroy())},[Le]);let J=(0,R.useMemo)(()=>({error:Y=>{fe?fe.error(Y):Le?.error(Y),Xe({class:"technical_error",errorCode:Y.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":Y.errorCode,requestCategory:Y.requestCategory,provider:Y.provider})},log:Y=>{fe?fe.log(Y):Le?.log(Y),Xe({class:"lifecycle",name:Y.name,provider:Y.provider})},performance:Y=>{fe?fe.performance(Y):Le?.performance(Y)},terminal:Y=>{fe?fe.terminal(Y):Le?.terminal(Y)},startTiming:()=>fe?.now()??Le?.now()??0,elapsed:Y=>fe?.elapsed(Y)??Math.max(0,(Le?.now()??Y)-Y)}),[Xe,fe,Le]),G=(0,R.useRef)(null),Fe=(0,R.useRef)(0),je=(0,R.useRef)(null),Je=(0,R.useRef)(null),re=(0,R.useRef)(null),Q=(0,R.useContext)(fa),se=(0,R.useRef)(null);se.current||(se.current=Xa());let W=Q??se.current,We=(0,R.useRef)(null),Be=(0,R.useRef)(!1),[ge,N]=(0,R.useState)(!1),[Ce,dt]=(0,R.useState)(!1),[Ne,at]=(0,R.useState)(0),Me=(0,R.useRef)(0),[nt,it]=(0,R.useState)(!1),ar=(0,R.useRef)(!1),Dt=(0,R.useRef)(!1),[St,we]=(0,R.useState)(!1),[M,ft]=(0,R.useState)(!1),{request:ut,collect:z,finish:ke}=zo(),Nt=(0,R.useRef)({sessionId:e,required:(0,rt.paypalProviderIdentityRequired)(n,me)});Nt.current.sessionId!==e&&(Nt.current={sessionId:e,required:(0,rt.paypalProviderIdentityRequired)(n,me)});let Ue=Nt.current.required,Mt=(0,R.useMemo)(()=>r.replace(/\/+$/,""),[r]),O=me?.gateways?.paypal?.providerObjectType??E,$e=O??(P?"subscription":"order"),[Re]=(0,R.useState)(Un.detectPayPalEnvironment),h=me?.gateways?.paypal?.approvalPresentation??S,ce=(0,zn.resolvePayPalPresentationMode)(Re,h==="app_switch"?"app_switch":void 0,$e),q=(0,rt.usesPayPalVaultedChannel)(O),V=(0,R.useMemo)(()=>JSON.stringify([Mt,l,p,u??"",$e,q,ce,e,ue??""]),[Mt,l,p,u,ue,$e,q,ce,e]),De=(0,R.useRef)(V),f=De.current!==V,he=(0,R.useRef)(D),ye=(0,R.useRef)(null),[gt,x]=(0,R.useState)([]),be=(0,R.useCallback)(Y=>{he.current&&x(Z=>[...Z,`${new Date().toISOString().slice(11,23)} ${Y}`])},[]);(0,R.useEffect)(()=>{he.current=D,D&&be("debug:enabled"),ye.current?.setEnabled(D)},[be,D]);let Gt=(0,R.useRef)(I),br=(0,R.useRef)(K),Tr=(0,R.useRef)(_),xt=(0,R.useRef)(X),Kr=(0,R.useRef)(T),Lr=(0,R.useRef)(y),Sr=(0,R.useRef)(B),ir=(0,R.useRef)(pe),Nr=(0,R.useRef)(b),Yt=(0,R.useRef)(i),Mn=(0,R.useRef)(ae),Wt=(0,R.useRef)(me),vt=(0,R.useRef)(n),_t=(0,R.useRef)(a),yr=(0,R.useRef)(t),jt=(0,R.useRef)(null),Jt=(0,R.useRef)(new Map),nn=(0,R.useRef)(new Map),Ur=(0,R.useRef)(!1);(0,R.useEffect)(()=>(Ur.current=!0,()=>{Ur.current=!1}),[]),(0,R.useEffect)(()=>{Gt.current=I},[I]),(0,R.useEffect)(()=>{Yt.current=i},[i]),(0,R.useEffect)(()=>{br.current=K},[K]),(0,R.useEffect)(()=>{Tr.current=_},[_]),(0,R.useEffect)(()=>{xt.current=X},[X]),(0,R.useEffect)(()=>{Kr.current=T},[T]),(0,R.useEffect)(()=>{Lr.current=y},[y]),(0,R.useEffect)(()=>{Sr.current=B},[B]),(0,R.useEffect)(()=>{ir.current=pe},[pe]),(0,R.useEffect)(()=>{Nr.current=b},[b]),(0,R.useEffect)(()=>{Mn.current=ae},[ae]),(0,R.useEffect)(()=>{Wt.current=me},[me]),(0,R.useEffect)(()=>{vt.current=n},[n]),(0,R.useEffect)(()=>{_t.current=a},[a]),(0,R.useEffect)(()=>{yr.current=t},[t]),(0,R.useEffect)(()=>{Me.current=Ne},[Ne]),(0,R.useEffect)(()=>{nt&&We.current?.focus()},[nt,Ne]);let wr=(0,R.useCallback)(()=>{window.setTimeout(()=>{We.current?.focus()},0)},[]),kr=(0,R.useCallback)(()=>{N(!1),at(Y=>Y+1)},[]),fr=(0,R.useCallback)(()=>{it(!1),(G.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??G.current)?.focus?.()},[]);(0,R.useEffect)(()=>{!ge||!Be.current||(Be.current=!1,fr())},[fr,ge,Ne]);let Zt=(0,R.useCallback)((Y,Z)=>{let te=Z?.popupBlocked??(0,Se.isPopupBlockedError)(Y);te&&W.markBlocked();let Lt=(0,Se.buildExternalMethodRecoveryMessage)("PayPal",te,Re.inAppBrowser),Tt=Lr.current;if(Tt){let Bt=te&&Re.inAppBrowser?new rt.FloPayError(Lt,"api_error",{code:Z?.code??"paypal_popup_blocked"}):Y;Tt("paypal",Bt,Z);return}Tr.current?.(Lt)},[W,Re.inAppBrowser]),Ft=(0,R.useCallback)(Y=>{let Z=je.current,te=Je.current;Z===null||!te||(J.log({...te,popupCapability:W.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Y}),J.performance({...te,popupCapability:W.current(),stage:"overlay_return",durationMs:J.elapsed(Z),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Y}),je.current=null)},[W,J]),pr=(0,R.useCallback)((Y,Z,te)=>{let Lt=Je.current;Ft("overlay_timeout"),Lt&&J.error({...Lt,popupCapability:W.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),Zt(Z,{...te,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:ce,terminalReason:"overlay_timeout"}),it(!0),kr(),wr()},[Ft,wr,Zt,W,ce,kr,J]),Rr=(0,R.useCallback)(()=>{W.markAvailable();let Y=Je.current;Y&&(re.current=Y.attempt,J.log({...Y,popupCapability:W.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[W,J]),{finishAttempt:$t,generationRef:Ze,invalidateAttempt:zr,isAttemptCurrent:Gr,isAttemptInvalidated:Ar,startAttempt:sr}=ga(pr,{onHandoffObserved:Rr}),hn=(0,R.useCallback)(()=>(it(!1),sr("paypal")),[sr]),xn=(0,R.useCallback)(Y=>{zr(Y?.generation),Y?.showRetry&&it(!0),Y?.remount&&kr(),Y?.focus!==!1&&wr()},[wr,zr,kr]),on=Y=>{let Z=jt.current;return Z&&nn.current.set(Y,Z),Y};(0,R.useEffect)(()=>{De.current!==V&&(De.current=V,ar.current=!1,Dt.current=!1,N(!1),dt(!1),we(!1),Nr.current?.("loading"))},[V]),(0,R.useEffect)(()=>{(0,tt.invokeMerchantCallback)(()=>ir.current?.(ge&&!St))},[ge,St]);let Ot=(0,rt.normalizeGatewayEnvironment)(u);(0,R.useEffect)(()=>{let Y={attempt:Ze.current+1,inAppBrowser:Re.inAppBrowser,appFamily:Re.appFamily,popupCapability:W.current(),presentationMode:ce},Z=()=>({...Je.current??Y,popupCapability:W.current()}),te={error:g=>J.error({...g,...Z()}),log:g=>J.log({...g,...Z()}),performance:g=>J.performance({...g,...Z()}),terminal:g=>J.terminal({...g,...Z()}),startTiming:J.startTiming,elapsed:J.elapsed},Lt=l?`${l.slice(0,6)}\u2026(len ${l.length})`:"(empty)",Tt=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(be(`mount clientId=${Lt} env=${u??"(unset)"}\u2192${Ot??"live"} ccy=${p} sub=${P}`),be(`ua=${Tt.slice(0,80)}${Tt.length>80?"\u2026":""}`),!l){be("FAIL: clientId empty \u2014 gateway misconfigured"),we(!0),te.error({errorCode:"CONFIGURATION_INVALID",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),console.error("[FloPay] DirectPayPal: clientId empty \u2014 gateway misconfigured");return}if(!G.current){be("FAIL: containerRef not attached");return}Fe.current=te.startTiming(),te.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Bt=!1,Fr=!1,kt=()=>Bt||Fr,oo=q?$e:void 0,Ut,Yr=!1,An=()=>{Ut=(0,rt.generateIdempotencyKey)(),Ut||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Yr=!0},an=null,Qt=!1,Pn=null,$n=!1,Fn=()=>{!Pn||$n||($n=!0,Pn.close().catch(()=>{}))},Br=!1,ao=!1,sn=G.current,Hn=null,Xr=null,vn=[],Bn=null,zt=!1,Jr=!1,Zr=null,qr=g=>{if(!g||typeof g.getBoundingClientRect!="function")return"(no rect)";let m=g.getBoundingClientRect();return`${Math.round(m.width)}\xD7${Math.round(m.height)}`},Cn=g=>{if(!g)return"(empty)";try{let m=new URL(g,typeof window>"u"?"https://localhost":window.location.href),H=m.pathname.toLowerCase();return H.includes("checkcaptcha")||H.includes("captcha")?`CAPTCHA(${m.host}${H})`:H.includes("risk")||H.includes("challenge")?`RISK(${m.host}${H})`:H.includes("smart/buttons")?`smart-buttons(${m.host})`:`${m.host}${H}`.slice(0,100)}catch{return g.slice(0,80)}},Ct=g=>{let m=g.getAttribute("src"),H=g.getAttribute("srcdoc"),Ie=g.getAttribute("name"),Qe=g.getAttribute("sandbox"),pt=[];return m&&pt.push(`src=${Cn(m)}`),H&&pt.push(`srcdoc[${H.length}ch]`),!m&&!H&&pt.push("src=(empty) srcdoc=(empty)"),Ie&&pt.push(`name=${Ie.slice(0,40)}`),Qe!==null&&pt.push(`sandbox="${Qe.slice(0,40)}"`),pt.join(" ")},Er=g=>{if(!(g instanceof HTMLIFrameElement))return"";try{let m=g.contentDocument;if(!m)return"cd=null";let H=m.body?.children.length??0,Ie=m.body?.innerHTML.length??0,Qe=m.head?.innerHTML.length??0;return`cd=same-origin readyState=${m.readyState} body[${H}children,${Ie}ch] head[${Qe}ch]`}catch(m){return`cd=cross-origin(${m.message.slice(0,30)})`}},lr=[],jr=g=>{if(kt())return;let m=g.message??String(g.error??"(no message)");m&&(m.toLowerCase().includes("paypal")||m.toLowerCase().includes("zoid")||m.toLowerCase().includes("postrobot")||m.toLowerCase().includes("storage"))&&(be(`window:error ${m.slice(0,140)}`),lr.push(m))},mo=g=>{if(kt())return;let m=g.reason instanceof Error?g.reason.message:String(g.reason??"(no reason)");m&&(m.toLowerCase().includes("paypal")||m.toLowerCase().includes("zoid")||m.toLowerCase().includes("postrobot")||m.toLowerCase().includes("storage"))&&(be(`window:rejection ${m.slice(0,140)}`),lr.push(m))},bn={value:0},Kn=()=>{Hn?.disconnect(),Hn=null,Xr?.disconnect(),Xr=null;for(let g of vn.splice(0))clearTimeout(g);Jr=!1,zt&&typeof window<"u"&&(window.removeEventListener("error",jr),window.removeEventListener("unhandledrejection",mo)),zt=!1},Qr=()=>{if(!(zt||kt()||Br)){if(zt=!0,lr.length=0,bn.value=0,typeof window<"u"&&(window.addEventListener("error",jr),window.addEventListener("unhandledrejection",mo)),typeof PerformanceObserver<"u")try{Xr=new PerformanceObserver(g=>{if(!kt())for(let m of g.getEntries()){if(!m.name.toLowerCase().includes("paypal"))continue;bn.value+=1;let H=Math.round(m.duration);be(`net ${H}ms ${m.name.slice(0,90)}`)}}),Xr.observe({type:"resource",buffered:!0})}catch{}Zr?.()}},Ir=()=>{Bn&&(clearTimeout(Bn),Bn=null)},Dn=()=>{Kn(),Ir()},Mr={setEnabled:g=>{g?Qr():Kn()}};ye.current=Mr,he.current&&Qr();let L=rt.isPayPalTeardownMessage,U=g=>{if(kt()||L(g))return;let m=(0,vo.applyFriendlyMessageOverride)(g)??g;(0,tt.invokeMerchantCallback)(()=>Tr.current?.(m))},ee=(g,m)=>{if(Bt||Qt)return;Qt=!0,Fr=!0,Dn(),Fn();let H=id({kind:g,generationActive:!0,automaticRetryAllowed:Te,automaticRetryUsed:ar.current});if(H.action==="retry"){ar.current=!0,N(!1),ft(!1),dt(!0),Nr.current?.("retrying"),an=setTimeout(()=>{Bt||at(Ie=>Ie+1)},rd);return}if(N(!1),ft(!1),dt(!1),we(!0),H.action!=="ignore"){if(Nr.current?.("exhausted"),H.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",m);return}if(H.report){let Ie=(0,Se.classifyExternalMethodFailure)({code:wl(g,m),message:m},{inAppBrowser:Re.inAppBrowser,handoffObserved:!1});Ie.popupBlocked&&W.markBlocked(),te.error({errorCode:Ie.popupBlocked?Ie.errorCode:H.report.errorCode,stage:H.report.stage,operationOutcome:H.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:Ie.terminalReason})}Dt.current||(Dt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",wl(g,m)))}};we(!1);let Ee=async(g,m=jt.current)=>{if(kt())return;let H=m?.sessionId??e;if(Gt.current){await Gt.current(g,{sessionId:H,accountPatch:m?.accountPatch,nonce:m?.nonce});return}let Ie=te.startTiming();te.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let Qe=()=>{te.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),te.performance({stage:"processing",durationMs:te.elapsed(Ie),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let pt=(0,rt.buildPayPalProcessPaymentRequest)({body:g,sessionId:H,nonce:m?.nonce??yr.current,accountPatch:m?.accountPatch,session:Wt.current,email:vt.current}),Oe=await new Za.PaymentAPI(Mt,{telemetry:!1}).processPayment(pt.userId,pt.params);if(Oe.ok){if(Fr||Bt&&Ur.current)return;Qe(),te.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),(0,tt.invokeMerchantCallback)(()=>br.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(kt())return;let st=await Oe.json().catch(()=>null),wt=(0,rt.describePayPalProcessFailure)(st),Et=wt.message;Qe(),Oe.status===400&&(typeof st?.declineCode=="string"||!Array.isArray(st?.fields))?te.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):Oe.status===400||Oe.status===422?te.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):te.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:sd(Oe.status),failureCategory:Oe.status>=500?"server_error":void 0}),U(Et),(0,tt.invokeMerchantCallback)(()=>xt.current?.(hr("paypal",Et,{code:wt.code,declineCode:wt.declineCode})));return}catch(pt){if(kt())return;Qe(),te.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let qe=(0,rt.friendlyPayPalFailureMessage)(pt instanceof Error?pt.message:void 0);U(qe),(0,tt.invokeMerchantCallback)(()=>xt.current?.(hr("paypal",qe)));return}},Rt=()=>new rt.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),er=g=>kt()?Promise.reject(Rt()):Promise.resolve(g),ze=async g=>{if(kt())throw Rt();Yr||An();let m=jt.current,H=m?.sessionId??e,Ie=m?.nonce??yr.current;te.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let Qe;try{Qe=await new Za.PaymentAPI(Mt,{telemetry:!1}).createSessionIntent(H,Ie??"",(0,rt.buildPayPalSessionIntentRequest)(oo),{idempotencyKey:Ut})}catch(pt){throw te.error({...(0,rt.classifyTelemetryFailure)(pt,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),pt}if(kt())throw Rt();if(Qe.provider!=="paypal"||Qe.providerObjectType!==$e)throw new Error(g);return te.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),Qe.providerObjectId},le=(g,m)=>{let H=m?.nonce??yr.current;if(!H)return;let Ie=m?.sessionId??e,Qe=(0,rt.resolvePayPalDeclineReason)(g);new Za.PaymentAPI(Mt,{telemetry:!1}).reportSessionIntentDecline(Ie,H,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Qe}).catch(()=>{})},j=Ne;be("loadScript:scheduled (deferred 1 tick)");let $=null,de=setTimeout(()=>{if(Bt){be("loadScript:skipped (cancelled before defer ran)");return}be("loadScript:start");let g=Ot==="live"?"production":Ot,m={};$e==="subscription"?m={intent:"subscription",vault:!0}:$e==="order"&&(m={intent:"capture"}),$=(0,kl.loadScript)({clientId:l,currency:p,...m,...g?{environment:g}:{},...g==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let H=!1;$.then(Ie=>{if(H=!0,be(`loadScript:resolved inactive=${kt()} ns=${!!Ie} buttons=${!!Ie?.Buttons}`),kt())return;if(!Ie?.Buttons){be("FAIL: namespace missing Buttons factory"),ee("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}te.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),te.performance({stage:"provider_ready",durationMs:te.elapsed(Fe.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),te.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let Qe=async(A,Pe)=>{if(kt()||Me.current!==j)return;let et=A.vaultSetupToken??A.subscriptionID??A.orderID??"",ot=et?nn.current.get(et):Jt.current.get(j);if(!(!ot||!Gr(ot.generation))&&$t(ot.generation)){nn.current.delete(et),Jt.current.delete(ot.surfaceKey),Ft("approved");try{if(ft(!0),(0,tt.invokeMerchantCallback)(()=>Tr.current?.(null)),!et)throw new rt.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let oe=(0,rt.resolvePayPalApprovalIdentity)({accountPatch:ot.accountPatch,email:vt.current,billingName:_t.current,session:Wt.current});if((0,rt.needsPayPalPayerDetails)(oe))try{oe=(0,rt.mergePayPalPayerIdentity)(oe,await Pe?.order?.get?.())}catch{}if((Yt.current||Ue)&&!(0,rt.isValidEmail)(oe.email)){let ve=await z("PayPal",oe);if(!ve)return;oe=ve}(0,rt.isValidEmail)(oe.email)&&(ot.accountPatch=(0,un.compactBuyerIdentity)({...ot.accountPatch,...oe}),await Yt.current?.(oe));let cr=(0,rt.buildPayPalTokenizedBody)(et,oo);await Ee(cr,ot)}catch(oe){U(oe instanceof Error?oe.message:"PayPal capture failed.")}finally{kt()||ft(!1)}}},pt=A=>{let Pe=ue?()=>er(ue):()=>ze(A);return async()=>on(await Pe())},qe=Ie.Buttons({style:{layout:"horizontal",height:Qa,tagline:!1},...ce==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(A,Pe)=>{if(kt()){await Pe.reject();return}An();let et=Mn.current,ot={};if(et)try{let ve=await et("paypal");if(kt()){await Pe.reject();return}if(!ve.proceed){jt.current=null,Jt.current.delete(j),await Pe.reject();return}ot={sessionId:ve.sessionId,accountPatch:ve.accountPatch,nonce:ve.nonce}}catch(ve){be(`onClick:runBeforeButtonClick rejected msg=${(ve instanceof Error?ve.message:String(ve)).slice(0,120)}`),jt.current=null,Jt.current.delete(j),await Pe.reject();return}(0,tt.invokeMerchantCallback)(()=>Sr.current?.("paypal"));let oe=hn(),cr={generation:oe,surfaceKey:j,...ot};jt.current=cr,Jt.current.set(j,cr),Je.current={...Y,attempt:oe},await Pe.resolve(),te.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),te.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),je.current=te.startTiming()},createOrder:$e==="order"?pt("Failed to create PayPal order."):void 0,createSubscription:$e==="subscription"?pt("Failed to create PayPal subscription."):void 0,createVaultSetupToken:$e==="setup_token"?async()=>on(await ze("Failed to create PayPal setup token.")):void 0,onApprove:Qe,onCancel:()=>{if(kt())return;let A=Jt.current.get(j)??jt.current,Pe=A&&Gr(A.generation)?(0,rt.buildPayPalCancelEvent)(A.sessionId??e,oo):null;A&&Jt.current.delete(A.surfaceKey),jt.current=null,Ft("cancelled"),te.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),Be.current=!0,xn({generation:A?.generation,remount:!0,focus:!1}),Pe&&(0,tt.invokeMerchantCallback)(()=>Kr.current?.(Pe))},onError:A=>{if(kt()||Me.current!==j)return;let Pe=A instanceof Error?A.message:"PayPal failed to render.";if(be(`onError rendered=${Br} msg=${Pe.slice(0,120)}`),Br){let et=Jt.current.get(j)??jt.current;if(et&&!Gr(et.generation)||!et&&Ar())return;if(L(Pe)){$t(et?.generation);return}let{errorCode:ot,popupBlocked:oe,providerDeclined:cr,terminalReason:ve}=(0,Se.classifyExternalMethodFailure)(A,{inAppBrowser:Re.inAppBrowser,handoffObserved:et!=null&&re.current===et.generation});if(oe&&W.markBlocked(),Ft(ve),cr){te.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:ve}),le(A,et),(0,tt.invokeMerchantCallback)(()=>xt.current?.(hr("paypal",Pe))),et&&Jt.current.delete(et.surfaceKey),jt.current=null,$t(et?.generation);return}te.error({errorCode:ot,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:ve}),et&&Jt.current.delete(et.surfaceKey),jt.current=null,xn({generation:et?.generation,remount:!0,showRetry:!0,focus:!0}),Zt(A,{code:"paypal_runtime_failed",popupBlocked:oe,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:ce,terminalReason:ve});return}ee(L(Pe)?"teardown":"pre_ready_callback",Pe)}}),Oe=qe.isEligible();if(be(`isEligible=${Oe}`),te.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!Oe){N(!1),ee("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}ao=!0,Pn=qe,Zr=()=>{if(!zt||Jr||kt()||Br)return;Jr=!0,be(`container:dims ${qr(sn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(Hn=new MutationObserver(Pe=>{if(!kt()){for(let et of Pe)if(et.type==="childList")et.addedNodes.forEach(ot=>{if(!(ot instanceof Element))return;let oe=ot.tagName.toLowerCase(),cr=(ot.getAttribute("title")??"").slice(0,40),ve=oe==="iframe"?` ${Ct(ot)}`:"";be(`child+ ${oe}${cr?` title="${cr}"`:""}${ve} dims=${qr(ot)}`)});else if(et.type==="attributes"&&et.target instanceof Element){let ot=et.target;if(ot.tagName.toLowerCase()!=="iframe")continue;let oe=et.attributeName;(oe==="src"||oe==="srcdoc")&&be(`attr~ iframe ${oe}=${oe==="srcdoc"?`[${(ot.getAttribute("srcdoc")??"").length}ch]`:Cn(ot.getAttribute("src"))} dims=${qr(ot)}`)}}}),Hn.observe(sn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let A=Pe=>{if(kt()||Br)return;let et=sn.querySelectorAll("iframe"),ot=typeof document<"u"&&"hasStorageAccess"in document;be(`watchdog:${Pe} container=${qr(sn)} children=${sn.childElementCount} iframes=${et.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${ot} paypalNetRequests=${bn.value}`),et.forEach((oe,cr)=>{let ve=(oe.getAttribute("title")??"").slice(0,40);be(` iframe[${cr}] ${qr(oe)}${ve?` title="${ve}"`:""} ${Ct(oe)}`);let Gn=Er(oe);Gn&&be(` ${Gn}`)}),lr.length===0&&be(" (no PayPal/zoid window errors captured)")};vn.push(setTimeout(()=>A("3s"),3e3)),vn.push(setTimeout(()=>A("8s"),8e3)),vn.push(setTimeout(()=>A("15s"),15e3))},Zr(),be("render:start");let wt=te.startTiming();Bn=setTimeout(()=>{kt()||Br||(be("watchdog:11s retryable render timeout"),ee("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},nd);let Et=qe.render(sn);(async()=>{try{if(await Et,be(`render:resolved inactive=${kt()}`),Dn(),kt()){Fn();return}Br=!0,N(!0),dt(!1),Nr.current?.("ready"),te.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),te.performance({stage:"checkout_render",durationMs:te.elapsed(wt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(A){let Pe=A instanceof Error?A.message:"PayPal failed to render.";be(`render:rejected msg=${Pe.slice(0,120)}`),Dn(),ee(L(Pe)?"teardown":"render_rejected",Pe)}})()}).catch(Ie=>{let Qe=Ie instanceof Error?Ie.message:"PayPal operation failed.";be(`provider:failed msg=${Qe.slice(0,120)}`);let pt="script_rejected";H&&L(Qe)?pt="teardown":H&&ao&&(pt="render_rejected"),ee(pt,Qe)})},0);return()=>{Bt=!0,clearTimeout(de),an&&clearTimeout(an),Dn(),ye.current===Mr&&(ye.current=null),Fn(),je.current=null,Je.current=null}},[Te,Mt,l,p,u,$e,ce,q,e,ue,Ne,J,z,Ue,be,Ft]);let xe=D?(0,pn.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:St?"#fef2f2":"#f3f4f6",border:`1px solid ${St?"#fca5a5":"#d1d5db"}`,borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflowY:"auto"},children:[`FloPay/DirectPayPal-debug (ready=${ge} failed=${St})`,gt.length===0?`
2
2
  (waiting for first lifecycle event\u2026)`:`
3
- ${be.join(`
4
- `)}`]}):null;return ft&&!te?de?(0,ln.jsx)("div",{children:Jt}):null:(0,ln.jsxs)("div",{children:[Jt,st&&(0,ln.jsx)(zo,{identity:st.identity,methodLabel:st.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Ee,onCancel:()=>Ee(null)}),(0,ln.jsxs)("div",{"aria-hidden":Ye||st?!0:void 0,style:Ye||st?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:Za},children:[!he&&!Ye&&(0,ln.jsx)("div",{"data-testid":"flopay-direct-paypal-placeholder",style:{position:"absolute",inset:0,borderRadius:8,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite",pointerEvents:"none"}}),(0,ln.jsx)("div",{ref:Z,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:Za,display:"flex",opacity:he?1:0},"aria-busy":q||f},tt)]},tt),He&&(0,ln.jsx)("button",{ref:ye,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:Tr,style:nd,children:"Try PayPal again"})]})}function ga(e){return(0,ln.jsx)(kl,{...e})}function Rl(e){return(0,ln.jsx)(kl,{...e})}var ha=require("react/jsx-runtime");function Vo({children:e,margin:t,icon:r=!0,styleOverride:n}){return(0,ha.jsxs)("div",{role:"alert","data-testid":"flopay-error",style:{margin:t,padding:"0.625rem 0.875rem",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#991B1B",fontSize:"0.85rem",fontWeight:600,...r?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...n??{}},children:[r&&(0,ha.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,ha.jsx)("path",{d:"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"#DC2626",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),e]})}var mt=require("@flopay/shared");var pr=require("react/jsx-runtime");var sd={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function Wr({status:e,errorMessage:t,authorized:r=!1,processingLabel:n="PROCESSING...",successLabel:a,errorLabel:i="PAYMENT FAILED",successNote:l="You will be automatically redirected, do not close or navigate away from this window.",theme:u=sd}){let p={fontSize:13,color:u.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,pr.jsx)("div",{"data-testid":"flopay-processing-overlay","data-status":e,role:"dialog","aria-modal":"true",style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(2px)"},children:(0,pr.jsxs)("div",{"data-testid":"flopay-processing-overlay-panel",style:{borderRadius:12,boxShadow:"0 8px 32px rgba(0,0,0,0.18)",...u.panel,padding:"2rem 2.5rem",textAlign:"center",minWidth:240,display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[(0,pr.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,pr.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{animation:"flopay-spin 0.8s linear infinite"},children:[(0,pr.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:u.spinnerTrackColor,strokeWidth:"3"}),(0,pr.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:u.spinnerAccentColor})]}),e==="success"&&(0,pr.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,pr.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pr.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,pr.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:20,strokeDashoffset:20,animation:"flopay-draw 0.4s 0.15s ease forwards"}})]})}),e==="error"&&(0,pr.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,pr.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pr.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,pr.jsx)("path",{d:"M8 8l8 8M16 8l-8 8",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",style:{strokeDasharray:12,strokeDashoffset:12,animation:"flopay-draw 0.3s 0.1s ease forwards"}})]})})]}),(0,pr.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:u.labelColors[e]},children:[e==="processing"&&n,e==="success"&&(a??(r?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&i]}),e==="success"&&l!==null&&(0,pr.jsx)("p",{style:p,children:l}),e==="error"&&t&&(0,pr.jsx)("p",{style:p,children:t}),(0,pr.jsx)("style",{children:`
3
+ ${gt.join(`
4
+ `)}`]}):null;return St&&!f?D?(0,pn.jsx)("div",{children:xe}):null:(0,pn.jsxs)("div",{children:[xe,ut&&(0,pn.jsx)(qo,{identity:ut.identity,methodLabel:ut.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:ke,onCancel:()=>ke(null)}),(0,pn.jsxs)("div",{"aria-hidden":Ce||ut?!0:void 0,style:Ce||ut?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:Qa},children:[!ge&&!Ce&&(0,pn.jsx)("div",{"data-testid":"flopay-direct-paypal-placeholder",style:{position:"absolute",inset:0,borderRadius:8,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite",pointerEvents:"none"}}),(0,pn.jsx)("div",{ref:G,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:Qa,display:"flex",opacity:ge?1:0},"aria-busy":M||v},Ne)]},Ne),nt&&(0,pn.jsx)("button",{ref:We,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:fr,style:od,children:"Try PayPal again"})]})}function ha(e){return(0,pn.jsx)(Rl,{...e})}function El(e){return(0,pn.jsx)(Rl,{...e})}var Pa=require("react/jsx-runtime");function Wo({children:e,margin:t,icon:r=!0,styleOverride:n}){return(0,Pa.jsxs)("div",{role:"alert","data-testid":"flopay-error",style:{margin:t,padding:"0.625rem 0.875rem",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#991B1B",fontSize:"0.85rem",fontWeight:600,...r?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...n??{}},children:[r&&(0,Pa.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,Pa.jsx)("path",{d:"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"#DC2626",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),e]})}var mt=require("@flopay/shared");var ur=require("react/jsx-runtime");var ld={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function $r({status:e,errorMessage:t,authorized:r=!1,processingLabel:n="PROCESSING...",successLabel:a,errorLabel:i="PAYMENT FAILED",successNote:l="You will be automatically redirected, do not close or navigate away from this window.",theme:u=ld}){let p={fontSize:13,color:u.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,ur.jsx)("div",{"data-testid":"flopay-processing-overlay","data-status":e,role:"dialog","aria-modal":"true",style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(2px)"},children:(0,ur.jsxs)("div",{"data-testid":"flopay-processing-overlay-panel",style:{borderRadius:12,boxShadow:"0 8px 32px rgba(0,0,0,0.18)",...u.panel,padding:"2rem 2.5rem",textAlign:"center",minWidth:240,display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[(0,ur.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,ur.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{animation:"flopay-spin 0.8s linear infinite"},children:[(0,ur.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:u.spinnerTrackColor,strokeWidth:"3"}),(0,ur.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:u.spinnerAccentColor})]}),e==="success"&&(0,ur.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,ur.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ur.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,ur.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:20,strokeDashoffset:20,animation:"flopay-draw 0.4s 0.15s ease forwards"}})]})}),e==="error"&&(0,ur.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,ur.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ur.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,ur.jsx)("path",{d:"M8 8l8 8M16 8l-8 8",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",style:{strokeDasharray:12,strokeDashoffset:12,animation:"flopay-draw 0.3s 0.1s ease forwards"}})]})})]}),(0,ur.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:u.labelColors[e]},children:[e==="processing"&&n,e==="success"&&(a??(r?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&i]}),e==="success"&&l!==null&&(0,ur.jsx)("p",{style:p,children:l}),e==="error"&&t&&(0,ur.jsx)("p",{style:p,children:t}),(0,ur.jsx)("style",{children:`
5
5
  @keyframes flopay-spin { to { transform: rotate(360deg); } }
6
6
  @keyframes flopay-pop { 0% { transform: scale(0); } 100% { transform: scale(1); } }
7
7
  @keyframes flopay-draw { to { stroke-dashoffset: 0; } }
8
8
  @keyframes flopay-shake { 0%,100% { transform: translateX(0); } 20%,60% { transform: translateX(-4px); } 40%,80% { transform: translateX(4px); } }
9
- `})]})})}var El=require("@flopay/shared"),Ir=require("react");var Il=require("react/jsx-runtime");function Pa({flopay:e,paypalFlopay:t,options:r,onInstrument:n,children:a}){let[i,l]=(0,Ir.useState)(e instanceof Promise?null:e),[u,p]=(0,Ir.useState)(t instanceof Promise||!t?null:t),v=(0,Ir.useRef)(null),R=(0,Ir.useRef)(null),w=jo(n);(0,Ir.useEffect)(()=>{w({class:"lifecycle",name:"checkout.mount"})},[w]),(0,Ir.useEffect)(()=>{i&&w({class:"lifecycle",name:"sdk.initialize.ready"})},[w,i]),(0,Ir.useEffect)(()=>{if(i)return Sr(i)?.subscribe?.(w)},[w,i]),(0,Ir.useEffect)(()=>{if(!(!u||u===i))return Sr(u)?.subscribe?.(w)},[w,i,u]),(0,Ir.useEffect)(()=>{if(!i)return;let T=Sr(i);return v.current=T?.beginCheckout()??T?.now()??0,T?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{T?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),(0,Ir.useEffect)(()=>{let T=!1;return e instanceof Promise?e.then(V=>{T||l(V)},()=>{T||w({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):l(e),()=>{T=!0}},[w,e]),(0,Ir.useEffect)(()=>{let T=!1;if(!t){p(null);return}return t instanceof Promise?t.then(V=>{T||p(V)},()=>{T||w({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):p(t),()=>{T=!0}},[w,t]),(0,Ir.useEffect)(()=>{if(!i||R.current===i)return;R.current=i;let T=Sr(i);T?.log({name:"checkout.rendered",stage:"checkout_render"}),w({class:"lifecycle",name:"checkout.rendered"}),T?.performance({stage:"checkout_render",durationMs:T.elapsed(v.current??0),durationMode:"machine"})},[w,i]);let x=(0,El.resolveBillingApiUrl)(r?.billingApiUrl),K=(0,Ir.useMemo)(()=>({flopay:i,paypalFlopay:u,billingApiUrl:x,emitInstrument:w}),[i,u,x,w]);return(0,Il.jsx)(an.Provider,{value:K,children:a})}var Rn=require("@flopay/shared");async function Qa(e,t){e.current?.abort();let r=new AbortController;e.current=r;try{return await t(r.signal)}finally{e.current===r&&(e.current=null)}}var cn=require("@flopay/js"),ut=require("@flopay/shared");var ba="card";async function ld(e,t,r){if(r){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:i,error:l}=await e.retrieveSetupIntent(t);return{error:l,intent:i??null}}if(typeof e.retrievePaymentIntent!="function")return null;let{paymentIntent:n,error:a}=await e.retrievePaymentIntent(t);return{error:a,intent:n??null}}async function cd(e,t,r,n){if(n){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:l,error:u}=await e.confirmCardSetup(t,r);return{error:u,intent:l??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:a,error:i}=await e.confirmCardPayment(t,r);return{error:i,intent:a??null}}function Wo(e){return new ut.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function dd(){return new ut.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Ji(e,t){return Object.assign(e,{checkoutMethod:t})}function Zn(e,t){let r=e instanceof ut.FloPayError?e:new ut.FloPayError(e instanceof Error?e.message:"Payment provider failed.","api_error",{code:"provider_runtime_failure"});return Object.assign(r,{checkoutMethod:t,telemetryFailureCategory:"provider_runtime",telemetryRequestCategory:"provider_sdk"})}async function va(e,t){try{return await e()}catch(r){throw Zn(r,t)}}function Tl(e){return!e?.type||!e.threeDSecureToken||e.type!=="3ds_required"&&e.type!=="paypal_redirect_required"?null:{type:e.type,threeDSecureToken:e.threeDSecureToken,paymentMethodId:e.paymentMethodId}}function Ml(e){return(0,cn.runSavedCardChallenge)(e)}async function $o(e,t){let{billingApiUrl:r,sessionId:n,signal:a}=t,i=t.nonce??t.session.clientSecret,l=new cn.PaymentAPI(r,{telemetry:!1}),u=`${r.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(n)}/status`,p;try{p=await(0,cn.completeSavedCardNextAction)({billingApiUrl:r,sessionId:n,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:a,createDeclineError:R=>qn({type:R.declineReason??"authorization_declined",gatewayErrorCode:R.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"})},l)}catch(R){if(a.aborted||R instanceof Error&&R.name==="AbortError")throw R instanceof ut.FloPayError&&R.code==="three_ds_aborted"?R:Wo(R);if(!(R instanceof ut.FloPayError)||R.code!=="three_ds_timeout"&&R.code!=="checkout_processing_timeout")throw R;try{p=await l.waitForCheckoutSessionCompletion(n,{initialDelayMs:0,nonce:i,statusUrl:u,timeoutMs:5e3,signal:a})}catch(x){if(a.aborted)throw Wo(x);if(!(x instanceof ut.FloPayError)||x.code!=="checkout_processing_timeout")throw x}let w=p&&so(p,t.session);if(!Yn(w)&&w?.status!=="expired"){if(t.telemetry){let x=new cn.PaymentAPI(r);try{x.reportThreeDsAbandoned(n)}finally{x.destroy()}}throw dd()}}let v=p&&so(p,t.session);if(!Yn(v))throw Lo(v);return{...Gn(v,n),checkoutMethod:"card"}}function qn(e,t="Payment failed. Please try again.",r){let n=r?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),a=e?.message??t,i=(0,ho.applyFriendlyMessageOverride)(a)??a,l=Ji(new ut.FloPayError(i,"api_error",{code:e?.code??(0,ut.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,ut.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),n);return e?.orderId&&(l.orderId=e.orderId),l}function Xi(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function ei(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function xl(e,t){let r=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let a of r)if(typeof a=="string"&&a.length>0&&(!t?.requirePaymentIntentClientSecret||ei(a)))return a;let n=e?.data;if(n&&typeof n=="object"){let a=n,i=[a.threeDSecureToken,a.clientSecret,a.stripeClientSecret,a.id];for(let u of i)if(typeof u=="string"&&u.length>0&&(!t?.requirePaymentIntentClientSecret||ei(u)))return u;let l=a.gateways;if(l&&typeof l=="object"){let u=l.stripe;if(u&&typeof u=="object"){let p=u,v=[p.stripeClientSecret,p.clientSecret];for(let R of v)if(typeof R=="string"&&R.length>0&&(!t?.requirePaymentIntentClientSecret||ei(R)))return R}}}}async function ud({billingApiUrl:e,sessionId:t,nonce:r,responseJson:n}){let a=xl(n,{requirePaymentIntentClientSecret:!0});if(typeof a=="string"&&a.length>0)return{type:"3ds_required",threeDSecureToken:a};if(!t)return null;try{let u=(await new cn.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,r)).data.stripe?.clientSecret;if(ei(u))return{type:"3ds_required",threeDSecureToken:u}}catch{}return null}async function Ho({billingApiUrl:e,sessionId:t,session:r,nonce:n,tokenizedData:a,returnUrl:i,telemetry:l}){let u=e.replace(/\/+$/,""),p=t??r.id,v=n??r.clientSecret,R=r.customer?.id??r.accountData?.userId??"",w=r.customer?.email??r.accountData?.email??"",x=r.customer?.firstName??r.accountData?.firstName??"",K=r.customer?.lastName??r.accountData?.lastName??"",T=r.customer?.country??r.accountData?.country??void 0,V=r.customer?.zip??r.accountData?.zip??void 0,f=await new cn.PaymentAPI(u,l===!1?{telemetry:!1}:void 0).processPayment(R,{sessionId:p,nonce:v,paymentMethodCategory:"saved",tokenizedData:a,accountData:{userId:R,email:w,firstName:x,lastName:K,country:T,zip:V},returnUrl:i??Xi(r)});if(f.ok){let D=typeof f.json=="function"?await f.json().catch(()=>null):null;if((0,ut.isAuthorizationOnlySession)(r)||D?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof D?.paymentId=="string"?D.paymentId:r.paymentId,sessionId:typeof D?.sessionId=="string"?D.sessionId:p,authorizationExpiresAt:typeof D?.authorizationExpiresAt=="string"?D.authorizationExpiresAt:r.authorizationExpiresAt,paymentMethodId:pa(a),checkoutMethod:_l(a,r)}};let ue=a?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...ue?{paymentIntentId:ue}:{},paymentMethodId:pa(a),checkoutMethod:_l(a,r)}}}let P;try{P=await f.json()}catch(D){throw new ut.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:f.status,cause:D})}if(P?.type==="3ds_required"&&typeof P.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:P.nextActionRedirectUrl};if(P?.type==="paypal_redirect_required"||P?.type==="3ds_required"){let D=xl(P);if(!D)throw new ut.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:f.status});return{type:P.type,threeDSecureToken:D,paymentMethodId:P.paymentMethodId}}if(P?.gatewayErrorCode==="authentication_required"){let D=await ud({billingApiUrl:u,sessionId:p,nonce:v,responseJson:P});if(D)return D;throw Ji(new ut.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let ee=new ut.FloPayError(P?.message??"Payment failed. Please try again.","api_error",{code:P?.code??P?.gatewayErrorCode,declineCode:P?.declineCode??P?.gatewayDeclineReason,statusCode:f.status});throw Object.assign(ee,{telemetryOutcome:(0,ut.classifyPaymentRejection)(f.status,P)})}async function ti(e,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:a,sessionId:i,session:l,returnUrl:u,telemetry:p,signal:v}){let R=t?.getRawProvider();if(!R)throw Zn(new ut.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!n||!e.threeDSecureToken)throw Ji(new ut.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let w=(0,ut.isSetupIntentClientSecret)(e.threeDSecureToken),x=null,K=e.paymentMethodId,T=await va(()=>ld(R,e.threeDSecureToken,w),"card");if(T){if(T.error)throw Zn(new ut.FloPayError(T.error.message??`Failed to retrieve 3DS ${w?"setup":"payment"} status.`,"api_error",{code:T.error.code}),"card");let A=T.intent;!K&&A?.payment_method&&(typeof A.payment_method=="string"?K=A.payment_method:"id"in A.payment_method&&(K=A.payment_method.id??void 0))}let V=K?await va(()=>cd(R,e.threeDSecureToken,{payment_method:K,return_url:u??Xi(l)??window.location.href},w),"card"):null;if(V){if(V.error)throw Zn(new ut.FloPayError(V.error.message??"3DS authentication failed.","api_error",{code:V.error.code}),"card");x=V.intent}else{let A=await va(()=>R.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(A.error)throw Zn(new ut.FloPayError(A.error.message??"3DS authentication failed.","api_error",{code:A.error.code}),"card");x=(w?A.setupIntent:A.paymentIntent)??null}if(x&&(x.status==="requires_capture"||x.status==="succeeded"||x.status==="processing")){let A=await Ho({billingApiUrl:a,sessionId:i,session:l,telemetry:p,tokenizedData:{id:x.id,type:"card",threeDSecureActionResultTokenId:x.id},returnUrl:u});return A.type==="success"?{...A.result,paymentIntentId:A.result.paymentIntentId??x.id,paymentMethodId:A.result.paymentMethodId??K}:A.type==="next_action_required"?$o(A,{billingApiUrl:a,sessionId:i??l.id,session:l,signal:v}):ti(A,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:a,sessionId:i,session:l,returnUrl:u,telemetry:p,signal:v})}throw Zn(new ut.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let w=(r??t)?.getRawProvider();if(!w)throw Zn(new ut.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:K}=await va(()=>w.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(K)throw Zn(new ut.FloPayError(K.message??"PayPal authorization failed.","api_error",{code:K.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:x}=await va(()=>w.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:u??Xi(l)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(x)throw Zn(new ut.FloPayError(x.message??"PayPal authorization failed.","api_error",{code:x.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new ut.FloPayError("Unsupported payment redirect state.","api_error")}function Ca(e){if(e instanceof ut.FloPayError){let n=(0,ho.applyFriendlyMessageOverride)(e.message);return n&&n!==e.message?Object.assign(new ut.FloPayError(n,e.type,{code:e.code,declineCode:e.declineCode,param:e.param,statusCode:e.statusCode,sessionId:e.sessionId}),{checkoutMethod:e.checkoutMethod,orderId:e.orderId,telemetryFailureCategory:e.telemetryFailureCategory,telemetryOutcome:e.telemetryOutcome,telemetryRequestCategory:e.telemetryRequestCategory}):e}let t=e instanceof Error?e.message:"Payment failed. Please try again.",r=(0,ho.applyFriendlyMessageOverride)(t)??t;return new ut.FloPayError(r,"api_error")}function Zi(e){let t=e.data.stripe?.publishableKey,r=!!e.data.paypal?.publishableKey,n=(0,ut.isMountableVaultBlock)(e.data.session?.vault)||(0,Sn.canRecoverHostedCardForm)(e.data.session);if(!t&&!r&&!n)throw new ut.FloPayError("Session advertises no supported gateways or hosted vault (expected `gateways.stripe`, `gateways.paypal`, or vault markup).","validation_error");return t?{publishableKey:t,paypalPublishableKey:e.data.stripe?.paypalPublishableKey??t}:{}}function _l(e,t){return e?e.isPaypal?"paypal":"card":t&&(0,Sn.canRecoverHostedCardForm)(t)?"card":void 0}async function Qi({publishableKey:e,paypalPublishableKey:t,billingApiUrl:r,locale:n,telemetry:a}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[l,u]=await Promise.all([(0,cn.loadFloPay)(e,{billingApiUrl:r,locale:n,telemetry:a}),i?(0,cn.loadFloPay)(i,{billingApiUrl:r,locale:n,telemetry:a}).catch(v=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",v),null)):Promise.resolve(null)]);if(!l)throw new ut.FloPayError("The payment provider did not initialize.","authentication_error");let p=null;return i?p=u:t&&(p=l),{flopay:l,paypalFlopay:p}}var In=require("@flopay/js"),c=require("@flopay/shared"),or=require("@stripe/react-stripe-js"),o=Vi(require("react"),1);function Ko(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function ri(e,t){if(e)return{error:r=>e.error(Ko(t,r)),log:r=>e.log(Ko(t,r)),performance:r=>e.performance(Ko(t,r)),terminal:r=>e.terminal(Ko(t,r)),now:()=>e.now(),elapsed:r=>e.elapsed(r),setCheckoutContext:r=>e.setCheckoutContext(r),beginCheckout:r=>e.beginCheckout(r),disable:()=>e.disable(),subscribe:r=>e.subscribe(r),flush:()=>e.flush(),destroy:()=>e.destroy()}}var Qn=require("@flopay/shared"),Fl=require("react");var Al={alipay:"https://cdn.flopay.com/sdk-logos/v1/alipay.svg",bancontact:"https://cdn.flopay.com/sdk-logos/v1/bancontact.svg",blik:"https://cdn.flopay.com/sdk-logos/v1/blik.svg",eps:"https://cdn.flopay.com/sdk-logos/v1/eps.svg",giropay:"https://cdn.flopay.com/sdk-logos/v1/giropay.svg",ideal:"https://cdn.flopay.com/sdk-logos/v1/ideal.svg",klarna:"https://cdn.flopay.com/sdk-logos/v1/klarna.svg",p24:"https://cdn.flopay.com/sdk-logos/v1/p24.svg",sepa_debit:"https://cdn.flopay.com/sdk-logos/v1/sepa_debit.svg",wechat_pay:"https://cdn.flopay.com/sdk-logos/v1/wechat_pay.svg"};var wr=require("react/jsx-runtime"),pd=`
9
+ `})]})})}var Il=require("@flopay/shared"),_r=require("react");var _l=require("react/jsx-runtime");function va({flopay:e,paypalFlopay:t,options:r,onInstrument:n,children:a}){let[i,l]=(0,_r.useState)(e instanceof Promise?null:e),[u,p]=(0,_r.useState)(t instanceof Promise||!t?null:t),P=(0,_r.useRef)(null),E=(0,_r.useRef)(null),S=Vo(n);(0,_r.useEffect)(()=>{S({class:"lifecycle",name:"checkout.mount"})},[S]),(0,_r.useEffect)(()=>{i&&S({class:"lifecycle",name:"sdk.initialize.ready"})},[S,i]),(0,_r.useEffect)(()=>{if(i)return Pr(i)?.subscribe?.(S)},[S,i]),(0,_r.useEffect)(()=>{if(!(!u||u===i))return Pr(u)?.subscribe?.(S)},[S,i,u]),(0,_r.useEffect)(()=>{if(!i)return;let _=Pr(i);return P.current=_?.beginCheckout()??_?.now()??0,_?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{_?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),(0,_r.useEffect)(()=>{let _=!1;return e instanceof Promise?e.then(X=>{_||l(X)},()=>{_||S({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):l(e),()=>{_=!0}},[S,e]),(0,_r.useEffect)(()=>{let _=!1;if(!t){p(null);return}return t instanceof Promise?t.then(X=>{_||p(X)},()=>{_||S({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):p(t),()=>{_=!0}},[S,t]),(0,_r.useEffect)(()=>{if(!i||E.current===i)return;E.current=i;let _=Pr(i);_?.log({name:"checkout.rendered",stage:"checkout_render"}),S({class:"lifecycle",name:"checkout.rendered"}),_?.performance({stage:"checkout_render",durationMs:_.elapsed(P.current??0),durationMode:"machine"})},[S,i]);let I=(0,Il.resolveBillingApiUrl)(r?.billingApiUrl),K=(0,_r.useMemo)(()=>({flopay:i,paypalFlopay:u,billingApiUrl:I,emitInstrument:S}),[i,u,I,S]);return(0,_l.jsx)(dn.Provider,{value:K,children:a})}var In=require("@flopay/shared");async function ei(e,t){e.current?.abort();let r=new AbortController;e.current=r;try{return await t(r.signal)}finally{e.current===r&&(e.current=null)}}var mn=require("@flopay/js"),lt=require("@flopay/shared");var ba="card";async function cd(e,t,r){if(r){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:i,error:l}=await e.retrieveSetupIntent(t);return{error:l,intent:i??null}}if(typeof e.retrievePaymentIntent!="function")return null;let{paymentIntent:n,error:a}=await e.retrievePaymentIntent(t);return{error:a,intent:n??null}}async function dd(e,t,r,n){if(n){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:l,error:u}=await e.confirmCardSetup(t,r);return{error:u,intent:l??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:a,error:i}=await e.confirmCardPayment(t,r);return{error:i,intent:a??null}}function $o(e){return new lt.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function ud(){return new lt.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Zi(e,t){return Object.assign(e,{checkoutMethod:t})}function eo(e,t){let r=e instanceof lt.FloPayError?e:new lt.FloPayError(e instanceof Error?e.message:"Payment provider failed.","api_error",{code:"provider_runtime_failure"});return Object.assign(r,{checkoutMethod:t,telemetryFailureCategory:"provider_runtime",telemetryRequestCategory:"provider_sdk"})}async function Ca(e,t){try{return await e()}catch(r){throw eo(r,t)}}function Ml(e){return!e?.type||!e.threeDSecureToken||e.type!=="3ds_required"&&e.type!=="paypal_redirect_required"?null:{type:e.type,threeDSecureToken:e.threeDSecureToken,paymentMethodId:e.paymentMethodId}}function xl(e){return(0,mn.runSavedCardChallenge)(e)}async function Ho(e,t){let{billingApiUrl:r,sessionId:n,signal:a}=t,i=t.nonce??t.session.clientSecret,l=new mn.PaymentAPI(r,{telemetry:!1}),u=`${r.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(n)}/status`,p;try{p=await(0,mn.completeSavedCardNextAction)({billingApiUrl:r,sessionId:n,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:a,createDeclineError:E=>qn({type:E.declineReason??"authorization_declined",gatewayErrorCode:E.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"})},l)}catch(E){if(a.aborted||E instanceof Error&&E.name==="AbortError")throw E instanceof lt.FloPayError&&E.code==="three_ds_aborted"?E:$o(E);if(!(E instanceof lt.FloPayError)||E.code!=="three_ds_timeout"&&E.code!=="checkout_processing_timeout")throw E;try{p=await l.waitForCheckoutSessionCompletion(n,{initialDelayMs:0,nonce:i,statusUrl:u,timeoutMs:5e3,signal:a})}catch(I){if(a.aborted)throw $o(I);if(!(I instanceof lt.FloPayError)||I.code!=="checkout_processing_timeout")throw I}let S=p&&lo(p,t.session);if(!Jn(S)&&S?.status!=="expired"){if(t.telemetry){let I=new mn.PaymentAPI(r);try{I.reportThreeDsAbandoned(n)}finally{I.destroy()}}throw ud()}}let P=p&&lo(p,t.session);if(!Jn(P))throw No(P);return{...Xn(P,n),checkoutMethod:"card"}}function qn(e,t="Payment failed. Please try again.",r){let n=r?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),a=e?.message??t,i=(0,vo.applyFriendlyMessageOverride)(a)??a,l=Zi(new lt.FloPayError(i,"api_error",{code:e?.code??(0,lt.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,lt.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),n);return e?.orderId&&(l.orderId=e.orderId),l}function Ji(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function ti(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function Al(e,t){let r=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let a of r)if(typeof a=="string"&&a.length>0&&(!t?.requirePaymentIntentClientSecret||ti(a)))return a;let n=e?.data;if(n&&typeof n=="object"){let a=n,i=[a.threeDSecureToken,a.clientSecret,a.stripeClientSecret,a.id];for(let u of i)if(typeof u=="string"&&u.length>0&&(!t?.requirePaymentIntentClientSecret||ti(u)))return u;let l=a.gateways;if(l&&typeof l=="object"){let u=l.stripe;if(u&&typeof u=="object"){let p=u,P=[p.stripeClientSecret,p.clientSecret];for(let E of P)if(typeof E=="string"&&E.length>0&&(!t?.requirePaymentIntentClientSecret||ti(E)))return E}}}}async function pd({billingApiUrl:e,sessionId:t,nonce:r,responseJson:n}){let a=Al(n,{requirePaymentIntentClientSecret:!0});if(typeof a=="string"&&a.length>0)return{type:"3ds_required",threeDSecureToken:a};if(!t)return null;try{let u=(await new mn.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,r)).data.stripe?.clientSecret;if(ti(u))return{type:"3ds_required",threeDSecureToken:u}}catch{}return null}async function Ko({billingApiUrl:e,sessionId:t,session:r,nonce:n,tokenizedData:a,returnUrl:i,telemetry:l}){let u=e.replace(/\/+$/,""),p=t??r.id,P=n??r.clientSecret,E=r.customer?.id??r.accountData?.userId??"",S=r.customer?.email??r.accountData?.email??"",I=r.customer?.firstName??r.accountData?.firstName??"",K=r.customer?.lastName??r.accountData?.lastName??"",_=r.customer?.country??r.accountData?.country??void 0,X=r.customer?.zip??r.accountData?.zip??void 0,y=await new mn.PaymentAPI(u,l===!1?{telemetry:!1}:void 0).processPayment(E,{sessionId:p,nonce:P,paymentMethodCategory:"saved",tokenizedData:a,accountData:{userId:E,email:S,firstName:I,lastName:K,country:_,zip:X},returnUrl:i??Ji(r)});if(y.ok){let b=typeof y.json=="function"?await y.json().catch(()=>null):null;if((0,lt.isAuthorizationOnlySession)(r)||b?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof b?.paymentId=="string"?b.paymentId:r.paymentId,sessionId:typeof b?.sessionId=="string"?b.sessionId:p,authorizationExpiresAt:typeof b?.authorizationExpiresAt=="string"?b.authorizationExpiresAt:r.authorizationExpiresAt,paymentMethodId:ma(a),checkoutMethod:Tl(a,r)}};let Te=a?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...Te?{paymentIntentId:Te}:{},paymentMethodId:ma(a),checkoutMethod:Tl(a,r)}}}let v;try{v=await y.json()}catch(b){throw new lt.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:y.status,cause:b})}if(v?.type==="3ds_required"&&typeof v.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:v.nextActionRedirectUrl};if(v?.type==="paypal_redirect_required"||v?.type==="3ds_required"){let b=Al(v);if(!b)throw new lt.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:y.status});return{type:v.type,threeDSecureToken:b,paymentMethodId:v.paymentMethodId}}if(v?.gatewayErrorCode==="authentication_required"){let b=await pd({billingApiUrl:u,sessionId:p,nonce:P,responseJson:v});if(b)return b;throw Zi(new lt.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let pe=new lt.FloPayError(v?.message??"Payment failed. Please try again.","api_error",{code:v?.code??v?.gatewayErrorCode,declineCode:v?.declineCode??v?.gatewayDeclineReason,statusCode:y.status});throw Object.assign(pe,{telemetryOutcome:(0,lt.classifyPaymentRejection)(y.status,v)})}async function ri(e,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:a,sessionId:i,session:l,returnUrl:u,telemetry:p,signal:P}){let E=t?.getRawProvider();if(!E)throw eo(new lt.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!n||!e.threeDSecureToken)throw Zi(new lt.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let S=(0,lt.isSetupIntentClientSecret)(e.threeDSecureToken),I=null,K=e.paymentMethodId,_=await Ca(()=>cd(E,e.threeDSecureToken,S),"card");if(_){if(_.error)throw eo(new lt.FloPayError(_.error.message??`Failed to retrieve 3DS ${S?"setup":"payment"} status.`,"api_error",{code:_.error.code}),"card");let T=_.intent;!K&&T?.payment_method&&(typeof T.payment_method=="string"?K=T.payment_method:"id"in T.payment_method&&(K=T.payment_method.id??void 0))}let X=K?await Ca(()=>dd(E,e.threeDSecureToken,{payment_method:K,return_url:u??Ji(l)??window.location.href},S),"card"):null;if(X){if(X.error)throw eo(new lt.FloPayError(X.error.message??"3DS authentication failed.","api_error",{code:X.error.code}),"card");I=X.intent}else{let T=await Ca(()=>E.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(T.error)throw eo(new lt.FloPayError(T.error.message??"3DS authentication failed.","api_error",{code:T.error.code}),"card");I=(S?T.setupIntent:T.paymentIntent)??null}if(I&&(I.status==="requires_capture"||I.status==="succeeded"||I.status==="processing")){let T=await Ko({billingApiUrl:a,sessionId:i,session:l,telemetry:p,tokenizedData:{id:I.id,type:"card",threeDSecureActionResultTokenId:I.id},returnUrl:u});return T.type==="success"?{...T.result,paymentIntentId:T.result.paymentIntentId??I.id,paymentMethodId:T.result.paymentMethodId??K}:T.type==="next_action_required"?Ho(T,{billingApiUrl:a,sessionId:i??l.id,session:l,signal:P}):ri(T,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:a,sessionId:i,session:l,returnUrl:u,telemetry:p,signal:P})}throw eo(new lt.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let S=(r??t)?.getRawProvider();if(!S)throw eo(new lt.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:K}=await Ca(()=>S.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(K)throw eo(new lt.FloPayError(K.message??"PayPal authorization failed.","api_error",{code:K.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:I}=await Ca(()=>S.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:u??Ji(l)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(I)throw eo(new lt.FloPayError(I.message??"PayPal authorization failed.","api_error",{code:I.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new lt.FloPayError("Unsupported payment redirect state.","api_error")}function Sa(e){if(e instanceof lt.FloPayError){let n=(0,vo.applyFriendlyMessageOverride)(e.message);return n&&n!==e.message?Object.assign(new lt.FloPayError(n,e.type,{code:e.code,declineCode:e.declineCode,param:e.param,statusCode:e.statusCode,sessionId:e.sessionId}),{checkoutMethod:e.checkoutMethod,orderId:e.orderId,telemetryFailureCategory:e.telemetryFailureCategory,telemetryOutcome:e.telemetryOutcome,telemetryRequestCategory:e.telemetryRequestCategory}):e}let t=e instanceof Error?e.message:"Payment failed. Please try again.",r=(0,vo.applyFriendlyMessageOverride)(t)??t;return new lt.FloPayError(r,"api_error")}function Qi(e){let t=e.data.stripe?.publishableKey,r=!!e.data.paypal?.publishableKey,n=(0,lt.isMountableVaultBlock)(e.data.session?.vault)||(0,kn.canRecoverHostedCardForm)(e.data.session);if(!t&&!r&&!n)throw new lt.FloPayError("Session advertises no supported gateways or hosted vault (expected `gateways.stripe`, `gateways.paypal`, or vault markup).","validation_error");return t?{publishableKey:t,paypalPublishableKey:e.data.stripe?.paypalPublishableKey??t}:{}}function Tl(e,t){return e?e.isPaypal?"paypal":"card":t&&(0,kn.canRecoverHostedCardForm)(t)?"card":void 0}async function es({publishableKey:e,paypalPublishableKey:t,billingApiUrl:r,locale:n,telemetry:a}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[l,u]=await Promise.all([(0,mn.loadFloPay)(e,{billingApiUrl:r,locale:n,telemetry:a}),i?(0,mn.loadFloPay)(i,{billingApiUrl:r,locale:n,telemetry:a}).catch(P=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",P),null)):Promise.resolve(null)]);if(!l)throw new lt.FloPayError("The payment provider did not initialize.","authentication_error");let p=null;return i?p=u:t&&(p=l),{flopay:l,paypalFlopay:p}}var Tn=require("@flopay/js"),c=require("@flopay/shared"),rr=require("@stripe/react-stripe-js"),o=Wi(require("react"),1);function Go(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function ni(e,t){if(e)return{error:r=>e.error(Go(t,r)),log:r=>e.log(Go(t,r)),performance:r=>e.performance(Go(t,r)),terminal:r=>e.terminal(Go(t,r)),now:()=>e.now(),elapsed:r=>e.elapsed(r),setCheckoutContext:r=>e.setCheckoutContext(r),beginCheckout:r=>e.beginCheckout(r),disable:()=>e.disable(),subscribe:r=>e.subscribe(r),flush:()=>e.flush(),destroy:()=>e.destroy()}}var to=require("@flopay/shared"),Bl=require("react");var Fl={alipay:"https://cdn.flopay.com/sdk-logos/v1/alipay.svg",bancontact:"https://cdn.flopay.com/sdk-logos/v1/bancontact.svg",blik:"https://cdn.flopay.com/sdk-logos/v1/blik.svg",eps:"https://cdn.flopay.com/sdk-logos/v1/eps.svg",giropay:"https://cdn.flopay.com/sdk-logos/v1/giropay.svg",ideal:"https://cdn.flopay.com/sdk-logos/v1/ideal.svg",klarna:"https://cdn.flopay.com/sdk-logos/v1/klarna.svg",p24:"https://cdn.flopay.com/sdk-logos/v1/p24.svg",sepa_debit:"https://cdn.flopay.com/sdk-logos/v1/sepa_debit.svg",wechat_pay:"https://cdn.flopay.com/sdk-logos/v1/wechat_pay.svg"};var vr=require("react/jsx-runtime"),md=`
10
10
  .paypal-buttons { margin: 0 !important; vertical-align: top !important; }
11
11
  @keyframes flopay-spin { to { transform: rotate(360deg); } }
12
12
  @keyframes flopay-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
@@ -27,7 +27,7 @@ ${be.join(`
27
27
  0% { opacity: 1; transform: translateX(0) scale(1); }
28
28
  100% { opacity: 0; transform: translateX(16px) scale(0.97); }
29
29
  }
30
- `,Go=44;function Yo(){return(0,wr.jsx)("style",{children:pd})}function Sa(e,t){let r=e.availablePaymentMethods;return r&&t.some(n=>r[n])?"ready":"unavailable"}function wa({state:e,placeholderTestId:t,borderRadius:r=8,children:n}){return e==="unavailable"||e==="load_error"?null:(0,wr.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,wr.jsx)("div",{"data-testid":t,"aria-hidden":e==="ready",style:{position:"absolute",inset:0,height:44,borderRadius:r,background:"#e5e7eb",animation:e==="ready"?void 0:"flopay-pulse 1.5s ease-in-out infinite",opacity:e==="ready"?0:1,transform:e==="ready"?"scale(0.985)":"scale(1)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:"none"}}),(0,wr.jsx)("div",{style:{minHeight:44,opacity:e==="ready"?1:0,transform:e==="ready"?"translateY(0)":"translateY(2px)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:e==="ready"?"auto":"none"},children:n})]})}function es(e){return e!=="unavailable"&&e!=="load_error"}function ni({method:e,themeId:t,submitting:r=!1,disabled:n=!1,highlighted:a=!1,hasNextStep:i=!1,onClick:l,backgroundColor:u,borderColor:p,textColor:v,borderRadius:R,fontFamily:w}){let x=(0,Qn.resolveStripeMethodBrandVariant)(e,t),K=Al[e],[T,V]=(0,Fl.useState)(!1),A=!!K&&!T,f=x?.backgroundColor??u??"#ffffff",P=x?.borderColor??p??"#d1d5db",ee=x?.textColor??v??"#262833";return(0,wr.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!r&&!n&&l()},disabled:r||n,"aria-busy":r||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Go,padding:"0 1rem",backgroundColor:f,color:ee,border:`1px solid ${P}`,borderRadius:R??8,fontSize:"0.95rem",fontWeight:600,fontFamily:w,cursor:r||n?"not-allowed":"pointer",opacity:n&&!r?.55:1,animation:r?"flopay-pulse 1.5s ease-in-out infinite":void 0,display:"flex",alignItems:"center",justifyContent:"center",gap:8,transition:"transform 0.1s, opacity 140ms ease-out, border-color 140ms ease-out",boxShadow:a?"0 0 0 2px rgba(74, 73, 255, 0.15)":void 0},children:r?(0,wr.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,Qn.getStripeMethodDisplayName)(e)}\u2026`}):(0,wr.jsxs)(wr.Fragment,{children:[(0,wr.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,Qn.hasVendoredStripeMethodLogo)(e)?8:0},children:[A?(0,wr.jsx)("img",{src:K,alt:"","aria-hidden":"true",onError:()=>V(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!A&&x?.logoSvg?(0,wr.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:x.logoSvg}}):null,(0,wr.jsx)("span",{children:(0,Qn.getStripeMethodDisplayName)(e)})]}),i&&(0,wr.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:ee,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem",top:"50%",transform:"translateY(-50%)",flexShrink:0,opacity:.7},"aria-hidden":"true",children:(0,wr.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function oi(e){let t=new Set(e.map(Qn.stripeExpressMethodToOptionKey)),r=n=>n==="applePay"||n==="googlePay"?"always":"auto";return Object.fromEntries(["applePay","googlePay","paypal","link","amazonPay","klarna"].map(n=>[n,t.has(n)?r(n):"never"]))}var ai={buttonType:{applePay:"plain",googlePay:"plain"},layout:{maxColumns:1,overflow:"never"}},ii={type:"accordion",defaultCollapsed:!1,radios:"never"};function si({testId:e,attributes:t,disabled:r,onClick:n,color:a,borderRadius:i,style:l,children:u}){return(0,wr.jsx)("button",{type:"button","data-testid":e,...t,onClick:n,disabled:r,style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:a,color:"white",border:"none",borderRadius:i,fontSize:"1rem",fontWeight:600,cursor:r?"not-allowed":"pointer",opacity:r?.5:1,transition:"opacity 120ms ease-out",...l??{}},children:u})}var Jr=require("react");var ka=require("@flopay/shared"),md=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function yd(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return md.has(t.charAt(0).toLowerCase()+t.slice(1))}function fd(e,t){return typeof t=="number"&&t!==0&&!yd(e)?`${t}px`:String(t).trim()}function Bl(e,t){if(e.style.cssText="",!!t){for(let[r,n]of Object.entries(t))if(!(n==null||n==="")){if(r.startsWith("--")){e.style.setProperty(r,String(n));continue}e.style[r]=fd(r,n)}}}var bo=require("react/jsx-runtime"),ts=new WeakSet;function lo({capture:e,html:t,messageToken:r,expectedOrigin:n,verificationRequired:a,theme:i,submitLabel:l,containerStyle:u,onReady:p,onError:v,onValidation:R}){let w=(0,Jr.useRef)(null),x=(0,Jr.useRef)(p),K=(0,Jr.useRef)(v),T=(0,Jr.useRef)(R);x.current=p,K.current=v,T.current=R;let V=(0,Jr.useRef)(i);V.current=i;let A=(0,Jr.useRef)(null),f=l??void 0,P=(0,Jr.useRef)(f);P.current=f;let ee=(0,Jr.useRef)(void 0);return(0,Jr.useEffect)(()=>{let D=w.current;if(!D)return;let ue=!0,F=!1,ne=()=>{!ue||F||(F=!0,x.current?.())},_e=e.on("ready",()=>{ne()}),ie=e.on("error",G=>{K.current?.(G.message??"There was a problem loading the secure card form.")}),We=e.on("validation",G=>{T.current?.(G.message??null)}),kt=P.current??(ts.has(e)?null:void 0),de={html:t,...r?{messageToken:r}:{},...n?{expectedOrigin:n}:{},...a?{verificationRequired:!0}:{},...V.current?{theme:V.current}:{},...kt===void 0?{}:{submitLabel:kt}};return A.current=V.current??null,ee.current=P.current,P.current!==void 0&&ts.add(e),e.mount(D,de).then(()=>{ne()}).catch(G=>{ue&&K.current?.(G instanceof Error?G.message:"Failed to load the secure card form.")}),()=>{ue=!1,_e(),ie(),We(),e.unmount()}},[e,t,r,n,a]),Po(()=>{let D=w.current;D&&Bl(D,u)},[u]),(0,Jr.useEffect)(()=>{i!==void 0&&(i===null&&A.current===null||(A.current=i,e.applyTheme?.(i)))},[e,i]),(0,Jr.useEffect)(()=>{f!==ee.current&&(ee.current=f,f!==void 0&&ts.add(e),e.setSubmitLabel?.(f??null))},[e,f]),(0,bo.jsx)("div",{ref:w,"data-testid":"flopay-vault-card-fields"})}function li({label:e}){return(0,bo.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,bo.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,bo.jsx)("span",{children:e}),(0,bo.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]})}var us=require("@flopay/shared"),d=require("react/jsx-runtime"),jn="flopay_stripe_resume",Dl="flopay_wallet_resume",Hl="fw1",gd="fw2",Kl=300*1e3,hd=900,Pd=25e3,vd=25e3,bd=1e4,En={provider:"paypal",paymentMethodCategory:"paypal"},Cd="x-flopay-process-result-source",Sd="status";async function wd(e,t,r){try{let n=(await e.getUnifiedCheckoutSession(t,r)).data.session;if(n?.status==="complete")return null;if(n?.status==="authorized")return{status:"authorized",paymentId:n.paymentId,sessionId:n.id||t,authorizationExpiresAt:n.authorizationExpiresAt}}catch{}}var ci={},Ea=class{constructor(t){this.reason=t}};function kd(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function ar(e,t){if(typeof window>"u")return!1;try{return t===void 0?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)),!0}catch{return!1}}function ls(e){return`${gd}:${e}`}function di(e){return ar(ls(e))}function ui(e,t){if(typeof window>"u")return null;let r=ls(e);try{let n=localStorage.getItem(r);if(!n)return null;let a=JSON.parse(n);return typeof a.createdAt!="number"||Date.now()-a.createdAt<0||Date.now()-a.createdAt>Kl||a.sessionId!==e||a.nonce!==t||typeof a.clientSecret!="string"||typeof a.providerObjectId!="string"||typeof a.paymentMethodType!="string"?(di(e),null):a}catch{return di(e),null}}function Rd(e){return ar(ls(e.sessionId),e)}function Ol(e,t,r){let n=ui(e,t);return!n||n.clientSecret!==r?!1:di(e)}function rs(e,t,r){if(typeof window>"u")return;ui(e,t)?.clientSecret===r&&di(e)}function Ed(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function ns(e,t,r){if(!e||typeof e.id!="string"||t&&e.id!==t)return{kind:"ambiguous"};if(e.status==="canceled"||e.status==="requires_payment_method")return{kind:"terminal"};let n=r?e.status==="succeeded":ua(e.status),a=Ed(e);return!n||!a?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:a}}async function Ll(e,t,r){let n=null;try{return await Promise.race([gl(e,t),new Promise(a=>{n=window.setTimeout(()=>{n!==null&&r?.delete(n),a(null)},bd),r?.add(n)})])}finally{n!==null&&(window.clearTimeout(n),r?.delete(n))}}function Id(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Gl(e){return e instanceof c.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function pi(e,t,...r){let n=r[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:n});try{return await new In.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...r)}catch(a){throw Gl(a)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:n}),a}}var os=c.STRIPE_PAYPAL_RESUME_KEY,Ra=new Map,_d=250,Nl="Just a moment \u2014 we are finalizing your order. Please press pay again.",Td="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function cs(e,t,r,n){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:r,requestCategory:"provider_sdk",...n?{terminalReason:n}:{}})}async function mi({billingApiUrl:e,sessionId:t,nonce:r,request:n}){if(!(!t||!r))try{await new In.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,r,n)}catch{}}function Md(e){return e instanceof c.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Yl({event:e,fallbackEmail:t,fallbackName:r}){let n=e.billingDetails,a=t?.trim(),i=(0,No.splitFullName)(r),l=i.firstName?i:(0,No.splitFullName)(n?.name);return(0,sn.compactBuyerIdentity)({email:(0,c.isValidEmail)(a)?a:n?.email?.trim(),firstName:l.firstName,lastName:l.lastName})}async function xd({event:e,prepared:t,email:r,billingName:n,methodLabel:a,collect:i}){let l=Yl({event:e,fallbackEmail:t?.accountPatch?.email??r,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||n});return(0,c.isValidEmail)(l.email)?l:i(a,l)}var Ia=180,Ul=`flopay-card-enter ${Ia}ms cubic-bezier(0, 0, 0.2, 1) both`,zl=`flopay-card-exit ${Ia}ms cubic-bezier(0.4, 0, 0.2, 1) both`,Ad=`flopay-buttons-enter ${Ia}ms cubic-bezier(0, 0, 0.2, 1) both`,Fd=`flopay-buttons-exit ${Ia}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function Bd(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function ds(e){return(0,c.derivePrimaryTileStyle)(e)}var Dd={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Od(e){return e.isPaypal||e.gateway==="paypal"||e.paymentMethodType==="paypal"?"paypal":e.paymentMethodType==="apple_pay"||e.paymentMethodType==="google_pay"?"wallet":e.paymentMethodType&&e.paymentMethodType!=="card"?"apm":"card"}var as={width:"100%",minHeight:Go,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"};function ql(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function is(e){return e==="paypal"?"PayPal":(0,c.getStripeMethodDisplayName)(e)}function Ld(e){let t=(0,c.getPostalCodeExample)(e);return`Enter a valid ${(0,c.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function Nd(e,t,r){let n=(0,c.isPostalCodeSupported)(e),a=t.trim(),i=r&&n,l=i&&!a,u=i&&!!a&&!(0,c.isValidPostalCode)(e,a);return{visible:r,supported:n,required:i,empty:l,malformed:u}}function Ud(e,t){let r=e.trim(),n=t&&!r,a=t&&!!r&&!(0,c.isValidEmail)(r);return{required:t,empty:n,malformed:a,value:r}}function zd(e){return typeof e=="number"?`${e}px`:e}function yi(e){return(0,d.jsx)(Vd,{...e})}function jl({sessionId:e,nonce:t,email:r,billingApiUrl:n,onTokenizedBody:a,onErrorChange:i,isProcessing:l=!1,onButtonClick:u,onDecline:p,onTechnicalFailure:v,runBeforeButtonClick:R,billingName:w,onBuyerIdentityReady:x,onLoadStateChange:K,placeholderBorderRadius:T,popupCapabilityOwner:V,externalTelemetryContext:A,presentationMode:f}){let P=Jn(),{emitInstrument:ee}=(0,o.useContext)(an),D=(0,or.useStripe)(),ue=(0,or.useElements)(),F=(0,o.useMemo)(()=>ri(Sr(P),A),[A,P]),[ne,_e]=(0,o.useState)("loading");(0,o.useEffect)(()=>{K?.(ne)},[ne,K]);let[ie,We]=(0,o.useState)(!1),kt=(0,o.useRef)(!1),de=!(0,c.isValidEmail)(r?.trim())||!w?.trim(),{request:G,collect:pt,finish:we}=Uo(),xe=(0,o.useRef)(!1),ke=(0,o.useRef)(null),Z=(0,o.useRef)(null),[pe,Re]=(0,o.useState)(0),[Fe,rt]=(0,o.useState)(!1),me=(0,o.useRef)(!1),N=(0,o.useRef)(new Map),{startAttempt:H,finishAttempt:ye,invalidateAttempt:$e,isAttemptInvalidated:he,isAttemptCurrent:M,generationRef:Ye}=fa((q,Pe,st)=>{v?.(q,Pe,{...st,popupBlocked:st?.popupBlocked??(0,Se.isPopupBlockedError)(Pe),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:f,terminalReason:"overlay_timeout"}),rt(!0),Re(W=>W+1)},{onHandoffObserved:()=>{V.markAvailable(),F?.log({name:"provider.popup.opened",stage:"overlay_open",...En,attempt:Ye.current})}});(0,o.useEffect)(()=>{Fe&&Z.current?.focus()},[Fe,pe]);let Te=(0,o.useCallback)(()=>{Re(q=>q+1)},[]),tt=(0,o.useCallback)((q,Pe,st)=>{$e(st),v?.("paypal",q,{code:Pe,popupBlocked:(0,Se.isPopupBlockedError)(q),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:f}),rt(!0),Te()},[$e,v,f,Te]),Ze=(0,o.useCallback)(()=>{window.setTimeout(()=>{(ke.current?.querySelector("iframe")??ke.current)?.focus()},0)},[]);(0,o.useEffect)(()=>{me.current&&(me.current=!1,Ze())},[Ze,pe]);let ze=(0,o.useCallback)(()=>{rt(!1),i?.(null),Ze()},[Ze,i]);(0,o.useEffect)(()=>{if(!D||xe.current)return;let[q,Pe,st]=(0,c.readStripeRedirectParams)();if(!q||!Pe)return;let W=(0,c.readMatchingStripePayPalContinuation)(Pe);if(!W)return;xe.current=!0;let Ee=!0,nt=Ra.get(Pe);nt||(nt=st==="failed"?Promise.resolve(null):Promise.resolve().then(()=>D.retrievePaymentIntent(Pe)),Ra.set(Pe,nt));let Ke={accountPatch:W.accountPatch,sessionId:W.sessionId,nonce:W.nonce},Rt=()=>{F?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...En,requestCategory:"provider_sdk"})};return F?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...En}),(async()=>{try{We(!0);let b=await nt;if(!Ee)return;if(b?.error){Ra.delete(Pe),Rt(),i?.(b.error.message??"Failed to retrieve PayPal payment status.");return}if((0,c.clearStripePayPalReturn)(),Ra.delete(Pe),st==="failed"){let qe="PayPal payment was declined. Please try again.";F?.terminal({outcome:"payment_declined",...En,terminalReason:"provider_declined"}),i?.(qe),p?.(Cr("paypal",qe));return}let L=b?.paymentIntent;if(L&&L.id!==q){Rt(),i?.("Failed to match the returned PayPal payment.");return}if(L&&(L.status==="requires_capture"||L.status==="succeeded")){let qe=typeof L.payment_method=="string"?L.payment_method:L.payment_method?.id;a({id:qe??L.id,type:"card",threeDSecureActionResultTokenId:L.id,isPaypal:!0},{...Ke,presentationMode:"redirect"})}else{let qe="PayPal payment was not completed. Please try again.";F?.terminal({outcome:L?.status==="canceled"?"payment_cancelled":"payment_declined",...En,terminalReason:L?.status==="canceled"?"cancelled":"provider_declined"}),i?.(qe),p?.(Cr("paypal",qe))}}catch(b){if(!Ee)return;Ra.delete(Pe),Rt(),i?.(b instanceof Error?b.message:"Failed to complete PayPal payment.")}finally{Ee&&We(!1)}})(),()=>{Ee=!1,xe.current=!1}},[D,a,i,p,F]);let He=(0,o.useCallback)(async(q=!1)=>{let Pe=R?await R("paypal"):{proceed:!0};if(!Pe.proceed)return N.current.delete(pe),!1;let st=H("paypal");return N.current.set(pe,{generation:st,accountPatch:Pe.accountPatch,sessionId:Pe.sessionId,nonce:Pe.nonce}),rt(!1),F?.log({name:`provider.${q?"redirect.started":"handoff.requested"}`,stage:q?"redirect":"overlay_open",...En,attempt:st}),u?.("paypal"),!0},[u,F,R,H,pe]),Le=(0,o.useCallback)(async q=>{if(l||ie||!await He()){q.reject();return}q.resolve()},[l,He,ie]),Et=(0,o.useCallback)(async q=>{if(!D||!ue)return;let Pe=N.current.get(pe);if(Pe&&!M(Pe.generation)){N.current.delete(pe);return}if(!Pe&&he()||Pe&&!ye(Pe.generation))return;Pe||ye();let st=Pe??null;if(N.current.delete(pe),!st&&R){let qt=await R("paypal");if(!qt.proceed){q.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}st={accountPatch:qt.accountPatch,sessionId:qt.sessionId,nonce:qt.nonce}}let W=st?.sessionId??e,Ee=st?.nonce??t,nt=await xd({event:q,prepared:st,email:r,billingName:w,methodLabel:"PayPal",collect:pt});if(!nt){q.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Ke=nt.email,Rt={...st?.accountPatch,...(0,sn.compactBuyerIdentity)(nt,!0)};try{if(We(!0),i?.(null),!W||!(0,c.isValidEmail)(Ke))throw new Error("Missing sessionId or email for PayPal payment");await x?.(nt);let qt=D.createPaymentMethod,{error:b,paymentMethod:L}=await qt({type:"paypal"});if(b){tt(b,"stripe_paypal_create_payment_method_failed",Pe?.generation),q.paymentFailed({reason:"fail"});return}let qe=await pi(n,ee,W,Ee??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:L?.id??null,intentKind:"payment"});if(qe.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let fe=qe.clientSecret,h={return_url:(0,c.stripeRedirectReturnUrl)()};if(L?.id&&(h.payment_method=L.id),!ar(os,{clientSecret:fe,sessionId:W,nonce:Ee,accountPatch:Rt})&&f==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:j,paymentIntent:Y}=await D.confirmPayment({clientSecret:fe,confirmParams:h,redirect:"if_required"});if(j){if(ar(os),(0,Se.isProviderDecline)(j)){let k=j.message??"Your payment was declined.";F?.terminal({outcome:"payment_declined",...En,terminalReason:"provider_declined"}),i?.(k),p?.(Cr("paypal",k,{code:(0,Se.getProviderErrorCode)(j),declineCode:(0,Se.getProviderDeclineCode)(j)})),await mi({billingApiUrl:n,sessionId:W,nonce:Ee,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:(0,Se.getProviderErrorCode)(j)??"provider_declined"}})}else tt(j,"stripe_paypal_confirm_failed",Pe?.generation);return}ar(os);let te=typeof Y?.payment_method=="string"?Y.payment_method:Y?.payment_method?.id;a({id:te??Y?.id,type:"card",threeDSecureActionResultTokenId:Y?.id,isPaypal:!0},{accountPatch:Rt,paymentMethodCategory:"paypal",presentationMode:f,sessionId:W,nonce:Ee});return}catch(qt){tt(qt,"stripe_paypal_failed",Pe?.generation)}finally{We(!1)}},[D,ue,e,t,r,w,pt,x,n,ee,a,i,p,R,tt,ye,M,he,F,f,pe]),zt=(0,o.useCallback)(async()=>{if(!(kt.current||l||ie||!D||!ue)){kt.current=!0,We(!0);try{if(!await He(!0))return;await Et({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{kt.current=!1,We(!1)}}},[ue,Et,l,He,D,ie]),ft=f==="redirect"?(0,d.jsx)("button",{type:"button",disabled:l||ie,onClick:()=>{zt()},style:{width:"100%",minHeight:Go,border:"1px solid #d1d5db",borderRadius:T??8,background:"#ffc439",color:"#111827",cursor:l||ie?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):(0,d.jsx)(or.ExpressCheckoutElement,{onReady:q=>_e(Sa(q,["paypal"])),onLoadError:()=>{_e("load_error"),cs(F,"paypal","paypal","provider_error")},onClick:Le,onConfirm:Et,onCancel:()=>{let q=N.current.get(pe);N.current.delete(pe),F?.terminal({outcome:"payment_cancelled",...En,terminalReason:"cancelled",...q?{attempt:q.generation}:{}}),$e(q?.generation),rt(!1),me.current=!0,Te()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:de,emailRequired:de,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},pe),Ft=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{ref:ke,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[Fe&&(0,d.jsx)("button",{ref:Z,type:"button","data-testid":"flopay-paypal-retry-button",onClick:ze,style:as,children:"Try PayPal again"}),G&&(0,d.jsx)(zo,{identity:G.identity,methodLabel:G.methodLabel,onComplete:we,onCancel:()=>we(null)},G.id),(0,d.jsx)("div",{style:{display:G?"none":void 0},children:ft})]}),ie&&!G&&(0,d.jsx)(Wr,{status:"processing"})]});return f==="redirect"?Ft:(0,d.jsx)(wa,{state:ne,placeholderTestId:"flopay-paypal-placeholder",borderRadius:T,children:Ft})}function Vl(e){return e==="apple_pay"||e==="google_pay"}var qd=200;function jd({active:e}){return(0,o.useLayoutEffect)(()=>e?(0,c.denyPaymentPermissionToNewFrames)(document):void 0,[e]),null}function Wl({sessionId:e,nonce:t,email:r,billingApiUrl:n,intentKind:a,expressMethods:i,onTokenizedBody:l,onErrorChange:u,onButtonClick:p,onDecline:v,onTechnicalFailure:R,runBeforeButtonClick:w,billingName:x,onBuyerIdentityReady:K,onLoadStateChange:T,placeholderBorderRadius:V,popupCapabilityOwner:A,externalTelemetryContext:f}){let P=Jn(),{emitInstrument:ee}=(0,o.useContext)(an),D=(0,or.useStripe)(),ue=(0,or.useElements)(),F=(0,o.useMemo)(()=>ri(Sr(P),f),[f,P]),[ne,_e]=(0,o.useState)("loading");(0,o.useEffect)(()=>{T?.(ne)},[ne,T]);let[ie,We]=(0,o.useState)(!1);(0,o.useEffect)(()=>{rt.current=ie},[ie]);let kt=(0,o.useRef)(!(0,c.isValidEmail)(r?.trim())||!x?.trim()).current,{request:de,collect:G,finish:pt}=Uo(),we=(0,o.useRef)(null),xe=(0,o.useRef)(null),[ke,Z]=(0,o.useState)(0),[pe,Re]=(0,o.useState)(()=>(0,c.shouldPreferWalletPopup)()),Fe=(0,o.useRef)(pe),rt=(0,o.useRef)(!1),[me,N]=(0,o.useState)(!1),[H,ye]=(0,o.useState)(()=>ui(e,t)?"blocked":"idle"),[$e,he]=(0,o.useState)("google_pay"),M=(0,o.useRef)(null),Ye=(0,o.useRef)(!0),Te=(0,o.useRef)(!1),tt=(0,o.useRef)("google_pay"),Ze=(0,o.useRef)("google_pay"),ze=(0,o.useRef)(null),He=(0,o.useRef)(null),Le=(0,o.useRef)(new Set),Et=(0,o.useRef)(null),zt=(0,o.useRef)(null);(0,o.useEffect)(()=>(Ye.current=!0,()=>{Ye.current=!1;for(let h of Le.current)window.clearTimeout(h);Le.current.clear()}),[]);let ft=(0,o.useRef)(new Map),{startAttempt:Ft,finishAttempt:q,invalidateAttempt:Pe,isAttemptInvalidated:st,isAttemptCurrent:W,generationRef:Ee}=fa((h,ve,j)=>{R?.(h,ve,{...j,popupBlocked:j?.popupBlocked??(0,Se.isPopupBlockedError)(ve),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),he(h),N(!0),Z(Y=>Y+1)},{onHandoffObserved:h=>{zt.current=Ee.current,A.markAvailable(),F?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Ee.current,...h==="apple_pay"||h==="google_pay"?{walletType:h}:{}})},defersMissingTerminal:Vl,onMissingTerminalDeferred:(h,ve)=>{let j=F?.now()??globalThis.performance?.now()??Date.now(),Y=Et.current,te=Y?.generation===ve?Y.startedAt:j;F?.performance({stage:"overlay_return",durationMs:Math.max(0,j-te),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:ve,...Vl(h)?{walletType:h}:{}}),F?.flush?.().catch(()=>{})}});(0,o.useEffect)(()=>{me&&xe.current?.focus()},[me,ke]);let nt=(0,o.useCallback)(()=>{Z(h=>h+1)},[]),Ke=(0,o.useCallback)((h,ve,j,Y,te=!1)=>{Pe(Y),R?.(h,ve,{code:j,popupBlocked:(0,Se.isPopupBlockedError)(ve),telemetryReported:te,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),he(h),N(!0),nt()},[Pe,R,nt]),Rt=(0,o.useCallback)(()=>{window.setTimeout(()=>{(we.current?.querySelector("iframe")??we.current)?.focus()},0)},[]);(0,o.useEffect)(()=>{Te.current&&(Te.current=!1,Rt())},[Rt,ke]);let qt=(0,o.useCallback)(()=>{N(!1),u?.(null),Rt()},[Rt,u]),b=(0,o.useCallback)(()=>{M.current?.()},[]);(0,o.useEffect)(()=>{let h=null,ve=()=>{h=null;let Y=(0,c.shouldPreferWalletPopup)();Y!==Fe.current&&(Fe.current=Y,Re(Y),!rt.current&&!W(Ee.current)&&nt())},j=()=>{h!==null&&window.clearTimeout(h),h=window.setTimeout(ve,qd)};return window.addEventListener("resize",j),()=>{window.removeEventListener("resize",j),h!==null&&window.clearTimeout(h)}},[Ee,W,nt]),(0,o.useEffect)(()=>{let h=ui(e,t);if(!h)return;let ve=!1,j=!1,Y=async()=>{if(!j){j=!0,ve||ye("checking");try{let te=await Ll(D,h.clientSecret,Le.current);if(ve)return;let k=ns(te,h.providerObjectId,(0,c.isSetupIntentClientSecret)(h.clientSecret));if(k.kind==="confirmed"){if(!Ol(e,t,h.clientSecret))return;M.current=null,ye("idle"),l({id:k.paymentMethodId,type:"card",threeDSecureActionResultTokenId:k.intentId},{...h.accountPatch?{accountPatch:h.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(k.kind==="terminal"){rs(e,t,h.clientSecret),M.current=null,ye("idle"),he(h.paymentMethodType),N(!0),nt();return}ye("blocked")}catch{ve||ye("blocked")}finally{j=!1}}};return M.current=Y,ye("blocked"),()=>{ve=!0,M.current===Y&&(M.current=null)}},[t,l,nt,e,D]);let L=(0,o.useCallback)(async h=>{let ve=!1,j=ot=>{ve||(ve=!0,h.paymentFailed({reason:"fail",...ot?{message:ot}:{}}))};if(!D||!ue){j();return}let Y=ft.current.get(ke);if(Y&&!W(Y.generation)){ft.current.delete(ke),j();return}if(!Y&&st()){j();return}if(Y&&!q(Y.generation)){j();return}Y||q();let te=h.expressPaymentType??Y?.method??tt.current,k=Y??null,Q=ql(te),be;te==="apple_pay"?be="apple_pay":te==="google_pay"&&(be="google_pay");let Be=Y?.generation??Ee.current,S=F,Bt=S?.now()??globalThis.performance?.now()??Date.now(),rr=new AbortController,sr=!1,Ht=!1,Kt=null,Lr=e,_r="processing",jt="other",Zr="provider_runtime",Gt,_n=new Promise((ot,dt)=>{Gt=dt}),Yt=window.setTimeout(()=>{sr=!0,rr.abort(),Gt(ci)},Pd),Qr=async(ot,dt,Vt)=>{_r=ot,jt=dt,Zr=dt==="intent_create"||dt==="session_claim"?"transport_error":"provider_runtime";let xr=S?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([Vt,_n])}finally{let Ar=S?.now()??globalThis.performance?.now()??Date.now();S?.performance({stage:ot,durationMs:Math.max(0,Ar-xr),durationMode:"machine",requestCategory:dt,paymentMethodCategory:"wallet",provider:"stripe",...sr?{statusClass:"timeout"}:{}})}};try{if(We(!0),u?.(null),!k&&w){let Ae=await Qr("processing","other",w(Q));if(!Ae.proceed){j();return}k={accountPatch:Ae.accountPatch,sessionId:Ae.sessionId,nonce:Ae.nonce}}let ot=k?.sessionId??e;Lr=ot;let dt=k?.nonce??t,Vt=ze.current??k?.accountPatch,xr=Yl({event:h,fallbackEmail:Vt?.email??r,fallbackName:[Vt?.firstName,Vt?.lastName].join(" ").trim()||x});if(!(0,c.isValidEmail)(xr.email)){j("Buyer details are required."),G(is(te),xr).then(Ae=>{Ae&&(ze.current=Ae)});return}ze.current=null;let Ar={...k?.accountPatch,...(0,sn.compactBuyerIdentity)(xr,!0)};await Qr("processing","session_claim",Promise.resolve(K?.(xr)));let{error:Fr}=await Qr("tokenization","provider_sdk",ue.submit());if(Fr){j(),Ke(te,Fr,"stripe_wallet_submit_failed",Y?.generation);return}if(!ot)throw new Error("Missing sessionId or email for payment.");let Rr={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:te,paymentMethodId:null,intentKind:a},Tr=JSON.stringify({sessionId:ot,nonce:dt??"",request:Rr}),gr=He.current,mr=gr?.retryIdentity===Tr?gr.authorizationAttemptId:(0,c.randomUuidV4)();He.current={authorizationAttemptId:mr,retryIdentity:Tr};let Xt=await Qr("processing","intent_create",pi(n,ee,ot,dt??"",{...Rr,authorizationAttemptId:mr},{signal:rr.signal}));if(Xt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Dt=Xt.clientSecret,hr=Rd({createdAt:Date.now(),sessionId:ot,...dt?{nonce:dt}:{},clientSecret:Dt,providerObjectId:Xt.providerObjectId,paymentMethodType:te,accountPatch:Ar});window.clearTimeout(Yt),Ht=!0,S?.performance({stage:"callback",durationMs:Math.max(0,(S?.now()??globalThis.performance?.now()??Date.now())-Bt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let Pr=S?.now()??globalThis.performance?.now()??Date.now(),De={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...be?{walletType:be}:{},attempt:Be},mn=!1,Nr=null;S?.log({name:"payment.provider_confirmation.started",...De}),Kt=window.setTimeout(()=>{Kt!==null&&Le.current.delete(Kt),mn=!0;let Ae=S?.now()??globalThis.performance?.now()??Date.now();S?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...De,operationOutcome:"watchdog_expired",durationMs:Math.max(0,Ae-Pr),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),S?.flush?.().catch(()=>{}),Nr?.()},vd),Le.current.add(Kt);let Tn=(Ae,xt)=>{Kt!==null&&(window.clearTimeout(Kt),Le.current.delete(Kt),Kt=null);let bt=S?.now()??globalThis.performance?.now()??Date.now(),At=Math.max(0,bt-Pr),Qe=Ae;mn&&(Ae==="resolved"?Qe="resolved_late":Ae==="returned_error"?Qe="returned_error_late":Qe="rejected_late");let Ur=xt??(Ae==="resolved"?"approved":"provider_error");return S?.log({name:"payment.provider_confirmation.returned",...De,operationOutcome:Qe,terminalReason:Ur}),S?.performance({...De,durationMs:At,durationMode:"buyer",operationOutcome:Qe,terminalReason:Ur}),{durationMs:At,operationOutcome:Qe,terminalReason:Ur}},lr=!1,Er=!1,Mn=Ae=>{if(!Ae||typeof Ae!="object")return null;let xt=Ae;if(xt.error)return null;let bt=xt.setupIntent??xt.paymentIntent,At=ns(bt??null,void 0,!!xt.setupIntent);return At.kind==="confirmed"?At:null},en=Ae=>{if(lr||Y&&Ee.current!==Y.generation)return;let xt=Mn(Ae);if(!xt)return;if(hr&&!Ol(ot,dt,Dt)){lr=!0;return}let{intentId:bt,paymentMethodId:At}=xt;lr=!0,Er=!0,He.current=null,M.current=null,Ye.current&&(ye("idle"),We(!1));let Qe=`${Hl}:${ot}`;ar(Qe,{createdAt:Date.now(),sessionId:ot,nonce:dt,accountPatch:Ar,paymentMethodId:At,providerIntentId:bt,paymentMethodType:te});try{l({id:At,type:"card",threeDSecureActionResultTokenId:bt},{accountPatch:Ar,paymentMethodCategory:"wallet",sessionId:ot,nonce:dt})}finally{ar(Qe)}},Jt=!1;Nr=async()=>{if(!(Jt||lr||Er)){Jt=!0,Ye.current&&ye("checking");try{let Ae=await Ll(D,Dt,Le.current);if(lr||Er)return;let xt=(0,c.isSetupIntentClientSecret)(Dt),bt=ns(Ae,Xt.providerObjectId,xt);if(bt.kind==="confirmed"){en(xt?{setupIntent:Ae}:{paymentIntent:Ae});return}if(bt.kind==="terminal"){if(Er=!0,rs(ot,dt,Dt),He.current=null,M.current=null,!Ye.current)return;ye("idle"),j(),Ke(te,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",Y?.generation,!0);return}Ye.current&&!Er&&(ye("blocked"),We(!1))}catch{Ye.current&&!Er&&(ye("blocked"),We(!1))}finally{Jt=!1}}},M.current=Nr;let g,It;try{let Ae=await((0,c.isSetupIntentClientSecret)(Dt)?D.confirmSetup({elements:ue,clientSecret:Dt,redirect:"if_required"}):D.confirmPayment({elements:ue,clientSecret:Dt,redirect:"if_required"}));if(!Ae||typeof Ae!="object")throw new Ea(kd(Ae));if(g=Ae,!g.error&&!Mn(g))throw new Ea("confirmation_result_unconfirmed");It=Tn(g.error?"returned_error":"resolved",g.error&&(0,Se.isProviderDecline)(g.error)?"provider_declined":void 0)}catch(Ae){let xt=Ae instanceof Ea?Ae.reason:void 0,bt=xt!==void 0,At=Tn(bt?"returned_error":"rejected");if(S?.error({...bt?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:xt}:Ki(Ae),...De,operationOutcome:At.operationOutcome,durationMs:At.durationMs,statusClass:"unknown",terminalReason:At.terminalReason}),!Ye.current||lr)return;await Nr?.();return}let se=g.error;if(se){if(!Ye.current||lr)return;if((0,Se.isProviderDecline)(se)){Er=!0,rs(ot,dt,Dt),He.current=null,M.current=null,ye("idle");let Ae=se.message??"Your payment was declined.";j(Ae),u?.(Ae),v?.(Cr(Q,Ae,{code:(0,Se.getProviderErrorCode)(se),declineCode:(0,Se.getProviderDeclineCode)(se)})),mi({billingApiUrl:n,sessionId:ot,nonce:dt,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:te,providerDeclineReason:(0,Se.getProviderErrorCode)(se)??"provider_declined",...Xt.intentKind==="payment"&&Xt.providerObjectId.startsWith("pi_")?{providerIntentId:Xt.providerObjectId}:{}}})}else S?.error({...Ki(se),...De,operationOutcome:It.operationOutcome,durationMs:It.durationMs,statusClass:"unknown",terminalReason:It.terminalReason}),await Nr?.();return}if(en(g),!lr)throw new Error("Invalid provider returned for APM intent")}catch(ot){if(ot===ci){let dt=S?.now()??globalThis.performance?.now()??Date.now();S?.error({errorCode:Id(jt),stage:_r,requestCategory:jt,paymentMethodCategory:"wallet",provider:"stripe",...be?{walletType:be}:{},operationOutcome:"watchdog_expired",checkoutSessionId:Lr,durationMs:Math.max(0,dt-Bt),statusClass:"timeout",failureCategory:Zr,attempt:Be,terminalReason:"provider_error"}),S?.flush?.().catch(()=>{})}j(),Ke(te,ot,ot===ci?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",Y?.generation,ot===ci)}finally{if(window.clearTimeout(Yt),Kt!==null&&(window.clearTimeout(Kt),Le.current.delete(Kt)),!Ht){let ot=S?.now()??globalThis.performance?.now()??Date.now();S?.performance({stage:"callback",durationMs:Math.max(0,ot-Bt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...sr?{statusClass:"timeout"}:{}})}Ye.current&&We(!1)}},[D,ue,e,t,r,x,G,K,n,ee,a,l,u,v,w,Ke,q,W,st,Ee,F,ke]),qe=(0,o.useMemo)(()=>oi(i),[i]),fe=(0,o.useMemo)(()=>i.map(c.stripeExpressMethodToOptionKey),[i]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(wa,{state:ne,placeholderTestId:"flopay-wallet-placeholder",borderRadius:V,children:(0,d.jsxs)("div",{ref:we,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[me&&(0,d.jsxs)("button",{ref:xe,type:"button","data-testid":"flopay-wallet-retry-button",onClick:qt,style:as,children:["Try ",is($e)," again"]}),H!=="idle"&&(0,d.jsxs)("div",{role:"status","aria-live":"polite",children:[(0,d.jsx)("p",{children:"We are still confirming your payment. Check its status before trying again."}),(0,d.jsx)("button",{type:"button",onClick:b,disabled:H==="checking",style:as,children:H==="checking"?"Checking payment status\u2026":"Check payment status"})]}),de&&(0,d.jsx)(zo,{identity:de.identity,methodLabel:de.methodLabel,onComplete:pt,onCancel:()=>pt(null)},de.id),H==="idle"&&(0,d.jsxs)("div",{style:{display:de?"none":void 0},children:[(0,d.jsx)(jd,{active:pe}),(0,d.jsx)(or.ExpressCheckoutElement,{onReady:h=>{_e(Sa(h,fe))},onLoadError:h=>{_e("load_error"),cs(F,"stripe","wallet","provider_error")},onClick:async h=>{let ve=F?.now()??globalThis.performance?.now()??Date.now();tt.current=h.expressPaymentType,Ze.current=ql(h.expressPaymentType);let j=!0,Y=window.setTimeout(()=>{j=!1,h.reject()},hd),te=w?await w(Ze.current):{proceed:!0};if(window.clearTimeout(Y),!j)return;if(!te.proceed){ft.current.delete(ke),h.reject();return}let k=Ft(h.expressPaymentType);Et.current={generation:k,startedAt:ve},ft.current.set(ke,{generation:k,method:h.expressPaymentType,accountPatch:te.accountPatch,sessionId:te.sessionId,nonce:te.nonce}),N(!1),F?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:k,...h.expressPaymentType==="apple_pay"||h.expressPaymentType==="google_pay"?{walletType:h.expressPaymentType}:{}}),p?.(Ze.current),h.resolve()},onConfirm:L,onCancel:()=>{let h=ft.current.get(ke);ft.current.delete(ke);let ve=Et.current,j=F?.now()??globalThis.performance?.now()??Date.now();if(h&&ve?.generation===h.generation&&(0,c.isWalletSheetRefusedForWindowSize)({method:h.method,elapsedMs:j-ve.startedAt,handoffObserved:zt.current===h.generation})){F?.error({errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",terminalReason:"provider_error",attempt:h.generation,walletType:"google_pay"}),He.current=null,Ke(h.method,new Error("The browser window is too small for the Google Pay sheet."),c.WALLET_SHEET_WINDOW_TOO_SMALL_CODE,h.generation,!0);return}F?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...h?{attempt:h.generation}:{}}),Pe(h?.generation),He.current=null,N(!1),Te.current=!0,nt()},options:{...ai,paymentMethods:qe,emailRequired:kt,billingAddressRequired:kt}},ke)]})]})}),ie&&(0,d.jsx)(Wr,{status:"processing"})]})}function Xl(e,t,r){let n=(0,c.resolveSetupFutureUsage)(r,t,"inline_apm");return{...e,paymentMethodTypes:[t],...n?{setupFutureUsage:n}:null}}function ss({method:e,sessionId:t,nonce:r,email:n,billingName:a,onBuyerIdentityReady:i,billingApiUrl:l,onTokenizedBody:u,onErrorChange:p,onDecline:v,onCancel:R,runBeforeButtonClick:w,onButtonClick:x,isProcessing:K,submitButtonColor:T,submitButtonBorderRadius:V,submitButtonStyle:A,errorText:f}){let P=Jn(),{emitInstrument:ee}=(0,o.useContext)(an),D=(0,or.useStripe)(),ue=(0,or.useElements)(),[F,ne]=(0,o.useState)(!1),_e=(0,o.useRef)(!1),[ie,We]=(0,o.useState)(!1),[kt,de]=(0,o.useState)("loading"),[G,pt]=(0,o.useState)(""),we=!(0,c.isValidEmail)(n?.trim()),xe=!we||(0,c.isValidEmail)(G.trim()),ke=(0,o.useCallback)(async()=>{if(!D||!ue||K||_e.current||!ie)return;_e.current=!0,ne(!0);let Z=w?await w("card"):{proceed:!0};if(!Z.proceed){_e.current=!1,ne(!1);return}x?.("card");let pe=Z.sessionId??t,Re=Z.nonce??r,Fe=(0,No.splitFullName)(a?.trim()),rt=(0,sn.compactBuyerIdentity)({email:Z.accountPatch?.email?.trim()||n?.trim()||G.trim(),firstName:Z.accountPatch?.firstName?.trim()||Fe.firstName,lastName:Z.accountPatch?.lastName?.trim()||Fe.lastName}),me=rt.email,N=(0,sn.compactBuyerIdentity)({...Z.accountPatch,...rt});try{if(p?.(null),!(0,c.isValidEmail)(me))throw new Error("A valid email address is required for payment.");await i?.(rt);let H=await ue.submit();if(H.error){p?.(H.error.message??"Payment failed.");return}let ye=[rt.firstName,rt.lastName].filter(Boolean).join(" "),$e=await D.createPaymentMethod({elements:ue,params:{billing_details:{email:me,...ye?{name:ye}:{}}}});if($e.error||!$e.paymentMethod){p?.($e.error?.message??"Failed to create payment method.");return}let he=$e.paymentMethod;if(!pe||!me)throw new Error("Missing sessionId or email for payment.");let M=he.type||e,Ye=await pi(l,ee,pe,Re??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:M,paymentMethodId:null,intentKind:"payment"});if(Ye.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Te=Ye.clientSecret;ar(jn,{clientSecret:Te,sessionId:pe,nonce:Re,accountPatch:N,paymentMethodId:he.id,paymentMethodType:he.type??e,gateway:"stripe"});let{error:tt,paymentIntent:Ze}=await D.confirmPayment({clientSecret:Te,confirmParams:{return_url:window.location.href,payment_method:he.id},redirect:"if_required"});if(tt){ar(jn);let Le=tt.message??"Payment failed.";p?.(Le),v?.(Cr("card",Le,{code:tt.code})),await mi({billingApiUrl:l,sessionId:pe,nonce:Re,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:tt.code??"provider_declined"}});return}let ze=Ze?.status;if(!ua(ze)){ar(jn);let Le=ze==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";p?.(Le),v?.(Cr("card",Le,{code:ze??"missing_payment_intent"}));return}ar(jn);let He=typeof Ze?.payment_method=="string"?Ze.payment_method:Ze?.payment_method?.id;u({id:He??he.id,type:"card",threeDSecureActionResultTokenId:Ze?.id,gateway:"stripe",paymentMethodType:he.type??e},{accountPatch:N,paymentMethodCategory:"apm",sessionId:pe,nonce:Re})}catch(H){p?.(H instanceof Error?H.message:"Payment failed. Please try again.")}finally{_e.current=!1,ne(!1)}},[D,ue,K,ie,w,x,t,r,n,a,G,i,l,ee,e,u,p,v]);return(0,d.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[we&&(0,d.jsx)("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:we&&(0,d.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,d.jsx)("input",{type:"email",autoComplete:"email",required:!0,value:G,onChange:Z=>pt(Z.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,d.jsx)(or.PaymentElement,{onReady:()=>de("ready"),onLoadError:()=>{de("load_error"),cs(Sr(P),"stripe","apm")},onChange:Z=>{We(!!Z.complete)},options:{layout:ii,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...a?.trim()?{name:a.trim()}:{},...(0,c.isValidEmail)(n?.trim())?{email:n?.trim()}:{}}}}}),(0,d.jsx)(si,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{ke()},disabled:!ie||!xe||F||K||kt!=="ready",color:T,borderRadius:V,style:A,children:F?"Processing\u2026":`Pay with ${(0,c.getStripeMethodDisplayName)(e)}`}),f&&(0,d.jsx)(Vo,{margin:"0.75rem 0 0",children:f})]})}function $l({sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:a,billingApiUrl:i,paymentElementMethods:l,stripeInstance:u,paymentElementBaseOptions:p,futureUseSession:v,onTokenizedBody:R,onErrorChange:w,onButtonClick:x,onDecline:K,runBeforeButtonClick:T,onLoadStateChange:V,isProcessing:A=!1,submitButtonColor:f="#4A49FF",submitButtonBorderRadius:P=8,submitButtonStyle:ee,buttonAppearance:D,themeId:ue,onExpandApm:F,expandedApmMethod:ne}){let{emitInstrument:_e}=(0,o.useContext)(an),[ie,We]=(0,o.useState)(null),[kt,de]=(0,o.useState)(null),G=(0,o.useRef)(!1),{request:pt,collect:we,finish:xe}=Uo();(0,o.useEffect)(()=>{l.length>0&&u?V?.("ready"):u||V?.("loading")},[l.length,u,V]);let ke=(0,o.useCallback)(async me=>{if(!u||G.current||A)return;G.current=!0,de(me);let N=T?await T("card"):{proceed:!0};if(!N.proceed){G.current=!1,de(null);return}x?.("card");let H=N.sessionId??e,ye=N.nonce??t,$e=(0,No.splitFullName)([N.accountPatch?.firstName,N.accountPatch?.lastName].filter(Boolean).join(" ")||n),he=(0,sn.compactBuyerIdentity)({email:N.accountPatch?.email?.trim()||r?.trim(),firstName:N.accountPatch?.firstName?.trim()||$e.firstName,lastName:N.accountPatch?.lastName?.trim()||$e.lastName});if(!(0,c.isValidEmail)(he.email)){de(null);let Te=await we((0,c.getStripeMethodDisplayName)(me),he);if(!Te){G.current=!1;return}he=Te,de(me)}let M=he.email,Ye=(0,sn.compactBuyerIdentity)({...N.accountPatch,...he});try{if(w?.(null),!H||!(0,c.isValidEmail)(M))throw new Error("Missing sessionId or email for payment.");await a?.(he);let Te=await pi(i,_e,H,ye??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:me,paymentMethodId:null,intentKind:"payment"});if(Te.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let tt=Te.clientSecret;ar(jn,{clientSecret:tt,sessionId:H,nonce:ye,accountPatch:Ye,paymentMethodType:me,gateway:"stripe"});let{error:Ze,paymentIntent:ze}=await u.confirmPayment({clientSecret:tt,confirmParams:{return_url:window.location.href,payment_method_data:{type:me,billing_details:{name:[he.firstName,he.lastName].filter(Boolean).join(" "),...M?{email:M}:{}}}},redirect:"if_required"});if(Ze){ar(jn);let Et=Ze.message??"Payment failed.";w?.(Et),K?.(Cr("card",Et,{code:Ze.code})),await mi({billingApiUrl:i,sessionId:H,nonce:ye,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:me,providerDeclineReason:Ze.code??"provider_declined"}});return}let He=ze?.status;if(!ua(He)){ar(jn);let Et=He==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";w?.(Et),K?.(Cr("card",Et,{code:He??"missing_payment_intent"}));return}ar(jn);let Le=typeof ze?.payment_method=="string"?ze.payment_method:ze?.payment_method?.id;R({id:Le??ze?.id,type:"card",threeDSecureActionResultTokenId:ze?.id,gateway:"stripe",paymentMethodType:me},{accountPatch:Ye,paymentMethodCategory:"apm",sessionId:H,nonce:ye})}catch(Te){w?.(Te instanceof Error?Te.message:"Payment failed. Please try again.")}finally{G.current=!1,de(null)}},[u,A,T,x,e,t,r,we,i,_e,n,a,R,w,K]),[Z,pe]=(0,o.useState)(null),Re=F?ne??null:Z,Fe=(0,o.useCallback)(me=>{G.current||A||Re&&Re!==me||((0,c.needsStripeMethodExplicitConfirm)(me)?F?F(me):pe(me):ke(me))},[Re,A,ke,F]),rt=(0,o.useMemo)(()=>Z?Xl(p,Z,v):null,[Z,p,v]);return(0,d.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:pt?(0,d.jsx)(zo,{identity:pt.identity,methodLabel:pt.methodLabel,onComplete:xe,onCancel:()=>xe(null)},pt.id):l.map(me=>{let N=ne===me,H=kt===me,ye=kt!==null&&kt!==me||ne!=null&&ne!==me;return(0,d.jsxs)(o.default.Fragment,{children:[(0,d.jsx)(ni,{method:me,themeId:ue,submitting:H,disabled:ye,highlighted:N,hasNextStep:(0,c.needsStripeMethodExplicitConfirm)(me),onClick:()=>Fe(me),backgroundColor:D?.backgroundColor,borderColor:D?.borderColor,textColor:D?.textColor,borderRadius:D?.borderRadius,fontFamily:D?.fontFamily}),!F&&Z===me&&rt&&u&&(0,d.jsx)(or.Elements,{stripe:u,options:rt,children:(0,d.jsx)(ss,{method:me,sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:a,billingApiUrl:i,onTokenizedBody:R,onErrorChange:w,onDecline:K,onCancel:()=>pe(null),runBeforeButtonClick:T,onButtonClick:x,isProcessing:A,submitButtonColor:f,submitButtonBorderRadius:P,submitButtonStyle:ee})},me)]},me)})})}function Vd({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,email:a,userId:i,onComplete:l,onError:u,onDecline:p,onTokenizedBody:v,firstName:R,lastName:w,chv:x,className:K,submitLabel:T,isProcessing:V,error:A,onErrorChange:f,showPayPal:P=!0,showStripe:ee=!0,walletPresentation:D="auto",enabledPaymentMethods:ue,enabledPaymentMethodCountries:F,showApplePay:ne=!0,showGooglePay:_e=!0,layout:ie="default",theme:We,buttonsTheme:kt,buttonsStyles:de,appearance:G,cardButtonContent:pt,cardBackButtonContent:we,cardTitleContent:xe,showSecurityFooter:ke,onButtonClick:Z,onBeforeButtonClick:pe,onBuyerIdentityReady:Re,enableAVS:Fe,cardFieldOrder:rt,cardPreFormSlot:me,avsLayout:N="row",country:H,zip:ye,addressLine1:$e,addressLine2:he,city:M,state:Ye,onCountryChange:Te,onZipChange:tt,avsCheck:Ze,checkoutType:ze,checkoutLayout:He,totalAmount:Le=0,currency:Et="usd",initialCardOpen:zt=!1,directPaypal:ft,isSubscription:Ft=!1,session:q,dataAttachmentPending:Pe=!1,dataAttachmentRequiresIdentity:st=!1,debug:W=!1}){let Ee=Jn(),nt=Ka(),Ke=(0,o.useContext)(wn),{emitInstrument:Rt}=(0,o.useContext)(an),qt=(0,o.useRef)(null);qt.current||(qt.current=Ya());let b=qt.current,[,L]=(0,o.useState)(0),qe=(0,o.useRef)(null);qe.current||(qe.current=(0,Un.detectPayPalEnvironment)());let fe=qe.current,h=(0,o.useMemo)(()=>({browser:fe,capability:b,presentationMode:"popup"}),[fe,b]),ve=q??Ke.session,j=(0,o.useMemo)(()=>({futureUse:ve?.futureUse,futureUseUnsupported:ve?.futureUseUnsupported}),[ve?.futureUse,ve?.futureUseUnsupported]),Y=ve?.gateways?.paypal?.providerObjectType??ft?.providerObjectType,te=Pe||Ke.claimPending===!0,k=st||Ke.claimRequiresIdentity===!0,Q=te&&!k,be=bl(),Be=r||be,[S,Bt]=(0,o.useState)(!1),[rr,sr]=(0,o.useState)(null),[Ht,Kt]=(0,o.useState)(H??""),[Lr,_r]=(0,o.useState)(ye??""),[jt,Zr]=(0,o.useState)($e??""),[Gt,_n]=(0,o.useState)(he??""),[Yt,Qr]=(0,o.useState)(M??""),[ot,dt]=(0,o.useState)(Ye??""),[Vt,xr]=(0,o.useState)(""),[Ar,Fr]=(0,o.useState)({}),Rr=(0,o.useRef)(ye??""),Tr=(0,o.useRef)(H??""),gr=(0,o.useRef)($e??""),mr=(0,o.useRef)(he??""),Xt=(0,o.useRef)(M??""),Dt=(0,o.useRef)(Ye??""),hr=(0,o.useRef)(""),Pr=(0,o.useRef)({});(0,o.useEffect)(()=>{let s=(E,ae,je,re,Ie)=>{if(Pr.current[E])return;let Lt=ae?.trim();!Lt||Lt===je.current||(je.current=Lt,re(Lt),Ie?.(Lt))};s("country",H,Tr,Kt,Te),s("zip",ye,Rr,_r,tt),s("addressLine1",$e,gr,Zr),s("addressLine2",he,mr,_n),s("city",M,Xt,Qr),s("state",Ye,Dt,dt)},[H,ye,$e,he,M,Ye,Te,tt]);let De=(0,o.useMemo)(()=>(0,c.resolveAVSConfig)(Fe),[Fe]),mn=De!==null,Nr=(0,o.useMemo)(()=>(0,c.isAuthorizationOnlySession)(q),[q]),Tn=(0,c.isMountableVaultBlock)(q?.vault),lr=!!q?.gateways?.pcivault,Er=(0,Sn.hasServerSideCardGateway)(q),en=!!(q?.gateways?.stripe?.enabledPaymentMethods??ue)?.includes("card")||(0,Sn.canRecoverHostedCardForm)(q),Jt=Tn||en||lr,g=!!(ee&&Jt&&e),[It,se]=(0,o.useState)(()=>ie!=="buttons"||zt?e??null:null),[Ae,xt]=(0,o.useState)(0),bt=ie!=="buttons"||zt||!!e&&It===e,At=q?.captureMethod,Qe=(0,o.useRef)(Ee);(0,o.useEffect)(()=>{Qe.current=Ee},[Ee]);let[Ur,ro]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!g||!e||!bt){ro(null);return}let s=Qe.current?Qe.current.cardCapture({sessionId:e,captureMethod:At}):new In.PciVaultCardCapture({sessionId:e,captureMethod:At,billingApiUrl:Be,telemetry:n});return ro({sessionId:e,captureMethod:At,billingApiUrl:Be,telemetry:n,capture:s}),()=>{s.unmount()}},[g,e,bt,At,Be,n]);let Ot=g&&e&&bt&&Ur?.sessionId===e&&Ur.captureMethod===At&&Ur.billingApiUrl===Be&&Ur.telemetry===n?Ur.capture:null,Hr=(0,o.useMemo)(()=>{let s=Ht,E=De?(0,c.isAVSFieldVisible)(De.postal_code,s):!1;return Nd(s,Lr,E)},[De,Ht,Lr]),{avsInvalid:yn,invalidAvsFields:fn}=(0,o.useMemo)(()=>{let s={line1:!1,city:!1,state:!1,zip:!1};if(!g||!De)return{avsInvalid:!1,invalidAvsFields:s};let E=Ht,ae=(Ie,Lt)=>(0,c.isAVSFieldVisible)(Ie,E)&&!Lt.trim(),je={line1:ae(De.address_line_1,jt),city:ae(De.city,Yt),state:ae(De.state,ot),zip:Hr.empty||Hr.malformed};return{avsInvalid:je.line1||je.city||je.state||je.zip,invalidAvsFields:je}},[g,De,Ht,jt,Yt,ot,Hr]),[Zt,xn]=(0,o.useState)(!1),[An,zr]=(0,o.useState)(!1),[Fn,tn]=(0,o.useState)(!1),[Bn,$n]=(0,o.useState)({line1:!1,city:!1,state:!1}),Kr=(0,o.useRef)(!1),gn=(0,o.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),hn=(0,o.useRef)(!1),Nt=(0,o.useCallback)(s=>{gn.current[s]=!0,hn.current=!0},[]),Gr=(0,o.useCallback)(s=>!Kr.current&&gn.current[s],[]),Br=(0,o.useCallback)(s=>{Gr(s)&&$n(E=>E[s]?E:{...E,[s]:!0})},[Gr]),[Pn,vn]=(0,o.useState)(()=>(0,c.resolveVaultMountOptions)(q?.vault,{billingApiUrl:Be,sessionId:e,nonce:t})),[Ct,cr]=(0,o.useState)(zt&&Jt?"card":"buttons"),[vr,qr]=(0,o.useState)(null),no=Ct==="expanding"||Ct==="card",Dn=q?.gateways?.stripe&&!Er?"stripe":void 0,Hn=(0,o.useCallback)(()=>{Rt?.({class:"card_surface",provider:Dn})},[Dn,Rt]),rn=(0,o.useRef)(null),dr=(0,o.useCallback)(s=>{rn.current&&clearTimeout(rn.current),rn.current=setTimeout(()=>{rn.current=null,s()},Ia)},[]);(0,o.useEffect)(()=>()=>{rn.current&&clearTimeout(rn.current)},[]);let oo=(0,o.useRef)(!1),[yr,z]=(0,o.useState)(0),O=(0,o.useRef)(null),le=(0,o.useCallback)(()=>{Hn(),se(e??null),oo.current&&(oo.current=!1,z(s=>s+1)),xt(s=>s+1),cr("expanding"),dr(()=>cr("card"))},[dr,Hn,e]),ge=(0,o.useCallback)(()=>{cr("collapsing"),dr(()=>cr("buttons"))},[dr]),_t=(0,o.useCallback)(s=>{qr(s),cr("apm-expanding"),dr(()=>cr("apm-form"))},[dr]),Qt=(0,o.useCallback)(()=>{cr("apm-collapsing"),dr(()=>{cr("buttons"),qr(null)})},[dr]);(0,o.useEffect)(()=>{ie==="buttons"&&zt&&Jt&&(se(e??null),cr("card"))},[ie,zt,Jt,e]);let[Ne,X]=(0,o.useState)(null),J=(0,o.useRef)(!1),$=(0,o.useRef)(null),m=(0,o.useRef)("idle"),[y,I]=(0,o.useState)(!1),ce=(0,o.useRef)(y);ce.current=y;let[Oe,Xe]=(0,o.useState)(()=>ft?.existingOrderId?{orderId:ft.existingOrderId,attempts:1}:null),er=(0,o.useRef)(Oe);(0,o.useEffect)(()=>{er.current=Oe},[Oe]);let Me=(0,o.useRef)(null),et=(0,o.useMemo)(()=>{if(Re||Ke.claimBuyerIdentity||q?.buyerIdentified!==!1||!e||!t)return;let s=`${Be}|${e}|${t}`;Me.current?.key!==s&&(Me.current={key:s,claim:Oo(new In.PaymentAPI(Be,{telemetry:!1}),e,t,{...i?{userId:i}:{},...R?{firstName:R}:{},...w?{lastName:w}:{}})});let E=Me.current.claim;return async ae=>{await E(ae)}},[Re,Ke.claimBuyerIdentity,q?.buyerIdentified,e,t,Be,i,R,w]),lt=Re??Ke.claimBuyerIdentity??et,St=A??rr,Ce=(0,o.useMemo)(()=>(0,c.resolveTheme)(We),[We]),U=(0,o.useMemo)(()=>{let s=Ce?.buttonsLayout??(0,c.resolveButtonsLayoutTheme)(kt);return de?{...s,...de,cardButton:{...s.cardButton,...de.cardButton},cardFormContainer:{...s.cardFormContainer,...de.cardFormContainer},backButton:{...s.backButton,...de.backButton},backButtonIcon:{...s.backButtonIcon,...de.backButtonIcon},submitButton:{...s.submitButton,...de.submitButton},title:{...s.title,...de.title}}:s},[Ce,kt,de]),oe=G??Ce?.appearance,gt=(0,o.useMemo)(()=>(0,c.computeVaultCardThemeColors)({appearance:oe,buttonsStyles:U,layout:ie}),[oe,U,ie]),Ge=Ke.inlineSessionPatchProcessing??!1,at=(V??S)||Ge,Tt=Be.replace(/\/+$/,""),vt=(0,o.useMemo)(()=>Hi({userId:i,email:a,firstName:R,lastName:w,country:H,zip:ye},Ar),[i,a,R,w,H,ye,Ar]),So=[vt.firstName,vt.lastName].filter(s=>!!s?.trim()).join(" "),Ss=!(0,c.isValidEmail)(vt.email?.trim()),wi=(0,o.useRef)(null);g&&wi.current===null&&(wi.current=Ss);let ao=g&&(wi.current??Ss),ki=(0,o.useMemo)(()=>Ud(Vt,ao),[Vt,ao]),wo=ki.empty||ki.malformed,Yr=(0,o.useMemo)(()=>Ee?Ee.getRawProvider():null,[Ee]),ws=(0,o.useMemo)(()=>nt?nt.getRawProvider():null,[nt]),Zo=Le||100,ko=Et.toLowerCase(),Ri=(0,o.useMemo)(()=>oe?(0,In.toStripeAppearance)(oe):null,[oe]),Ro=Ri,ks=(0,o.useMemo)(()=>{let s=Ri??{},E=s.rules??{};return{...s,rules:{...E,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...E[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...E[".AccordionItemContents"]??{}}}}},[Ri]),Rs=(0,o.useMemo)(()=>({...hl(Le,ve?.captureMethod,j),currency:ko,...Ro?{appearance:Ro}:null}),[Le,ko,ve?.captureMethod,j,Ro]),Ei=(0,c.resolveSetupFutureUsage)(j,"paypal","paypal"),Es=(0,o.useMemo)(()=>({mode:"payment",amount:Zo,currency:ko,captureMethod:"manual",...Ei?{setupFutureUsage:Ei}:null,...Ro?{appearance:Ro}:null}),[Zo,ko,Ei,Ro]),Ue=(0,o.useCallback)(s=>{sr(s),f?.(s)},[f]),Is=(0,o.useRef)(0);(0,o.useEffect)(()=>{yr!==Is.current&&(Is.current=yr,Ue(null))},[yr,Ue]);let Ii=(0,o.useRef)(""),[_s,vc]=(0,o.useState)(!1),_i=(0,o.useCallback)(()=>{vc(!0)},[]);(0,o.useEffect)(()=>{if(!g||!ao||!lt||!_s||wo||Ii.current)return;let s=(0,sn.compactBuyerIdentity)({email:(0,c.isValidEmail)(vt.email?.trim())?vt.email?.trim():hr.current.trim(),firstName:vt.firstName?.trim(),lastName:vt.lastName?.trim()});Ii.current=JSON.stringify(s),Fr(E=>({...E,...s})),Promise.resolve(lt(s)).catch(E=>{Ii.current="",Ue(E instanceof Error?E.message:"Failed to attach buyer details.")})},[g,ao,lt,_s,wo,vt.email,vt.firstName,vt.lastName,Ue]),(0,o.useEffect)(()=>{!g||!Ot||Ot.setCardFieldOrder?.(rt??null,De==null&&!ao)},[g,Ot,rt,De,ao]),(0,o.useEffect)(()=>{(Ct==="expanding"||Ct==="collapsing"||Ct==="apm-expanding"||Ct==="apm-collapsing")&&Ue(null)},[Ct,Ue]);let On=(0,o.useCallback)((s,E,ae)=>{p?.(Cr(s,E,ae))},[p]),Eo=(0,o.useCallback)((s,E,ae)=>{let je=ae?.popupBlocked??(0,Se.isPopupBlockedError)(E);je&&b.markBlocked()&&L(wt=>wt+1);let re=is(s),Ie=ae?.code===c.WALLET_SHEET_WINDOW_TOO_SMALL_CODE?(0,c.buildWalletSheetWindowMessage)(re):(0,Se.buildExternalMethodRecoveryMessage)(re,je,fe.inAppBrowser),Lt=(0,Se.getProviderErrorCode)(E),on=(Lt?.toLowerCase()==="error"?void 0:Lt)??(0,Se.sanitizeExternalFailureCode)(ae?.code)??"external_payment_method_failed",ht=new c.FloPayError(Ie,"api_error",{code:"external_payment_method_failed",param:s,details:{providerCode:on,popupBlocked:je,inAppBrowser:fe.inAppBrowser,appFamily:fe.appFamily,popupCapability:b.current(),presentationMode:ae?.presentationMode??"popup"}});ae?.telemetryReported||Sr(Ee)?.error(Ko({...h,presentationMode:ae?.presentationMode??"popup"},{errorCode:je?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:ae?.provider??(s==="paypal"?"paypal":"stripe"),paymentMethodCategory:ae?.paymentMethodCategory??(s==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:ae?.terminalReason??(je?"popup_blocked":"provider_error")})),X(null),ie==="buttons"&&(cr("buttons"),qr(null)),Ue(Ie),u?.(ht),console.error("[FloPay] External payment method failed:",{method:s,code:on,popupBlocked:je})},[fe,h,Ee,ie,u,b,Ue]);(0,o.useEffect)(()=>{if(!g||!e){vn(null);return}let s={billingApiUrl:Tt,sessionId:e,nonce:t},E=(0,c.resolveVaultMountOptions)(q?.vault,s);if(E){vn(E);return}if(!bt){vn(null);return}let ae=`${Tt}\0${e}\0${t??""}`,je=O.current;if(je&&je.key===ae){vn(je.mount);return}vn(null);let re=!0;return new In.PaymentAPI(Tt).getVaultCapture(e,t).then(Ie=>{if(!re)return;let Lt=(0,c.resolveVaultMountOptions)(Ie,s);Lt?.verificationRequired&&!Ie.html&&(O.current={key:ae,mount:Lt}),Lt?vn(Lt):Ue("Failed to load the secure card form.")}).catch(Ie=>{re&&Ue(Ie instanceof Error?Ie.message:"Failed to load the secure card form.")}),()=>{re=!1}},[g,bt,Ae,e,q?.vault,Tt,t,Ue]);let bn=(0,o.useRef)({onComplete:l,onError:u,updateError:Ue,emitDecline:On,resolvedAccount:vt,avsConfig:De,avsCheckProp:Ze,sessionId:e,nonce:t,baseUrl:Tt,captureMethod:q?.captureMethod,paymentId:q?.paymentId,authorizationExpiresAt:q?.authorizationExpiresAt,serverSideCardGateway:Er});bn.current={onComplete:l,onError:u,updateError:Ue,emitDecline:On,resolvedAccount:vt,avsConfig:De,avsCheckProp:Ze,sessionId:e,nonce:t,baseUrl:Tt,captureMethod:q?.captureMethod,paymentId:q?.paymentId,authorizationExpiresAt:q?.authorizationExpiresAt,serverSideCardGateway:Er};let Ti=(0,o.useRef)(!1),Ts=(0,o.useCallback)(()=>{let s=bn.current,E=s.resolvedAccount.email?.trim(),ae=(0,c.isValidEmail)(E)?E:hr.current.trim();if(!(0,c.isValidEmail)(ae))return null;let je=s.resolvedAccount.firstName?.trim(),re=s.resolvedAccount.lastName?.trim(),Ie=Tr.current.trim()||s.resolvedAccount.country?.trim()||"",Lt=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.state,Ie):!1,on=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.address_line_1,Ie):!1,ht=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.postal_code,Ie):!1,wt=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.city,Ie):!1,Mt=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.address_line_2,Ie):!1,Wt=on&&!Lt&&ht?(0,c.getStateFromPostalCode)(Ie,(Rr.current??"").trim()):null,yo=Lt?Dt.current:Wt;return{accountData:{userId:s.resolvedAccount.userId??"",email:ae,...je?{firstName:je}:{},...re?{lastName:re}:{},...ht&&Rr.current?{zip:Rr.current}:{},...wt&&Xt.current?{city:Xt.current}:{},...yo?{state:yo}:{},...on&&gr.current?{addressLine1:gr.current}:{},...Mt&&mr.current?{addressLine2:mr.current}:{},...Ie?{country:Ie}:{}},...s.avsCheckProp===void 0?{}:{avsCheck:s.avsCheckProp},...s.avsConfig?{avsConfig:{country:(0,c.isAVSFieldVisible)(s.avsConfig.country,Ie),postal_code:ht,address_line_1:on,address_line_2:Mt,city:wt,state:Lt}}:{}}},[]),Ms=(0,o.useRef)(te);Ms.current=te,(0,o.useEffect)(()=>{te||St!==Nl||bn.current.updateError(null)},[te,St]),(0,o.useEffect)(()=>{!g||!Ot||Ot.setSubmitGate?.(yn||te||wo||y)},[g,Ot,yn,te,wo,y]),(0,o.useEffect)(()=>{if(!g||!Ot)return;Ti.current=!1;let s=null,E=()=>{s&&clearTimeout(s),s=setTimeout(()=>{s=null,m.current="idle",X(null)},400)},ae=Ot.on("submitting",()=>{xn(!0),$.current&&clearTimeout($.current),m.current="validation-window",$.current=setTimeout(()=>{$.current=null,m.current==="validation-window"&&(m.current="processing")},_d),X("processing");let ht=bn.current;if(!ht.sessionId||!ht.nonce)return;let wt=Ts();if(!wt){ht.updateError("Enter a valid email address."),m.current="idle",X(null);return}new In.PaymentAPI(ht.baseUrl).patchAccountSnapshot(ht.sessionId,ht.nonce,wt,{telemetryMode:"best_effort"}).catch(Mt=>{if(!Md(Mt))return;let Wt=Mt instanceof Error?Mt.message:"Please check your billing address and try again.";ht.updateError(Wt),m.current="idle",X(null),ht.onError?.(Mt instanceof c.FloPayError?Mt:new c.FloPayError(Wt,"api_error"))})}),je=Ot.on("complete",ht=>{(0,Rn.markSessionRecentlyCompleted)(ht.sessionId??bn.current.sessionId),m.current="terminal",I(!1),X("success"),setTimeout(()=>{if(Ti.current)return;Ti.current=!0;let wt=bn.current,Mt=(0,c.isAuthorizationOnlySession)(wt)||ht.outcome==="authorized",Wt=wt.serverSideCardGateway?{}:{paymentIntentId:ht.intentId};bn.current.onComplete?.(Mt?{status:"authorized",...Wt,paymentId:ht.paymentId??wt.paymentId,sessionId:ht.sessionId??wt.sessionId,authorizationExpiresAt:ht.authorizationExpiresAt??wt.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Wt,checkoutMethod:"card"})},600)}),re=Ot.on("decline",ht=>{let wt=bn.current,Mt=ht.message??"Your payment was declined. Please try another card or contact your bank.";m.current="terminal",I(!1),wt.updateError(Mt),X("error");let Wt=ht.failureOutcome??(0,c.normalizeCheckoutFailureOutcome)(ht.declineReason)??"authorization_declined";wt.emitDecline("card",Mt,{code:Wt,declineCode:Wt}),E()}),Ie=Ot.on("error",ht=>{let wt=bn.current,Mt=ht.message??"There was a problem processing your payment. Please try again.";m.current="terminal",I(!1),wt.updateError(Mt),X("error"),wt.onError?.(new c.FloPayError(Mt,"api_error",{code:ht.failureOutcome??"capture_failed"})),E()}),Lt=Ot.on("challenge_dismissed",()=>{$.current&&(clearTimeout($.current),$.current=null),m.current="processing",I(!0),X(null)}),on=Ot.on("blocked",()=>{if(ce.current){bn.current.updateError(Td);return}if(!Ms.current){xn(!0);return}_i(),bn.current.updateError(Nl)});return()=>{s&&(clearTimeout(s),s=null),$.current&&(clearTimeout($.current),$.current=null),m.current="idle",I(!1),X(null),ae(),je(),re(),Ie(),Lt(),on()}},[g,Ot,_i,Ts]);let Ln=!!ft?.clientId,Qo=Array.isArray(ue),Aa=Qo&&ue.length>0,xs=Qo&&ue.includes("paypal"),Fa=(0,o.useRef)(null);Fa.current===null&&(Fa.current=(0,c.hasMatchingStripePayPalReturn)());let Io=Fa.current?"redirect":(0,zn.resolveStripePayPalPresentation)(fe,D,b.current()),{expressMethods:Ba,paymentElementMethods:Mi}=(0,o.useMemo)(()=>(0,c.partitionStripeMethods)(ue,{excludePaypal:Ln}),[ue,Ln]),As=Ln||!!nt||xs&&Io==="redirect",bc=(0,o.useMemo)(()=>As?Ba.filter(s=>s!=="paypal"):Ba,[Ba,As]),Cc=(0,o.useMemo)(()=>{let s=[];return ne&&s.push("apple_pay"),_e&&s.push("google_pay"),s},[ne,_e]),_o=Qo?bc:Cc,Sc=ee&&_o.length>0,Fs=mn?Ht:H,Da=(0,o.useMemo)(()=>(0,c.filterStripeMethodsByCountryGate)(Mi,Fs,F),[Mi,Fs,F]),xi=(0,o.useMemo)(()=>({mode:"payment",amount:Zo,currency:ko,paymentMethodCreation:"manual",appearance:ks}),[Zo,ko,ks]),[Bs,Ds]=(0,o.useState)("loading"),[Os,Ls]=(0,o.useState)("loading"),[Ns,Us]=(0,o.useState)("loading"),[wc,Ai]=(0,o.useState)(!1),[zs,Fi]=(0,o.useState)("loading"),[Bi,kc]=(0,o.useState)();(0,o.useEffect)(()=>{kc((0,Un.detectPayPalEnvironment)())},[]);let Oa=Bi?.inAppBrowser,La=Bi?(0,zn.resolvePayPalPresentationMode)(Bi,ft?.approvalPresentation,Y??(Ft?"subscription":"order")):"popup",qs=P&&(Ln||(Qo?xs:Oa===!1)),js=ee&&Sc,ea=(!Q||!!Ke.waitForDataAttachment)&&qs&&Ln,Vs=zs==="retrying"||zs==="exhausted",ta=null;ee&&(nt?ta=ws:Io==="redirect"&&(ta=Yr));let Ws=(0,o.useMemo)(()=>({...h,presentationMode:Io}),[h,Io]),ra=!Q&&qs&&!!ta&&(!Ln||Vs),To=!Q&&js&&!!Yr,na=!Q&&ee&&Aa&&Da.length>0&&!!Yr,Rc=ea&&!Vs?wc:ra&&es(Bs),Ec=To&&es(Os),Ic=na&&Ns!=="load_error",$s=s=>s==="loading"||s==="ready",Hs=ea||ra&&$s(Bs)||To&&$s(Os)||na&&Ns!=="load_error",Na=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!Na.current){if(!ee&&!P){Na.current=!0;let s=new c.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");u?.(s),Ue(s.message)}else if(!ee&&P&&!Ln){Na.current=!0;let s=new c.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");u?.(s),Ue(s.message)}else if(Oa!==void 0&&!Q&&!Jt&&!Hs){Na.current=!0;let s=new c.FloPayError("FloPay: this checkout session has no vault card capability and no usable supported non-card payment methods. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});u?.(s),Ue(s.message)}}},[ee,P,Ln,Oa,Q,Jt,Hs,u,Ue]);let Ks=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(Ks.current||!Aa)return;let s=[];ne!==!0&&s.push("showApplePay"),_e!==!0&&s.push("showGooglePay"),s.length!==0&&(Ks.current=!0,console.warn(`[FloPay] ${s.join(" / ")} ${s.length===1?"is":"are"} deprecated: the Apple Pay / Google Pay surface is now driven by \`gateways.stripe.enabledPaymentMethods\` on the session response. Remove the legacy prop(s) to silence this warning.`))},[Aa,ne,_e]);let Gs=(0,o.useCallback)((s,E)=>Ke.applyInlineSessionPatch?Ke.applyInlineSessionPatch(s).then(ae=>({error:null,sessionId:ae.sessionId||e,nonce:ae.session?.clientSecret||t})).catch(ae=>{let je=(0,c.normalizeBeforeButtonClickError)(E,ae);return Ue(je.message),u?.(je),{error:je,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ke.applyInlineSessionPatch,t,u,e,Ue]),Cn=(0,o.useCallback)(async s=>{if(s!=="card"&&Q&&await Ke.waitForDataAttachment?.(),!pe)return{proceed:!0};try{let E=await pe({method:s,sessionId:e||void 0,createSession:Ke.inlineSessionDraft});if(E===!1)return{proceed:!1};if(E&&typeof E=="object"){E.account&&Fr(je=>({...je??{},...E.account}));let ae=await Gs(E,s);return ae.error?{proceed:!1,accountPatch:E.account}:{proceed:!0,accountPatch:E.account,sessionId:ae.sessionId,nonce:ae.nonce}}return{proceed:!0}}catch(E){let ae=(0,c.normalizeBeforeButtonClickError)(s,E);return Ue(ae.message),u?.(ae),{proceed:!1}}},[Gs,Ke.inlineSessionDraft,Ke.waitForDataAttachment,Q,pe,u,e,Ue]),Ys=(0,o.useCallback)(async(s,E)=>{if(J.current)return;J.current=!0,Bt(!0),X("processing"),Ue(null);let ae=E?.sessionId??e,je=E?.nonce??t,re=Hi(vt,E?.accountPatch),Ie=E?.completionPaymentMethodId??pa(s),Lt=s.originalPaymentMethodId?{...s,originalPaymentMethodId:void 0}:s,on=Bd(s),ht=E?.presentationMode?ri(Sr(Ee),{...h,presentationMode:E.presentationMode}):void 0,wt=()=>{Rt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:on}),ht?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...En,requestCategory:"process_payment"})};try{let Mt=new In.PaymentAPI(Tt),Wt=await Mt.processPayment(re.userId??"",{sessionId:ae,nonce:je,paymentMethodCategory:E?.paymentMethodCategory??Od(s),tokenizedData:Lt,accountData:{...E?.accountPatch,userId:re.userId??"",email:re.email??"",firstName:re.firstName||void 0,lastName:re.lastName||void 0,...(0,c.buildProcessPaymentAvsAccount)({avsConfig:De,country:Tr.current,zip:Rr.current,city:Xt.current,state:Dt.current,addressLine1:gr.current,addressLine2:mr.current})},...(0,c.buildCheckoutProcessMetadata)({chv:x,avsCheck:Ze,checkoutType:ze,checkoutLayout:He,avsConfig:De,country:Tr.current})}),yo=async br=>{let fo=(0,c.isAuthorizationOnlySession)(q)||br?.status==="authorized";(0,Rn.markSessionRecentlyCompleted)(ae),ht?.terminal({outcome:"payment_succeeded",...En}),X("success"),Xe(null),await new Promise(ca=>setTimeout(ca,600));let Nn;typeof br?.paymentId=="string"?Nn=br.paymentId:q?.paymentId&&(Nn=q.paymentId);let go;typeof br?.authorizationExpiresAt=="string"?go=br.authorizationExpiresAt:q?.authorizationExpiresAt&&(go=q.authorizationExpiresAt),l?.(fo?{status:"authorized",...Nn===void 0?{}:{paymentId:Nn},sessionId:typeof br?.sessionId=="string"?br.sessionId:ae,...go===void 0?{}:{authorizationExpiresAt:go},paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:Ie,checkoutMethod:s.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:Ie,checkoutMethod:s.isPaypal?"paypal":"card"})};if(Wt.ok){await yo(Wt.status===204?null:await Wt.json().catch(()=>null));return}let Xr=await Wt.json().catch(()=>null);if(Xr?.type==="paypal_redirect_required"){let br=Xr.threeDSecureToken,fo=Xr.paymentMethodId||s.id||"";if(!Ee||!br){X("error"),Ue("PayPal authorization required but no token provided.");return}try{let Nn=nt?.getRawProvider();if(!Nn){Ue("PayPal is not available.");return}let go={return_url:window.location.href};fo&&(go.payment_method=fo);let{error:ca}=await Nn.confirmPayment({clientSecret:br,confirmParams:go,redirect:"if_required"});if(ca){X("error");let sl=ca.message??"PayPal payment failed.";Ue(sl),On("paypal",sl,{code:ca.code})}}catch(Nn){X("error"),Ue(Nn instanceof Error?Nn.message:"PayPal authorization failed.")}return}if(Xr?.type==="paypal_direct_required"){let br=Xr.orderId;if(!br){X("error"),Ue("PayPal retry required but no order id provided.");return}let fo=er.current?.attempts??0;if(fo>=2){X("error"),Ue("PayPal payment could not be completed after multiple attempts."),On("paypal","paypal_direct_required retry limit exceeded");return}Ai(!1),Fi("loading"),Xe({orderId:br,attempts:fo+1}),X(null);return}if(Wt.headers.get(Cd)===Sd){let br=await wd(Mt,ae,je);if(br!==void 0){await yo(br);return}}(0,c.classifyPaymentRejection)(Wt.status,Xr)?ht?.terminal({outcome:"payment_declined",...En,terminalReason:"provider_declined"}):wt(),X("error");let il=Xr?.message??"Payment failed. Please try again.";Ue(il),On(s.isPaypal?"paypal":"card",il,{code:Xr?.code??Xr?.gatewayErrorCode,declineCode:Xr?.declineCode??Xr?.gatewayDeclineReason}),await new Promise(br=>setTimeout(br,400))}catch(Mt){Gl(Mt)||wt(),X("error"),Ue(Mt instanceof Error?Mt.message:"An unexpected error occurred"),await new Promise(Wt=>setTimeout(Wt,400))}finally{Bt(!1),X(null),J.current=!1}},[Tt,e,t,vt,De,Ze,ze,He,x,Ee,nt,q,l,Ue,On,Rt,h]),jr=(0,o.useCallback)((s,E)=>{v?v(s):Ys(s,E)},[v,Ys]),oa=`${Hl}:${e}`;(0,o.useEffect)(()=>{if(typeof window>"u")return;let s=localStorage.getItem(oa);if(!s)return;let E;try{E=JSON.parse(s)}catch{ar(oa);return}if(!E||typeof E.createdAt!="number"||Date.now()-E.createdAt<0||Date.now()-E.createdAt>Kl||typeof E.paymentMethodId!="string"||typeof E.providerIntentId!="string"||typeof E.paymentMethodType!="string"||E.sessionId!==e||!t||E.nonce!==t||!_o.includes(E.paymentMethodType)){ar(oa);return}ar(oa),jr({id:E.paymentMethodId,type:"card",threeDSecureActionResultTokenId:E.providerIntentId,gateway:"stripe",paymentMethodType:E.paymentMethodType},{...E.accountPatch?{accountPatch:E.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[jr,t,e,oa,_o]);let Xs=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(typeof window>"u"||Xs.current)return;let[s,E,ae]=(0,c.readStripeRedirectParams)();if(!s||!E||Fa.current||!Ee)return;let je=Ee.getRawProvider();if(!je)return;let re=wt=>{let Mt=localStorage.getItem(wt);if(!Mt)return null;try{return JSON.parse(Mt)}catch{return ar(wt),null}},Ie=re(jn)??re(Dl),Lt;if(Ie?.clientSecret){if(Ie.clientSecret!==E)return;Lt={...Ie.accountPatch?{accountPatch:Ie.accountPatch}:{},...Ie.sessionId?{sessionId:Ie.sessionId}:{},...Ie.nonce?{nonce:Ie.nonce}:{}}}else if(Ie?.sessionId&&Ie.sessionId!==e)return;Xs.current=!0,ar(jn),ar(Dl),window.history.replaceState({},"",(0,c.stripeRedirectReturnUrl)());let on=Ie?.paymentMethodType??Ie?.tokenType??"card",ht="card";(async()=>{if(ae==="failed"){let Kn="Payment was declined. Please try again.";Ue(Kn),On(ht,Kn);return}let{paymentIntent:wt,error:Mt}=await je.retrievePaymentIntent(E);if(Mt){let Kn=Mt.message??"Failed to retrieve payment status.";Ue(Kn),On(ht,Kn,{code:Mt.code});return}let Wt=wt?.status,yo=ua(Wt);if(!wt||!yo){let Kn=Wt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Ue(Kn),On(ht,Kn,{code:Wt??"missing_payment_intent"});return}let Xr=typeof wt.payment_method=="string"?wt.payment_method:wt.payment_method?.id;jr({id:Xr??Ie?.paymentMethodId??Ie?.tokenId??wt.id,type:"card",threeDSecureActionResultTokenId:wt.id,gateway:Ie?.gateway??"stripe",paymentMethodType:on},Lt)})()},[e,jr,Ee,Ue,On]);let Di=(0,o.useCallback)(s=>{s.preventDefault()},[]);if(!(g||Ee!==null))return(0,d.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let aa=ie==="buttons",Vr=oe?.variables,_c=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Oi=Vr?.colorBackground,Tc=Oi&&!_c.has(Oi)?Oi:void 0,ia=U.cardInputBorder??(aa?"#e5e7eb":"#A4A4FF"),Js=Vr?.colorDanger??"#dc2626",tr=s=>fn[s]&&(Bn[s]||Zt),Ua=wo&&(Fn||Zt),nn=s=>s?Js:ia,za=(Hr.malformed||Hr.empty)&&(An||Zt),Mc=nn(za),Li=U.cardFormContainer?.backgroundColor??Tc??(aa?"white":"#EDEDFF"),Mo=U.cardInputBackground??Vr?.colorBackground??"white",Ni=Fo(we),Zs=Fo(xe),xo=U.nameInput,Qs=U.cardInputFontSize??zd(xo?.fontSize)??Vr?.fontSizeBase??"16px",el=typeof xo?.fontFamily=="string"?xo.fontFamily:Vr?.fontFamily??"Poppins, sans-serif",tl=(0,c.toCssWeight)(xo?.fontWeight)??400,xc=U.cardInputColor??(typeof xo?.color=="string"?xo.color:void 0)??Vr?.colorText??"#262833",Ac=U.cardInputPlaceholderColor??"#9ca3af",nr=Vr?.borderRadius??"8px",po=Vr?.borderRadius??U.cardButton?.borderRadius??nr,mo=Vr?.colorPrimary??"#4A49FF",Fc=Vr?.colorPrimaryHover??(0,c.darkenHex)(mo,.12),Ui=Vr?.colorText??"#262833",zi={fontSize:Qs,fontFamily:el,fontWeight:tl,color:xc,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},sa={marginTop:"0.375rem",...zi,fontSize:"0.75rem",lineHeight:1.4,color:Js},Bc={"--flopay-input-placeholder-color":Ac,"--flopay-input-font-size":Qs,"--flopay-input-font-family":el,"--flopay-input-font-weight":String(tl)},la=U.cardFormContainer??{},qi=la.padding??(aa?"0":"1rem"),ji=la.borderRadius??nr,Dc=Ot&&Pn?(0,d.jsx)(lo,{capture:Ot,html:Pn.html,messageToken:Pn.messageToken,expectedOrigin:Pn.expectedOrigin,verificationRequired:Pn.verificationRequired,theme:gt,submitLabel:T,onReady:()=>{if(!ao&&!De||typeof document>"u")return;let s=()=>{let ae=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(ae){Kr.current=!0;try{ae.focus()}finally{Kr.current=!1}}};hn.current||s()},onError:s=>{s&&Pn.verificationRequired&&m.current==="idle"&&(oo.current=!0),Ue(s)},onValidation:s=>{let E=m.current;(E==="idle"||E==="validation-window")&&(Ue(s),s&&m.current==="validation-window"&&($.current&&(clearTimeout($.current),$.current=null),m.current="idle",X(null)))}},yr):(0,d.jsx)("div",{"data-testid":"flopay-vault-loading",style:{minHeight:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280",fontSize:14},children:"Loading secure card form\u2026"}),rl=(0,d.jsxs)("div",{onFocusCapture:s=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(s.target.tagName)&&Hn()},style:{backgroundColor:Li,borderRadius:ji,...la,padding:qi,...Bc,display:"flex",flexDirection:"column"},children:[(0,d.jsx)("style",{children:`
30
+ `,Yo=44;function Xo(){return(0,vr.jsx)("style",{children:md})}function wa(e,t){let r=e.availablePaymentMethods;return r&&t.some(n=>r[n])?"ready":"unavailable"}function ka({state:e,placeholderTestId:t,borderRadius:r=8,children:n}){return e==="unavailable"||e==="load_error"?null:(0,vr.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,vr.jsx)("div",{"data-testid":t,"aria-hidden":e==="ready",style:{position:"absolute",inset:0,height:44,borderRadius:r,background:"#e5e7eb",animation:e==="ready"?void 0:"flopay-pulse 1.5s ease-in-out infinite",opacity:e==="ready"?0:1,transform:e==="ready"?"scale(0.985)":"scale(1)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:"none"}}),(0,vr.jsx)("div",{style:{minHeight:44,opacity:e==="ready"?1:0,transform:e==="ready"?"translateY(0)":"translateY(2px)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:e==="ready"?"auto":"none"},children:n})]})}function ts(e){return e!=="unavailable"&&e!=="load_error"}function oi({method:e,themeId:t,submitting:r=!1,disabled:n=!1,highlighted:a=!1,hasNextStep:i=!1,onClick:l,backgroundColor:u,borderColor:p,textColor:P,borderRadius:E,fontFamily:S}){let I=(0,to.resolveStripeMethodBrandVariant)(e,t),K=Fl[e],[_,X]=(0,Bl.useState)(!1),T=!!K&&!_,y=I?.backgroundColor??u??"#ffffff",v=I?.borderColor??p??"#d1d5db",pe=I?.textColor??P??"#262833";return(0,vr.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!r&&!n&&l()},disabled:r||n,"aria-busy":r||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Yo,padding:"0 1rem",backgroundColor:y,color:pe,border:`1px solid ${v}`,borderRadius:E??8,fontSize:"0.95rem",fontWeight:600,fontFamily:S,cursor:r||n?"not-allowed":"pointer",opacity:n&&!r?.55:1,animation:r?"flopay-pulse 1.5s ease-in-out infinite":void 0,display:"flex",alignItems:"center",justifyContent:"center",gap:8,transition:"transform 0.1s, opacity 140ms ease-out, border-color 140ms ease-out",boxShadow:a?"0 0 0 2px rgba(74, 73, 255, 0.15)":void 0},children:r?(0,vr.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,to.getStripeMethodDisplayName)(e)}\u2026`}):(0,vr.jsxs)(vr.Fragment,{children:[(0,vr.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,to.hasVendoredStripeMethodLogo)(e)?8:0},children:[T?(0,vr.jsx)("img",{src:K,alt:"","aria-hidden":"true",onError:()=>X(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!T&&I?.logoSvg?(0,vr.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:I.logoSvg}}):null,(0,vr.jsx)("span",{children:(0,to.getStripeMethodDisplayName)(e)})]}),i&&(0,vr.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:pe,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem",top:"50%",transform:"translateY(-50%)",flexShrink:0,opacity:.7},"aria-hidden":"true",children:(0,vr.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function ai(e){let t=new Set(e.map(to.stripeExpressMethodToOptionKey)),r=n=>n==="applePay"||n==="googlePay"?"always":"auto";return Object.fromEntries(["applePay","googlePay","paypal","link","amazonPay","klarna"].map(n=>[n,t.has(n)?r(n):"never"]))}var ii={buttonType:{applePay:"plain",googlePay:"plain"},layout:{maxColumns:1,overflow:"never"}},si={type:"accordion",defaultCollapsed:!1,radios:"never"};function li({testId:e,attributes:t,disabled:r,onClick:n,color:a,borderRadius:i,style:l,children:u}){return(0,vr.jsx)("button",{type:"button","data-testid":e,...t,onClick:n,disabled:r,style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:a,color:"white",border:"none",borderRadius:i,fontSize:"1rem",fontWeight:600,cursor:r?"not-allowed":"pointer",opacity:r?.5:1,transition:"opacity 120ms ease-out",...l??{}},children:u})}var rn=require("react");var Ra=require("@flopay/shared"),yd=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function fd(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return yd.has(t.charAt(0).toLowerCase()+t.slice(1))}function gd(e,t){return typeof t=="number"&&t!==0&&!fd(e)?`${t}px`:String(t).trim()}function Dl(e,t){if(e.style.cssText="",!!t){for(let[r,n]of Object.entries(t))if(!(n==null||n==="")){if(r.startsWith("--")){e.style.setProperty(r,String(n));continue}e.style[r]=gd(r,n)}}}var So=require("react/jsx-runtime"),rs=new WeakSet;function co({capture:e,html:t,messageToken:r,expectedOrigin:n,verificationRequired:a,theme:i,submitLabel:l,containerStyle:u,onReady:p,onError:P,onValidation:E}){let S=(0,rn.useRef)(null),I=(0,rn.useRef)(p),K=(0,rn.useRef)(P),_=(0,rn.useRef)(E);I.current=p,K.current=P,_.current=E;let X=(0,rn.useRef)(i);X.current=i;let T=(0,rn.useRef)(null),y=l??void 0,v=(0,rn.useRef)(y);v.current=y;let pe=(0,rn.useRef)(void 0);return(0,rn.useEffect)(()=>{let b=S.current;if(!b)return;let Te=!0,B=!1,ae=()=>{!Te||B||(B=!0,I.current?.())},me=e.on("ready",()=>{ae()}),ue=e.on("error",D=>{K.current?.(D.message??"There was a problem loading the secure card form.")}),Ae=e.on("validation",D=>{_.current?.(D.message??null)}),ct=v.current??(rs.has(e)?null:void 0),Ge={html:t,...r?{messageToken:r}:{},...n?{expectedOrigin:n}:{},...a?{verificationRequired:!0}:{},...X.current?{theme:X.current}:{},...ct===void 0?{}:{submitLabel:ct}};return T.current=X.current??null,pe.current=v.current,v.current!==void 0&&rs.add(e),e.mount(b,Ge).then(()=>{ae()}).catch(D=>{Te&&K.current?.(D instanceof Error?D.message:"Failed to load the secure card form.")}),()=>{Te=!1,me(),ue(),Ae(),e.unmount()}},[e,t,r,n,a]),Co(()=>{let b=S.current;b&&Dl(b,u)},[u]),(0,rn.useEffect)(()=>{i!==void 0&&(i===null&&T.current===null||(T.current=i,e.applyTheme?.(i)))},[e,i]),(0,rn.useEffect)(()=>{y!==pe.current&&(pe.current=y,y!==void 0&&rs.add(e),e.setSubmitLabel?.(y??null))},[e,y]),(0,So.jsx)("div",{ref:S,"data-testid":"flopay-vault-card-fields"})}function ci({label:e}){return(0,So.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,So.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,So.jsx)("span",{children:e}),(0,So.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]})}var ps=require("@flopay/shared"),d=require("react/jsx-runtime"),jn="flopay_stripe_resume",Ol="flopay_wallet_resume",Kl="fw1",hd="fw2",Gl=300*1e3,Pd=900,vd=25e3,Cd=25e3,bd=1e4,_n={provider:"paypal",paymentMethodCategory:"paypal"},Sd="x-flopay-process-result-source",wd="status";async function kd(e,t,r){try{let n=(await e.getUnifiedCheckoutSession(t,r)).data.session;if(n?.status==="complete")return null;if(n?.status==="authorized")return{status:"authorized",paymentId:n.paymentId,sessionId:n.id||t,authorizationExpiresAt:n.authorizationExpiresAt}}catch{}}var di={},Ia=class{constructor(t){this.reason=t}};function Rd(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function nr(e,t){if(typeof window>"u")return!1;try{return t===void 0?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)),!0}catch{return!1}}function cs(e){return`${hd}:${e}`}function ui(e){return nr(cs(e))}function pi(e,t){if(typeof window>"u")return null;let r=cs(e);try{let n=localStorage.getItem(r);if(!n)return null;let a=JSON.parse(n);return typeof a.createdAt!="number"||Date.now()-a.createdAt<0||Date.now()-a.createdAt>Gl||a.sessionId!==e||a.nonce!==t||typeof a.clientSecret!="string"||typeof a.providerObjectId!="string"||typeof a.paymentMethodType!="string"?(ui(e),null):a}catch{return ui(e),null}}function Ed(e){return nr(cs(e.sessionId),e)}function Ll(e,t,r){let n=pi(e,t);return!n||n.clientSecret!==r?!1:ui(e)}function ns(e,t,r){if(typeof window>"u")return;pi(e,t)?.clientSecret===r&&ui(e)}function Id(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function os(e,t,r){if(!e||typeof e.id!="string"||t&&e.id!==t)return{kind:"ambiguous"};if(e.status==="canceled"||e.status==="requires_payment_method")return{kind:"terminal"};let n=r?e.status==="succeeded":pa(e.status),a=Id(e);return!n||!a?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:a}}async function Nl(e,t,r){let n=null;try{return await Promise.race([hl(e,t),new Promise(a=>{n=window.setTimeout(()=>{n!==null&&r?.delete(n),a(null)},bd),r?.add(n)})])}finally{n!==null&&(window.clearTimeout(n),r?.delete(n))}}function _d(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Yl(e){return e instanceof c.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function mi(e,t,...r){let n=r[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:n});try{return await new Tn.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...r)}catch(a){throw Yl(a)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:n}),a}}var as=c.STRIPE_PAYPAL_RESUME_KEY,Ea=new Map,Td=250,Ul="Just a moment \u2014 we are finalizing your order. Please press pay again.",Md="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function ds(e,t,r,n){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:r,requestCategory:"provider_sdk",...n?{terminalReason:n}:{}})}async function yi({billingApiUrl:e,sessionId:t,nonce:r,request:n}){if(!(!t||!r))try{await new Tn.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,r,n)}catch{}}function xd(e){return e instanceof c.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Xl({event:e,fallbackEmail:t,fallbackName:r}){let n=e.billingDetails,a=t?.trim(),i=(0,Uo.splitFullName)(r),l=i.firstName?i:(0,Uo.splitFullName)(n?.name);return(0,un.compactBuyerIdentity)({email:(0,c.isValidEmail)(a)?a:n?.email?.trim(),firstName:l.firstName,lastName:l.lastName})}async function Ad({event:e,prepared:t,email:r,billingName:n,methodLabel:a,collect:i}){let l=Xl({event:e,fallbackEmail:t?.accountPatch?.email??r,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||n});return(0,c.isValidEmail)(l.email)?l:i(a,l)}var _a=180,zl=`flopay-card-enter ${_a}ms cubic-bezier(0, 0, 0.2, 1) both`,ql=`flopay-card-exit ${_a}ms cubic-bezier(0.4, 0, 0.2, 1) both`,Fd=`flopay-buttons-enter ${_a}ms cubic-bezier(0, 0, 0.2, 1) both`,Bd=`flopay-buttons-exit ${_a}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function Dd(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function us(e){return(0,c.derivePrimaryTileStyle)(e)}var Od={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Ld(e){return e.isPaypal||e.gateway==="paypal"||e.paymentMethodType==="paypal"?"paypal":e.paymentMethodType==="apple_pay"||e.paymentMethodType==="google_pay"?"wallet":e.paymentMethodType&&e.paymentMethodType!=="card"?"apm":"card"}var is={width:"100%",minHeight:Yo,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"};function jl(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function ss(e){return e==="paypal"?"PayPal":(0,c.getStripeMethodDisplayName)(e)}function Nd(e){let t=(0,c.getPostalCodeExample)(e);return`Enter a valid ${(0,c.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function Ud(e,t,r){let n=(0,c.isPostalCodeSupported)(e),a=t.trim(),i=r&&n,l=i&&!a,u=i&&!!a&&!(0,c.isValidPostalCode)(e,a);return{visible:r,supported:n,required:i,empty:l,malformed:u}}function zd(e,t){let r=e.trim(),n=t&&!r,a=t&&!!r&&!(0,c.isValidEmail)(r);return{required:t,empty:n,malformed:a,value:r}}function qd(e){return typeof e=="number"?`${e}px`:e}function fi(e){return(0,d.jsx)(Wd,{...e})}function Vl({sessionId:e,nonce:t,email:r,billingApiUrl:n,onTokenizedBody:a,onErrorChange:i,isProcessing:l=!1,onButtonClick:u,onDecline:p,onTechnicalFailure:P,runBeforeButtonClick:E,billingName:S,onBuyerIdentityReady:I,onLoadStateChange:K,placeholderBorderRadius:_,popupCapabilityOwner:X,externalTelemetryContext:T,presentationMode:y}){let v=Qn(),{emitInstrument:pe}=(0,o.useContext)(dn),b=(0,rr.useStripe)(),Te=(0,rr.useElements)(),B=(0,o.useMemo)(()=>ni(Pr(v),T),[T,v]),[ae,me]=(0,o.useState)("loading");(0,o.useEffect)(()=>{K?.(ae)},[ae,K]);let[ue,Ae]=(0,o.useState)(!1),ct=(0,o.useRef)(!1),Ge=!(0,c.isValidEmail)(r?.trim())||!S?.trim(),{request:D,collect:bt,finish:Xe}=zo(),Le=(0,o.useRef)(!1),fe=(0,o.useRef)(null),J=(0,o.useRef)(null),[G,Fe]=(0,o.useState)(0),[je,Je]=(0,o.useState)(!1),re=(0,o.useRef)(!1),Q=(0,o.useRef)(new Map),{startAttempt:se,finishAttempt:W,invalidateAttempt:We,isAttemptInvalidated:Be,isAttemptCurrent:ge,generationRef:N}=ga((we,M,ft)=>{P?.(we,M,{...ft,popupBlocked:ft?.popupBlocked??(0,Se.isPopupBlockedError)(M),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:y,terminalReason:"overlay_timeout"}),Je(!0),Fe(ut=>ut+1)},{onHandoffObserved:()=>{X.markAvailable(),B?.log({name:"provider.popup.opened",stage:"overlay_open",..._n,attempt:N.current})}});(0,o.useEffect)(()=>{je&&J.current?.focus()},[je,G]);let Ce=(0,o.useCallback)(()=>{Fe(we=>we+1)},[]),dt=(0,o.useCallback)((we,M,ft)=>{We(ft),P?.("paypal",we,{code:M,popupBlocked:(0,Se.isPopupBlockedError)(we),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:y}),Je(!0),Ce()},[We,P,y,Ce]),Ne=(0,o.useCallback)(()=>{window.setTimeout(()=>{(fe.current?.querySelector("iframe")??fe.current)?.focus()},0)},[]);(0,o.useEffect)(()=>{re.current&&(re.current=!1,Ne())},[Ne,G]);let at=(0,o.useCallback)(()=>{Je(!1),i?.(null),Ne()},[Ne,i]);(0,o.useEffect)(()=>{if(!b||Le.current)return;let[we,M,ft]=(0,c.readStripeRedirectParams)();if(!we||!M)return;let ut=(0,c.readMatchingStripePayPalContinuation)(M);if(!ut)return;Le.current=!0;let z=!0,ke=Ea.get(M);ke||(ke=ft==="failed"?Promise.resolve(null):Promise.resolve().then(()=>b.retrievePaymentIntent(M)),Ea.set(M,ke));let Nt={accountPatch:ut.accountPatch,sessionId:ut.sessionId,nonce:ut.nonce},Ue=()=>{B?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",..._n,requestCategory:"provider_sdk"})};return B?.log({name:"provider.redirect.resumed",stage:"redirect_resume",..._n}),(async()=>{try{Ae(!0);let w=await ke;if(!z)return;if(w?.error){Ea.delete(M),Ue(),i?.(w.error.message??"Failed to retrieve PayPal payment status.");return}if((0,c.clearStripePayPalReturn)(),Ea.delete(M),ft==="failed"){let $e="PayPal payment was declined. Please try again.";B?.terminal({outcome:"payment_declined",..._n,terminalReason:"provider_declined"}),i?.($e),p?.(hr("paypal",$e));return}let O=w?.paymentIntent;if(O&&O.id!==we){Ue(),i?.("Failed to match the returned PayPal payment.");return}if(O&&(O.status==="requires_capture"||O.status==="succeeded")){let $e=typeof O.payment_method=="string"?O.payment_method:O.payment_method?.id;a({id:$e??O.id,type:"card",threeDSecureActionResultTokenId:O.id,isPaypal:!0},{...Nt,presentationMode:"redirect"})}else{let $e="PayPal payment was not completed. Please try again.";B?.terminal({outcome:O?.status==="canceled"?"payment_cancelled":"payment_declined",..._n,terminalReason:O?.status==="canceled"?"cancelled":"provider_declined"}),i?.($e),p?.(hr("paypal",$e))}}catch(w){if(!z)return;Ea.delete(M),Ue(),i?.(w instanceof Error?w.message:"Failed to complete PayPal payment.")}finally{z&&Ae(!1)}})(),()=>{z=!1,Le.current=!1}},[b,a,i,p,B]);let Me=(0,o.useCallback)(async(we=!1)=>{let M=E?await E("paypal"):{proceed:!0};if(!M.proceed)return Q.current.delete(G),!1;let ft=se("paypal");return Q.current.set(G,{generation:ft,accountPatch:M.accountPatch,sessionId:M.sessionId,nonce:M.nonce}),Je(!1),B?.log({name:`provider.${we?"redirect.started":"handoff.requested"}`,stage:we?"redirect":"overlay_open",..._n,attempt:ft}),u?.("paypal"),!0},[u,B,E,se,G]),nt=(0,o.useCallback)(async we=>{if(l||ue||!await Me()){we.reject();return}we.resolve()},[l,Me,ue]),it=(0,o.useCallback)(async we=>{if(!b||!Te)return;let M=Q.current.get(G);if(M&&!ge(M.generation)){Q.current.delete(G);return}if(!M&&Be()||M&&!W(M.generation))return;M||W();let ft=M??null;if(Q.current.delete(G),!ft&&E){let Mt=await E("paypal");if(!Mt.proceed){we.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}ft={accountPatch:Mt.accountPatch,sessionId:Mt.sessionId,nonce:Mt.nonce}}let ut=ft?.sessionId??e,z=ft?.nonce??t,ke=await Ad({event:we,prepared:ft,email:r,billingName:S,methodLabel:"PayPal",collect:bt});if(!ke){we.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Nt=ke.email,Ue={...ft?.accountPatch,...(0,un.compactBuyerIdentity)(ke,!0)};try{if(Ae(!0),i?.(null),!ut||!(0,c.isValidEmail)(Nt))throw new Error("Missing sessionId or email for PayPal payment");await I?.(ke);let Mt=b.createPaymentMethod,{error:w,paymentMethod:O}=await Mt({type:"paypal"});if(w){dt(w,"stripe_paypal_create_payment_method_failed",M?.generation),we.paymentFailed({reason:"fail"});return}let $e=await mi(n,pe,ut,z??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:O?.id??null,intentKind:"payment"});if($e.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let Re=$e.clientSecret,h={return_url:(0,c.stripeRedirectReturnUrl)()};if(O?.id&&(h.payment_method=O.id),!nr(as,{clientSecret:Re,sessionId:ut,nonce:z,accountPatch:Ue})&&y==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:q,paymentIntent:V}=await b.confirmPayment({clientSecret:Re,confirmParams:h,redirect:"if_required"});if(q){if(nr(as),(0,Se.isProviderDecline)(q)){let f=q.message??"Your payment was declined.";B?.terminal({outcome:"payment_declined",..._n,terminalReason:"provider_declined"}),i?.(f),p?.(hr("paypal",f,{code:(0,Se.getProviderErrorCode)(q),declineCode:(0,Se.getProviderDeclineCode)(q)})),await yi({billingApiUrl:n,sessionId:ut,nonce:z,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:(0,Se.getProviderErrorCode)(q)??"provider_declined"}})}else dt(q,"stripe_paypal_confirm_failed",M?.generation);return}nr(as);let De=typeof V?.payment_method=="string"?V.payment_method:V?.payment_method?.id;a({id:De??V?.id,type:"card",threeDSecureActionResultTokenId:V?.id,isPaypal:!0},{accountPatch:Ue,paymentMethodCategory:"paypal",presentationMode:y,sessionId:ut,nonce:z});return}catch(Mt){dt(Mt,"stripe_paypal_failed",M?.generation)}finally{Ae(!1)}},[b,Te,e,t,r,S,bt,I,n,pe,a,i,p,E,dt,W,ge,Be,B,y,G]),ar=(0,o.useCallback)(async()=>{if(!(ct.current||l||ue||!b||!Te)){ct.current=!0,Ae(!0);try{if(!await Me(!0))return;await it({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{ct.current=!1,Ae(!1)}}},[Te,it,l,Me,b,ue]),Dt=y==="redirect"?(0,d.jsx)("button",{type:"button",disabled:l||ue,onClick:()=>{ar()},style:{width:"100%",minHeight:Yo,border:"1px solid #d1d5db",borderRadius:_??8,background:"#ffc439",color:"#111827",cursor:l||ue?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):(0,d.jsx)(rr.ExpressCheckoutElement,{onReady:we=>me(wa(we,["paypal"])),onLoadError:()=>{me("load_error"),ds(B,"paypal","paypal","provider_error")},onClick:nt,onConfirm:it,onCancel:()=>{let we=Q.current.get(G);Q.current.delete(G),B?.terminal({outcome:"payment_cancelled",..._n,terminalReason:"cancelled",...we?{attempt:we.generation}:{}}),We(we?.generation),Je(!1),re.current=!0,Ce()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:Ge,emailRequired:Ge,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},G),St=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{ref:fe,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[je&&(0,d.jsx)("button",{ref:J,type:"button","data-testid":"flopay-paypal-retry-button",onClick:at,style:is,children:"Try PayPal again"}),D&&(0,d.jsx)(qo,{identity:D.identity,methodLabel:D.methodLabel,onComplete:Xe,onCancel:()=>Xe(null)},D.id),(0,d.jsx)("div",{style:{display:D?"none":void 0},children:Dt})]}),ue&&!D&&(0,d.jsx)($r,{status:"processing"})]});return y==="redirect"?St:(0,d.jsx)(ka,{state:ae,placeholderTestId:"flopay-paypal-placeholder",borderRadius:_,children:St})}function Wl(e){return e==="apple_pay"||e==="google_pay"}var jd=200;function Vd({active:e}){return(0,o.useLayoutEffect)(()=>e?(0,c.denyPaymentPermissionToNewFrames)(document):void 0,[e]),null}function $l({sessionId:e,nonce:t,email:r,billingApiUrl:n,intentKind:a,expressMethods:i,onTokenizedBody:l,onErrorChange:u,onButtonClick:p,onDecline:P,onTechnicalFailure:E,runBeforeButtonClick:S,billingName:I,onBuyerIdentityReady:K,onLoadStateChange:_,placeholderBorderRadius:X,popupCapabilityOwner:T,externalTelemetryContext:y}){let v=Qn(),{emitInstrument:pe}=(0,o.useContext)(dn),b=(0,rr.useStripe)(),Te=(0,rr.useElements)(),B=(0,o.useMemo)(()=>ni(Pr(v),y),[y,v]),[ae,me]=(0,o.useState)("loading");(0,o.useEffect)(()=>{_?.(ae)},[ae,_]);let[ue,Ae]=(0,o.useState)(!1);(0,o.useEffect)(()=>{Je.current=ue},[ue]);let ct=(0,o.useRef)(!(0,c.isValidEmail)(r?.trim())||!I?.trim()).current,{request:Ge,collect:D,finish:bt}=zo(),Xe=(0,o.useRef)(null),Le=(0,o.useRef)(null),[fe,J]=(0,o.useState)(0),[G,Fe]=(0,o.useState)(()=>(0,c.shouldPreferWalletPopup)()),je=(0,o.useRef)(G),Je=(0,o.useRef)(!1),[re,Q]=(0,o.useState)(!1),[se,W]=(0,o.useState)(()=>pi(e,t)?"blocked":"idle"),[We,Be]=(0,o.useState)("google_pay"),ge=(0,o.useRef)(null),N=(0,o.useRef)(!0),Ce=(0,o.useRef)(!1),dt=(0,o.useRef)("google_pay"),Ne=(0,o.useRef)("google_pay"),at=(0,o.useRef)(null),Me=(0,o.useRef)(null),nt=(0,o.useRef)(new Set),it=(0,o.useRef)(null),ar=(0,o.useRef)(null);(0,o.useEffect)(()=>(N.current=!0,()=>{N.current=!1;for(let h of nt.current)window.clearTimeout(h);nt.current.clear()}),[]);let Dt=(0,o.useRef)(new Map),{startAttempt:St,finishAttempt:we,invalidateAttempt:M,isAttemptInvalidated:ft,isAttemptCurrent:ut,generationRef:z}=ga((h,ce,q)=>{E?.(h,ce,{...q,popupBlocked:q?.popupBlocked??(0,Se.isPopupBlockedError)(ce),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),Be(h),Q(!0),J(V=>V+1)},{onHandoffObserved:h=>{ar.current=z.current,T.markAvailable(),B?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:z.current,...h==="apple_pay"||h==="google_pay"?{walletType:h}:{}})},defersMissingTerminal:Wl,onMissingTerminalDeferred:(h,ce)=>{let q=B?.now()??globalThis.performance?.now()??Date.now(),V=it.current,De=V?.generation===ce?V.startedAt:q;B?.performance({stage:"overlay_return",durationMs:Math.max(0,q-De),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:ce,...Wl(h)?{walletType:h}:{}}),B?.flush?.().catch(()=>{})}});(0,o.useEffect)(()=>{re&&Le.current?.focus()},[re,fe]);let ke=(0,o.useCallback)(()=>{J(h=>h+1)},[]),Nt=(0,o.useCallback)((h,ce,q,V,De=!1)=>{M(V),E?.(h,ce,{code:q,popupBlocked:(0,Se.isPopupBlockedError)(ce),telemetryReported:De,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),Be(h),Q(!0),ke()},[M,E,ke]),Ue=(0,o.useCallback)(()=>{window.setTimeout(()=>{(Xe.current?.querySelector("iframe")??Xe.current)?.focus()},0)},[]);(0,o.useEffect)(()=>{Ce.current&&(Ce.current=!1,Ue())},[Ue,fe]);let Mt=(0,o.useCallback)(()=>{Q(!1),u?.(null),Ue()},[Ue,u]),w=(0,o.useCallback)(()=>{ge.current?.()},[]);(0,o.useEffect)(()=>{let h=null,ce=()=>{h=null;let V=(0,c.shouldPreferWalletPopup)();V!==je.current&&(je.current=V,Fe(V),!Je.current&&!ut(z.current)&&ke())},q=()=>{h!==null&&window.clearTimeout(h),h=window.setTimeout(ce,jd)};return window.addEventListener("resize",q),()=>{window.removeEventListener("resize",q),h!==null&&window.clearTimeout(h)}},[z,ut,ke]),(0,o.useEffect)(()=>{let h=pi(e,t);if(!h)return;let ce=!1,q=!1,V=async()=>{if(!q){q=!0,ce||W("checking");try{let De=await Nl(b,h.clientSecret,nt.current);if(ce)return;let f=os(De,h.providerObjectId,(0,c.isSetupIntentClientSecret)(h.clientSecret));if(f.kind==="confirmed"){if(!Ll(e,t,h.clientSecret))return;ge.current=null,W("idle"),l({id:f.paymentMethodId,type:"card",threeDSecureActionResultTokenId:f.intentId},{...h.accountPatch?{accountPatch:h.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(f.kind==="terminal"){ns(e,t,h.clientSecret),ge.current=null,W("idle"),Be(h.paymentMethodType),Q(!0),ke();return}W("blocked")}catch{ce||W("blocked")}finally{q=!1}}};return ge.current=V,W("blocked"),()=>{ce=!0,ge.current===V&&(ge.current=null)}},[t,l,ke,e,b]);let O=(0,o.useCallback)(async h=>{let ce=!1,q=vt=>{ce||(ce=!0,h.paymentFailed({reason:"fail",...vt?{message:vt}:{}}))};if(!b||!Te){q();return}let V=Dt.current.get(fe);if(V&&!ut(V.generation)){Dt.current.delete(fe),q();return}if(!V&&ft()){q();return}if(V&&!we(V.generation)){q();return}V||we();let De=h.expressPaymentType??V?.method??dt.current,f=V??null,he=jl(De),ye;De==="apple_pay"?ye="apple_pay":De==="google_pay"&&(ye="google_pay");let gt=V?.generation??z.current,x=B,be=x?.now()??globalThis.performance?.now()??Date.now(),Gt=new AbortController,br=!1,Tr=!1,xt=null,Kr=e,Lr="processing",Sr="other",ir="provider_runtime",Nr,Yt=new Promise((vt,_t)=>{Nr=_t}),Mn=window.setTimeout(()=>{br=!0,Gt.abort(),Nr(di)},vd),Wt=async(vt,_t,yr)=>{Lr=vt,Sr=_t,ir=_t==="intent_create"||_t==="session_claim"?"transport_error":"provider_runtime";let jt=x?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([yr,Yt])}finally{let Jt=x?.now()??globalThis.performance?.now()??Date.now();x?.performance({stage:vt,durationMs:Math.max(0,Jt-jt),durationMode:"machine",requestCategory:_t,paymentMethodCategory:"wallet",provider:"stripe",...br?{statusClass:"timeout"}:{}})}};try{if(Ae(!0),u?.(null),!f&&S){let Z=await Wt("processing","other",S(he));if(!Z.proceed){q();return}f={accountPatch:Z.accountPatch,sessionId:Z.sessionId,nonce:Z.nonce}}let vt=f?.sessionId??e;Kr=vt;let _t=f?.nonce??t,yr=at.current??f?.accountPatch,jt=Xl({event:h,fallbackEmail:yr?.email??r,fallbackName:[yr?.firstName,yr?.lastName].join(" ").trim()||I});if(!(0,c.isValidEmail)(jt.email)){q("Buyer details are required."),D(ss(De),jt).then(Z=>{Z&&(at.current=Z)});return}at.current=null;let Jt={...f?.accountPatch,...(0,un.compactBuyerIdentity)(jt,!0)};await Wt("processing","session_claim",Promise.resolve(K?.(jt)));let{error:nn}=await Wt("tokenization","provider_sdk",Te.submit());if(nn){q(),Nt(De,nn,"stripe_wallet_submit_failed",V?.generation);return}if(!vt)throw new Error("Missing sessionId or email for payment.");let Ur={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:De,paymentMethodId:null,intentKind:a},wr=JSON.stringify({sessionId:vt,nonce:_t??"",request:Ur}),kr=Me.current,fr=kr?.retryIdentity===wr?kr.authorizationAttemptId:(0,c.randomUuidV4)();Me.current={authorizationAttemptId:fr,retryIdentity:wr};let Zt=await Wt("processing","intent_create",mi(n,pe,vt,_t??"",{...Ur,authorizationAttemptId:fr},{signal:Gt.signal}));if(Zt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ft=Zt.clientSecret,pr=Ed({createdAt:Date.now(),sessionId:vt,..._t?{nonce:_t}:{},clientSecret:Ft,providerObjectId:Zt.providerObjectId,paymentMethodType:De,accountPatch:Jt});window.clearTimeout(Mn),Tr=!0,x?.performance({stage:"callback",durationMs:Math.max(0,(x?.now()??globalThis.performance?.now()??Date.now())-be),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let Rr=x?.now()??globalThis.performance?.now()??Date.now(),$t={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...ye?{walletType:ye}:{},attempt:gt},Ze=!1,zr=null;x?.log({name:"payment.provider_confirmation.started",...$t}),xt=window.setTimeout(()=>{xt!==null&&nt.current.delete(xt),Ze=!0;let Z=x?.now()??globalThis.performance?.now()??Date.now();x?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...$t,operationOutcome:"watchdog_expired",durationMs:Math.max(0,Z-Rr),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),x?.flush?.().catch(()=>{}),zr?.()},Cd),nt.current.add(xt);let Gr=(Z,te)=>{xt!==null&&(window.clearTimeout(xt),nt.current.delete(xt),xt=null);let Lt=x?.now()??globalThis.performance?.now()??Date.now(),Tt=Math.max(0,Lt-Rr),Bt=Z;Ze&&(Z==="resolved"?Bt="resolved_late":Z==="returned_error"?Bt="returned_error_late":Bt="rejected_late");let Fr=te??(Z==="resolved"?"approved":"provider_error");return x?.log({name:"payment.provider_confirmation.returned",...$t,operationOutcome:Bt,terminalReason:Fr}),x?.performance({...$t,durationMs:Tt,durationMode:"buyer",operationOutcome:Bt,terminalReason:Fr}),{durationMs:Tt,operationOutcome:Bt,terminalReason:Fr}},Ar=!1,sr=!1,hn=Z=>{if(!Z||typeof Z!="object")return null;let te=Z;if(te.error)return null;let Lt=te.setupIntent??te.paymentIntent,Tt=os(Lt??null,void 0,!!te.setupIntent);return Tt.kind==="confirmed"?Tt:null},xn=Z=>{if(Ar||V&&z.current!==V.generation)return;let te=hn(Z);if(!te)return;if(pr&&!Ll(vt,_t,Ft)){Ar=!0;return}let{intentId:Lt,paymentMethodId:Tt}=te;Ar=!0,sr=!0,Me.current=null,ge.current=null,N.current&&(W("idle"),Ae(!1));let Bt=`${Kl}:${vt}`;nr(Bt,{createdAt:Date.now(),sessionId:vt,nonce:_t,accountPatch:Jt,paymentMethodId:Tt,providerIntentId:Lt,paymentMethodType:De});try{l({id:Tt,type:"card",threeDSecureActionResultTokenId:Lt},{accountPatch:Jt,paymentMethodCategory:"wallet",sessionId:vt,nonce:_t})}finally{nr(Bt)}},on=!1;zr=async()=>{if(!(on||Ar||sr)){on=!0,N.current&&W("checking");try{let Z=await Nl(b,Ft,nt.current);if(Ar||sr)return;let te=(0,c.isSetupIntentClientSecret)(Ft),Lt=os(Z,Zt.providerObjectId,te);if(Lt.kind==="confirmed"){xn(te?{setupIntent:Z}:{paymentIntent:Z});return}if(Lt.kind==="terminal"){if(sr=!0,ns(vt,_t,Ft),Me.current=null,ge.current=null,!N.current)return;W("idle"),q(),Nt(De,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",V?.generation,!0);return}N.current&&!sr&&(W("blocked"),Ae(!1))}catch{N.current&&!sr&&(W("blocked"),Ae(!1))}finally{on=!1}}},ge.current=zr;let Ot,xe;try{let Z=await((0,c.isSetupIntentClientSecret)(Ft)?b.confirmSetup({elements:Te,clientSecret:Ft,redirect:"if_required"}):b.confirmPayment({elements:Te,clientSecret:Ft,redirect:"if_required"}));if(!Z||typeof Z!="object")throw new Ia(Rd(Z));if(Ot=Z,!Ot.error&&!hn(Ot))throw new Ia("confirmation_result_unconfirmed");xe=Gr(Ot.error?"returned_error":"resolved",Ot.error&&(0,Se.isProviderDecline)(Ot.error)?"provider_declined":void 0)}catch(Z){let te=Z instanceof Ia?Z.reason:void 0,Lt=te!==void 0,Tt=Gr(Lt?"returned_error":"rejected");if(x?.error({...Lt?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:te}:Gi(Z),...$t,operationOutcome:Tt.operationOutcome,durationMs:Tt.durationMs,statusClass:"unknown",terminalReason:Tt.terminalReason}),!N.current||Ar)return;await zr?.();return}let Y=Ot.error;if(Y){if(!N.current||Ar)return;if((0,Se.isProviderDecline)(Y)){sr=!0,ns(vt,_t,Ft),Me.current=null,ge.current=null,W("idle");let Z=Y.message??"Your payment was declined.";q(Z),u?.(Z),P?.(hr(he,Z,{code:(0,Se.getProviderErrorCode)(Y),declineCode:(0,Se.getProviderDeclineCode)(Y)})),yi({billingApiUrl:n,sessionId:vt,nonce:_t,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:De,providerDeclineReason:(0,Se.getProviderErrorCode)(Y)??"provider_declined",...Zt.intentKind==="payment"&&Zt.providerObjectId.startsWith("pi_")?{providerIntentId:Zt.providerObjectId}:{}}})}else x?.error({...Gi(Y),...$t,operationOutcome:xe.operationOutcome,durationMs:xe.durationMs,statusClass:"unknown",terminalReason:xe.terminalReason}),await zr?.();return}if(xn(Ot),!Ar)throw new Error("Invalid provider returned for APM intent")}catch(vt){if(vt===di){let _t=x?.now()??globalThis.performance?.now()??Date.now();x?.error({errorCode:_d(Sr),stage:Lr,requestCategory:Sr,paymentMethodCategory:"wallet",provider:"stripe",...ye?{walletType:ye}:{},operationOutcome:"watchdog_expired",checkoutSessionId:Kr,durationMs:Math.max(0,_t-be),statusClass:"timeout",failureCategory:ir,attempt:gt,terminalReason:"provider_error"}),x?.flush?.().catch(()=>{})}q(),Nt(De,vt,vt===di?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",V?.generation,vt===di)}finally{if(window.clearTimeout(Mn),xt!==null&&(window.clearTimeout(xt),nt.current.delete(xt)),!Tr){let vt=x?.now()??globalThis.performance?.now()??Date.now();x?.performance({stage:"callback",durationMs:Math.max(0,vt-be),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...br?{statusClass:"timeout"}:{}})}N.current&&Ae(!1)}},[b,Te,e,t,r,I,D,K,n,pe,a,l,u,P,S,Nt,we,ut,ft,z,B,fe]),$e=(0,o.useMemo)(()=>ai(i),[i]),Re=(0,o.useMemo)(()=>i.map(c.stripeExpressMethodToOptionKey),[i]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(ka,{state:ae,placeholderTestId:"flopay-wallet-placeholder",borderRadius:X,children:(0,d.jsxs)("div",{ref:Xe,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[re&&(0,d.jsxs)("button",{ref:Le,type:"button","data-testid":"flopay-wallet-retry-button",onClick:Mt,style:is,children:["Try ",ss(We)," again"]}),se!=="idle"&&(0,d.jsxs)("div",{role:"status","aria-live":"polite",children:[(0,d.jsx)("p",{children:"We are still confirming your payment. Check its status before trying again."}),(0,d.jsx)("button",{type:"button",onClick:w,disabled:se==="checking",style:is,children:se==="checking"?"Checking payment status\u2026":"Check payment status"})]}),Ge&&(0,d.jsx)(qo,{identity:Ge.identity,methodLabel:Ge.methodLabel,onComplete:bt,onCancel:()=>bt(null)},Ge.id),se==="idle"&&(0,d.jsxs)("div",{style:{display:Ge?"none":void 0},children:[(0,d.jsx)(Vd,{active:G}),(0,d.jsx)(rr.ExpressCheckoutElement,{onReady:h=>{me(wa(h,Re))},onLoadError:h=>{me("load_error"),ds(B,"stripe","wallet","provider_error")},onClick:async h=>{let ce=B?.now()??globalThis.performance?.now()??Date.now();dt.current=h.expressPaymentType,Ne.current=jl(h.expressPaymentType);let q=!0,V=window.setTimeout(()=>{q=!1,h.reject()},Pd),De=S?await S(Ne.current):{proceed:!0};if(window.clearTimeout(V),!q)return;if(!De.proceed){Dt.current.delete(fe),h.reject();return}let f=St(h.expressPaymentType);it.current={generation:f,startedAt:ce},Dt.current.set(fe,{generation:f,method:h.expressPaymentType,accountPatch:De.accountPatch,sessionId:De.sessionId,nonce:De.nonce}),Q(!1),B?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:f,...h.expressPaymentType==="apple_pay"||h.expressPaymentType==="google_pay"?{walletType:h.expressPaymentType}:{}}),p?.(Ne.current),h.resolve()},onConfirm:O,onCancel:()=>{let h=Dt.current.get(fe);Dt.current.delete(fe);let ce=it.current,q=B?.now()??globalThis.performance?.now()??Date.now();if(h&&ce?.generation===h.generation&&(0,c.isWalletSheetRefusedForWindowSize)({method:h.method,elapsedMs:q-ce.startedAt,handoffObserved:ar.current===h.generation})){B?.error({errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",terminalReason:"provider_error",attempt:h.generation,walletType:"google_pay"}),Me.current=null,Nt(h.method,new Error("The browser window is too small for the Google Pay sheet."),c.WALLET_SHEET_WINDOW_TOO_SMALL_CODE,h.generation,!0);return}B?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...h?{attempt:h.generation}:{}}),M(h?.generation),Me.current=null,Q(!1),Ce.current=!0,ke()},options:{...ii,paymentMethods:$e,emailRequired:ct,billingAddressRequired:ct}},fe)]})]})}),ue&&(0,d.jsx)($r,{status:"processing"})]})}function Jl(e,t,r){let n=(0,c.resolveSetupFutureUsage)(r,t,"inline_apm");return{...e,paymentMethodTypes:[t],...n?{setupFutureUsage:n}:null}}function ls({method:e,sessionId:t,nonce:r,email:n,billingName:a,onBuyerIdentityReady:i,billingApiUrl:l,onTokenizedBody:u,onErrorChange:p,onDecline:P,onCancel:E,runBeforeButtonClick:S,onButtonClick:I,isProcessing:K,submitButtonColor:_,submitButtonBorderRadius:X,submitButtonStyle:T,errorText:y}){let v=Qn(),{emitInstrument:pe}=(0,o.useContext)(dn),b=(0,rr.useStripe)(),Te=(0,rr.useElements)(),[B,ae]=(0,o.useState)(!1),me=(0,o.useRef)(!1),[ue,Ae]=(0,o.useState)(!1),[ct,Ge]=(0,o.useState)("loading"),[D,bt]=(0,o.useState)(""),Xe=!(0,c.isValidEmail)(n?.trim()),Le=!Xe||(0,c.isValidEmail)(D.trim()),fe=(0,o.useCallback)(async()=>{if(!b||!Te||K||me.current||!ue)return;me.current=!0,ae(!0);let J=S?await S("card"):{proceed:!0};if(!J.proceed){me.current=!1,ae(!1);return}I?.("card");let G=J.sessionId??t,Fe=J.nonce??r,je=(0,Uo.splitFullName)(a?.trim()),Je=(0,un.compactBuyerIdentity)({email:J.accountPatch?.email?.trim()||n?.trim()||D.trim(),firstName:J.accountPatch?.firstName?.trim()||je.firstName,lastName:J.accountPatch?.lastName?.trim()||je.lastName}),re=Je.email,Q=(0,un.compactBuyerIdentity)({...J.accountPatch,...Je});try{if(p?.(null),!(0,c.isValidEmail)(re))throw new Error("A valid email address is required for payment.");await i?.(Je);let se=await Te.submit();if(se.error){p?.(se.error.message??"Payment failed.");return}let W=[Je.firstName,Je.lastName].filter(Boolean).join(" "),We=await b.createPaymentMethod({elements:Te,params:{billing_details:{email:re,...W?{name:W}:{}}}});if(We.error||!We.paymentMethod){p?.(We.error?.message??"Failed to create payment method.");return}let Be=We.paymentMethod;if(!G||!re)throw new Error("Missing sessionId or email for payment.");let ge=Be.type||e,N=await mi(l,pe,G,Fe??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ge,paymentMethodId:null,intentKind:"payment"});if(N.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ce=N.clientSecret;nr(jn,{clientSecret:Ce,sessionId:G,nonce:Fe,accountPatch:Q,paymentMethodId:Be.id,paymentMethodType:Be.type??e,gateway:"stripe"});let{error:dt,paymentIntent:Ne}=await b.confirmPayment({clientSecret:Ce,confirmParams:{return_url:window.location.href,payment_method:Be.id},redirect:"if_required"});if(dt){nr(jn);let nt=dt.message??"Payment failed.";p?.(nt),P?.(hr("card",nt,{code:dt.code})),await yi({billingApiUrl:l,sessionId:G,nonce:Fe,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:dt.code??"provider_declined"}});return}let at=Ne?.status;if(!pa(at)){nr(jn);let nt=at==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";p?.(nt),P?.(hr("card",nt,{code:at??"missing_payment_intent"}));return}nr(jn);let Me=typeof Ne?.payment_method=="string"?Ne.payment_method:Ne?.payment_method?.id;u({id:Me??Be.id,type:"card",threeDSecureActionResultTokenId:Ne?.id,gateway:"stripe",paymentMethodType:Be.type??e},{accountPatch:Q,paymentMethodCategory:"apm",sessionId:G,nonce:Fe})}catch(se){p?.(se instanceof Error?se.message:"Payment failed. Please try again.")}finally{me.current=!1,ae(!1)}},[b,Te,K,ue,S,I,t,r,n,a,D,i,l,pe,e,u,p,P]);return(0,d.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Xe&&(0,d.jsx)("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Xe&&(0,d.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,d.jsx)("input",{type:"email",autoComplete:"email",required:!0,value:D,onChange:J=>bt(J.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,d.jsx)(rr.PaymentElement,{onReady:()=>Ge("ready"),onLoadError:()=>{Ge("load_error"),ds(Pr(v),"stripe","apm")},onChange:J=>{Ae(!!J.complete)},options:{layout:si,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...a?.trim()?{name:a.trim()}:{},...(0,c.isValidEmail)(n?.trim())?{email:n?.trim()}:{}}}}}),(0,d.jsx)(li,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{fe()},disabled:!ue||!Le||B||K||ct!=="ready",color:_,borderRadius:X,style:T,children:B?"Processing\u2026":`Pay with ${(0,c.getStripeMethodDisplayName)(e)}`}),y&&(0,d.jsx)(Wo,{margin:"0.75rem 0 0",children:y})]})}function Hl({sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:a,billingApiUrl:i,paymentElementMethods:l,stripeInstance:u,paymentElementBaseOptions:p,futureUseSession:P,onTokenizedBody:E,onErrorChange:S,onButtonClick:I,onDecline:K,runBeforeButtonClick:_,onLoadStateChange:X,isProcessing:T=!1,submitButtonColor:y="#4A49FF",submitButtonBorderRadius:v=8,submitButtonStyle:pe,buttonAppearance:b,themeId:Te,onExpandApm:B,expandedApmMethod:ae}){let{emitInstrument:me}=(0,o.useContext)(dn),[ue,Ae]=(0,o.useState)(null),[ct,Ge]=(0,o.useState)(null),D=(0,o.useRef)(!1),{request:bt,collect:Xe,finish:Le}=zo();(0,o.useEffect)(()=>{l.length>0&&u?X?.("ready"):u||X?.("loading")},[l.length,u,X]);let fe=(0,o.useCallback)(async re=>{if(!u||D.current||T)return;D.current=!0,Ge(re);let Q=_?await _("card"):{proceed:!0};if(!Q.proceed){D.current=!1,Ge(null);return}I?.("card");let se=Q.sessionId??e,W=Q.nonce??t,We=(0,Uo.splitFullName)([Q.accountPatch?.firstName,Q.accountPatch?.lastName].filter(Boolean).join(" ")||n),Be=(0,un.compactBuyerIdentity)({email:Q.accountPatch?.email?.trim()||r?.trim(),firstName:Q.accountPatch?.firstName?.trim()||We.firstName,lastName:Q.accountPatch?.lastName?.trim()||We.lastName});if(!(0,c.isValidEmail)(Be.email)){Ge(null);let Ce=await Xe((0,c.getStripeMethodDisplayName)(re),Be);if(!Ce){D.current=!1;return}Be=Ce,Ge(re)}let ge=Be.email,N=(0,un.compactBuyerIdentity)({...Q.accountPatch,...Be});try{if(S?.(null),!se||!(0,c.isValidEmail)(ge))throw new Error("Missing sessionId or email for payment.");await a?.(Be);let Ce=await mi(i,me,se,W??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:re,paymentMethodId:null,intentKind:"payment"});if(Ce.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let dt=Ce.clientSecret;nr(jn,{clientSecret:dt,sessionId:se,nonce:W,accountPatch:N,paymentMethodType:re,gateway:"stripe"});let{error:Ne,paymentIntent:at}=await u.confirmPayment({clientSecret:dt,confirmParams:{return_url:window.location.href,payment_method_data:{type:re,billing_details:{name:[Be.firstName,Be.lastName].filter(Boolean).join(" "),...ge?{email:ge}:{}}}},redirect:"if_required"});if(Ne){nr(jn);let it=Ne.message??"Payment failed.";S?.(it),K?.(hr("card",it,{code:Ne.code})),await yi({billingApiUrl:i,sessionId:se,nonce:W,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:re,providerDeclineReason:Ne.code??"provider_declined"}});return}let Me=at?.status;if(!pa(Me)){nr(jn);let it=Me==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";S?.(it),K?.(hr("card",it,{code:Me??"missing_payment_intent"}));return}nr(jn);let nt=typeof at?.payment_method=="string"?at.payment_method:at?.payment_method?.id;E({id:nt??at?.id,type:"card",threeDSecureActionResultTokenId:at?.id,gateway:"stripe",paymentMethodType:re},{accountPatch:N,paymentMethodCategory:"apm",sessionId:se,nonce:W})}catch(Ce){S?.(Ce instanceof Error?Ce.message:"Payment failed. Please try again.")}finally{D.current=!1,Ge(null)}},[u,T,_,I,e,t,r,Xe,i,me,n,a,E,S,K]),[J,G]=(0,o.useState)(null),Fe=B?ae??null:J,je=(0,o.useCallback)(re=>{D.current||T||Fe&&Fe!==re||((0,c.needsStripeMethodExplicitConfirm)(re)?B?B(re):G(re):fe(re))},[Fe,T,fe,B]),Je=(0,o.useMemo)(()=>J?Jl(p,J,P):null,[J,p,P]);return(0,d.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:bt?(0,d.jsx)(qo,{identity:bt.identity,methodLabel:bt.methodLabel,onComplete:Le,onCancel:()=>Le(null)},bt.id):l.map(re=>{let Q=ae===re,se=ct===re,W=ct!==null&&ct!==re||ae!=null&&ae!==re;return(0,d.jsxs)(o.default.Fragment,{children:[(0,d.jsx)(oi,{method:re,themeId:Te,submitting:se,disabled:W,highlighted:Q,hasNextStep:(0,c.needsStripeMethodExplicitConfirm)(re),onClick:()=>je(re),backgroundColor:b?.backgroundColor,borderColor:b?.borderColor,textColor:b?.textColor,borderRadius:b?.borderRadius,fontFamily:b?.fontFamily}),!B&&J===re&&Je&&u&&(0,d.jsx)(rr.Elements,{stripe:u,options:Je,children:(0,d.jsx)(ls,{method:re,sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:a,billingApiUrl:i,onTokenizedBody:E,onErrorChange:S,onDecline:K,onCancel:()=>G(null),runBeforeButtonClick:_,onButtonClick:I,isProcessing:T,submitButtonColor:y,submitButtonBorderRadius:v,submitButtonStyle:pe})},re)]},re)})})}function Wd({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,email:a,userId:i,onComplete:l,onError:u,onDecline:p,onCancel:P,onTokenizedBody:E,firstName:S,lastName:I,chv:K,className:_,submitLabel:X,isProcessing:T,error:y,onErrorChange:v,showPayPal:pe=!0,showStripe:b=!0,walletPresentation:Te="auto",enabledPaymentMethods:B,enabledPaymentMethodCountries:ae,showApplePay:me=!0,showGooglePay:ue=!0,layout:Ae="default",theme:ct,buttonsTheme:Ge,buttonsStyles:D,appearance:bt,cardButtonContent:Xe,cardBackButtonContent:Le,cardTitleContent:fe,showSecurityFooter:J,onButtonClick:G,onBeforeButtonClick:Fe,onBuyerIdentityReady:je,enableAVS:Je,cardFieldOrder:re,cardPreFormSlot:Q,avsLayout:se="row",country:W,zip:We,addressLine1:Be,addressLine2:ge,city:N,state:Ce,onCountryChange:dt,onZipChange:Ne,avsCheck:at,checkoutType:Me,checkoutLayout:nt,totalAmount:it=0,currency:ar="usd",initialCardOpen:Dt=!1,directPaypal:St,isSubscription:we=!1,session:M,dataAttachmentPending:ft=!1,dataAttachmentRequiresIdentity:ut=!1,debug:z=!1}){let ke=Qn(),Nt=Ga(),Ue=(0,o.useContext)(Rn),{emitInstrument:Mt}=(0,o.useContext)(dn),w=(0,o.useRef)(null);w.current||(w.current=Xa());let O=w.current,[,$e]=(0,o.useState)(0),Re=(0,o.useRef)(null);Re.current||(Re.current=(0,Un.detectPayPalEnvironment)());let h=Re.current,ce=(0,o.useMemo)(()=>({browser:h,capability:O,presentationMode:"popup"}),[h,O]),q=M??Ue.session,V=(0,o.useMemo)(()=>({futureUse:q?.futureUse,futureUseUnsupported:q?.futureUseUnsupported}),[q?.futureUse,q?.futureUseUnsupported]),De=q?.gateways?.paypal?.providerObjectType??St?.providerObjectType,f=ft||Ue.claimPending===!0,he=ut||Ue.claimRequiresIdentity===!0,ye=f&&!he,gt=bl(),x=r||gt,[be,Gt]=(0,o.useState)(!1),[br,Tr]=(0,o.useState)(null),[xt,Kr]=(0,o.useState)(W??""),[Lr,Sr]=(0,o.useState)(We??""),[ir,Nr]=(0,o.useState)(Be??""),[Yt,Mn]=(0,o.useState)(ge??""),[Wt,vt]=(0,o.useState)(N??""),[_t,yr]=(0,o.useState)(Ce??""),[jt,Jt]=(0,o.useState)(""),[nn,Ur]=(0,o.useState)({}),wr=(0,o.useRef)(We??""),kr=(0,o.useRef)(W??""),fr=(0,o.useRef)(Be??""),Zt=(0,o.useRef)(ge??""),Ft=(0,o.useRef)(N??""),pr=(0,o.useRef)(Ce??""),Rr=(0,o.useRef)(""),$t=(0,o.useRef)({});(0,o.useEffect)(()=>{let s=(k,ie,He,ne,_e)=>{if($t.current[k])return;let qt=ie?.trim();!qt||qt===He.current||(He.current=qt,ne(qt),_e?.(qt))};s("country",W,kr,Kr,dt),s("zip",We,wr,Sr,Ne),s("addressLine1",Be,fr,Nr),s("addressLine2",ge,Zt,Mn),s("city",N,Ft,vt),s("state",Ce,pr,yr)},[W,We,Be,ge,N,Ce,dt,Ne]);let Ze=(0,o.useMemo)(()=>(0,c.resolveAVSConfig)(Je),[Je]),zr=Ze!==null,Gr=(0,o.useMemo)(()=>(0,c.isAuthorizationOnlySession)(M),[M]),Ar=(0,c.isMountableVaultBlock)(M?.vault),sr=!!M?.gateways?.pcivault,hn=(0,kn.hasServerSideCardGateway)(M),on=!!(M?.gateways?.stripe?.enabledPaymentMethods??B)?.includes("card")||(0,kn.canRecoverHostedCardForm)(M),Ot=Ar||on||sr,xe=!!(b&&Ot&&e),[Y,Z]=(0,o.useState)(()=>Ae!=="buttons"||Dt?e??null:null),[te,Lt]=(0,o.useState)(0),Tt=Ae!=="buttons"||Dt||!!e&&Y===e,Bt=M?.captureMethod,Fr=(0,o.useRef)(ke);(0,o.useEffect)(()=>{Fr.current=ke},[ke]);let[kt,oo]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!xe||!e||!Tt){oo(null);return}let s=Fr.current?Fr.current.cardCapture({sessionId:e,captureMethod:Bt}):new Tn.PciVaultCardCapture({sessionId:e,captureMethod:Bt,billingApiUrl:x,telemetry:n});return oo({sessionId:e,captureMethod:Bt,billingApiUrl:x,telemetry:n,capture:s}),()=>{s.unmount()}},[xe,e,Tt,Bt,x,n]);let Ut=xe&&e&&Tt&&kt?.sessionId===e&&kt.captureMethod===Bt&&kt.billingApiUrl===x&&kt.telemetry===n?kt.capture:null,Yr=(0,o.useMemo)(()=>{let s=xt,k=Ze?(0,c.isAVSFieldVisible)(Ze.postal_code,s):!1;return Ud(s,Lr,k)},[Ze,xt,Lr]),{avsInvalid:An,invalidAvsFields:an}=(0,o.useMemo)(()=>{let s={line1:!1,city:!1,state:!1,zip:!1};if(!xe||!Ze)return{avsInvalid:!1,invalidAvsFields:s};let k=xt,ie=(_e,qt)=>(0,c.isAVSFieldVisible)(_e,k)&&!qt.trim(),He={line1:ie(Ze.address_line_1,ir),city:ie(Ze.city,Wt),state:ie(Ze.state,_t),zip:Yr.empty||Yr.malformed};return{avsInvalid:He.line1||He.city||He.state||He.zip,invalidAvsFields:He}},[xe,Ze,xt,ir,Wt,_t,Yr]),[Qt,Pn]=(0,o.useState)(!1),[$n,Fn]=(0,o.useState)(!1),[Br,ao]=(0,o.useState)(!1),[sn,Hn]=(0,o.useState)({line1:!1,city:!1,state:!1}),Xr=(0,o.useRef)(!1),vn=(0,o.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),Bn=(0,o.useRef)(!1),zt=(0,o.useCallback)(s=>{vn.current[s]=!0,Bn.current=!0},[]),Jr=(0,o.useCallback)(s=>!Xr.current&&vn.current[s],[]),Zr=(0,o.useCallback)(s=>{Jr(s)&&Hn(k=>k[s]?k:{...k,[s]:!0})},[Jr]),[qr,Cn]=(0,o.useState)(()=>(0,c.resolveVaultMountOptions)(M?.vault,{billingApiUrl:x,sessionId:e,nonce:t})),[Ct,Er]=(0,o.useState)(Dt&&Ot?"card":"buttons"),[lr,jr]=(0,o.useState)(null),mo=Ct==="expanding"||Ct==="card",bn=M?.gateways?.stripe&&!hn?"stripe":void 0,Kn=(0,o.useCallback)(()=>{Mt?.({class:"card_surface",provider:bn})},[bn,Mt]),Qr=(0,o.useRef)(null),Ir=(0,o.useCallback)(s=>{Qr.current&&clearTimeout(Qr.current),Qr.current=setTimeout(()=>{Qr.current=null,s()},_a)},[]);(0,o.useEffect)(()=>()=>{Qr.current&&clearTimeout(Qr.current)},[]);let Dn=(0,o.useRef)(!1),[Mr,L]=(0,o.useState)(0),U=(0,o.useRef)(null),ee=(0,o.useCallback)(()=>{Kn(),Z(e??null),Dn.current&&(Dn.current=!1,L(s=>s+1)),Lt(s=>s+1),Er("expanding"),Ir(()=>Er("card"))},[Ir,Kn,e]),Ee=(0,o.useCallback)(()=>{Er("collapsing"),Ir(()=>Er("buttons"))},[Ir]),Rt=(0,o.useCallback)(s=>{jr(s),Er("apm-expanding"),Ir(()=>Er("apm-form"))},[Ir]),er=(0,o.useCallback)(()=>{Er("apm-collapsing"),Ir(()=>{Er("buttons"),jr(null)})},[Ir]);(0,o.useEffect)(()=>{Ae==="buttons"&&Dt&&Ot&&(Z(e??null),Er("card"))},[Ae,Dt,Ot,e]);let[ze,le]=(0,o.useState)(null),j=(0,o.useRef)(!1),$=(0,o.useRef)(null),de=(0,o.useRef)("idle"),[g,m]=(0,o.useState)(!1),H=(0,o.useRef)(g);H.current=g;let[Ie,Qe]=(0,o.useState)(()=>St?.existingOrderId?{orderId:St.existingOrderId,attempts:1}:null),pt=(0,o.useRef)(Ie);(0,o.useEffect)(()=>{pt.current=Ie},[Ie]);let qe=(0,o.useRef)(null),Oe=(0,o.useMemo)(()=>{if(je||Ue.claimBuyerIdentity||M?.buyerIdentified!==!1||!e||!t)return;let s=`${x}|${e}|${t}`;qe.current?.key!==s&&(qe.current={key:s,claim:Lo(new Tn.PaymentAPI(x,{telemetry:!1}),e,t,{...i?{userId:i}:{},...S?{firstName:S}:{},...I?{lastName:I}:{}})});let k=qe.current.claim;return async ie=>{await k(ie)}},[je,Ue.claimBuyerIdentity,M?.buyerIdentified,e,t,x,i,S,I]),st=je??Ue.claimBuyerIdentity??Oe,wt=y??br,Et=(0,o.useMemo)(()=>(0,c.resolveTheme)(ct),[ct]),A=(0,o.useMemo)(()=>{let s=Et?.buttonsLayout??(0,c.resolveButtonsLayoutTheme)(Ge);return D?{...s,...D,cardButton:{...s.cardButton,...D.cardButton},cardFormContainer:{...s.cardFormContainer,...D.cardFormContainer},backButton:{...s.backButton,...D.backButton},backButtonIcon:{...s.backButtonIcon,...D.backButtonIcon},submitButton:{...s.submitButton,...D.submitButton},title:{...s.title,...D.title}}:s},[Et,Ge,D]),Pe=bt??Et?.appearance,et=(0,o.useMemo)(()=>(0,c.computeVaultCardThemeColors)({appearance:Pe,buttonsStyles:A,layout:Ae}),[Pe,A,Ae]),ot=Ue.inlineSessionPatchProcessing??!1,oe=(T??be)||ot,cr=x.replace(/\/+$/,""),ve=(0,o.useMemo)(()=>Ki({userId:i,email:a,firstName:S,lastName:I,country:W,zip:We},nn),[i,a,S,I,W,We,nn]),Gn=[ve.firstName,ve.lastName].filter(s=>!!s?.trim()).join(" "),ws=!(0,c.isValidEmail)(ve.email?.trim()),ki=(0,o.useRef)(null);xe&&ki.current===null&&(ki.current=ws);let io=xe&&(ki.current??ws),Ri=(0,o.useMemo)(()=>zd(jt,io),[jt,io]),ko=Ri.empty||Ri.malformed,en=(0,o.useMemo)(()=>ke?ke.getRawProvider():null,[ke]),ks=(0,o.useMemo)(()=>Nt?Nt.getRawProvider():null,[Nt]),Qo=it||100,Ro=ar.toLowerCase(),Ei=(0,o.useMemo)(()=>Pe?(0,Tn.toStripeAppearance)(Pe):null,[Pe]),Eo=Ei,Rs=(0,o.useMemo)(()=>{let s=Ei??{},k=s.rules??{};return{...s,rules:{...k,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...k[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...k[".AccordionItemContents"]??{}}}}},[Ei]),Es=(0,o.useMemo)(()=>({...Pl(it,q?.captureMethod,V),currency:Ro,...Eo?{appearance:Eo}:null}),[it,Ro,q?.captureMethod,V,Eo]),Ii=(0,c.resolveSetupFutureUsage)(V,"paypal","paypal"),Is=(0,o.useMemo)(()=>({mode:"payment",amount:Qo,currency:Ro,captureMethod:"manual",...Ii?{setupFutureUsage:Ii}:null,...Eo?{appearance:Eo}:null}),[Qo,Ro,Ii,Eo]),Ve=(0,o.useCallback)(s=>{Tr(s),v?.(s)},[v]),_s=(0,o.useRef)(0);(0,o.useEffect)(()=>{Mr!==_s.current&&(_s.current=Mr,Ve(null))},[Mr,Ve]);let _i=(0,o.useRef)(""),[Ts,Cc]=(0,o.useState)(!1),Ti=(0,o.useCallback)(()=>{Cc(!0)},[]);(0,o.useEffect)(()=>{if(!xe||!io||!st||!Ts||ko||_i.current)return;let s=(0,un.compactBuyerIdentity)({email:(0,c.isValidEmail)(ve.email?.trim())?ve.email?.trim():Rr.current.trim(),firstName:ve.firstName?.trim(),lastName:ve.lastName?.trim()});_i.current=JSON.stringify(s),Ur(k=>({...k,...s})),Promise.resolve(st(s)).catch(k=>{_i.current="",Ve(k instanceof Error?k.message:"Failed to attach buyer details.")})},[xe,io,st,Ts,ko,ve.email,ve.firstName,ve.lastName,Ve]),(0,o.useEffect)(()=>{!xe||!Ut||Ut.setCardFieldOrder?.(re??null,Ze==null&&!io)},[xe,Ut,re,Ze,io]),(0,o.useEffect)(()=>{(Ct==="expanding"||Ct==="collapsing"||Ct==="apm-expanding"||Ct==="apm-collapsing")&&Ve(null)},[Ct,Ve]);let On=(0,o.useCallback)((s,k,ie)=>{p?.(hr(s,k,ie))},[p]),Io=(0,o.useCallback)((s,k,ie)=>{let He=ie?.popupBlocked??(0,Se.isPopupBlockedError)(k);He&&O.markBlocked()&&$e(It=>It+1);let ne=ss(s),_e=ie?.code===c.WALLET_SHEET_WINDOW_TOO_SMALL_CODE?(0,c.buildWalletSheetWindowMessage)(ne):(0,Se.buildExternalMethodRecoveryMessage)(ne,He,h.inAppBrowser),qt=(0,Se.getProviderErrorCode)(k),cn=(qt?.toLowerCase()==="error"?void 0:qt)??(0,Se.sanitizeExternalFailureCode)(ie?.code)??"external_payment_method_failed",ht=new c.FloPayError(_e,"api_error",{code:"external_payment_method_failed",param:s,details:{providerCode:cn,popupBlocked:He,inAppBrowser:h.inAppBrowser,appFamily:h.appFamily,popupCapability:O.current(),presentationMode:ie?.presentationMode??"popup"}});ie?.telemetryReported||Pr(ke)?.error(Go({...ce,presentationMode:ie?.presentationMode??"popup"},{errorCode:He?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:ie?.provider??(s==="paypal"?"paypal":"stripe"),paymentMethodCategory:ie?.paymentMethodCategory??(s==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:ie?.terminalReason??(He?"popup_blocked":"provider_error")})),le(null),Ae==="buttons"&&(Er("buttons"),jr(null)),Ve(_e),u?.(ht),console.error("[FloPay] External payment method failed:",{method:s,code:cn,popupBlocked:He})},[h,ce,ke,Ae,u,O,Ve]);(0,o.useEffect)(()=>{if(!xe||!e){Cn(null);return}let s={billingApiUrl:cr,sessionId:e,nonce:t},k=(0,c.resolveVaultMountOptions)(M?.vault,s);if(k){Cn(k);return}if(!Tt){Cn(null);return}let ie=`${cr}\0${e}\0${t??""}`,He=U.current;if(He&&He.key===ie){Cn(He.mount);return}Cn(null);let ne=!0;return new Tn.PaymentAPI(cr).getVaultCapture(e,t).then(_e=>{if(!ne)return;let qt=(0,c.resolveVaultMountOptions)(_e,s);qt?.verificationRequired&&!_e.html&&(U.current={key:ie,mount:qt}),qt?Cn(qt):Ve("Failed to load the secure card form.")}).catch(_e=>{ne&&Ve(_e instanceof Error?_e.message:"Failed to load the secure card form.")}),()=>{ne=!1}},[xe,Tt,te,e,M?.vault,cr,t,Ve]);let Sn=(0,o.useRef)({onComplete:l,onError:u,updateError:Ve,emitDecline:On,resolvedAccount:ve,avsConfig:Ze,avsCheckProp:at,sessionId:e,nonce:t,baseUrl:cr,captureMethod:M?.captureMethod,paymentId:M?.paymentId,authorizationExpiresAt:M?.authorizationExpiresAt,serverSideCardGateway:hn});Sn.current={onComplete:l,onError:u,updateError:Ve,emitDecline:On,resolvedAccount:ve,avsConfig:Ze,avsCheckProp:at,sessionId:e,nonce:t,baseUrl:cr,captureMethod:M?.captureMethod,paymentId:M?.paymentId,authorizationExpiresAt:M?.authorizationExpiresAt,serverSideCardGateway:hn};let Mi=(0,o.useRef)(!1),Ms=(0,o.useCallback)(()=>{let s=Sn.current,k=s.resolvedAccount.email?.trim(),ie=(0,c.isValidEmail)(k)?k:Rr.current.trim();if(!(0,c.isValidEmail)(ie))return null;let He=s.resolvedAccount.firstName?.trim(),ne=s.resolvedAccount.lastName?.trim(),_e=kr.current.trim()||s.resolvedAccount.country?.trim()||"",qt=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.state,_e):!1,cn=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.address_line_1,_e):!1,ht=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.postal_code,_e):!1,It=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.city,_e):!1,At=s.avsConfig?(0,c.isAVSFieldVisible)(s.avsConfig.address_line_2,_e):!1,Ht=cn&&!qt&&ht?(0,c.getStateFromPostalCode)(_e,(wr.current??"").trim()):null,go=qt?pr.current:Ht;return{accountData:{userId:s.resolvedAccount.userId??"",email:ie,...He?{firstName:He}:{},...ne?{lastName:ne}:{},...ht&&wr.current?{zip:wr.current}:{},...It&&Ft.current?{city:Ft.current}:{},...go?{state:go}:{},...cn&&fr.current?{addressLine1:fr.current}:{},...At&&Zt.current?{addressLine2:Zt.current}:{},..._e?{country:_e}:{}},...s.avsCheckProp===void 0?{}:{avsCheck:s.avsCheckProp},...s.avsConfig?{avsConfig:{country:(0,c.isAVSFieldVisible)(s.avsConfig.country,_e),postal_code:ht,address_line_1:cn,address_line_2:At,city:It,state:qt}}:{}}},[]),xs=(0,o.useRef)(f);xs.current=f,(0,o.useEffect)(()=>{f||wt!==Ul||Sn.current.updateError(null)},[f,wt]),(0,o.useEffect)(()=>{!xe||!Ut||Ut.setSubmitGate?.(An||f||ko||g)},[xe,Ut,An,f,ko,g]),(0,o.useEffect)(()=>{if(!xe||!Ut)return;Mi.current=!1;let s=null,k=()=>{s&&clearTimeout(s),s=setTimeout(()=>{s=null,de.current="idle",le(null)},400)},ie=Ut.on("submitting",()=>{Pn(!0),$.current&&clearTimeout($.current),de.current="validation-window",$.current=setTimeout(()=>{$.current=null,de.current==="validation-window"&&(de.current="processing")},Td),le("processing");let ht=Sn.current;if(!ht.sessionId||!ht.nonce)return;let It=Ms();if(!It){ht.updateError("Enter a valid email address."),de.current="idle",le(null);return}new Tn.PaymentAPI(ht.baseUrl).patchAccountSnapshot(ht.sessionId,ht.nonce,It,{telemetryMode:"best_effort"}).catch(At=>{if(!xd(At))return;let Ht=At instanceof Error?At.message:"Please check your billing address and try again.";ht.updateError(Ht),de.current="idle",le(null),ht.onError?.(At instanceof c.FloPayError?At:new c.FloPayError(Ht,"api_error"))})}),He=Ut.on("complete",ht=>{(0,In.markSessionRecentlyCompleted)(ht.sessionId??Sn.current.sessionId),de.current="terminal",m(!1),le("success"),setTimeout(()=>{if(Mi.current)return;Mi.current=!0;let It=Sn.current,At=(0,c.isAuthorizationOnlySession)(It)||ht.outcome==="authorized",Ht=It.serverSideCardGateway?{}:{paymentIntentId:ht.intentId};Sn.current.onComplete?.(At?{status:"authorized",...Ht,paymentId:ht.paymentId??It.paymentId,sessionId:ht.sessionId??It.sessionId,authorizationExpiresAt:ht.authorizationExpiresAt??It.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Ht,checkoutMethod:"card"})},600)}),ne=Ut.on("decline",ht=>{let It=Sn.current,At=ht.message??"Your payment was declined. Please try another card or contact your bank.";de.current="terminal",m(!1),It.updateError(At),le("error");let Ht=ht.failureOutcome??(0,c.normalizeCheckoutFailureOutcome)(ht.declineReason)??"authorization_declined";It.emitDecline("card",At,{code:Ht,declineCode:Ht}),k()}),_e=Ut.on("error",ht=>{let It=Sn.current,At=ht.message??"There was a problem processing your payment. Please try again.";de.current="terminal",m(!1),It.updateError(At),le("error"),It.onError?.(new c.FloPayError(At,"api_error",{code:ht.failureOutcome??"capture_failed"})),k()}),qt=Ut.on("challenge_dismissed",()=>{$.current&&(clearTimeout($.current),$.current=null),de.current="processing",m(!0),le(null)}),cn=Ut.on("blocked",()=>{if(H.current){Sn.current.updateError(Md);return}if(!xs.current){Pn(!0);return}Ti(),Sn.current.updateError(Ul)});return()=>{s&&(clearTimeout(s),s=null),$.current&&(clearTimeout($.current),$.current=null),de.current="idle",m(!1),le(null),ie(),He(),ne(),_e(),qt(),cn()}},[xe,Ut,Ti,Ms]);let Ln=!!St?.clientId,ea=Array.isArray(B),Fa=ea&&B.length>0,As=ea&&B.includes("paypal"),Ba=(0,o.useRef)(null);Ba.current===null&&(Ba.current=(0,c.hasMatchingStripePayPalReturn)());let _o=Ba.current?"redirect":(0,zn.resolveStripePayPalPresentation)(h,Te,O.current()),{expressMethods:Da,paymentElementMethods:xi}=(0,o.useMemo)(()=>(0,c.partitionStripeMethods)(B,{excludePaypal:Ln}),[B,Ln]),Fs=Ln||!!Nt||As&&_o==="redirect",bc=(0,o.useMemo)(()=>Fs?Da.filter(s=>s!=="paypal"):Da,[Da,Fs]),Sc=(0,o.useMemo)(()=>{let s=[];return me&&s.push("apple_pay"),ue&&s.push("google_pay"),s},[me,ue]),To=ea?bc:Sc,wc=b&&To.length>0,Bs=zr?xt:W,Oa=(0,o.useMemo)(()=>(0,c.filterStripeMethodsByCountryGate)(xi,Bs,ae),[xi,Bs,ae]),Ai=(0,o.useMemo)(()=>({mode:"payment",amount:Qo,currency:Ro,paymentMethodCreation:"manual",appearance:Rs}),[Qo,Ro,Rs]),[Ds,Os]=(0,o.useState)("loading"),[Ls,Ns]=(0,o.useState)("loading"),[Us,zs]=(0,o.useState)("loading"),[kc,Fi]=(0,o.useState)(!1),[qs,Bi]=(0,o.useState)("loading"),[Di,Rc]=(0,o.useState)();(0,o.useEffect)(()=>{Rc((0,Un.detectPayPalEnvironment)())},[]);let La=Di?.inAppBrowser,Na=Di?(0,zn.resolvePayPalPresentationMode)(Di,St?.approvalPresentation,De??(we?"subscription":"order")):"popup",js=pe&&(Ln||(ea?As:La===!1)),Vs=b&&wc,ta=(!ye||!!Ue.waitForDataAttachment)&&js&&Ln,Ws=qs==="retrying"||qs==="exhausted",ra=null;b&&(Nt?ra=ks:_o==="redirect"&&(ra=en));let $s=(0,o.useMemo)(()=>({...ce,presentationMode:_o}),[ce,_o]),na=!ye&&js&&!!ra&&(!Ln||Ws),Mo=!ye&&Vs&&!!en,oa=!ye&&b&&Fa&&Oa.length>0&&!!en,Ec=ta&&!Ws?kc:na&&ts(Ds),Ic=Mo&&ts(Ls),_c=oa&&Us!=="load_error",Hs=s=>s==="loading"||s==="ready",Ks=ta||na&&Hs(Ds)||Mo&&Hs(Ls)||oa&&Us!=="load_error",Ua=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(!Ua.current){if(!b&&!pe){Ua.current=!0;let s=new c.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");u?.(s),Ve(s.message)}else if(!b&&pe&&!Ln){Ua.current=!0;let s=new c.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");u?.(s),Ve(s.message)}else if(La!==void 0&&!ye&&!Ot&&!Ks){Ua.current=!0;let s=new c.FloPayError("FloPay: this checkout session has no vault card capability and no usable supported non-card payment methods. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});u?.(s),Ve(s.message)}}},[b,pe,Ln,La,ye,Ot,Ks,u,Ve]);let Gs=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(Gs.current||!Fa)return;let s=[];me!==!0&&s.push("showApplePay"),ue!==!0&&s.push("showGooglePay"),s.length!==0&&(Gs.current=!0,console.warn(`[FloPay] ${s.join(" / ")} ${s.length===1?"is":"are"} deprecated: the Apple Pay / Google Pay surface is now driven by \`gateways.stripe.enabledPaymentMethods\` on the session response. Remove the legacy prop(s) to silence this warning.`))},[Fa,me,ue]);let Ys=(0,o.useCallback)((s,k)=>Ue.applyInlineSessionPatch?Ue.applyInlineSessionPatch(s).then(ie=>({error:null,sessionId:ie.sessionId||e,nonce:ie.session?.clientSecret||t})).catch(ie=>{let He=(0,c.normalizeBeforeButtonClickError)(k,ie);return Ve(He.message),u?.(He),{error:He,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ue.applyInlineSessionPatch,t,u,e,Ve]),wn=(0,o.useCallback)(async s=>{if(s!=="card"&&ye&&await Ue.waitForDataAttachment?.(),!Fe)return{proceed:!0};try{let k=await Fe({method:s,sessionId:e||void 0,createSession:Ue.inlineSessionDraft});if(k===!1)return{proceed:!1};if(k&&typeof k=="object"){k.account&&Ur(He=>({...He??{},...k.account}));let ie=await Ys(k,s);return ie.error?{proceed:!1,accountPatch:k.account}:{proceed:!0,accountPatch:k.account,sessionId:ie.sessionId,nonce:ie.nonce}}return{proceed:!0}}catch(k){let ie=(0,c.normalizeBeforeButtonClickError)(s,k);return Ve(ie.message),u?.(ie),{proceed:!1}}},[Ys,Ue.inlineSessionDraft,Ue.waitForDataAttachment,ye,Fe,u,e,Ve]),Xs=(0,o.useCallback)(async(s,k)=>{if(j.current)return;j.current=!0,Gt(!0),le("processing"),Ve(null);let ie=k?.sessionId??e,He=k?.nonce??t,ne=Ki(ve,k?.accountPatch),_e=k?.completionPaymentMethodId??ma(s),qt=s.originalPaymentMethodId?{...s,originalPaymentMethodId:void 0}:s,cn=Dd(s),ht=k?.presentationMode?ni(Pr(ke),{...ce,presentationMode:k.presentationMode}):void 0,It=()=>{Mt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:cn}),ht?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",..._n,requestCategory:"process_payment"})};try{let At=new Tn.PaymentAPI(cr),Ht=await At.processPayment(ne.userId??"",{sessionId:ie,nonce:He,paymentMethodCategory:k?.paymentMethodCategory??Ld(s),tokenizedData:qt,accountData:{...k?.accountPatch,userId:ne.userId??"",email:ne.email??"",firstName:ne.firstName||void 0,lastName:ne.lastName||void 0,...(0,c.buildProcessPaymentAvsAccount)({avsConfig:Ze,country:kr.current,zip:wr.current,city:Ft.current,state:pr.current,addressLine1:fr.current,addressLine2:Zt.current})},...(0,c.buildCheckoutProcessMetadata)({chv:K,avsCheck:at,checkoutType:Me,checkoutLayout:nt,avsConfig:Ze,country:kr.current})}),go=async gr=>{let ho=(0,c.isAuthorizationOnlySession)(M)||gr?.status==="authorized";(0,In.markSessionRecentlyCompleted)(ie),ht?.terminal({outcome:"payment_succeeded",..._n}),le("success"),Qe(null),await new Promise(da=>setTimeout(da,600));let Nn;typeof gr?.paymentId=="string"?Nn=gr.paymentId:M?.paymentId&&(Nn=M.paymentId);let Po;typeof gr?.authorizationExpiresAt=="string"?Po=gr.authorizationExpiresAt:M?.authorizationExpiresAt&&(Po=M.authorizationExpiresAt),l?.(ho?{status:"authorized",...Nn===void 0?{}:{paymentId:Nn},sessionId:typeof gr?.sessionId=="string"?gr.sessionId:ie,...Po===void 0?{}:{authorizationExpiresAt:Po},paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:_e,checkoutMethod:s.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:_e,checkoutMethod:s.isPaypal?"paypal":"card"})};if(Ht.ok){await go(Ht.status===204?null:await Ht.json().catch(()=>null));return}let tn=await Ht.json().catch(()=>null);if(tn?.type==="paypal_redirect_required"){let gr=tn.threeDSecureToken,ho=tn.paymentMethodId||s.id||"";if(!ke||!gr){le("error"),Ve("PayPal authorization required but no token provided.");return}try{let Nn=Nt?.getRawProvider();if(!Nn){Ve("PayPal is not available.");return}let Po={return_url:window.location.href};ho&&(Po.payment_method=ho);let{error:da}=await Nn.confirmPayment({clientSecret:gr,confirmParams:Po,redirect:"if_required"});if(da){le("error");let ll=da.message??"PayPal payment failed.";Ve(ll),On("paypal",ll,{code:da.code})}}catch(Nn){le("error"),Ve(Nn instanceof Error?Nn.message:"PayPal authorization failed.")}return}if(tn?.type==="paypal_direct_required"){let gr=tn.orderId;if(!gr){le("error"),Ve("PayPal retry required but no order id provided.");return}let ho=pt.current?.attempts??0;if(ho>=2){le("error"),Ve("PayPal payment could not be completed after multiple attempts."),On("paypal","paypal_direct_required retry limit exceeded");return}Fi(!1),Bi("loading"),Qe({orderId:gr,attempts:ho+1}),le(null);return}if(Ht.headers.get(Sd)===wd){let gr=await kd(At,ie,He);if(gr!==void 0){await go(gr);return}}(0,c.classifyPaymentRejection)(Ht.status,tn)?ht?.terminal({outcome:"payment_declined",..._n,terminalReason:"provider_declined"}):It(),le("error");let sl=tn?.message??"Payment failed. Please try again.";Ve(sl),On(s.isPaypal?"paypal":"card",sl,{code:tn?.code??tn?.gatewayErrorCode,declineCode:tn?.declineCode??tn?.gatewayDeclineReason}),await new Promise(gr=>setTimeout(gr,400))}catch(At){Yl(At)||It(),le("error"),Ve(At instanceof Error?At.message:"An unexpected error occurred"),await new Promise(Ht=>setTimeout(Ht,400))}finally{Gt(!1),le(null),j.current=!1}},[cr,e,t,ve,Ze,at,Me,nt,K,ke,Nt,M,l,Ve,On,Mt,ce]),Vr=(0,o.useCallback)((s,k)=>{E?E(s):Xs(s,k)},[E,Xs]),aa=`${Kl}:${e}`;(0,o.useEffect)(()=>{if(typeof window>"u")return;let s=localStorage.getItem(aa);if(!s)return;let k;try{k=JSON.parse(s)}catch{nr(aa);return}if(!k||typeof k.createdAt!="number"||Date.now()-k.createdAt<0||Date.now()-k.createdAt>Gl||typeof k.paymentMethodId!="string"||typeof k.providerIntentId!="string"||typeof k.paymentMethodType!="string"||k.sessionId!==e||!t||k.nonce!==t||!To.includes(k.paymentMethodType)){nr(aa);return}nr(aa),Vr({id:k.paymentMethodId,type:"card",threeDSecureActionResultTokenId:k.providerIntentId,gateway:"stripe",paymentMethodType:k.paymentMethodType},{...k.accountPatch?{accountPatch:k.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Vr,t,e,aa,To]);let Js=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(typeof window>"u"||Js.current)return;let[s,k,ie]=(0,c.readStripeRedirectParams)();if(!s||!k||Ba.current||!ke)return;let He=ke.getRawProvider();if(!He)return;let ne=It=>{let At=localStorage.getItem(It);if(!At)return null;try{return JSON.parse(At)}catch{return nr(It),null}},_e=ne(jn)??ne(Ol),qt;if(_e?.clientSecret){if(_e.clientSecret!==k)return;qt={..._e.accountPatch?{accountPatch:_e.accountPatch}:{},..._e.sessionId?{sessionId:_e.sessionId}:{},..._e.nonce?{nonce:_e.nonce}:{}}}else if(_e?.sessionId&&_e.sessionId!==e)return;Js.current=!0,nr(jn),nr(Ol),window.history.replaceState({},"",(0,c.stripeRedirectReturnUrl)());let cn=_e?.paymentMethodType??_e?.tokenType??"card",ht="card";(async()=>{if(ie==="failed"){let Yn="Payment was declined. Please try again.";Ve(Yn),On(ht,Yn);return}let{paymentIntent:It,error:At}=await He.retrievePaymentIntent(k);if(At){let Yn=At.message??"Failed to retrieve payment status.";Ve(Yn),On(ht,Yn,{code:At.code});return}let Ht=It?.status,go=pa(Ht);if(!It||!go){let Yn=Ht==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Ve(Yn),On(ht,Yn,{code:Ht??"missing_payment_intent"});return}let tn=typeof It.payment_method=="string"?It.payment_method:It.payment_method?.id;Vr({id:tn??_e?.paymentMethodId??_e?.tokenId??It.id,type:"card",threeDSecureActionResultTokenId:It.id,gateway:_e?.gateway??"stripe",paymentMethodType:cn},qt)})()},[e,Vr,ke,Ve,On]);let Oi=(0,o.useCallback)(s=>{s.preventDefault()},[]);if(!(xe||ke!==null))return(0,d.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let ia=Ae==="buttons",Wr=Pe?.variables,Tc=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Li=Wr?.colorBackground,Mc=Li&&!Tc.has(Li)?Li:void 0,sa=A.cardInputBorder??(ia?"#e5e7eb":"#A4A4FF"),Zs=Wr?.colorDanger??"#dc2626",Xt=s=>an[s]&&(sn[s]||Qt),za=ko&&(Br||Qt),ln=s=>s?Zs:sa,qa=(Yr.malformed||Yr.empty)&&($n||Qt),xc=ln(qa),Ni=A.cardFormContainer?.backgroundColor??Mc??(ia?"white":"#EDEDFF"),xo=A.cardInputBackground??Wr?.colorBackground??"white",Ui=Bo(Le),Qs=Bo(fe),Ao=A.nameInput,el=A.cardInputFontSize??qd(Ao?.fontSize)??Wr?.fontSizeBase??"16px",tl=typeof Ao?.fontFamily=="string"?Ao.fontFamily:Wr?.fontFamily??"Poppins, sans-serif",rl=(0,c.toCssWeight)(Ao?.fontWeight)??400,Ac=A.cardInputColor??(typeof Ao?.color=="string"?Ao.color:void 0)??Wr?.colorText??"#262833",Fc=A.cardInputPlaceholderColor??"#9ca3af",tr=Wr?.borderRadius??"8px",yo=Wr?.borderRadius??A.cardButton?.borderRadius??tr,fo=Wr?.colorPrimary??"#4A49FF",Bc=Wr?.colorPrimaryHover??(0,c.darkenHex)(fo,.12),zi=Wr?.colorText??"#262833",qi={fontSize:el,fontFamily:tl,fontWeight:rl,color:Ac,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},la={marginTop:"0.375rem",...qi,fontSize:"0.75rem",lineHeight:1.4,color:Zs},Dc={"--flopay-input-placeholder-color":Fc,"--flopay-input-font-size":el,"--flopay-input-font-family":tl,"--flopay-input-font-weight":String(rl)},ca=A.cardFormContainer??{},ji=ca.padding??(ia?"0":"1rem"),Vi=ca.borderRadius??tr,Oc=Ut&&qr?(0,d.jsx)(co,{capture:Ut,html:qr.html,messageToken:qr.messageToken,expectedOrigin:qr.expectedOrigin,verificationRequired:qr.verificationRequired,theme:et,submitLabel:X,onReady:()=>{if(!io&&!Ze||typeof document>"u")return;let s=()=>{let ie=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(ie){Xr.current=!0;try{ie.focus()}finally{Xr.current=!1}}};Bn.current||s()},onError:s=>{s&&qr.verificationRequired&&de.current==="idle"&&(Dn.current=!0),Ve(s)},onValidation:s=>{let k=de.current;(k==="idle"||k==="validation-window")&&(Ve(s),s&&de.current==="validation-window"&&($.current&&(clearTimeout($.current),$.current=null),de.current="idle",le(null)))}},Mr):(0,d.jsx)("div",{"data-testid":"flopay-vault-loading",style:{minHeight:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280",fontSize:14},children:"Loading secure card form\u2026"}),nl=(0,d.jsxs)("div",{onFocusCapture:s=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(s.target.tagName)&&Kn()},style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji,...Dc,display:"flex",flexDirection:"column"},children:[(0,d.jsx)("style",{children:`
31
31
  .flopay-shared-input::placeholder {
32
32
  color: var(--flopay-input-placeholder-color);
33
33
  opacity: 1;
@@ -35,13 +35,13 @@ ${be.join(`
35
35
  font-family: var(--flopay-input-font-family);
36
36
  font-weight: var(--flopay-input-font-weight);
37
37
  }
38
- `}),aa&&no&&(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:g?-2:0},children:[(0,d.jsxs)("button",{type:"button",onClick:ge,style:{display:"inline-flex",alignItems:"center",gap:Ni?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:U.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...U.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...U.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Do,{content:we})]}),Zs?(0,d.jsx)("div",{style:{flex:1}}):(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:U.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...U.title},children:(0,d.jsx)(da,{content:xe})})]}),!aa&&!Zs&&(0,d.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:Ui,order:g?-3:0,...U.title},children:(0,d.jsx)(da,{content:xe})}),g&&me&&(0,d.jsx)("div",{style:{order:-2,width:"100%"},children:me}),g&&ao&&(0,d.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,d.jsx)("div",{style:{backgroundColor:Mo,border:`1px solid ${nn(Ua)}`,borderRadius:nr,padding:"10px"},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:Vt,onChange:s=>{Nt("email"),hr.current=s.target.value,xr(s.target.value)},onPointerDown:()=>Nt("email"),onKeyDown:()=>Nt("email"),onBlur:()=>{Gr("email")&&tn(!0),wo||_i()},disabled:at,required:!0,"aria-invalid":Ua||void 0,"aria-describedby":Ua?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...zi}})}),Ua&&(0,d.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:sa,children:ki.empty?"Email address is required":"Enter a valid email address"})]}),De&&(0,d.jsx)("div",{style:{order:g?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let s=Ht,E=(re=!1)=>({backgroundColor:Mo,border:`1px solid ${nn(re)}`,borderRadius:nr,marginTop:"0.5rem",padding:"10px"}),ae=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...zi}),je=(0,c.getStateOptions)(s);return(0,d.jsxs)(d.Fragment,{children:[(0,c.isAVSFieldVisible)(De.address_line_1,s)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{style:E(tr("line1")),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line1",name:"billing-address-line1",placeholder:"Street Address (e.g. 123 Main St)",autoComplete:"billing address-line1",value:jt,onChange:re=>{Nt("line1"),Pr.current.addressLine1=!0,gr.current=re.target.value,Zr(re.target.value)},onPointerDown:()=>Nt("line1"),onKeyDown:()=>Nt("line1"),onBlur:()=>Br("line1"),disabled:at,required:!0,"aria-invalid":tr("line1")||void 0,"aria-describedby":tr("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:ae()})}),tr("line1")&&(0,d.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:sa,children:"Street address is required"})]}),(0,c.isAVSFieldVisible)(De.address_line_2,s)&&(0,d.jsx)("div",{style:E(),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Gt,onChange:re=>{Pr.current.addressLine2=!0,mr.current=re.target.value,_n(re.target.value)},disabled:at,"data-testid":"flopay-address-line2",style:ae()})}),((0,c.isAVSFieldVisible)(De.city,s)||(0,c.isAVSFieldVisible)(De.state,s))&&(0,d.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,c.isAVSFieldVisible)(De.city,s)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:Mo,borderTop:`1px solid ${nn(tr("city"))}`,borderRight:`1px solid ${nn(tr("city"))}`,borderBottom:`1px solid ${nn(tr("city"))}`,borderLeft:`1px solid ${nn(tr("city"))}`,padding:"10px",borderTopLeftRadius:nr,borderBottomLeftRadius:nr,...(0,c.isAVSFieldVisible)(De.state,s)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:nr}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:Yt,onChange:re=>{Nt("city"),Pr.current.city=!0,Xt.current=re.target.value,Qr(re.target.value)},onPointerDown:()=>Nt("city"),onKeyDown:()=>Nt("city"),onBlur:()=>Br("city"),disabled:at,required:!0,"aria-invalid":tr("city")||void 0,"aria-describedby":tr("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:ae()})}),(0,c.isAVSFieldVisible)(De.state,s)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:Mo,borderTop:`1px solid ${nn(tr("state"))}`,borderRight:`1px solid ${nn(tr("state"))}`,borderBottom:`1px solid ${nn(tr("state"))}`,borderLeft:`1px solid ${nn(tr("state"))}`,padding:"10px",borderTopRightRadius:nr,borderBottomRightRadius:nr,...(0,c.isAVSFieldVisible)(De.city,s)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${nn(tr("state")||tr("city"))}`}:{borderRadius:nr}},children:je?(0,d.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:ot,onChange:re=>{Nt("state"),Pr.current.state=!0,Dt.current=re.target.value,dt(re.target.value)},onPointerDown:()=>Nt("state"),onKeyDown:()=>Nt("state"),onBlur:()=>Br("state"),disabled:at,autoComplete:"billing address-level1",required:!0,"aria-invalid":tr("state")||void 0,"aria-describedby":tr("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...ae(),cursor:"pointer"},children:[(0,d.jsx)("option",{value:"",children:(0,c.getStateLabel)(s)}),je.map(re=>(0,d.jsx)("option",{value:re.code,children:re.name},re.code))]}):(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,c.getStateLabel)(s),autoComplete:"billing address-level1",value:ot,onChange:re=>{Nt("state"),Pr.current.state=!0,Dt.current=re.target.value,dt(re.target.value)},onPointerDown:()=>Nt("state"),onKeyDown:()=>Nt("state"),onBlur:()=>Br("state"),disabled:at,required:!0,"aria-invalid":tr("state")||void 0,"aria-describedby":tr("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:ae()})})]}),tr("city")&&(0,d.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:sa,children:"City is required"}),tr("state")&&(0,d.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:sa,children:[(0,c.getStateLabel)(s)," is required"]}),((0,c.isAVSFieldVisible)(De.country,s)||(0,c.isAVSFieldVisible)(De.postal_code,s))&&(0,d.jsxs)("div",{style:{display:"flex",flexDirection:N==="column"?"column":"row",gap:N==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,c.isAVSFieldVisible)(De.country,s)&&(0,d.jsx)("div",{style:{flex:N==="row"?1:void 0,backgroundColor:Mo,borderTop:`1px solid ${ia}`,borderRight:`1px solid ${ia}`,borderBottom:`1px solid ${ia}`,borderLeft:`1px solid ${ia}`,padding:"10px",...N==="row"&&(0,c.isAVSFieldVisible)(De.postal_code,s)?{borderRadius:"0",borderTopLeftRadius:nr,borderBottomLeftRadius:nr,borderRight:"none"}:{borderRadius:nr}},children:(0,d.jsxs)("select",{id:"flopay-billing-country",name:"billing-country",value:Ht,onChange:re=>{Pr.current.country=!0,Tr.current=re.target.value,Kt(re.target.value),Te?.(re.target.value),Dt.current="",dt("")},disabled:at,autoComplete:"billing country","data-testid":"flopay-country",style:{...ae(),cursor:"pointer"},children:[Ht===""?(0,d.jsx)("option",{value:"",children:"Select country"}):null,c.COUNTRY_OPTIONS.map(re=>(0,d.jsxs)("option",{value:re.code,children:[re.flag," ",re.name]},re.code))]})}),(0,c.isAVSFieldVisible)(De.postal_code,s)&&(0,d.jsx)("div",{style:{flex:N==="row"?1:void 0,backgroundColor:Mo,border:`1px solid ${Mc}`,padding:"10px",...N==="row"&&(0,c.isAVSFieldVisible)(De.country,s)?{borderRadius:"0",borderTopRightRadius:nr,borderBottomRightRadius:nr}:{borderRadius:nr}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:(0,c.getPostalCodeLabel)(Ht),autoComplete:"billing postal-code",value:Lr,onChange:re=>{Nt("zip"),Pr.current.zip=!0,Rr.current=re.target.value,_r(re.target.value),tt?.(re.target.value)},onPointerDown:()=>Nt("zip"),onKeyDown:()=>Nt("zip"),onBlur:()=>{Gr("zip")&&zr(!0)},disabled:at,required:Hr.required,"aria-invalid":za||void 0,"aria-describedby":za?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:ae()})})]}),za&&(0,d.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:sa,children:Hr.empty?`${(0,c.getPostalCodeLabel)(s)} is required`:Ld(s)})]})})()}),g&&Dc,St&&(0,d.jsx)(Vo,{margin:"0.75rem 0",styleOverride:U.errorBanner,children:St})]}),qa={margin:0,padding:"6px 8px",background:"#eef2ff",border:"1px solid #c7d2fe",borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},nl=s=>W?!P||!Ln?(0,d.jsx)("pre",{"data-testid":s,style:qa,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":s,style:qa,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${P}`,` directPaypalConfigured=${Ln}`,` inAppBrowserDetected=${String(Oa)}`,` shouldRenderDirectPayPal=${ea}`,` shouldRenderStripePayPal=${ra}`,` hasPaypalStripeInstance=${!!ws}`].join(`
39
- `)}):null,ol=s=>W?!ee||!Yr?(0,d.jsx)("pre",{"data-testid":s,style:qa,children:"FloPay/Stripe-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":s,style:qa,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${ee}`,` currency=${Et}`,` amountInCents=${Zo}`,` enabledPaymentMethods: ${JSON.stringify(ue??[])}`,` enabledPaymentMethodsProvided=${Qo}`,` hasEnabledMethods=${Aa}`,` expressMethods: ${JSON.stringify(Ba)}`,` walletExpressMethods: ${JSON.stringify(_o)}`,` paymentElementMethods: ${JSON.stringify(Mi)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Da)}`,` hasStripeInstance=${!!Yr}`,` shouldRenderWallets=${To}`,` shouldRenderPaymentElement=${na}`].join(`
40
- `)}):null,al=Ct==="apm-expanding"||Ct==="apm-form"||Ct==="apm-collapsing",Ao;Ct==="apm-expanding"?Ao=Ul:Ct==="apm-collapsing"&&(Ao=zl);let ja=vr?Xl(xi,vr,j):null;if(ie==="buttons"){let s=Ct==="buttons"||Ct==="expanding"||Ct==="apm-expanding",E=Ct==="expanding"||Ct==="card"||Ct==="collapsing",ae=pt===void 0?{boxSizing:"border-box",height:Go,padding:"0 1rem"}:{padding:"0.9rem 1rem"},je;Ct==="expanding"||Ct==="apm-expanding"?je=Fd:(Ct==="collapsing"||Ct==="apm-collapsing")&&(je=Ad);let re;return Ct==="expanding"?re=Ul:Ct==="collapsing"&&(re=zl),(0,d.jsxs)("form",{onSubmit:Di,className:K,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Yo,{}),Ne&&(0,d.jsx)(Wr,{status:Ne,errorMessage:St,authorized:Nr}),(0,d.jsxs)("div",{style:{display:"grid"},children:[(0,d.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!s&&!je?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!s&&!je?Dd:{},...je?{animation:je,pointerEvents:"none"}:{}},children:[nl("flopay-direct-paypal-gate-debug"),ol("flopay-stripe-gate-debug"),ea&&ft&&(0,d.jsxs)(d.Fragment,{children:[Oe&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(ya.Provider,{value:b,children:(0,d.jsx)(ga,{sessionId:e,nonce:t,billingApiUrl:Be,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,clientId:ft.clientId,environment:ft.environment,currency:Et.toUpperCase(),isSubscription:Ft,providerObjectType:Y,approvalPresentation:La==="popup"?void 0:La,onTokenizedBody:jr,onComplete:l,onErrorChange:Ue,onDecline:p,onTechnicalFailure:Eo,onButtonClick:Z,runBeforeButtonClick:Cn,isProcessing:at,onLoadStateChange:Ai,onInitializationStateChange:Fi,session:ve,existingOrderId:Oe?.orderId,debug:W},Oe?.orderId??"fresh")})]}),ra&&(0,d.jsx)(or.Elements,{stripe:ta,options:Es,children:(0,d.jsx)(jl,{sessionId:e,nonce:t,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,onTokenizedBody:jr,onErrorChange:Ue,isProcessing:at,onButtonClick:Z,onDecline:p,onTechnicalFailure:Eo,runBeforeButtonClick:Cn,onLoadStateChange:Ds,placeholderBorderRadius:po,popupCapabilityOwner:b,externalTelemetryContext:Ws,presentationMode:Io})}),To?(0,d.jsx)(or.Elements,{stripe:Yr,options:Rs,children:(0,d.jsx)(Wl,{sessionId:e,nonce:t,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,intentKind:Le>0?"payment":"setup",expressMethods:_o,onTokenizedBody:jr,onErrorChange:Ue,onButtonClick:Z,onDecline:p,onTechnicalFailure:Eo,runBeforeButtonClick:Cn,onLoadStateChange:Ls,placeholderBorderRadius:po,popupCapabilityOwner:b,externalTelemetryContext:h})}):null,!To&&js?(0,d.jsx)("div",{style:{height:Go,borderRadius:po,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,na&&(0,d.jsx)($l,{sessionId:e,nonce:t,email:vt.email,billingName:[vt.firstName,vt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,paymentElementMethods:Da,stripeInstance:Yr,paymentElementBaseOptions:xi,futureUseSession:j,onTokenizedBody:jr,onErrorChange:Ue,onButtonClick:Z,onDecline:p,runBeforeButtonClick:Cn,onLoadStateChange:Us,isProcessing:at,submitButtonColor:mo,submitButtonBorderRadius:nr,submitButtonStyle:U.submitButton,onExpandApm:_t,expandedApmMethod:vr,themeId:We,buttonAppearance:{backgroundColor:U.cardButton?.backgroundColor,borderColor:U.cardInputBorder,textColor:U.cardButton?.color,borderRadius:po}}),g&&(0,d.jsx)("button",{type:"button",onClick:async()=>{at||!(await Cn("card")).proceed||(Z?.("card"),le())},disabled:at,style:{width:"100%",...ae,...U.cardButton,...ds({themeBundle:Ce,resolvedPrimaryColor:mo,resolvedBorderRadius:nr,submitButtonStyle:U.submitButton,explicitPrimaryColor:Vr?.colorPrimary}),fontSize:U.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:at?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:at?.6:1},onMouseEnter:Ie=>{!at&&(Ce||Vr?.colorPrimary)&&(Ie.currentTarget.style.backgroundColor=Fc)},onMouseLeave:Ie=>{(Ce||Vr?.colorPrimary)&&(Ie.currentTarget.style.backgroundColor=mo)},onMouseDown:Ie=>{Ie.currentTarget.style.transform="scale(0.985)"},onMouseUp:Ie=>{Ie.currentTarget.style.transform="scale(1)"},children:(0,d.jsx)(Bo,{content:pt})}),St&&Ct==="buttons"&&(0,d.jsx)(Vo,{margin:"0.25rem 0",styleOverride:U.errorBanner,children:St})]}),g&&E&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...re?{animation:re}:{},...Ct==="collapsing"?{pointerEvents:"none"}:{}},children:rl}),ee&&al&&vr&&ja&&Yr&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...Ao?{animation:Ao}:{},...Ct==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:Li,borderRadius:ji,...la,padding:qi},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Qt,style:{display:"inline-flex",alignItems:"center",gap:Ni?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:U.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...U.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...U.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Do,{content:we})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:U.titleFontSize??"1.05rem",color:Ui,paddingRight:80,...U.title},children:`Pay with ${(0,c.getStripeMethodDisplayName)(vr)}`})]}),(0,d.jsx)(or.Elements,{stripe:Yr,options:ja,children:(0,d.jsx)(ss,{method:vr,sessionId:e,nonce:t,email:vt.email,billingName:[vt.firstName,vt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,onTokenizedBody:jr,onErrorChange:Ue,onDecline:p,onCancel:Qt,runBeforeButtonClick:Cn,onButtonClick:Z,isProcessing:at,submitButtonColor:mo,submitButtonBorderRadius:nr,submitButtonStyle:U.submitButton,errorText:St})},vr)]})})]})]})}return al&&vr&&ja&&Yr&&ee?(0,d.jsxs)("form",{onSubmit:Di,className:K,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Yo,{}),Ne&&(0,d.jsx)(Wr,{status:Ne,errorMessage:St,authorized:Nr}),(0,d.jsx)("div",{style:{...Ao?{animation:Ao}:{},...Ct==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:Li,borderRadius:ji,...la,padding:qi},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Qt,style:{display:"inline-flex",alignItems:"center",gap:Ni?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:U.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...U.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...U.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Do,{content:we})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:U.titleFontSize??"1.05rem",color:Ui,paddingRight:80,...U.title},children:`Pay with ${(0,c.getStripeMethodDisplayName)(vr)}`})]}),(0,d.jsx)(or.Elements,{stripe:Yr,options:ja,children:(0,d.jsx)(ss,{method:vr,sessionId:e,nonce:t,email:vt.email,billingName:[vt.firstName,vt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,onTokenizedBody:jr,onErrorChange:Ue,onDecline:p,onCancel:Qt,runBeforeButtonClick:Cn,onButtonClick:Z,isProcessing:at,submitButtonColor:mo,submitButtonBorderRadius:nr,submitButtonStyle:U.submitButton,errorText:St})},vr)]})})]}):(0,d.jsxs)("form",{onSubmit:Di,className:K,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Yo,{}),Ne&&(0,d.jsx)(Wr,{status:Ne,errorMessage:St,authorized:Nr}),(0,d.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[nl("flopay-direct-paypal-gate-debug-default"),ol("flopay-stripe-gate-debug-default"),ea&&ft&&(0,d.jsxs)(d.Fragment,{children:[Oe&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice-default",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(ya.Provider,{value:b,children:(0,d.jsx)(ga,{sessionId:e,nonce:t,billingApiUrl:Be,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,clientId:ft.clientId,environment:ft.environment,currency:Et.toUpperCase(),isSubscription:Ft,providerObjectType:Y,approvalPresentation:La==="popup"?void 0:La,onTokenizedBody:jr,onComplete:l,onErrorChange:Ue,onDecline:p,onTechnicalFailure:Eo,onButtonClick:Z,runBeforeButtonClick:Cn,isProcessing:at,onLoadStateChange:Ai,onInitializationStateChange:Fi,session:ve,existingOrderId:Oe?.orderId,debug:W},Oe?.orderId??"fresh")})]}),ra&&(0,d.jsx)(or.Elements,{stripe:ta,options:Es,children:(0,d.jsx)(jl,{sessionId:e,nonce:t,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,onTokenizedBody:jr,onErrorChange:Ue,isProcessing:at,onButtonClick:Z,onDecline:p,onTechnicalFailure:Eo,runBeforeButtonClick:Cn,onLoadStateChange:Ds,placeholderBorderRadius:po,popupCapabilityOwner:b,externalTelemetryContext:Ws,presentationMode:Io})}),To&&(0,d.jsx)(or.Elements,{stripe:Yr,options:Rs,children:(0,d.jsx)(Wl,{sessionId:e,nonce:t,email:vt.email,billingName:So||void 0,onBuyerIdentityReady:lt,billingApiUrl:Be,intentKind:Le>0?"payment":"setup",expressMethods:_o,onTokenizedBody:jr,onErrorChange:Ue,onButtonClick:Z,onDecline:p,onTechnicalFailure:Eo,runBeforeButtonClick:Cn,onLoadStateChange:Ls,placeholderBorderRadius:po,popupCapabilityOwner:b,externalTelemetryContext:h})}),na&&(0,d.jsx)($l,{sessionId:e,nonce:t,email:vt.email,billingName:[vt.firstName,vt.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:Be,paymentElementMethods:Da,stripeInstance:Yr,paymentElementBaseOptions:xi,futureUseSession:j,onTokenizedBody:jr,onErrorChange:Ue,onButtonClick:Z,onDecline:p,runBeforeButtonClick:Cn,onLoadStateChange:Us,isProcessing:at,submitButtonColor:mo,submitButtonBorderRadius:nr,submitButtonStyle:U.submitButton,themeId:We,onExpandApm:_t,expandedApmMethod:vr,buttonAppearance:{backgroundColor:U.cardButton?.backgroundColor,borderColor:U.cardInputBorder,textColor:U.cardButton?.color,borderRadius:po}})]}),g&&(Ec||Rc||Ic)&&(0,d.jsx)(li,{label:"or pay with card"}),g&&rl]})}var B=require("react/jsx-runtime"),Xo=44,hs="flopay_checkout_saved_payment_resume",hi=new Map,fi=new Map;function Jl(e,t){t.settled&&t.consumers===0&&hi.get(e)===t&&hi.delete(e)}function Wd(e,t,r){let n=fi.get(e);if(n&&(!n.sdkGeneratedIdempotencyKey||!t||n.sdkGeneratedIdempotencyKey===t))return n.attempt;let a=r(),i={attempt:a,sdkGeneratedIdempotencyKey:t};fi.set(e,i);let l=()=>{fi.get(e)===i&&fi.delete(e)};return a.then(l,l),a}function _a(e){return new Promise(t=>setTimeout(t,e))}function gi(e,t,r){let n=Xa({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:Ve.SDK_VERSION,enabled:t!==!1});return n.beginCheckout(r),n}function Ta(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function ps(e,t,r,n,a,i){let l=gi(e,t,r);l.error({errorCode:n,stage:a,paymentMethodCategory:"unknown",...i,...a==="session_read"?{requestCategory:"session_read"}:{}}),Ta(l)}function Zl(e,t,r,n){e.log({name:t==="session_claim"?"session.claim.completed":"session.request.completed",stage:t,requestCategory:t,statusClass:"2xx"}),e.performance({stage:t,durationMs:Math.max(0,e.now()-r),durationMode:"machine",requestCategory:t,...n===void 0?{}:{attempt:n},statusClass:"2xx"})}function Ql(e,t,r,n,a){let i=(0,Ve.classifyTelemetryFailure)(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:r,durationMs:Math.max(0,e.now()-n),durationMode:"machine",requestCategory:r,attempt:a,statusClass:i.statusClass}),t instanceof Ve.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof Ve.FloPayError&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown"}),!1):i.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown",requestCategory:r,statusClass:"4xx"}),!1):(e.error({...i,stage:r,paymentMethodCategory:"unknown",requestCategory:r}),!0)}function ms(e){return!e||e.data.stripe?.publishableKey?!1:!!(0,Ve.resolveDirectPaypalConfig)(e.data.paypal)?.clientId}var $d={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Hd(e){return new eo.FloPay($d,{publishableKey:"provider_unavailable",...e})}async function ys(e,t){let{publishableKey:r,paypalPublishableKey:n}=Zi(e);return{...await Qi({publishableKey:r,paypalPublishableKey:n,...t}),publishableKey:r,paypalPublishableKey:n}}function Ps(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Kd(){if(!Ps())return null;try{let e=window.sessionStorage.getItem(hs);return e?JSON.parse(e):null}catch{return null}}function ec(e){if(Ps())try{window.sessionStorage.setItem(hs,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function fs(){if(Ps())try{window.sessionStorage.removeItem(hs)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function Gd(){if(typeof window>"u")return;let e=new URL(window.location.href),t=["payment_intent","payment_intent_client_secret","redirect_status"],r=!1;for(let n of t)e.searchParams.has(n)&&(e.searchParams.delete(n),r=!0);r&&window.history.replaceState(window.history.state,"",e.toString())}function tc(e){if(typeof window>"u")return;let t=new URL(window.location.href);t.searchParams.set("mode",e),window.history.replaceState(window.history.state,"",t.toString())}function gs(e,t){return(0,Ve.resolveCheckoutLogLayout)(!!e,t)}function Yd(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function rc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Xd(e){return e?e.account&&Object.keys(e.account).length>0||e.couponCodes!==void 0||e.checkoutMetadata!==void 0||e.tagsData!==void 0||e.utmMetadata!==void 0:!1}function Pi({sessionId:e,nonce:t,createSession:r,billingApiUrl:n,telemetry:a,appearance:i,locale:l,loading:u,error:p,onComplete:v,onError:R,onInstrument:w,onDecline:x,onCountryChange:K,onZipChange:T,showPayPal:V=!0,showStripe:A=!0,walletPresentation:f="auto",enabledPaymentMethods:P,showApplePay:ee=!0,showGooglePay:D=!0,debug:ue=!1,layout:F,theme:ne,buttonsTheme:_e,buttonsStyles:ie,cardButtonContent:We,cardBackButtonContent:kt,cardTitleContent:de,showSecurityFooter:G,onButtonClick:pt,onBeforeButtonClick:we,enableAVS:xe,cardFieldOrder:ke,cardPreFormSlot:Z,avsLayout:pe,submitLabel:Re,className:Fe,initialErrorMessage:rt=null,initialPayPalOrderId:me,children:N,checkoutMode:H,confirmLabel:ye,renderConfirmButton:$e,onSessionCompleted:he}){let M=(0,Ve.resolveBillingApiUrl)(n),Ye=(0,C.useMemo)(()=>(0,Ve.resolveTheme)(ne),[ne]),Te=i??Ye?.appearance,tt=r?"embedded_checkout":"standard_checkout",Ze=gs(N,F),[ze,He]=(0,C.useState)(null),[Le,Et]=(0,C.useState)(null),zt=(0,C.useRef)(null),ft=(0,C.useRef)(null),Ft=(0,C.useRef)(0),[q,Pe]=(0,C.useState)(null),st=(0,C.useRef)(null),[W,Ee]=(0,C.useState)(null),nt=(0,C.useMemo)(()=>r?(0,mt.serializeCreateParams)(r):"",[r]),Ke=r?`create:${nt}`:`session:${e??""}`,Rt=rc(W),qt=(0,C.useRef)(new Set),b=(0,C.useRef)(Ke),L=(0,C.useRef)(Ke);Po(()=>{L.current=Ke,b.current!==Ke&&(b.current=Ke,qt.current.clear())},[Ke]);let qe=(0,C.useCallback)(z=>{if(L.current===Ke){if(Yi.FLO_INSTRUMENT_ONCE_NAMES.has(z.name)){if(qt.current.has(z.name))return;qt.current.add(z.name)}(0,it.invokeMerchantCallback)(()=>w?.(z))}},[Ke,w]),fe=jo(qe,Ke),h=(0,C.useRef)(!1),ve=(0,C.useCallback)(z=>{if(h.current)return;let O=z.gateway||!Rt?z:{...z,gateway:Rt};qe(O)},[qe,Rt]);(0,C.useEffect)(()=>{fe({class:"lifecycle",name:"checkout.mount"})},[fe]);let[j,Y]=(0,C.useState)(e??""),te=e??j,k=r?"":te,[Q,be]=(0,C.useState)(!0),[Be,S]=(0,C.useState)(null),[Bt,rr]=(0,C.useState)(0),[sr,Ht]=(0,C.useState)("full"),[Kt,Lr]=(0,C.useState)(!1),[_r,jt]=(0,C.useState)(rt),[Zr,Gt]=(0,C.useState)(null),[_n,Yt]=(0,C.useState)(null),[Qr,ot]=(0,C.useState)(!1),[dt,Vt]=(0,C.useState)(void 0),[xr,Ar]=(0,C.useState)(""),[Fr,Rr]=(0,C.useState)(!1),[Tr,gr]=(0,C.useState)(!1),[mr,Xt]=(0,C.useState)(!1),Dt=(0,C.useRef)(null),hr=(0,C.useRef)(0),Pr=(0,C.useRef)(void 0),[De,mn]=(0,C.useState)("loading"),[Nr,Tn]=(0,C.useState)(0),lr=(0,C.useRef)(!1),Er=(0,C.useRef)(!1),Mn=(0,C.useRef)(!1),en=(0,C.useRef)(null),Jt=(0,C.useRef)(null),g=(0,C.useMemo)(()=>({checkoutMode:H??sr,layout:Yd(N,F)}),[H,N,sr,F]),It=(0,C.useRef)(v);It.current=v;let se=(0,C.useRef)(R);se.current=R;let Ae=(0,C.useRef)(x);Ae.current=x;let xt=(0,C.useCallback)(z=>Qa(en,async O=>{try{return await z(O)}catch(le){throw O.aborted?Wo(le):le}}),[]);(0,C.useEffect)(()=>()=>{en.current?.abort(),en.current=null},[]);let bt=(0,C.useCallback)((z,O)=>{zt.current=z,Et(z),st.current=O,Pe(O)},[]),At=(0,C.useCallback)(()=>{let z=ft.current;z&&(ft.current=null,z.destroy())},[]);(0,C.useEffect)(()=>{Sr(Le)?.setCheckoutContext(g),q&&q!==Le&&Sr(q)?.setCheckoutContext(g)},[Le,q,g]);let Qe=(0,C.useRef)(he);Qe.current=he;let Ur=(0,C.useCallback)(z=>{mn(z),!(z!=="exhausted"||Mn.current)&&(Mn.current=!0,se.current?.(new Ve.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),ro=(0,C.useCallback)(()=>{mn("retrying"),Tn(z=>z+1)},[]);(0,C.useEffect)(()=>{mn("loading"),Tn(0),Mn.current=!1},[te]),(0,C.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:Ve.SDK_VERSION,checkout_type:tt,checkout_layout:Ze,billing_api_url:M})},[Ze,tt,M]);let Ot=(0,C.useMemo)(()=>r?(0,mt.serializeCreateParams)(r,!0):"",[r]),Hr=(0,C.useMemo)(()=>xr===Ot?dt:void 0,[dt,xr,Ot]),yn=(0,C.useMemo)(()=>r?$i(r,Hr):void 0,[r,Hr]),fn=H??yn?.checkoutMode??"full",Zt=(0,C.useMemo)(()=>yn?{...yn,checkoutMode:fn}:void 0,[yn,fn]);(0,C.useEffect)(()=>{Vt(void 0),Ar(Ot),Pr.current=void 0,Dt.current=null,Xt(!1)},[Ot]),(0,C.useEffect)(()=>{jt(rt)},[rt]);let xn=(0,C.useCallback)((z,O,le)=>{(0,it.invokeMerchantCallback)(()=>{Ae.current?.(Cr(z,O,le))})},[]),An=(0,C.useCallback)(async(z,O)=>{jt(null),Yt(null),ot(!1),Gt("processing");let le=O?.sessionId??z.id,ge=z.clientSecret||t,_t=rc(z),Qt=zt.current??st.current,Ne=Sr(Qt),X=Qt?null:gi(M,a,g),J={log:Me=>{Ne?Ne.log(Me):X?.log(Me)},error:Me=>{Ne?Ne.error(Me):X?.error(Me)},terminal:Me=>{Ne?Ne.terminal(Me):X?.terminal(Me)},performance:Me=>{Ne?Ne.performance(Me):X?.performance(Me)},now:()=>Ne?.now()??X?.now()??0,elapsed:Me=>Ne?.elapsed(Me)??Math.max(0,(X?.now()??Me)-Me)},$=J.now(),m=!!(O?.initialAutoProcessingError||O?.initialAutoProcessingPending),y=!1,I,ce=()=>{y||(y=!0,m=!0,I=J.now(),J.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),J.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},Oe=!1,Xe=()=>{Oe||(Oe=!0,J.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),J.performance({stage:"processing",durationMs:J.elapsed($),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),I!==void 0&&J.performance({stage:"recovery",durationMs:J.elapsed(I),durationMode:"machine",paymentMethodCategory:"saved"}))};J.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),h.current=!0;try{J.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{h.current=!1}fe({class:"lifecycle",name:"payment.processing.started",provider:_t}),m&&ce();let er;try{let Me=Tl(O?.initialAutoProcessingError),et=O?.initialAutoProcessingError?.type==="3ds_required"&&!O.initialAutoProcessingError.threeDSecureToken&&O.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:O.initialAutoProcessingError.nextActionRedirectUrl}:null,lt,St=Ce=>(ce(),xt(U=>$o(Ce,{billingApiUrl:M,sessionId:le,nonce:ge,session:z,signal:U})));if(et)lt=await St(et);else if(Me)ce(),Me.type==="paypal_redirect_required"&&Jt.current?.publishableKey&&ec({sessionId:le,publishableKey:Jt.current.publishableKey,paypalPublishableKey:Jt.current.paypalPublishableKey}),lt=await xt(Ce=>ti(Me,{flopay:zt.current,paypalFlopay:st.current,attempt3DS:O?.attempt3DS,billingApiUrl:M,sessionId:le,session:z,telemetry:!1,signal:Ce})),Me.type==="paypal_redirect_required"&&fs();else if(O?.initialAutoProcessingPending){let Ce=O.initialAutoProcessingPending,U=new eo.PaymentAPI(M,{telemetry:!1}),oe=await xt(at=>U.waitForCheckoutSessionCompletion(Ce.sessionId,{initialDelayMs:Ce.retryAfterMs,nonce:ge,statusUrl:Ce.statusUrl,signal:at})),gt=so(oe,z),Ge=oe.autoProcessingError?.type==="3ds_required"&&oe.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:oe.autoProcessingError.nextActionRedirectUrl}:null;if(Ge)lt=await St(Ge);else{if(!Yn(gt))throw Lo(gt);lt=Gn(gt,le)}}else{if(O?.initialAutoProcessingError)throw qn(O.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:O.initialAutoProcessingError.checkoutMethod});if(O?.fromCreateSession)return O?.fallbackToFull&&(Ht("full"),tc("full")),!1;{let Ce=await Ho({billingApiUrl:M,sessionId:le,session:z,nonce:ge,telemetry:!1});Ce.type==="success"?lt=Ce.result:Ce.type==="next_action_required"?lt=await St(Ce):(ce(),Ce.type==="paypal_redirect_required"&&Jt.current?.publishableKey&&ec({sessionId:le,publishableKey:Jt.current.publishableKey,paypalPublishableKey:Jt.current.paypalPublishableKey}),lt=await xt(U=>ti(Ce,{flopay:zt.current,paypalFlopay:st.current,attempt3DS:O?.attempt3DS,billingApiUrl:M,sessionId:le,session:z,telemetry:!1,signal:U})),Ce.type==="paypal_redirect_required"&&fs())}}le&&(0,Rn.markSessionRecentlyCompleted)(le),Xe(),m&&(J.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),J.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),J.terminal({outcome:lt.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),ot(lt.status==="authorized"),Gt("success"),await _a(600),er=()=>It.current?.(lt)}catch(Me){let et=io(Ca(Me),le);if(et.code==="three_ds_aborted")return!1;let lt=et.checkoutMethod??ba;jt(et.message),Yt(et.message),ot(!1),O?.fallbackToFull&&(J.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),Ht("full"),tc("full")),Xe();let St=et.statusCode===void 0?void 0:(0,Ve.telemetryStatusClass)(et.statusCode,"unknown"),Ce=St==="4xx"?{requestCategory:"process_payment",statusClass:St}:{},U=St===void 0||St==="4xx";if(U&&(et.telemetryOutcome==="payment_declined"||!!(et.declineCode||et.code?.toLowerCase().includes("declin"))))J.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Ce});else if(U&&(et.telemetryOutcome==="validation_rejected"||et.type==="validation_error"))J.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Ce});else{let Ge=(0,Ve.classifyTelemetryFailure)(Me,m?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),at=et.telemetryRequestCategory??"process_payment";h.current=!0;try{J.error({...Ge,...et.telemetryFailureCategory?{failureCategory:et.telemetryFailureCategory}:{},stage:m?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:at})}finally{h.current=!1}fe({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:at,provider:_t})}return(0,it.invokeMerchantCallback)(()=>se.current?.(et)),xn(lt,et,{code:et.code,declineCode:et.declineCode}),Gt("error"),await Promise.allSettled([_a(400),O?.ensureProvidersReady?O.ensureProvidersReady():Promise.resolve()]),m&&(J.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),J.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Xe(),X&&Ta(X),Gt(null),Yt(null)}return(0,it.invokeMerchantCallback)(er),!0},[xn,fe,t,M,xt,a,g]);(0,C.useEffect)(()=>{if(typeof window>"u"||Er.current)return;let z=new URLSearchParams(window.location.search),O=z.get("payment_intent_client_secret");if(!O)return;let le=Kd();le&&(Er.current=!0,(async()=>{let ge,_t=0;jt(null),Yt(null),Gt("processing"),Lr(!0);try{if(z.get("redirect_status")==="failed")throw Object.assign(new Ve.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Qt,paypalFlopay:Ne}=await Qi({publishableKey:le.publishableKey,paypalPublishableKey:le.paypalPublishableKey,billingApiUrl:M,locale:l,telemetry:a});ge=Sr(Ne??Qt),ge?.setCheckoutContext(g),_t=ge?.now()??0,ge?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),ge?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let X=(Ne??Qt)?.getRawProvider();if(!X)throw Object.assign(new Ve.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:J,error:$}=await X.retrievePaymentIntent(O);if($)throw Object.assign(new Ve.FloPayError($.message??"Failed to retrieve PayPal payment status.","api_error",{code:$.code}),{checkoutMethod:"paypal"});let m=fl(J?.status);if(!J||m==="failed")throw Object.assign(new Ve.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let y=typeof J.payment_method=="string"?J.payment_method:J.payment_method?.id,I=m;if(le.sessionId){let Xe=(await new eo.PaymentAPI(M,{telemetry:!1}).getUnifiedCheckoutSession(le.sessionId)).data.session;if(Xe&&Xe.status!=="complete"){let er=await Ho({billingApiUrl:M,sessionId:le.sessionId,session:Xe,telemetry:!1,tokenizedData:{id:y??J.id,type:"card",threeDSecureActionResultTokenId:J.id,isPaypal:!0}});if(er.type!=="success")throw Object.assign(new Ve.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});I=er.result.status}}le.sessionId&&(0,Rn.markSessionRecentlyCompleted)(le.sessionId),ge?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),ge?.performance({stage:"redirect_resume",durationMs:ge.elapsed(_t),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),ge?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Gt("success"),await _a(600),(0,it.invokeMerchantCallback)(()=>It.current?.({status:I,paymentIntentId:J.id,paymentMethodId:y,checkoutMethod:"paypal"}))}catch(Qt){let Ne=io(Ca(Qt),le.sessionId),X=Ne.checkoutMethod??"paypal",J=!!(Ne.declineCode||Ne.code?.toLowerCase().includes("declin"));if(ge)ge.performance({stage:"redirect_resume",durationMs:ge.elapsed(_t),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),J?ge.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):ge.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(J){let $=gi(M,a,g);$.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Ta($)}else ps(M,a,g,"REDIRECT_RESUME_FAILED","redirect_resume");jt(Ne.message),Yt(Ne.message),(0,it.invokeMerchantCallback)(()=>se.current?.(Ne)),xn(X,Ne,{code:Ne.code,declineCode:Ne.declineCode}),Gt("error"),await _a(400)}finally{fs(),Gd(),Gt(null),Yt(null),Lr(!1)}})())},[xn,l,M,a,g]);let zr=(0,C.useRef)(null),Fn=(0,C.useMemo)(()=>Zt?(0,mt.serializeCreateParams)(Zt):"",[Zt]),tn=(0,C.useRef)(Zt);tn.current=Zt,(0,C.useEffect)(()=>{Y(e??"")},[e]),(0,C.useEffect)(()=>{lr.current=!1,jt(rt),Yt(null),ot(!1),Gt(null)},[Fn,rt,e]);async function Bn(z,O,le){let ge=gi(M,a,g),_t=new eo.PaymentAPI(M,{telemetry:!1}),Qt=!1;try{let Ne=z.idempotencyKey===void 0?void 0:(0,Ve.resolveIdempotencyKey)(z.idempotencyKey),X=(0,mt.readCachedInlineSession)(O,le),J=(0,mt.readCachedInlineIdempotencyKey)(O,le);X?.canonicalIdentity===le&&J&&J.canonicalIdentity===void 0&&((0,mt.persistCachedInlineIdempotencyKey)(O,le,J.idempotencyKey),J={...J,canonicalIdentity:le});let $=Ne??(J?.canonicalIdentity===le?J.idempotencyKey:void 0),m,y=!1;ge.log({name:X?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let I=X?.sid??null,ce=null,Oe,Xe,er=!1;if(I)try{ce=await _t.getUnifiedCheckoutSession(I,X?.nonce),X&&X.canonicalIdentity===void 0&&((0,mt.legacyCachedSessionMatchesDraft)(ce.data.session,z)?((0,mt.persistCachedInlineSession)(O,le,I,X.nonce??ce.data.session?.clientSecret),J&&J.canonicalIdentity===void 0&&((0,mt.persistCachedInlineIdempotencyKey)(O,le,J.idempotencyKey),$??($=J.idempotencyKey))):((0,mt.clearCachedInlineCheckout)(O,le),J=null,$=Ne,I=null,ce=null));let et=ce?.data.session?.status,lt=ce?.data.session,St=lt?.clientSecret||X?.nonce;if(I&&lt?.buyerIdentified===!1&&St&&(Xe=Oo(_t,I,St,z.account)),I&&ce&&et==="complete"){if((0,Rn.wasSessionRecentlyCompleted)(I))return{sid:I,result:ce};(0,mt.clearCachedInlineCheckout)(O,le),I=null,ce=null,y=!0}}catch{ge.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),X?.canonicalIdentity===void 0?((0,mt.clearCachedInlineCheckout)(O,le),$=Ne):(0,mt.clearCachedInlineSession)(O,le),I=null}if(!I){!Ne&&(y||!$)&&($=(0,Ve.resolveIdempotencyKey)(),m=$),$&&(0,mt.persistCachedInlineIdempotencyKey)(O,le,$);let et=ge.now(),lt=0;ge.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let St={...z,idempotencyKey:$,avsCheck:!!xe,avsConfig:typeof xe=="object"?xe:void 0,checkoutType:"embedded_checkout",checkoutLayout:gs(N,F)};Object.defineProperty(St,eo.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:oe=>{lt=Math.max(lt,oe)}}});let Ce=()=>{Zl(ge,"session_create",et,lt)},U=oe=>{Ql(ge,oe,"session_create",et,lt)&&fe({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,Ve.isDetachedSessionEligible)(St)){let oe=await _t.createDetachedSession(St);oe.claimed.catch(()=>{}),ce=oe.shell,I=oe.sessionId,Xe=oe.claim;let gt=ge.now();ge.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),Oe=oe.claimed.then(Ge=>{let at=Ge.data.session?.id??oe.sessionId;return at&&(0,mt.persistCachedInlineSession)(O,le,at,Ge.data.session?.clientSecret??oe.nonce),Zl(ge,"session_claim",gt),Ce(),Ge},Ge=>{throw(0,mt.clearCachedInlineSession)(O,le),Ql(ge,Ge,"session_claim",gt,0)&&fe({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),Ge}).finally(()=>Ta(ge)),Oe.catch(()=>{}),Qt=!0,ge.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),ge.performance({stage:"session_shell",durationMs:ge.now()-et,durationMode:"machine",requestCategory:"session_create",attempt:lt,statusClass:"2xx",paymentMethodCategory:"card"})}else ce=await _t.createAndFetchSession(St),Ce()}catch(oe){throw U(oe),oe}I=ce.data.session?.id??I??"",I&&!Oe&&(0,mt.persistCachedInlineSession)(O,le,I,ce.data.session?.clientSecret)}let Me=ce?.data.session;return!Xe&&I&&Me?.buyerIdentified===!1&&Me.clientSecret&&(Xe=Oo(_t,I,Me.clientSecret,z.account)),{sid:I??"",result:ce,sdkGeneratedIdempotencyKey:m,...Oe?{claimed:Oe}:{},...Xe?{claim:Xe}:{},...er?{claimRequiresIdentity:!0}:{}}}finally{Qt||Ta(ge)}}let $n=(0,C.useRef)(Bn);Po(()=>{$n.current=Bn},[Bn]);let Kr=(0,C.useCallback)(async(z,O)=>{let le=tn.current;if(!le)throw new Ve.FloPayError("createSession is required to bootstrap checkout.","validation_error");let ge=$i(le,z),_t=(0,mt.serializeCreateParams)(ge),Qt=(0,mt.hashCreateParams)(ge),Ne=hi.get(_t);if(!Ne){let $={canonicalIdentity:_t,promise:$n.current(ge,Qt,_t),consumers:0,settled:!1};Ne=$,hi.set(_t,$);let m=()=>{$.settled=!0,Jl(_t,$)};$.promise.then(m,m)}Ne.consumers+=1;let X=!1,J=()=>{X||(X=!0,Ne.consumers-=1,Jl(_t,Ne))};O?.(J);try{let $=await Ne.promise;zr.current=_t,z&&(Ar(Ot),Vt(Me=>pl(Me,z)));let{sid:m,result:y,claimed:I,claim:ce,claimRequiresIdentity:Oe}=$;if(Pr.current=ce,Xt(Oe===!0),He(y),y.data.session&&Ee(y.data.session),m&&Y(m),I){hr.current+=1;let Me=hr.current;Dt.current=I,gr(!0),I.then(et=>{hr.current===Me&&(Dt.current===I&&(Dt.current=null),He(et),et.data.session&&Ee(et.data.session),gr(!1),Xt(!1))},et=>{hr.current===Me&&(Dt.current===I&&(Dt.current=null),gr(!1),Xt(!1),S(et instanceof Ve.FloPayError?et:new Ve.FloPayError(et instanceof Error?et.message:"Failed to create session","api_error")))})}else hr.current+=1,Dt.current=null,gr(!1),Xt(!1);let{flopay:Xe,paypalFlopay:er}=await ys(y,{billingApiUrl:M,locale:l,telemetry:a});return bt(Xe,er),be(!1),$}catch($){throw zr.current===_t&&(zr.current=null),$}finally{O||J()}},[Ot,bt,l,M,a]),gn=(0,C.useRef)(An);gn.current=An;let hn=(0,C.useRef)(Kr);hn.current=Kr;let Nt=(0,C.useCallback)(async z=>{if(!Xd(z)||Fr)return{sessionId:j,session:W};Rr(!0);try{let O=await Kr(z);return{sessionId:O.sid,session:O.result.data.session??null}}finally{Rr(!1)}},[Kr,Fr,j,W]),Gr=(0,C.useCallback)(async z=>{let O=Pr.current;if(!O)return;let le=hr.current,ge=await O(z);hr.current===le&&(He(ge),ge.data.session&&Ee(ge.data.session))},[]),Br=(0,C.useCallback)(async()=>{await Dt.current},[]),Pn=(0,C.useCallback)(async()=>(await Br(),{proceed:!0}),[Br]);(0,C.useEffect)(()=>{let z=!1,O,le=++Ft.current;At(),S(null),rr(0);let ge=()=>{z=!0,Ft.current===le&&(Ft.current+=1,At())},_t=tn.current;if(Fn&&_t)return Ht(fn),be(!1),zr.current===Fn?ge:(Ee(ml(_t,H)),(async()=>{let X=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),J=fn==="auto"&&!lr.current&&!X;J&&(jt(null),Yt(null),Gt("processing"));try{let $=await hn.current(void 0,ce=>{O=ce}),m=$.result.data.session??null;Jt.current=Zi($.result);let y=ms($.result),I=(0,Rn.wasSessionRecentlyCompleted)($.sid||m?.id);if(!z&&J&&m&&!y&&!I){lr.current=!0,await Wd(Fn,$.sdkGeneratedIdempotencyKey,()=>gn.current(m,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:$.result.autoProcessingError,initialAutoProcessingPending:$.result.autoProcessingPending,autoProcessingAttempted:$.result.autoProcessingAttempted,sessionId:$.sid||m.id}));return}!z&&J&&((y||I)&&(lr.current=!0),Gt(null),Yt(null))}catch($){if(z)return;let m=$a($);if(J&&m==="session_auto_completed"){lr.current=!0,Gt("success"),await _a(600),z||((0,it.invokeMerchantCallback)(()=>{It.current?.({status:"succeeded"})}),Gt(null),Yt(null));return}J&&(Gt(null),Yt(null));let y=$ instanceof Ve.FloPayError?$:new Ve.FloPayError($ instanceof Error?$.message:"Failed to create session","api_error");S(y)}finally{O?.(),O=void 0}})(),()=>{ge(),O?.()});be(!0);async function Qt(){let X=!1,J=null;try{let $=new eo.PaymentAPI(M,{telemetry:!1}),m=await $.getUnifiedCheckoutSession(te,t);if(J=m,z)return;He(m);let y=m.data.session??null;if(Ee(y),!y)throw new Ve.FloPayError("No session data returned","api_error");let I=y.checkoutMode;if(I==="setup")throw new Ve.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(y.status==="authorized"){be(!1),(0,it.invokeMerchantCallback)(()=>{It.current?.(Gn(y,te)),Qe.current?.(y.successUrl??"")});return}if(y.status==="complete"){be(!1),(0,it.invokeMerchantCallback)(()=>{Qe.current?.(y.successUrl??"")});return}if(y.status==="expired")throw Wa(y);X=!0;let ce=H??I??"full";Ht(ce),hr.current+=1;let Oe=y.clientSecret||t;Pr.current=y.buyerIdentified===!1&&Oe?Oo($,te,Oe,{...y.customer?.id?{userId:y.customer.id}:{}}):void 0,gr(!1),Xt(!1);let Xe=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),er=ms(m);if(ce==="auto"&&!lr.current&&!Xe&&!er){lr.current=!0;let Me=Ne(m);try{if(await gn.current(y,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>Me,sessionId:te||y.id}),z)return;await Me,z||be(!1);return}catch{if(z)return;await Me,z||be(!1);return}}await Ne(m),z||be(!1)}catch($){if(z)return;let m=ul($,X);if(X&&fe({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),m){let{errorCode:I,stage:ce,...Oe}=m;ps(M,a,g,I,ce,Oe)}if(m?.stage==="provider_load"&&(H??J?.data.session?.checkoutMode??"full")==="full"&&dl(J,V,A)){let I=Hd({billingApiUrl:M,locale:l,telemetry:a});ft.current=I,bt(I,null),rr(1),be(!1);return}let y=$ instanceof Ve.FloPayError&&m?.stage!=="provider_load"?$:cl();y!==$&&(0,it.invokeMerchantCallback)(()=>se.current?.(y)),S(y),be(!1)}}async function Ne(X){let{flopay:J,paypalFlopay:$,...m}=await ys(X,{billingApiUrl:M,locale:l,telemetry:a});Jt.current={publishableKey:m.publishableKey,paypalPublishableKey:m.paypalPublishableKey},bt(J,$),rr(0)}return Qt(),ge},[H,Fn,fn,k,t,V,A]);let vn=(0,C.useCallback)(async()=>{if(!ze||Bt!==1)return;let z=Ft.current;rr(2);try{let{flopay:O,paypalFlopay:le}=await ys(ze,{billingApiUrl:M,locale:l,telemetry:a});if(Ft.current!==z)return;At(),bt(O,le),rr(0)}catch(O){if(Ft.current!==z)return;let{errorCode:le,stage:ge,..._t}=Wi(O);ps(M,a,g,le,ge,_t)}},[At,bt,l,Bt,M,a,g,ze]),Ct=!!(te&&(W?.clientSecret||t)),cr=Kt||!Ct,vr=(0,C.useCallback)(async()=>{if(!(Kt||!Ct||!W)){Lr(!0),jt(null);try{await An(W,{attempt3DS:!0,fallbackToFull:!0,sessionId:te||W.id})}finally{Lr(!1)}}},[te,Kt,Ct,An,W]),qr=(0,Ve.resolveDirectPaypalConfig)(ze?.data.paypal,me),no=ms(ze),Dn=(0,C.useMemo)(()=>{if(!(!ze||!W||!ze.data.stripe?.publishableKey))return{billingApiUrl:M}},[ze,W,M]),Hn=!!(r&&!N&&F==="buttons"&&we&&fn==="full"),rn=!!(te&&((0,Ve.isMountableVaultBlock)(W?.vault)||(0,Sn.canRecoverHostedCardForm)(W))),dr=(0,C.useMemo)(()=>({session:W,loading:Q,error:Be,checkoutMode:sr,inlineSessionDraft:Zt,applyInlineSessionPatch:Hn?Nt:void 0,inlineSessionPatchProcessing:Fr,claimPending:Tr,claimRequiresIdentity:mr,claimBuyerIdentity:Gr,waitForDataAttachment:Br}),[W,Q,Be,sr,Zt,Hn,Nt,Fr,Tr,mr,Gr,Br]),oo=!!r&&F==="buttons"&&!no&&!rn&&(!Le||!Dn),yr=Zr?(0,B.jsx)(Wr,{status:Zr,errorMessage:_n,authorized:Qr}):null;if(Q&&!rn){if(u)return(0,B.jsxs)(B.Fragment,{children:[u,yr]});if(F==="buttons"){let z=Ye?.buttonsLayout?.cardButton?.borderRadius??Ye?.appearance.variables?.borderRadius??8,O=le=>(0,B.jsx)("div",{style:{height:le,borderRadius:z,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[V&&O(Xo),A&&(ee||D)&&O(Xo),A&&O(Xo),(0,B.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),yr]})}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,B.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,B.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),yr]})}return Be?p?(0,B.jsx)(wn.Provider,{value:dr,children:p(Be)}):(0,B.jsx)(wn.Provider,{value:dr,children:(0,B.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:Be.message})}):oo?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(wn.Provider,{value:dr,children:(0,B.jsx)(Zd,{onButtonClick:pt,showPayPal:V,showStripe:A,showApplePay:ee,showGooglePay:D,theme:ne,buttonsTheme:_e,buttonsStyles:ie,cardButtonContent:We,cardBackButtonContent:kt,cardTitleContent:de})}),yr]}):no&&W&&qr?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(wn.Provider,{value:dr,children:(0,B.jsxs)("div",{className:Fe,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[_r&&(0,B.jsx)(Vo,{icon:!1,children:_r}),De==="retrying"&&(0,B.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),De==="exhausted"&&(0,B.jsxs)("div",{role:"alert",children:[(0,B.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,B.jsx)("button",{type:"button",onClick:ro,children:"Retry PayPal"})]}),De!=="exhausted"&&(0,B.jsx)("div",{"aria-hidden":De==="retrying"?!0:void 0,style:De==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,B.jsx)(Rl,{sessionId:te,nonce:W.clientSecret||void 0,billingApiUrl:M,email:W.customer?.email||Zt?.account?.email,billingName:[W.customer?.firstName,W.customer?.lastName].filter(Boolean).join(" ")||[Zt?.account?.firstName,Zt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Gr,clientId:qr.clientId,environment:qr.environment,currency:(W.currency??"usd").toUpperCase(),isSubscription:W.mode==="subscription",providerObjectType:qr.providerObjectType,approvalPresentation:qr.approvalPresentation,existingOrderId:qr.existingOrderId,onComplete:v,onErrorChange:jt,onDecline:x,onButtonClick:pt,runBeforeButtonClick:Pn,onInitializationStateChange:Ur,allowAutomaticRetry:Nr===0,session:W,telemetry:a,telemetryContext:g,onInstrument:ve,debug:ue},`${Ke}:paypal-init-${Nr}`)})]})}),yr]}):sr==="confirm"?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(wn.Provider,{value:dr,children:(0,B.jsx)(Pa,{flopay:Le,paypalFlopay:q,options:Dn??{billingApiUrl:M},onInstrument:ve,children:(0,B.jsxs)("div",{className:Fe,children:[_r&&(0,B.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:_r}),$e?$e({onConfirm:vr,isProcessing:cr}):(0,B.jsx)("button",{type:"button",onClick:vr,disabled:cr,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:cr?"not-allowed":"pointer",opacity:cr?.6:1},children:Kt?"Processing...":ye??"Confirm Purchase"})]})},Ke)}),yr]}):(!Le||!Dn)&&!(rn&&sr==="full")?(0,B.jsx)(B.Fragment,{children:yr}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(wn.Provider,{value:dr,children:(0,B.jsxs)(Pa,{flopay:Le,paypalFlopay:q,options:Dn??{billingApiUrl:M},onInstrument:ve,children:[Bt===1&&(0,B.jsx)("button",{type:"button",onClick:vn,children:"Retry payment methods"}),N?(0,B.jsxs)(B.Fragment,{children:[_r&&(0,B.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:_r}),(0,B.jsx)(Jd,{sessionId:te,nonce:W?.clientSecret||void 0,billingApiUrl:M,session:W,submitLabel:Re,walletPresentation:f,children:N})]}):(0,B.jsx)(yi,{sessionId:te,nonce:W?.clientSecret||void 0,telemetry:a,email:W?.customer?.email||Zt?.account?.email,userId:W?.customer?.id||Zt?.account?.userId,firstName:W?.customer?.firstName||Zt?.account?.firstName,lastName:W?.customer?.lastName||Zt?.account?.lastName,totalAmount:W?Math.round((0,Ve.buildCheckoutDisplayData)(W).total*100):0,currency:W?.currency?.toLowerCase()??"usd",onComplete:v,onError:R,onDecline:x,error:_r,onErrorChange:jt,showPayPal:V,showStripe:A,walletPresentation:f,enabledPaymentMethods:Bt?[]:P??ze?.data.stripe?.enabledPaymentMethods??W?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:ze?.data.stripe?.enabledPaymentMethodCountries,showApplePay:ee,showGooglePay:D,layout:F,theme:ne,buttonsTheme:_e,buttonsStyles:ie,appearance:Te,cardButtonContent:We,cardBackButtonContent:kt,cardTitleContent:de,onButtonClick:pt,onBeforeButtonClick:we,onBuyerIdentityReady:Gr,enableAVS:xe,...ke?{cardFieldOrder:ke}:{},...Z?{cardPreFormSlot:Z}:{},avsLayout:pe,country:W?.customer?.country,city:W?.customer?.city,state:W?.customer?.state,onCountryChange:K,onZipChange:T,avsCheck:!!xe,checkoutType:r?"embedded_checkout":"standard_checkout",checkoutLayout:gs(N,F),className:Fe,submitLabel:Re,directPaypal:qr,isSubscription:W?.mode==="subscription",session:W,dataAttachmentPending:Tr,dataAttachmentRequiresIdentity:mr,debug:ue})]},Ke)}),yr]})}function Jd({sessionId:e,nonce:t,billingApiUrl:r,session:n,submitLabel:a,walletPresentation:i,children:l}){return(0,B.jsx)(B.Fragment,{children:C.default.Children.map(l,u=>{if(!C.default.isValidElement(u))return u;let p=u.props,v={};return p.sessionId||(v.sessionId=e),!p.nonce&&t&&(v.nonce=t),p.billingApiUrl||(v.billingApiUrl=r),p.submitLabel===void 0&&a!==void 0&&(v.submitLabel=a),p.walletPresentation===void 0&&(v.walletPresentation=i),n?.customer&&(p.email||(v.email=n.customer.email),p.userId||(v.userId=n.customer.id),p.firstName||(v.firstName=n.customer.firstName),p.lastName||(v.lastName=n.customer.lastName)),Object.keys(v).length===0?u:C.default.cloneElement(u,v)})})}function Zd({onButtonClick:e,showPayPal:t,showStripe:r=!0,showApplePay:n,showGooglePay:a,theme:i,buttonsTheme:l,buttonsStyles:u,cardButtonContent:p,cardBackButtonContent:v,cardTitleContent:R}){let[w,x]=(0,C.useState)(!1),K=(0,C.useMemo)(()=>(0,Ve.resolveTheme)(i),[i]),T=(0,C.useMemo)(()=>{let P=K?.buttonsLayout??(0,Ve.resolveButtonsLayoutTheme)(l);return u?{...P,...u,cardButton:{...P.cardButton,...u.cardButton},cardFormContainer:{...P.cardFormContainer,...u.cardFormContainer},backButton:{...P.backButton,...u.backButton},backButtonIcon:{...P.backButtonIcon,...u.backButtonIcon},submitButton:{...P.submitButton,...u.submitButton},title:{...P.title,...u.title}}:P},[K,l,u]),V=K?.buttonsLayout?.cardButton?.borderRadius??K?.appearance.variables?.borderRadius??8,A=P=>(0,B.jsx)("div",{style:{height:P,borderRadius:V,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),f=p===void 0?{boxSizing:"border-box",height:Xo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(w){let P=T.cardInputBorder??"#e5e7eb",ee=T.cardInputBackground??"white",D=Fo(v),ue=Fo(R);return(0,B.jsxs)("div",{style:{backgroundColor:T.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...T.cardFormContainer},children:[(0,B.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,B.jsxs)("button",{type:"button",onClick:()=>x(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:D?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...T.backButton},children:[(0,B.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...T.backButtonIcon},children:(0,B.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,B.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,B.jsx)(Do,{content:v})]}),ue?(0,B.jsx)("div",{style:{flex:1}}):(0,B.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...T.title},children:(0,B.jsx)(da,{content:R})})]}),(0,B.jsx)("div",{style:{backgroundColor:ee,border:`1px solid ${P}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,B.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,B.jsxs)("div",{style:{display:"flex"},children:[(0,B.jsx)("div",{style:{flex:1,backgroundColor:ee,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,B.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,B.jsx)("div",{style:{flex:1,backgroundColor:ee,borderTop:"none",borderRight:`1px solid ${P}`,borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,B.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,B.jsx)("div",{style:{backgroundColor:ee,border:`1px solid ${P}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,B.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,B.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...T.submitButton,opacity:.5}}),(0,B.jsx)("style",{children:`
38
+ `}),ia&&mo&&(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:xe?-2:0},children:[(0,d.jsxs)("button",{type:"button",onClick:Ee,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:A.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...A.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...A.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Oo,{content:Le})]}),Qs?(0,d.jsx)("div",{style:{flex:1}}):(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:A.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...A.title},children:(0,d.jsx)(ua,{content:fe})})]}),!ia&&!Qs&&(0,d.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:zi,order:xe?-3:0,...A.title},children:(0,d.jsx)(ua,{content:fe})}),xe&&Q&&(0,d.jsx)("div",{style:{order:-2,width:"100%"},children:Q}),xe&&io&&(0,d.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,d.jsx)("div",{style:{backgroundColor:xo,border:`1px solid ${ln(za)}`,borderRadius:tr,padding:"10px"},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:jt,onChange:s=>{zt("email"),Rr.current=s.target.value,Jt(s.target.value)},onPointerDown:()=>zt("email"),onKeyDown:()=>zt("email"),onBlur:()=>{Jr("email")&&ao(!0),ko||Ti()},disabled:oe,required:!0,"aria-invalid":za||void 0,"aria-describedby":za?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...qi}})}),za&&(0,d.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:la,children:Ri.empty?"Email address is required":"Enter a valid email address"})]}),Ze&&(0,d.jsx)("div",{style:{order:xe?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let s=xt,k=(ne=!1)=>({backgroundColor:xo,border:`1px solid ${ln(ne)}`,borderRadius:tr,marginTop:"0.5rem",padding:"10px"}),ie=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...qi}),He=(0,c.getStateOptions)(s);return(0,d.jsxs)(d.Fragment,{children:[(0,c.isAVSFieldVisible)(Ze.address_line_1,s)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{style:k(Xt("line1")),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line1",name:"billing-address-line1",placeholder:"Street Address (e.g. 123 Main St)",autoComplete:"billing address-line1",value:ir,onChange:ne=>{zt("line1"),$t.current.addressLine1=!0,fr.current=ne.target.value,Nr(ne.target.value)},onPointerDown:()=>zt("line1"),onKeyDown:()=>zt("line1"),onBlur:()=>Zr("line1"),disabled:oe,required:!0,"aria-invalid":Xt("line1")||void 0,"aria-describedby":Xt("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:ie()})}),Xt("line1")&&(0,d.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:la,children:"Street address is required"})]}),(0,c.isAVSFieldVisible)(Ze.address_line_2,s)&&(0,d.jsx)("div",{style:k(),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Yt,onChange:ne=>{$t.current.addressLine2=!0,Zt.current=ne.target.value,Mn(ne.target.value)},disabled:oe,"data-testid":"flopay-address-line2",style:ie()})}),((0,c.isAVSFieldVisible)(Ze.city,s)||(0,c.isAVSFieldVisible)(Ze.state,s))&&(0,d.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,c.isAVSFieldVisible)(Ze.city,s)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:xo,borderTop:`1px solid ${ln(Xt("city"))}`,borderRight:`1px solid ${ln(Xt("city"))}`,borderBottom:`1px solid ${ln(Xt("city"))}`,borderLeft:`1px solid ${ln(Xt("city"))}`,padding:"10px",borderTopLeftRadius:tr,borderBottomLeftRadius:tr,...(0,c.isAVSFieldVisible)(Ze.state,s)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:tr}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:Wt,onChange:ne=>{zt("city"),$t.current.city=!0,Ft.current=ne.target.value,vt(ne.target.value)},onPointerDown:()=>zt("city"),onKeyDown:()=>zt("city"),onBlur:()=>Zr("city"),disabled:oe,required:!0,"aria-invalid":Xt("city")||void 0,"aria-describedby":Xt("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:ie()})}),(0,c.isAVSFieldVisible)(Ze.state,s)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:xo,borderTop:`1px solid ${ln(Xt("state"))}`,borderRight:`1px solid ${ln(Xt("state"))}`,borderBottom:`1px solid ${ln(Xt("state"))}`,borderLeft:`1px solid ${ln(Xt("state"))}`,padding:"10px",borderTopRightRadius:tr,borderBottomRightRadius:tr,...(0,c.isAVSFieldVisible)(Ze.city,s)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${ln(Xt("state")||Xt("city"))}`}:{borderRadius:tr}},children:He?(0,d.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:_t,onChange:ne=>{zt("state"),$t.current.state=!0,pr.current=ne.target.value,yr(ne.target.value)},onPointerDown:()=>zt("state"),onKeyDown:()=>zt("state"),onBlur:()=>Zr("state"),disabled:oe,autoComplete:"billing address-level1",required:!0,"aria-invalid":Xt("state")||void 0,"aria-describedby":Xt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...ie(),cursor:"pointer"},children:[(0,d.jsx)("option",{value:"",children:(0,c.getStateLabel)(s)}),He.map(ne=>(0,d.jsx)("option",{value:ne.code,children:ne.name},ne.code))]}):(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,c.getStateLabel)(s),autoComplete:"billing address-level1",value:_t,onChange:ne=>{zt("state"),$t.current.state=!0,pr.current=ne.target.value,yr(ne.target.value)},onPointerDown:()=>zt("state"),onKeyDown:()=>zt("state"),onBlur:()=>Zr("state"),disabled:oe,required:!0,"aria-invalid":Xt("state")||void 0,"aria-describedby":Xt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:ie()})})]}),Xt("city")&&(0,d.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:la,children:"City is required"}),Xt("state")&&(0,d.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:la,children:[(0,c.getStateLabel)(s)," is required"]}),((0,c.isAVSFieldVisible)(Ze.country,s)||(0,c.isAVSFieldVisible)(Ze.postal_code,s))&&(0,d.jsxs)("div",{style:{display:"flex",flexDirection:se==="column"?"column":"row",gap:se==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,c.isAVSFieldVisible)(Ze.country,s)&&(0,d.jsx)("div",{style:{flex:se==="row"?1:void 0,backgroundColor:xo,borderTop:`1px solid ${sa}`,borderRight:`1px solid ${sa}`,borderBottom:`1px solid ${sa}`,borderLeft:`1px solid ${sa}`,padding:"10px",...se==="row"&&(0,c.isAVSFieldVisible)(Ze.postal_code,s)?{borderRadius:"0",borderTopLeftRadius:tr,borderBottomLeftRadius:tr,borderRight:"none"}:{borderRadius:tr}},children:(0,d.jsxs)("select",{id:"flopay-billing-country",name:"billing-country",value:xt,onChange:ne=>{$t.current.country=!0,kr.current=ne.target.value,Kr(ne.target.value),dt?.(ne.target.value),pr.current="",yr("")},disabled:oe,autoComplete:"billing country","data-testid":"flopay-country",style:{...ie(),cursor:"pointer"},children:[xt===""?(0,d.jsx)("option",{value:"",children:"Select country"}):null,c.COUNTRY_OPTIONS.map(ne=>(0,d.jsxs)("option",{value:ne.code,children:[ne.flag," ",ne.name]},ne.code))]})}),(0,c.isAVSFieldVisible)(Ze.postal_code,s)&&(0,d.jsx)("div",{style:{flex:se==="row"?1:void 0,backgroundColor:xo,border:`1px solid ${xc}`,padding:"10px",...se==="row"&&(0,c.isAVSFieldVisible)(Ze.country,s)?{borderRadius:"0",borderTopRightRadius:tr,borderBottomRightRadius:tr}:{borderRadius:tr}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:(0,c.getPostalCodeLabel)(xt),autoComplete:"billing postal-code",value:Lr,onChange:ne=>{zt("zip"),$t.current.zip=!0,wr.current=ne.target.value,Sr(ne.target.value),Ne?.(ne.target.value)},onPointerDown:()=>zt("zip"),onKeyDown:()=>zt("zip"),onBlur:()=>{Jr("zip")&&Fn(!0)},disabled:oe,required:Yr.required,"aria-invalid":qa||void 0,"aria-describedby":qa?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:ie()})})]}),qa&&(0,d.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:la,children:Yr.empty?`${(0,c.getPostalCodeLabel)(s)} is required`:Nd(s)})]})})()}),xe&&Oc,wt&&(0,d.jsx)(Wo,{margin:"0.75rem 0",styleOverride:A.errorBanner,children:wt})]}),ja={margin:0,padding:"6px 8px",background:"#eef2ff",border:"1px solid #c7d2fe",borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},ol=s=>z?!pe||!Ln?(0,d.jsx)("pre",{"data-testid":s,style:ja,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":s,style:ja,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${pe}`,` directPaypalConfigured=${Ln}`,` inAppBrowserDetected=${String(La)}`,` shouldRenderDirectPayPal=${ta}`,` shouldRenderStripePayPal=${na}`,` hasPaypalStripeInstance=${!!ks}`].join(`
39
+ `)}):null,al=s=>z?!b||!en?(0,d.jsx)("pre",{"data-testid":s,style:ja,children:"FloPay/Stripe-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":s,style:ja,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${b}`,` currency=${ar}`,` amountInCents=${Qo}`,` enabledPaymentMethods: ${JSON.stringify(B??[])}`,` enabledPaymentMethodsProvided=${ea}`,` hasEnabledMethods=${Fa}`,` expressMethods: ${JSON.stringify(Da)}`,` walletExpressMethods: ${JSON.stringify(To)}`,` paymentElementMethods: ${JSON.stringify(xi)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Oa)}`,` hasStripeInstance=${!!en}`,` shouldRenderWallets=${Mo}`,` shouldRenderPaymentElement=${oa}`].join(`
40
+ `)}):null,il=Ct==="apm-expanding"||Ct==="apm-form"||Ct==="apm-collapsing",Fo;Ct==="apm-expanding"?Fo=zl:Ct==="apm-collapsing"&&(Fo=ql);let Va=lr?Jl(Ai,lr,V):null;if(Ae==="buttons"){let s=Ct==="buttons"||Ct==="expanding"||Ct==="apm-expanding",k=Ct==="expanding"||Ct==="card"||Ct==="collapsing",ie=Xe===void 0?{boxSizing:"border-box",height:Yo,padding:"0 1rem"}:{padding:"0.9rem 1rem"},He;Ct==="expanding"||Ct==="apm-expanding"?He=Bd:(Ct==="collapsing"||Ct==="apm-collapsing")&&(He=Fd);let ne;return Ct==="expanding"?ne=zl:Ct==="collapsing"&&(ne=ql),(0,d.jsxs)("form",{onSubmit:Oi,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Xo,{}),ze&&(0,d.jsx)($r,{status:ze,errorMessage:wt,authorized:Gr}),(0,d.jsxs)("div",{style:{display:"grid"},children:[(0,d.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!s&&!He?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!s&&!He?Od:{},...He?{animation:He,pointerEvents:"none"}:{}},children:[ol("flopay-direct-paypal-gate-debug"),al("flopay-stripe-gate-debug"),ta&&St&&(0,d.jsxs)(d.Fragment,{children:[Ie&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(fa.Provider,{value:O,children:(0,d.jsx)(ha,{sessionId:e,nonce:t,billingApiUrl:x,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,clientId:St.clientId,environment:St.environment,currency:ar.toUpperCase(),isSubscription:we,providerObjectType:De,approvalPresentation:Na==="popup"?void 0:Na,onTokenizedBody:Vr,onComplete:l,onErrorChange:Ve,onDecline:p,onCancel:P,onTechnicalFailure:Io,onButtonClick:G,runBeforeButtonClick:wn,isProcessing:oe,onLoadStateChange:Fi,onInitializationStateChange:Bi,session:q,existingOrderId:Ie?.orderId,debug:z},Ie?.orderId??"fresh")})]}),na&&(0,d.jsx)(rr.Elements,{stripe:ra,options:Is,children:(0,d.jsx)(Vl,{sessionId:e,nonce:t,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,billingApiUrl:x,onTokenizedBody:Vr,onErrorChange:Ve,isProcessing:oe,onButtonClick:G,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Os,placeholderBorderRadius:yo,popupCapabilityOwner:O,externalTelemetryContext:$s,presentationMode:_o})}),Mo?(0,d.jsx)(rr.Elements,{stripe:en,options:Es,children:(0,d.jsx)($l,{sessionId:e,nonce:t,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,billingApiUrl:x,intentKind:it>0?"payment":"setup",expressMethods:To,onTokenizedBody:Vr,onErrorChange:Ve,onButtonClick:G,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Ns,placeholderBorderRadius:yo,popupCapabilityOwner:O,externalTelemetryContext:ce})}):null,!Mo&&Vs?(0,d.jsx)("div",{style:{height:Yo,borderRadius:yo,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,oa&&(0,d.jsx)(Hl,{sessionId:e,nonce:t,email:ve.email,billingName:[ve.firstName,ve.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:st,billingApiUrl:x,paymentElementMethods:Oa,stripeInstance:en,paymentElementBaseOptions:Ai,futureUseSession:V,onTokenizedBody:Vr,onErrorChange:Ve,onButtonClick:G,onDecline:p,runBeforeButtonClick:wn,onLoadStateChange:zs,isProcessing:oe,submitButtonColor:fo,submitButtonBorderRadius:tr,submitButtonStyle:A.submitButton,onExpandApm:Rt,expandedApmMethod:lr,themeId:ct,buttonAppearance:{backgroundColor:A.cardButton?.backgroundColor,borderColor:A.cardInputBorder,textColor:A.cardButton?.color,borderRadius:yo}}),xe&&(0,d.jsx)("button",{type:"button",onClick:async()=>{oe||!(await wn("card")).proceed||(G?.("card"),ee())},disabled:oe,style:{width:"100%",...ie,...A.cardButton,...us({themeBundle:Et,resolvedPrimaryColor:fo,resolvedBorderRadius:tr,submitButtonStyle:A.submitButton,explicitPrimaryColor:Wr?.colorPrimary}),fontSize:A.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:oe?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:oe?.6:1},onMouseEnter:_e=>{!oe&&(Et||Wr?.colorPrimary)&&(_e.currentTarget.style.backgroundColor=Bc)},onMouseLeave:_e=>{(Et||Wr?.colorPrimary)&&(_e.currentTarget.style.backgroundColor=fo)},onMouseDown:_e=>{_e.currentTarget.style.transform="scale(0.985)"},onMouseUp:_e=>{_e.currentTarget.style.transform="scale(1)"},children:(0,d.jsx)(Do,{content:Xe})}),wt&&Ct==="buttons"&&(0,d.jsx)(Wo,{margin:"0.25rem 0",styleOverride:A.errorBanner,children:wt})]}),xe&&k&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...ne?{animation:ne}:{},...Ct==="collapsing"?{pointerEvents:"none"}:{}},children:nl}),b&&il&&lr&&Va&&en&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...Fo?{animation:Fo}:{},...Ct==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:er,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:A.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...A.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...A.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Oo,{content:Le})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:A.titleFontSize??"1.05rem",color:zi,paddingRight:80,...A.title},children:`Pay with ${(0,c.getStripeMethodDisplayName)(lr)}`})]}),(0,d.jsx)(rr.Elements,{stripe:en,options:Va,children:(0,d.jsx)(ls,{method:lr,sessionId:e,nonce:t,email:ve.email,billingName:[ve.firstName,ve.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:st,billingApiUrl:x,onTokenizedBody:Vr,onErrorChange:Ve,onDecline:p,onCancel:er,runBeforeButtonClick:wn,onButtonClick:G,isProcessing:oe,submitButtonColor:fo,submitButtonBorderRadius:tr,submitButtonStyle:A.submitButton,errorText:wt})},lr)]})})]})]})}return il&&lr&&Va&&en&&b?(0,d.jsxs)("form",{onSubmit:Oi,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Xo,{}),ze&&(0,d.jsx)($r,{status:ze,errorMessage:wt,authorized:Gr}),(0,d.jsx)("div",{style:{...Fo?{animation:Fo}:{},...Ct==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:er,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:A.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...A.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...A.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Oo,{content:Le})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:A.titleFontSize??"1.05rem",color:zi,paddingRight:80,...A.title},children:`Pay with ${(0,c.getStripeMethodDisplayName)(lr)}`})]}),(0,d.jsx)(rr.Elements,{stripe:en,options:Va,children:(0,d.jsx)(ls,{method:lr,sessionId:e,nonce:t,email:ve.email,billingName:[ve.firstName,ve.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:st,billingApiUrl:x,onTokenizedBody:Vr,onErrorChange:Ve,onDecline:p,onCancel:er,runBeforeButtonClick:wn,onButtonClick:G,isProcessing:oe,submitButtonColor:fo,submitButtonBorderRadius:tr,submitButtonStyle:A.submitButton,errorText:wt})},lr)]})})]}):(0,d.jsxs)("form",{onSubmit:Oi,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(Xo,{}),ze&&(0,d.jsx)($r,{status:ze,errorMessage:wt,authorized:Gr}),(0,d.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[ol("flopay-direct-paypal-gate-debug-default"),al("flopay-stripe-gate-debug-default"),ta&&St&&(0,d.jsxs)(d.Fragment,{children:[Ie&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice-default",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(fa.Provider,{value:O,children:(0,d.jsx)(ha,{sessionId:e,nonce:t,billingApiUrl:x,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,clientId:St.clientId,environment:St.environment,currency:ar.toUpperCase(),isSubscription:we,providerObjectType:De,approvalPresentation:Na==="popup"?void 0:Na,onTokenizedBody:Vr,onComplete:l,onErrorChange:Ve,onDecline:p,onCancel:P,onTechnicalFailure:Io,onButtonClick:G,runBeforeButtonClick:wn,isProcessing:oe,onLoadStateChange:Fi,onInitializationStateChange:Bi,session:q,existingOrderId:Ie?.orderId,debug:z},Ie?.orderId??"fresh")})]}),na&&(0,d.jsx)(rr.Elements,{stripe:ra,options:Is,children:(0,d.jsx)(Vl,{sessionId:e,nonce:t,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,billingApiUrl:x,onTokenizedBody:Vr,onErrorChange:Ve,isProcessing:oe,onButtonClick:G,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Os,placeholderBorderRadius:yo,popupCapabilityOwner:O,externalTelemetryContext:$s,presentationMode:_o})}),Mo&&(0,d.jsx)(rr.Elements,{stripe:en,options:Es,children:(0,d.jsx)($l,{sessionId:e,nonce:t,email:ve.email,billingName:Gn||void 0,onBuyerIdentityReady:st,billingApiUrl:x,intentKind:it>0?"payment":"setup",expressMethods:To,onTokenizedBody:Vr,onErrorChange:Ve,onButtonClick:G,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Ns,placeholderBorderRadius:yo,popupCapabilityOwner:O,externalTelemetryContext:ce})}),oa&&(0,d.jsx)(Hl,{sessionId:e,nonce:t,email:ve.email,billingName:[ve.firstName,ve.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:x,paymentElementMethods:Oa,stripeInstance:en,paymentElementBaseOptions:Ai,futureUseSession:V,onTokenizedBody:Vr,onErrorChange:Ve,onButtonClick:G,onDecline:p,runBeforeButtonClick:wn,onLoadStateChange:zs,isProcessing:oe,submitButtonColor:fo,submitButtonBorderRadius:tr,submitButtonStyle:A.submitButton,themeId:ct,onExpandApm:Rt,expandedApmMethod:lr,buttonAppearance:{backgroundColor:A.cardButton?.backgroundColor,borderColor:A.cardInputBorder,textColor:A.cardButton?.color,borderRadius:yo}})]}),xe&&(Ic||Ec||_c)&&(0,d.jsx)(ci,{label:"or pay with card"}),xe&&nl]})}var F=require("react/jsx-runtime"),Jo=44,Ps="flopay_checkout_saved_payment_resume",Pi=new Map,gi=new Map;function Zl(e,t){t.settled&&t.consumers===0&&Pi.get(e)===t&&Pi.delete(e)}function $d(e,t,r){let n=gi.get(e);if(n&&(!n.sdkGeneratedIdempotencyKey||!t||n.sdkGeneratedIdempotencyKey===t))return n.attempt;let a=r(),i={attempt:a,sdkGeneratedIdempotencyKey:t};gi.set(e,i);let l=()=>{gi.get(e)===i&&gi.delete(e)};return a.then(l,l),a}function Ta(e){return new Promise(t=>setTimeout(t,e))}function hi(e,t,r){let n=Ja({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:Ke.SDK_VERSION,enabled:t!==!1});return n.beginCheckout(r),n}function Ma(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function ms(e,t,r,n,a,i){let l=hi(e,t,r);l.error({errorCode:n,stage:a,paymentMethodCategory:"unknown",...i,...a==="session_read"?{requestCategory:"session_read"}:{}}),Ma(l)}function Ql(e,t,r,n){e.log({name:t==="session_claim"?"session.claim.completed":"session.request.completed",stage:t,requestCategory:t,statusClass:"2xx"}),e.performance({stage:t,durationMs:Math.max(0,e.now()-r),durationMode:"machine",requestCategory:t,...n===void 0?{}:{attempt:n},statusClass:"2xx"})}function ec(e,t,r,n,a){let i=(0,Ke.classifyTelemetryFailure)(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:r,durationMs:Math.max(0,e.now()-n),durationMode:"machine",requestCategory:r,attempt:a,statusClass:i.statusClass}),t instanceof Ke.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof Ke.FloPayError&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown"}),!1):i.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown",requestCategory:r,statusClass:"4xx"}),!1):(e.error({...i,stage:r,paymentMethodCategory:"unknown",requestCategory:r}),!0)}function ys(e){return!e||e.data.stripe?.publishableKey?!1:!!(0,Ke.resolveDirectPaypalConfig)(e.data.paypal)?.clientId}var Hd={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Kd(e){return new ro.FloPay(Hd,{publishableKey:"provider_unavailable",...e})}async function fs(e,t){let{publishableKey:r,paypalPublishableKey:n}=Qi(e);return{...await es({publishableKey:r,paypalPublishableKey:n,...t}),publishableKey:r,paypalPublishableKey:n}}function vs(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Gd(){if(!vs())return null;try{let e=window.sessionStorage.getItem(Ps);return e?JSON.parse(e):null}catch{return null}}function tc(e){if(vs())try{window.sessionStorage.setItem(Ps,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function gs(){if(vs())try{window.sessionStorage.removeItem(Ps)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function Yd(){if(typeof window>"u")return;let e=new URL(window.location.href),t=["payment_intent","payment_intent_client_secret","redirect_status"],r=!1;for(let n of t)e.searchParams.has(n)&&(e.searchParams.delete(n),r=!0);r&&window.history.replaceState(window.history.state,"",e.toString())}function rc(e){if(typeof window>"u")return;let t=new URL(window.location.href);t.searchParams.set("mode",e),window.history.replaceState(window.history.state,"",t.toString())}function hs(e,t){return(0,Ke.resolveCheckoutLogLayout)(!!e,t)}function Xd(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function nc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Jd(e){return e?e.account&&Object.keys(e.account).length>0||e.couponCodes!==void 0||e.checkoutMetadata!==void 0||e.tagsData!==void 0||e.utmMetadata!==void 0:!1}function vi({sessionId:e,nonce:t,createSession:r,billingApiUrl:n,telemetry:a,appearance:i,locale:l,loading:u,error:p,onComplete:P,onError:E,onInstrument:S,onDecline:I,onCancel:K,onCountryChange:_,onZipChange:X,showPayPal:T=!0,showStripe:y=!0,walletPresentation:v="auto",enabledPaymentMethods:pe,showApplePay:b=!0,showGooglePay:Te=!0,debug:B=!1,layout:ae,theme:me,buttonsTheme:ue,buttonsStyles:Ae,cardButtonContent:ct,cardBackButtonContent:Ge,cardTitleContent:D,showSecurityFooter:bt,onButtonClick:Xe,onBeforeButtonClick:Le,enableAVS:fe,cardFieldOrder:J,cardPreFormSlot:G,avsLayout:Fe,submitLabel:je,className:Je,initialErrorMessage:re=null,initialPayPalOrderId:Q,children:se,checkoutMode:W,confirmLabel:We,renderConfirmButton:Be,onSessionCompleted:ge}){let N=(0,Ke.resolveBillingApiUrl)(n),Ce=(0,C.useMemo)(()=>(0,Ke.resolveTheme)(me),[me]),dt=i??Ce?.appearance,Ne=r?"embedded_checkout":"standard_checkout",at=hs(se,ae),[Me,nt]=(0,C.useState)(null),[it,ar]=(0,C.useState)(null),Dt=(0,C.useRef)(null),St=(0,C.useRef)(null),we=(0,C.useRef)(0),[M,ft]=(0,C.useState)(null),ut=(0,C.useRef)(null),[z,ke]=(0,C.useState)(null),Nt=(0,C.useMemo)(()=>r?(0,mt.serializeCreateParams)(r):"",[r]),Ue=r?`create:${Nt}`:`session:${e??""}`,Mt=nc(z),w=(0,C.useRef)(new Set),O=(0,C.useRef)(Ue),$e=(0,C.useRef)(Ue);Co(()=>{$e.current=Ue,O.current!==Ue&&(O.current=Ue,w.current.clear())},[Ue]);let Re=(0,C.useCallback)(L=>{if($e.current===Ue){if(Xi.FLO_INSTRUMENT_ONCE_NAMES.has(L.name)){if(w.current.has(L.name))return;w.current.add(L.name)}(0,tt.invokeMerchantCallback)(()=>S?.(L))}},[Ue,S]),h=Vo(Re,Ue),ce=(0,C.useRef)(!1),q=(0,C.useCallback)(L=>{if(ce.current)return;let U=L.gateway||!Mt?L:{...L,gateway:Mt};Re(U)},[Re,Mt]);(0,C.useEffect)(()=>{h({class:"lifecycle",name:"checkout.mount"})},[h]);let[V,De]=(0,C.useState)(e??""),f=e??V,he=r?"":f,[ye,gt]=(0,C.useState)(!0),[x,be]=(0,C.useState)(null),[Gt,br]=(0,C.useState)(0),[Tr,xt]=(0,C.useState)("full"),[Kr,Lr]=(0,C.useState)(!1),[Sr,ir]=(0,C.useState)(re),[Nr,Yt]=(0,C.useState)(null),[Mn,Wt]=(0,C.useState)(null),[vt,_t]=(0,C.useState)(!1),[yr,jt]=(0,C.useState)(void 0),[Jt,nn]=(0,C.useState)(""),[Ur,wr]=(0,C.useState)(!1),[kr,fr]=(0,C.useState)(!1),[Zt,Ft]=(0,C.useState)(!1),pr=(0,C.useRef)(null),Rr=(0,C.useRef)(0),$t=(0,C.useRef)(void 0),[Ze,zr]=(0,C.useState)("loading"),[Gr,Ar]=(0,C.useState)(0),sr=(0,C.useRef)(!1),hn=(0,C.useRef)(!1),xn=(0,C.useRef)(!1),on=(0,C.useRef)(null),Ot=(0,C.useRef)(null),xe=(0,C.useMemo)(()=>({checkoutMode:W??Tr,layout:Xd(se,ae)}),[W,se,Tr,ae]),Y=(0,C.useRef)(P);Y.current=P;let Z=(0,C.useRef)(E);Z.current=E;let te=(0,C.useRef)(I);te.current=I;let Lt=(0,C.useCallback)(L=>ei(on,async U=>{try{return await L(U)}catch(ee){throw U.aborted?$o(ee):ee}}),[]);(0,C.useEffect)(()=>()=>{on.current?.abort(),on.current=null},[]);let Tt=(0,C.useCallback)((L,U)=>{Dt.current=L,ar(L),ut.current=U,ft(U)},[]),Bt=(0,C.useCallback)(()=>{let L=St.current;L&&(St.current=null,L.destroy())},[]);(0,C.useEffect)(()=>{Pr(it)?.setCheckoutContext(xe),M&&M!==it&&Pr(M)?.setCheckoutContext(xe)},[it,M,xe]);let Fr=(0,C.useRef)(ge);Fr.current=ge;let kt=(0,C.useCallback)(L=>{zr(L),!(L!=="exhausted"||xn.current)&&(xn.current=!0,Z.current?.(new Ke.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),oo=(0,C.useCallback)(()=>{zr("retrying"),Ar(L=>L+1)},[]);(0,C.useEffect)(()=>{zr("loading"),Ar(0),xn.current=!1},[f]),(0,C.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:Ke.SDK_VERSION,checkout_type:Ne,checkout_layout:at,billing_api_url:N})},[at,Ne,N]);let Ut=(0,C.useMemo)(()=>r?(0,mt.serializeCreateParams)(r,!0):"",[r]),Yr=(0,C.useMemo)(()=>Jt===Ut?yr:void 0,[yr,Jt,Ut]),An=(0,C.useMemo)(()=>r?Hi(r,Yr):void 0,[r,Yr]),an=W??An?.checkoutMode??"full",Qt=(0,C.useMemo)(()=>An?{...An,checkoutMode:an}:void 0,[An,an]);(0,C.useEffect)(()=>{jt(void 0),nn(Ut),$t.current=void 0,pr.current=null,Ft(!1)},[Ut]),(0,C.useEffect)(()=>{ir(re)},[re]);let Pn=(0,C.useCallback)((L,U,ee)=>{(0,tt.invokeMerchantCallback)(()=>{te.current?.(hr(L,U,ee))})},[]),$n=(0,C.useCallback)(async(L,U)=>{ir(null),Wt(null),_t(!1),Yt("processing");let ee=U?.sessionId??L.id,Ee=L.clientSecret||t,Rt=nc(L),er=Dt.current??ut.current,ze=Pr(er),le=er?null:hi(N,a,xe),j={log:qe=>{ze?ze.log(qe):le?.log(qe)},error:qe=>{ze?ze.error(qe):le?.error(qe)},terminal:qe=>{ze?ze.terminal(qe):le?.terminal(qe)},performance:qe=>{ze?ze.performance(qe):le?.performance(qe)},now:()=>ze?.now()??le?.now()??0,elapsed:qe=>ze?.elapsed(qe)??Math.max(0,(le?.now()??qe)-qe)},$=j.now(),de=!!(U?.initialAutoProcessingError||U?.initialAutoProcessingPending),g=!1,m,H=()=>{g||(g=!0,de=!0,m=j.now(),j.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),j.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},Ie=!1,Qe=()=>{Ie||(Ie=!0,j.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),j.performance({stage:"processing",durationMs:j.elapsed($),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),m!==void 0&&j.performance({stage:"recovery",durationMs:j.elapsed(m),durationMode:"machine",paymentMethodCategory:"saved"}))};j.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),ce.current=!0;try{j.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{ce.current=!1}h({class:"lifecycle",name:"payment.processing.started",provider:Rt}),de&&H();let pt;try{let qe=Ml(U?.initialAutoProcessingError),Oe=U?.initialAutoProcessingError?.type==="3ds_required"&&!U.initialAutoProcessingError.threeDSecureToken&&U.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:U.initialAutoProcessingError.nextActionRedirectUrl}:null,st,wt=Et=>(H(),Lt(A=>Ho(Et,{billingApiUrl:N,sessionId:ee,nonce:Ee,session:L,signal:A})));if(Oe)st=await wt(Oe);else if(qe)H(),qe.type==="paypal_redirect_required"&&Ot.current?.publishableKey&&tc({sessionId:ee,publishableKey:Ot.current.publishableKey,paypalPublishableKey:Ot.current.paypalPublishableKey}),st=await Lt(Et=>ri(qe,{flopay:Dt.current,paypalFlopay:ut.current,attempt3DS:U?.attempt3DS,billingApiUrl:N,sessionId:ee,session:L,telemetry:!1,signal:Et})),qe.type==="paypal_redirect_required"&&gs();else if(U?.initialAutoProcessingPending){let Et=U.initialAutoProcessingPending,A=new ro.PaymentAPI(N,{telemetry:!1}),Pe=await Lt(oe=>A.waitForCheckoutSessionCompletion(Et.sessionId,{initialDelayMs:Et.retryAfterMs,nonce:Ee,statusUrl:Et.statusUrl,signal:oe})),et=lo(Pe,L),ot=Pe.autoProcessingError?.type==="3ds_required"&&Pe.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:Pe.autoProcessingError.nextActionRedirectUrl}:null;if(ot)st=await wt(ot);else{if(!Jn(et))throw No(et);st=Xn(et,ee)}}else{if(U?.initialAutoProcessingError)throw qn(U.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:U.initialAutoProcessingError.checkoutMethod});if(U?.fromCreateSession)return U?.fallbackToFull&&(xt("full"),rc("full")),!1;{let Et=await Ko({billingApiUrl:N,sessionId:ee,session:L,nonce:Ee,telemetry:!1});Et.type==="success"?st=Et.result:Et.type==="next_action_required"?st=await wt(Et):(H(),Et.type==="paypal_redirect_required"&&Ot.current?.publishableKey&&tc({sessionId:ee,publishableKey:Ot.current.publishableKey,paypalPublishableKey:Ot.current.paypalPublishableKey}),st=await Lt(A=>ri(Et,{flopay:Dt.current,paypalFlopay:ut.current,attempt3DS:U?.attempt3DS,billingApiUrl:N,sessionId:ee,session:L,telemetry:!1,signal:A})),Et.type==="paypal_redirect_required"&&gs())}}ee&&(0,In.markSessionRecentlyCompleted)(ee),Qe(),de&&(j.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),j.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),j.terminal({outcome:st.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),_t(st.status==="authorized"),Yt("success"),await Ta(600),pt=()=>Y.current?.(st)}catch(qe){let Oe=so(Sa(qe),ee);if(Oe.code==="three_ds_aborted")return!1;let st=Oe.checkoutMethod??ba;ir(Oe.message),Wt(Oe.message),_t(!1),U?.fallbackToFull&&(j.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),xt("full"),rc("full")),Qe();let wt=Oe.statusCode===void 0?void 0:(0,Ke.telemetryStatusClass)(Oe.statusCode,"unknown"),Et=wt==="4xx"?{requestCategory:"process_payment",statusClass:wt}:{},A=wt===void 0||wt==="4xx";if(A&&(Oe.telemetryOutcome==="payment_declined"||!!(Oe.declineCode||Oe.code?.toLowerCase().includes("declin"))))j.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Et});else if(A&&(Oe.telemetryOutcome==="validation_rejected"||Oe.type==="validation_error"))j.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Et});else{let ot=(0,Ke.classifyTelemetryFailure)(qe,de?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),oe=Oe.telemetryRequestCategory??"process_payment";ce.current=!0;try{j.error({...ot,...Oe.telemetryFailureCategory?{failureCategory:Oe.telemetryFailureCategory}:{},stage:de?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:oe})}finally{ce.current=!1}h({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:oe,provider:Rt})}return(0,tt.invokeMerchantCallback)(()=>Z.current?.(Oe)),Pn(st,Oe,{code:Oe.code,declineCode:Oe.declineCode}),Yt("error"),await Promise.allSettled([Ta(400),U?.ensureProvidersReady?U.ensureProvidersReady():Promise.resolve()]),de&&(j.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),j.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Qe(),le&&Ma(le),Yt(null),Wt(null)}return(0,tt.invokeMerchantCallback)(pt),!0},[Pn,h,t,N,Lt,a,xe]);(0,C.useEffect)(()=>{if(typeof window>"u"||hn.current)return;let L=new URLSearchParams(window.location.search),U=L.get("payment_intent_client_secret");if(!U)return;let ee=Gd();ee&&(hn.current=!0,(async()=>{let Ee,Rt=0;ir(null),Wt(null),Yt("processing"),Lr(!0);try{if(L.get("redirect_status")==="failed")throw Object.assign(new Ke.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:er,paypalFlopay:ze}=await es({publishableKey:ee.publishableKey,paypalPublishableKey:ee.paypalPublishableKey,billingApiUrl:N,locale:l,telemetry:a});Ee=Pr(ze??er),Ee?.setCheckoutContext(xe),Rt=Ee?.now()??0,Ee?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),Ee?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let le=(ze??er)?.getRawProvider();if(!le)throw Object.assign(new Ke.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:j,error:$}=await le.retrievePaymentIntent(U);if($)throw Object.assign(new Ke.FloPayError($.message??"Failed to retrieve PayPal payment status.","api_error",{code:$.code}),{checkoutMethod:"paypal"});let de=gl(j?.status);if(!j||de==="failed")throw Object.assign(new Ke.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let g=typeof j.payment_method=="string"?j.payment_method:j.payment_method?.id,m=de;if(ee.sessionId){let Qe=(await new ro.PaymentAPI(N,{telemetry:!1}).getUnifiedCheckoutSession(ee.sessionId)).data.session;if(Qe&&Qe.status!=="complete"){let pt=await Ko({billingApiUrl:N,sessionId:ee.sessionId,session:Qe,telemetry:!1,tokenizedData:{id:g??j.id,type:"card",threeDSecureActionResultTokenId:j.id,isPaypal:!0}});if(pt.type!=="success")throw Object.assign(new Ke.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});m=pt.result.status}}ee.sessionId&&(0,In.markSessionRecentlyCompleted)(ee.sessionId),Ee?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),Ee?.performance({stage:"redirect_resume",durationMs:Ee.elapsed(Rt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),Ee?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Yt("success"),await Ta(600),(0,tt.invokeMerchantCallback)(()=>Y.current?.({status:m,paymentIntentId:j.id,paymentMethodId:g,checkoutMethod:"paypal"}))}catch(er){let ze=so(Sa(er),ee.sessionId),le=ze.checkoutMethod??"paypal",j=!!(ze.declineCode||ze.code?.toLowerCase().includes("declin"));if(Ee)Ee.performance({stage:"redirect_resume",durationMs:Ee.elapsed(Rt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),j?Ee.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):Ee.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(j){let $=hi(N,a,xe);$.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Ma($)}else ms(N,a,xe,"REDIRECT_RESUME_FAILED","redirect_resume");ir(ze.message),Wt(ze.message),(0,tt.invokeMerchantCallback)(()=>Z.current?.(ze)),Pn(le,ze,{code:ze.code,declineCode:ze.declineCode}),Yt("error"),await Ta(400)}finally{gs(),Yd(),Yt(null),Wt(null),Lr(!1)}})())},[Pn,l,N,a,xe]);let Fn=(0,C.useRef)(null),Br=(0,C.useMemo)(()=>Qt?(0,mt.serializeCreateParams)(Qt):"",[Qt]),ao=(0,C.useRef)(Qt);ao.current=Qt,(0,C.useEffect)(()=>{De(e??"")},[e]),(0,C.useEffect)(()=>{sr.current=!1,ir(re),Wt(null),_t(!1),Yt(null)},[Br,re,e]);async function sn(L,U,ee){let Ee=hi(N,a,xe),Rt=new ro.PaymentAPI(N,{telemetry:!1}),er=!1;try{let ze=L.idempotencyKey===void 0?void 0:(0,Ke.resolveIdempotencyKey)(L.idempotencyKey),le=(0,mt.readCachedInlineSession)(U,ee),j=(0,mt.readCachedInlineIdempotencyKey)(U,ee);le?.canonicalIdentity===ee&&j&&j.canonicalIdentity===void 0&&((0,mt.persistCachedInlineIdempotencyKey)(U,ee,j.idempotencyKey),j={...j,canonicalIdentity:ee});let $=ze??(j?.canonicalIdentity===ee?j.idempotencyKey:void 0),de,g=!1;Ee.log({name:le?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let m=le?.sid??null,H=null,Ie,Qe,pt=!1;if(m)try{H=await Rt.getUnifiedCheckoutSession(m,le?.nonce),le&&le.canonicalIdentity===void 0&&((0,mt.legacyCachedSessionMatchesDraft)(H.data.session,L)?((0,mt.persistCachedInlineSession)(U,ee,m,le.nonce??H.data.session?.clientSecret),j&&j.canonicalIdentity===void 0&&((0,mt.persistCachedInlineIdempotencyKey)(U,ee,j.idempotencyKey),$??($=j.idempotencyKey))):((0,mt.clearCachedInlineCheckout)(U,ee),j=null,$=ze,m=null,H=null));let Oe=H?.data.session?.status,st=H?.data.session,wt=st?.clientSecret||le?.nonce;if(m&&st?.buyerIdentified===!1&&wt&&(Qe=Lo(Rt,m,wt,L.account)),m&&H&&Oe==="complete"){if((0,In.wasSessionRecentlyCompleted)(m))return{sid:m,result:H};(0,mt.clearCachedInlineCheckout)(U,ee),m=null,H=null,g=!0}}catch{Ee.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),le?.canonicalIdentity===void 0?((0,mt.clearCachedInlineCheckout)(U,ee),$=ze):(0,mt.clearCachedInlineSession)(U,ee),m=null}if(!m){!ze&&(g||!$)&&($=(0,Ke.resolveIdempotencyKey)(),de=$),$&&(0,mt.persistCachedInlineIdempotencyKey)(U,ee,$);let Oe=Ee.now(),st=0;Ee.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let wt={...L,idempotencyKey:$,avsCheck:!!fe,avsConfig:typeof fe=="object"?fe:void 0,checkoutType:"embedded_checkout",checkoutLayout:hs(se,ae)};Object.defineProperty(wt,ro.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:Pe=>{st=Math.max(st,Pe)}}});let Et=()=>{Ql(Ee,"session_create",Oe,st)},A=Pe=>{ec(Ee,Pe,"session_create",Oe,st)&&h({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,Ke.isDetachedSessionEligible)(wt)){let Pe=await Rt.createDetachedSession(wt);Pe.claimed.catch(()=>{}),H=Pe.shell,m=Pe.sessionId,Qe=Pe.claim;let et=Ee.now();Ee.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),Ie=Pe.claimed.then(ot=>{let oe=ot.data.session?.id??Pe.sessionId;return oe&&(0,mt.persistCachedInlineSession)(U,ee,oe,ot.data.session?.clientSecret??Pe.nonce),Ql(Ee,"session_claim",et),Et(),ot},ot=>{throw(0,mt.clearCachedInlineSession)(U,ee),ec(Ee,ot,"session_claim",et,0)&&h({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),ot}).finally(()=>Ma(Ee)),Ie.catch(()=>{}),er=!0,Ee.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),Ee.performance({stage:"session_shell",durationMs:Ee.now()-Oe,durationMode:"machine",requestCategory:"session_create",attempt:st,statusClass:"2xx",paymentMethodCategory:"card"})}else H=await Rt.createAndFetchSession(wt),Et()}catch(Pe){throw A(Pe),Pe}m=H.data.session?.id??m??"",m&&!Ie&&(0,mt.persistCachedInlineSession)(U,ee,m,H.data.session?.clientSecret)}let qe=H?.data.session;return!Qe&&m&&qe?.buyerIdentified===!1&&qe.clientSecret&&(Qe=Lo(Rt,m,qe.clientSecret,L.account)),{sid:m??"",result:H,sdkGeneratedIdempotencyKey:de,...Ie?{claimed:Ie}:{},...Qe?{claim:Qe}:{},...pt?{claimRequiresIdentity:!0}:{}}}finally{er||Ma(Ee)}}let Hn=(0,C.useRef)(sn);Co(()=>{Hn.current=sn},[sn]);let Xr=(0,C.useCallback)(async(L,U)=>{let ee=ao.current;if(!ee)throw new Ke.FloPayError("createSession is required to bootstrap checkout.","validation_error");let Ee=Hi(ee,L),Rt=(0,mt.serializeCreateParams)(Ee),er=(0,mt.hashCreateParams)(Ee),ze=Pi.get(Rt);if(!ze){let $={canonicalIdentity:Rt,promise:Hn.current(Ee,er,Rt),consumers:0,settled:!1};ze=$,Pi.set(Rt,$);let de=()=>{$.settled=!0,Zl(Rt,$)};$.promise.then(de,de)}ze.consumers+=1;let le=!1,j=()=>{le||(le=!0,ze.consumers-=1,Zl(Rt,ze))};U?.(j);try{let $=await ze.promise;Fn.current=Rt,L&&(nn(Ut),jt(qe=>ml(qe,L)));let{sid:de,result:g,claimed:m,claim:H,claimRequiresIdentity:Ie}=$;if($t.current=H,Ft(Ie===!0),nt(g),g.data.session&&ke(g.data.session),de&&De(de),m){Rr.current+=1;let qe=Rr.current;pr.current=m,fr(!0),m.then(Oe=>{Rr.current===qe&&(pr.current===m&&(pr.current=null),nt(Oe),Oe.data.session&&ke(Oe.data.session),fr(!1),Ft(!1))},Oe=>{Rr.current===qe&&(pr.current===m&&(pr.current=null),fr(!1),Ft(!1),be(Oe instanceof Ke.FloPayError?Oe:new Ke.FloPayError(Oe instanceof Error?Oe.message:"Failed to create session","api_error")))})}else Rr.current+=1,pr.current=null,fr(!1),Ft(!1);let{flopay:Qe,paypalFlopay:pt}=await fs(g,{billingApiUrl:N,locale:l,telemetry:a});return Tt(Qe,pt),gt(!1),$}catch($){throw Fn.current===Rt&&(Fn.current=null),$}finally{U||j()}},[Ut,Tt,l,N,a]),vn=(0,C.useRef)($n);vn.current=$n;let Bn=(0,C.useRef)(Xr);Bn.current=Xr;let zt=(0,C.useCallback)(async L=>{if(!Jd(L)||Ur)return{sessionId:V,session:z};wr(!0);try{let U=await Xr(L);return{sessionId:U.sid,session:U.result.data.session??null}}finally{wr(!1)}},[Xr,Ur,V,z]),Jr=(0,C.useCallback)(async L=>{let U=$t.current;if(!U)return;let ee=Rr.current,Ee=await U(L);Rr.current===ee&&(nt(Ee),Ee.data.session&&ke(Ee.data.session))},[]),Zr=(0,C.useCallback)(async()=>{await pr.current},[]),qr=(0,C.useCallback)(async()=>(await Zr(),{proceed:!0}),[Zr]);(0,C.useEffect)(()=>{let L=!1,U,ee=++we.current;Bt(),be(null),br(0);let Ee=()=>{L=!0,we.current===ee&&(we.current+=1,Bt())},Rt=ao.current;if(Br&&Rt)return xt(an),gt(!1),Fn.current===Br?Ee:(ke(yl(Rt,W)),(async()=>{let le=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),j=an==="auto"&&!sr.current&&!le;j&&(ir(null),Wt(null),Yt("processing"));try{let $=await Bn.current(void 0,H=>{U=H}),de=$.result.data.session??null;Ot.current=Qi($.result);let g=ys($.result),m=(0,In.wasSessionRecentlyCompleted)($.sid||de?.id);if(!L&&j&&de&&!g&&!m){sr.current=!0,await $d(Br,$.sdkGeneratedIdempotencyKey,()=>vn.current(de,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:$.result.autoProcessingError,initialAutoProcessingPending:$.result.autoProcessingPending,autoProcessingAttempted:$.result.autoProcessingAttempted,sessionId:$.sid||de.id}));return}!L&&j&&((g||m)&&(sr.current=!0),Yt(null),Wt(null))}catch($){if(L)return;let de=Ha($);if(j&&de==="session_auto_completed"){sr.current=!0,Yt("success"),await Ta(600),L||((0,tt.invokeMerchantCallback)(()=>{Y.current?.({status:"succeeded"})}),Yt(null),Wt(null));return}j&&(Yt(null),Wt(null));let g=$ instanceof Ke.FloPayError?$:new Ke.FloPayError($ instanceof Error?$.message:"Failed to create session","api_error");be(g)}finally{U?.(),U=void 0}})(),()=>{Ee(),U?.()});gt(!0);async function er(){let le=!1,j=null;try{let $=new ro.PaymentAPI(N,{telemetry:!1}),de=await $.getUnifiedCheckoutSession(f,t);if(j=de,L)return;nt(de);let g=de.data.session??null;if(ke(g),!g)throw new Ke.FloPayError("No session data returned","api_error");let m=g.checkoutMode;if(m==="setup")throw new Ke.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(g.status==="authorized"){gt(!1),(0,tt.invokeMerchantCallback)(()=>{Y.current?.(Xn(g,f)),Fr.current?.(g.successUrl??"")});return}if(g.status==="complete"){gt(!1),(0,tt.invokeMerchantCallback)(()=>{Fr.current?.(g.successUrl??"")});return}if(g.status==="expired")throw $a(g);le=!0;let H=W??m??"full";xt(H),Rr.current+=1;let Ie=g.clientSecret||t;$t.current=g.buyerIdentified===!1&&Ie?Lo($,f,Ie,{...g.customer?.id?{userId:g.customer.id}:{}}):void 0,fr(!1),Ft(!1);let Qe=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),pt=ys(de);if(H==="auto"&&!sr.current&&!Qe&&!pt){sr.current=!0;let qe=ze(de);try{if(await vn.current(g,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>qe,sessionId:f||g.id}),L)return;await qe,L||gt(!1);return}catch{if(L)return;await qe,L||gt(!1);return}}await ze(de),L||gt(!1)}catch($){if(L)return;let de=pl($,le);if(le&&h({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),de){let{errorCode:m,stage:H,...Ie}=de;ms(N,a,xe,m,H,Ie)}if(de?.stage==="provider_load"&&(W??j?.data.session?.checkoutMode??"full")==="full"&&ul(j,T,y)){let m=Kd({billingApiUrl:N,locale:l,telemetry:a});St.current=m,Tt(m,null),br(1),gt(!1);return}let g=$ instanceof Ke.FloPayError&&de?.stage!=="provider_load"?$:dl();g!==$&&(0,tt.invokeMerchantCallback)(()=>Z.current?.(g)),be(g),gt(!1)}}async function ze(le){let{flopay:j,paypalFlopay:$,...de}=await fs(le,{billingApiUrl:N,locale:l,telemetry:a});Ot.current={publishableKey:de.publishableKey,paypalPublishableKey:de.paypalPublishableKey},Tt(j,$),br(0)}return er(),Ee},[W,Br,an,he,t,T,y]);let Cn=(0,C.useCallback)(async()=>{if(!Me||Gt!==1)return;let L=we.current;br(2);try{let{flopay:U,paypalFlopay:ee}=await fs(Me,{billingApiUrl:N,locale:l,telemetry:a});if(we.current!==L)return;Bt(),Tt(U,ee),br(0)}catch(U){if(we.current!==L)return;let{errorCode:ee,stage:Ee,...Rt}=$i(U);ms(N,a,xe,ee,Ee,Rt)}},[Bt,Tt,l,Gt,N,a,xe,Me]),Ct=!!(f&&(z?.clientSecret||t)),Er=Kr||!Ct,lr=(0,C.useCallback)(async()=>{if(!(Kr||!Ct||!z)){Lr(!0),ir(null);try{await $n(z,{attempt3DS:!0,fallbackToFull:!0,sessionId:f||z.id})}finally{Lr(!1)}}},[f,Kr,Ct,$n,z]),jr=(0,Ke.resolveDirectPaypalConfig)(Me?.data.paypal,Q),mo=ys(Me),bn=(0,C.useMemo)(()=>{if(!(!Me||!z||!Me.data.stripe?.publishableKey))return{billingApiUrl:N}},[Me,z,N]),Kn=!!(r&&!se&&ae==="buttons"&&Le&&an==="full"),Qr=!!(f&&((0,Ke.isMountableVaultBlock)(z?.vault)||(0,kn.canRecoverHostedCardForm)(z))),Ir=(0,C.useMemo)(()=>({session:z,loading:ye,error:x,checkoutMode:Tr,inlineSessionDraft:Qt,applyInlineSessionPatch:Kn?zt:void 0,inlineSessionPatchProcessing:Ur,claimPending:kr,claimRequiresIdentity:Zt,claimBuyerIdentity:Jr,waitForDataAttachment:Zr}),[z,ye,x,Tr,Qt,Kn,zt,Ur,kr,Zt,Jr,Zr]),Dn=!!r&&ae==="buttons"&&!mo&&!Qr&&(!it||!bn),Mr=Nr?(0,F.jsx)($r,{status:Nr,errorMessage:Mn,authorized:vt}):null;if(ye&&!Qr){if(u)return(0,F.jsxs)(F.Fragment,{children:[u,Mr]});if(ae==="buttons"){let L=Ce?.buttonsLayout?.cardButton?.borderRadius??Ce?.appearance.variables?.borderRadius??8,U=ee=>(0,F.jsx)("div",{style:{height:ee,borderRadius:L,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[T&&U(Jo),y&&(b||Te)&&U(Jo),y&&U(Jo),(0,F.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),Mr]})}return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,F.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,F.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),Mr]})}return x?p?(0,F.jsx)(Rn.Provider,{value:Ir,children:p(x)}):(0,F.jsx)(Rn.Provider,{value:Ir,children:(0,F.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:x.message})}):Dn?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Rn.Provider,{value:Ir,children:(0,F.jsx)(Qd,{onButtonClick:Xe,showPayPal:T,showStripe:y,showApplePay:b,showGooglePay:Te,theme:me,buttonsTheme:ue,buttonsStyles:Ae,cardButtonContent:ct,cardBackButtonContent:Ge,cardTitleContent:D})}),Mr]}):mo&&z&&jr?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Rn.Provider,{value:Ir,children:(0,F.jsxs)("div",{className:Je,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Sr&&(0,F.jsx)(Wo,{icon:!1,children:Sr}),Ze==="retrying"&&(0,F.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),Ze==="exhausted"&&(0,F.jsxs)("div",{role:"alert",children:[(0,F.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,F.jsx)("button",{type:"button",onClick:oo,children:"Retry PayPal"})]}),Ze!=="exhausted"&&(0,F.jsx)("div",{"aria-hidden":Ze==="retrying"?!0:void 0,style:Ze==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,F.jsx)(El,{sessionId:f,nonce:z.clientSecret||void 0,billingApiUrl:N,email:z.customer?.email||Qt?.account?.email,billingName:[z.customer?.firstName,z.customer?.lastName].filter(Boolean).join(" ")||[Qt?.account?.firstName,Qt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Jr,clientId:jr.clientId,environment:jr.environment,currency:(z.currency??"usd").toUpperCase(),isSubscription:z.mode==="subscription",providerObjectType:jr.providerObjectType,approvalPresentation:jr.approvalPresentation,existingOrderId:jr.existingOrderId,onComplete:P,onErrorChange:ir,onDecline:I,onCancel:K,onButtonClick:Xe,runBeforeButtonClick:qr,onInitializationStateChange:kt,allowAutomaticRetry:Gr===0,session:z,telemetry:a,telemetryContext:xe,onInstrument:q,debug:B},`${Ue}:paypal-init-${Gr}`)})]})}),Mr]}):Tr==="confirm"?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Rn.Provider,{value:Ir,children:(0,F.jsx)(va,{flopay:it,paypalFlopay:M,options:bn??{billingApiUrl:N},onInstrument:q,children:(0,F.jsxs)("div",{className:Je,children:[Sr&&(0,F.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:Sr}),Be?Be({onConfirm:lr,isProcessing:Er}):(0,F.jsx)("button",{type:"button",onClick:lr,disabled:Er,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:Er?"not-allowed":"pointer",opacity:Er?.6:1},children:Kr?"Processing...":We??"Confirm Purchase"})]})},Ue)}),Mr]}):(!it||!bn)&&!(Qr&&Tr==="full")?(0,F.jsx)(F.Fragment,{children:Mr}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Rn.Provider,{value:Ir,children:(0,F.jsxs)(va,{flopay:it,paypalFlopay:M,options:bn??{billingApiUrl:N},onInstrument:q,children:[Gt===1&&(0,F.jsx)("button",{type:"button",onClick:Cn,children:"Retry payment methods"}),se?(0,F.jsxs)(F.Fragment,{children:[Sr&&(0,F.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:Sr}),(0,F.jsx)(Zd,{sessionId:f,nonce:z?.clientSecret||void 0,billingApiUrl:N,session:z,submitLabel:je,walletPresentation:v,children:se})]}):(0,F.jsx)(fi,{sessionId:f,nonce:z?.clientSecret||void 0,telemetry:a,email:z?.customer?.email||Qt?.account?.email,userId:z?.customer?.id||Qt?.account?.userId,firstName:z?.customer?.firstName||Qt?.account?.firstName,lastName:z?.customer?.lastName||Qt?.account?.lastName,totalAmount:z?Math.round((0,Ke.buildCheckoutDisplayData)(z).total*100):0,currency:z?.currency?.toLowerCase()??"usd",onComplete:P,onError:E,onDecline:I,onCancel:K,error:Sr,onErrorChange:ir,showPayPal:T,showStripe:y,walletPresentation:v,enabledPaymentMethods:Gt?[]:pe??Me?.data.stripe?.enabledPaymentMethods??z?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Me?.data.stripe?.enabledPaymentMethodCountries,showApplePay:b,showGooglePay:Te,layout:ae,theme:me,buttonsTheme:ue,buttonsStyles:Ae,appearance:dt,cardButtonContent:ct,cardBackButtonContent:Ge,cardTitleContent:D,onButtonClick:Xe,onBeforeButtonClick:Le,onBuyerIdentityReady:Jr,enableAVS:fe,...J?{cardFieldOrder:J}:{},...G?{cardPreFormSlot:G}:{},avsLayout:Fe,country:z?.customer?.country,city:z?.customer?.city,state:z?.customer?.state,onCountryChange:_,onZipChange:X,avsCheck:!!fe,checkoutType:r?"embedded_checkout":"standard_checkout",checkoutLayout:hs(se,ae),className:Je,submitLabel:je,directPaypal:jr,isSubscription:z?.mode==="subscription",session:z,dataAttachmentPending:kr,dataAttachmentRequiresIdentity:Zt,debug:B})]},Ue)}),Mr]})}function Zd({sessionId:e,nonce:t,billingApiUrl:r,session:n,submitLabel:a,walletPresentation:i,children:l}){return(0,F.jsx)(F.Fragment,{children:C.default.Children.map(l,u=>{if(!C.default.isValidElement(u))return u;let p=u.props,P={};return p.sessionId||(P.sessionId=e),!p.nonce&&t&&(P.nonce=t),p.billingApiUrl||(P.billingApiUrl=r),p.submitLabel===void 0&&a!==void 0&&(P.submitLabel=a),p.walletPresentation===void 0&&(P.walletPresentation=i),n?.customer&&(p.email||(P.email=n.customer.email),p.userId||(P.userId=n.customer.id),p.firstName||(P.firstName=n.customer.firstName),p.lastName||(P.lastName=n.customer.lastName)),Object.keys(P).length===0?u:C.default.cloneElement(u,P)})})}function Qd({onButtonClick:e,showPayPal:t,showStripe:r=!0,showApplePay:n,showGooglePay:a,theme:i,buttonsTheme:l,buttonsStyles:u,cardButtonContent:p,cardBackButtonContent:P,cardTitleContent:E}){let[S,I]=(0,C.useState)(!1),K=(0,C.useMemo)(()=>(0,Ke.resolveTheme)(i),[i]),_=(0,C.useMemo)(()=>{let v=K?.buttonsLayout??(0,Ke.resolveButtonsLayoutTheme)(l);return u?{...v,...u,cardButton:{...v.cardButton,...u.cardButton},cardFormContainer:{...v.cardFormContainer,...u.cardFormContainer},backButton:{...v.backButton,...u.backButton},backButtonIcon:{...v.backButtonIcon,...u.backButtonIcon},submitButton:{...v.submitButton,...u.submitButton},title:{...v.title,...u.title}}:v},[K,l,u]),X=K?.buttonsLayout?.cardButton?.borderRadius??K?.appearance.variables?.borderRadius??8,T=v=>(0,F.jsx)("div",{style:{height:v,borderRadius:X,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),y=p===void 0?{boxSizing:"border-box",height:Jo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(S){let v=_.cardInputBorder??"#e5e7eb",pe=_.cardInputBackground??"white",b=Bo(P),Te=Bo(E);return(0,F.jsxs)("div",{style:{backgroundColor:_.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",..._.cardFormContainer},children:[(0,F.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,F.jsxs)("button",{type:"button",onClick:()=>I(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:b?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",..._.backButton},children:[(0,F.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",..._.backButtonIcon},children:(0,F.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,F.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,F.jsx)(Oo,{content:P})]}),Te?(0,F.jsx)("div",{style:{flex:1}}):(0,F.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,..._.title},children:(0,F.jsx)(ua,{content:E})})]}),(0,F.jsx)("div",{style:{backgroundColor:pe,border:`1px solid ${v}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsxs)("div",{style:{display:"flex"},children:[(0,F.jsx)("div",{style:{flex:1,backgroundColor:pe,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${v}`,borderLeft:`1px solid ${v}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsx)("div",{style:{flex:1,backgroundColor:pe,borderTop:"none",borderRight:`1px solid ${v}`,borderBottom:`1px solid ${v}`,borderLeft:`1px solid ${v}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,F.jsx)("div",{style:{backgroundColor:pe,border:`1px solid ${v}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",..._.submitButton,opacity:.5}}),(0,F.jsx)("style",{children:`
41
41
  @keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
42
42
  @keyframes flopay-interim-expand {
43
43
  0% { opacity: 0; max-height: 0; transform: translateY(-12px); }
44
44
  40% { opacity: 1; }
45
45
  100% { opacity: 1; max-height: 600px; transform: translateY(0); }
46
46
  }
47
- `})]})}return(0,B.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&A(Xo),r&&(n||a)&&A(Xo),r&&(0,B.jsx)("button",{type:"button",onClick:()=>{e?.("card"),x(!0)},style:{width:"100%",...f,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:T.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",boxShadow:"0 1px 2px rgba(0,0,0,0.04)",transition:"transform 0.1s",position:"relative",opacity:1,...T.cardButton},onMouseDown:P=>{P.currentTarget.style.transform="scale(0.985)"},onMouseUp:P=>{P.currentTarget.style.transform="scale(1)"},children:(0,B.jsx)(Bo,{content:p})}),(0,B.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var un=require("react/jsx-runtime"),Qd=44;function nc(e){return new Promise(t=>setTimeout(t,e))}function eu(e,t){return e instanceof pn.FloPayError?e:new pn.FloPayError(e instanceof Error?e.message:t,"api_error")}function tu(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function ru(e){if(e.createSession)return{...e.createSession,checkoutMode:"auto"};if(!e.clientId||!e.account||!e.successUrl||!e.cancelUrl)return null;let t=e.products!=null;return{clientId:e.clientId,products:e.products,items:t?void 0:e.items,subscriptions:t?void 0:e.subscriptions,account:e.account,successUrl:e.successUrl,cancelUrl:e.cancelUrl,couponCodes:e.couponCodes,tagsData:e.tagsData,utmMetadata:e.utmMetadata,checkoutMode:"auto"}}function oc({sessionId:e,nonce:t,createSession:r,paymentMethodId:n,checkoutMethod:a,clientId:i,products:l,items:u,subscriptions:p,account:v,successUrl:R,cancelUrl:w,couponCodes:x,tagsData:K,utmMetadata:T,billingApiUrl:V,locale:A,theme:f,appearance:P,buttonsTheme:ee,buttonsStyles:D,onSuccess:ue,onError:F,onDecline:ne,children:_e,disabled:ie=!1,type:We="button",style:kt,...de}){let G=(0,yt.useMemo)(()=>(0,pn.resolveBillingApiUrl)(V),[V]),pt=(0,yt.useMemo)(()=>ru({createSession:r,clientId:i,products:l,items:u,subscriptions:p,account:v,successUrl:R,cancelUrl:w,couponCodes:x,tagsData:K,utmMetadata:T}),[v,w,i,x,r,l,u,p,R,K,T]),[we,xe]=(0,yt.useState)(!1),[ke,Z]=(0,yt.useState)(null),[pe,Re]=(0,yt.useState)(null),[Fe,rt]=(0,yt.useState)(!1),[me,N]=(0,yt.useState)(null),[H,ye]=(0,yt.useState)(null),$e=(0,yt.useRef)(!0),he=(0,yt.useRef)(null),M=(0,yt.useRef)(H),Ye=(0,yt.useRef)(ue),Te=(0,yt.useRef)(F),tt=(0,yt.useRef)(ne),Ze=(0,yt.useCallback)(b=>Qa(he,async L=>{try{return await b(L)}catch(qe){throw L.aborted?Wo(qe):qe}}),[]);(0,yt.useEffect)(()=>{M.current=H},[H]),(0,yt.useEffect)(()=>{Ye.current=ue},[ue]),(0,yt.useEffect)(()=>{Te.current=F},[F]),(0,yt.useEffect)(()=>{tt.current=ne},[ne]),(0,yt.useEffect)(()=>($e.current=!0,()=>{$e.current=!1,he.current?.abort()}),[]),(0,yt.useEffect)(()=>{if(typeof window>"u")return;let b=L=>{L.key==="Escape"&&ye(null)};return window.addEventListener("keydown",b),()=>{window.removeEventListener("keydown",b)}},[]);let ze=(0,yt.useCallback)((b,L=ba)=>{tt.current?.(Cr(L,b,{code:b.code,declineCode:b.declineCode}))},[]),He=(0,yt.useCallback)(async b=>{$e.current&&(Re(null),rt(b.result.status==="authorized"),Z("success"),await nc(600),$e.current&&(0,it.invokeMerchantCallback)(()=>Ye.current?.(b)))},[]),Le=(0,yt.useCallback)(async(b,L)=>{$e.current&&(Te.current?.(b),L?.emitDecline&&ze(b,L.method),Re(b.message),rt(!1),Z("error"),await nc(400))},[ze]),Et=(0,yt.useCallback)(async(b,L,qe)=>{let fe=b.data.session??null;if(!fe)throw io(new pn.FloPayError("No session data returned","api_error"),L);let h=fe.clientSecret||t;if(Yn(fe)){await He({result:Gn(fe,L),session:fe,sessionId:fe.id||L,autoCompleted:!1});return}if(fe.status==="expired")throw io(Wa(fe),fe.id||L);try{if(b.autoProcessingPending){let j=b.autoProcessingPending,Y=new vi.PaymentAPI(G),te=await Ze(be=>Y.waitForCheckoutSessionCompletion(j.sessionId,{initialDelayMs:j.retryAfterMs,nonce:h,statusUrl:j.statusUrl,signal:be})),k=so(te,fe),Q=te.autoProcessingError?.type==="3ds_required"&&te.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:te.autoProcessingError.nextActionRedirectUrl}:null;if(Q&&L&&h){let be=await Ze(Be=>$o(Q,{billingApiUrl:G,sessionId:L,nonce:h,session:fe,signal:Be,telemetry:!0}));await He({result:be,session:fe,sessionId:fe.id||L,autoCompleted:!1});return}if(te.autoProcessingError)throw qn(te.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:te.autoProcessingError.checkoutMethod});if(!Yn(k))throw Lo(k);await He({result:Gn(k,L),session:k,sessionId:k.id||L,autoCompleted:!1});return}if(b.autoProcessingError){let j=b.autoProcessingError.nextActionRedirectUrl;if(b.autoProcessingError.type==="3ds_required"&&j&&L&&h){let Y=await Ze(be=>Ml({billingApiUrl:G,sessionId:L,nonce:h,nextActionRedirectUrl:j,signal:be}));if(Y.status==="declined")throw qn({type:Y.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:Y.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:b.autoProcessingError.checkoutMethod});let k=await new vi.PaymentAPI(G).waitForCheckoutSessionCompletion(L,{initialDelayMs:0,nonce:h}),Q=so(k,fe);if(!Yn(Q))throw qn({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:b.autoProcessingError.checkoutMethod});await He({result:Gn(Q,L),session:Q,sessionId:Q.id||L,autoCompleted:!1});return}throw qn(b.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:b.autoProcessingError.checkoutMethod})}if(qe?.fromCreateSession&&b.autoProcessingAttempted===!0)throw qn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ve=await Ho({billingApiUrl:G,sessionId:L??fe.id,session:fe,nonce:h});if(ve.type==="next_action_required"&&h){let j=L??fe.id,Y=await Ze(te=>$o(ve,{billingApiUrl:G,sessionId:j,nonce:h,session:fe,signal:te,telemetry:!0}));await He({result:Y,session:fe,sessionId:fe.id||j,autoCompleted:!1});return}if(ve.type!=="success")throw qn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await He({result:ve.result,session:fe,sessionId:fe.id||L,autoCompleted:!1})}catch(ve){let j=fe.id||L,Y=io(Ca(ve),j);if(Y.code==="three_ds_aborted")return;if(Y.code==="checkout_processing_timeout"){if(!$e.current)return;N(Y.message),(0,it.invokeMerchantCallback)(()=>Te.current?.(Y));return}await Le(Y,{emitDecline:!0,method:Y.checkoutMethod??ba}),tu(Y,j)&&j&&$e.current&&ye({sessionId:j,errorMessage:Y.message,nonce:h||void 0,payPalOrderId:Y.orderId})}},[t,G,Ze,Le,He]),zt=(0,yt.useCallback)(async b=>{if(de.onClick?.(b),!(b.defaultPrevented||ie||we)){if(ye(null),N(null),e&&pt){let L=new pn.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await Le(L),$e.current&&(Z(null),Re(null));return}if(!e&&!pt){let L=new pn.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await Le(L),$e.current&&(Z(null),Re(null));return}xe(!0),Re(null),rt(!1),Z("processing");try{let L=new vi.PaymentAPI(G);if(e){let qe=await L.getUnifiedCheckoutSession(e,t);await Et(qe,e);return}try{let qe=await L.createAndFetchSession({...pt});await Et(qe,qe.data.session?.id??null,{fromCreateSession:!0})}catch(qe){if($a(qe)==="session_auto_completed"){await He({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw qe}}catch(L){await Le(io(eu(L,"Automatic payment failed. Please try again."),e))}finally{$e.current&&(Z(null),Re(null),xe(!1))}}},[de.onClick,pt,ie,we,t,Et,G,e,Le,He]),ft=(0,yt.useCallback)(b=>{let L=M.current;ye(null),Ye.current?.({result:b,session:null,sessionId:L?.sessionId??null,autoCompleted:!1})},[]),Ft=(0,yt.useCallback)(b=>{Te.current?.(b)},[]),q=(0,yt.useCallback)(b=>{tt.current?.(b)},[]),Pe=(0,yt.useMemo)(()=>(0,pn.resolveTheme)(f),[f]),st=(0,yt.useMemo)(()=>{let b=Pe?.buttonsLayout??(0,pn.resolveButtonsLayoutTheme)(ee);return D?{...b,...D,cardButton:{...b.cardButton,...D.cardButton}}:b},[Pe,ee,D]),W=(0,yt.useMemo)(()=>{let b=Pe?.appearance;return P?b?{...b,...P,variables:{...b.variables,...P.variables}}:P:b},[P,Pe]),Ee=W?.variables,nt=Ee?.colorPrimary??"#4A49FF",Ke=Ee?.colorPrimaryHover??(0,us.darkenHex)(nt,.12),Rt=Ee?.borderRadius??"8px";return(0,un.jsxs)(un.Fragment,{children:[(0,un.jsx)("button",{...de,type:We,onClick:zt,disabled:ie||we,"aria-busy":we,style:{width:"100%",..._e===void 0?{boxSizing:"border-box",height:Qd,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...st.cardButton,...ds({themeBundle:Pe,resolvedPrimaryColor:nt,resolvedBorderRadius:Rt,submitButtonStyle:st.submitButton,explicitPrimaryColor:Ee?.colorPrimary}),fontSize:st.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:ie||we?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:ie||we?.6:1,...kt},onMouseEnter:b=>{de.onMouseEnter?.(b),!b.defaultPrevented&&!ie&&!we&&(Pe||Ee?.colorPrimary)&&(b.currentTarget.style.backgroundColor=Ke)},onMouseLeave:b=>{de.onMouseLeave?.(b),!b.defaultPrevented&&(Pe||Ee?.colorPrimary)&&(b.currentTarget.style.backgroundColor=nt)},onMouseDown:b=>{de.onMouseDown?.(b),b.defaultPrevented||(b.currentTarget.style.transform="scale(0.985)")},onMouseUp:b=>{de.onMouseUp?.(b),b.defaultPrevented||(b.currentTarget.style.transform="scale(1)")},children:(0,un.jsx)(Bo,{content:_e})}),me&&(0,un.jsx)("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:me}),ke&&(0,un.jsx)(Wr,{status:ke,errorMessage:pe,authorized:Fe}),H&&(0,un.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:b=>{b.target===b.currentTarget&&ye(null)},style:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.45)",display:"flex",alignItems:"center",justifyContent:"center",padding:"1.5rem",zIndex:1100},children:(0,un.jsx)("div",{style:{width:"100%",maxWidth:520,maxHeight:"90vh",overflowY:"auto",background:"white",borderRadius:20,padding:"1.5rem",boxShadow:"0 24px 80px rgba(15, 23, 42, 0.28)",display:"flex",flexDirection:"column",gap:"1rem"},children:(0,un.jsx)(Pi,{sessionId:H.sessionId,nonce:H.nonce,checkoutMode:"full",billingApiUrl:G,locale:A,theme:f,...W?{appearance:W}:{},buttonsTheme:ee,buttonsStyles:D,initialErrorMessage:H.errorMessage,initialPayPalOrderId:H.payPalOrderId,cardTitleContent:null,onComplete:ft,onError:Ft,onDecline:q})})})]})}var Ci=require("@flopay/js/card-setup"),Dr=require("@flopay/shared"),Ut=require("react");var vs=require("@flopay/shared"),nu=require("@flopay/shared");function bi(e){let t=(0,vs.resolveCardSetupTheme)(e);return{...t,surface:t.surface,overlayTheme:t.overlayTheme}}var Vn=require("react/jsx-runtime"),Ma=class extends Dr.FloPayError{constructor(t,r,n){super(t,r,n),this.name="FloPayCardSetupError",this.retryable=n.retryable}};function to(e,t={}){let r=e instanceof Dr.FloPayError?e:void 0,n=r?.statusCode,a=t.retryable??(r?.type==="network_error"||r?.type==="rate_limit_error"||typeof n=="number"&&n>=500||r?.code==="vault_capture_timeout"||!r);return new Ma(r?.message??(e instanceof Error?e.message:"Failed to load the secure card form."),r?.type??"api_error",{code:t.code??r?.code??"card_setup_load_failed",retryable:a,...r?.param?{param:r.param}:{},...n===void 0?{}:{statusCode:n}})}function ac({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,theme:a="modern-light",containerStyle:i,appearance:l,buttonsStyles:u,loading:p=null,onReady:v,onComplete:R,onDecline:w,onCancel:x,onValidation:K,onError:T}){let[V,A]=(0,Ut.useState)(null),[f,P]=(0,Ut.useState)(null),[ee,D]=(0,Ut.useState)(null),[ue,F]=(0,Ut.useState)(null),[ne,_e]=(0,Ut.useState)(null),ie=(0,Ut.useRef)(!1),We=(0,Ut.useRef)(!1),{vaultTheme:kt,surface:de,overlayTheme:G}=(0,Ut.useMemo)(()=>bi({theme:a,appearance:l,buttonsStyles:u}),[a,l,u]),pt=(0,Ut.useMemo)(()=>(0,ka.mergeCardSetupSurface)(de,i),[de,i]),we=(0,Ut.useRef)(v),xe=(0,Ut.useRef)(T),ke=(0,Ut.useRef)(R),Z=(0,Ut.useRef)(w),pe=(0,Ut.useRef)(x),Re=(0,Ut.useRef)(K),Fe=(0,Ut.useRef)(!1),rt=(0,Ut.useRef)(!1),me=(0,Ut.useRef)(0);return we.current=v,xe.current=T,ke.current=R,Z.current=w,pe.current=x,Re.current=K,(0,Ut.useEffect)(()=>{let N=me.current+1;return me.current=N,()=>{queueMicrotask(()=>{me.current===N&&(Fe.current||rt.current||(rt.current=!0,(0,it.invokeMerchantCallback)(()=>{pe.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,Ut.useEffect)(()=>{let N=!0,H=(0,Dr.resolveBillingApiUrl)(r),ye=new Ci.PaymentAPI(H,{telemetry:n});return A(null),P(null),D(null),Fe.current=!1,rt.current=!1,(async()=>{try{if(!e.trim())throw new Dr.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new Dr.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let $e=await ye.getUnifiedCheckoutSession(e,t);if(!N)return;let he=$e.data.session;if(!he||!(0,Dr.isCardSetupCheckoutSession)(he))throw new Dr.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let M=he.vault;(0,Dr.isMountableVaultBlock)(M)||(M=await ye.getVaultCapture(e,t));let Ye=(0,Dr.resolveVaultMountOptions)(M,{billingApiUrl:H,sessionId:e,nonce:t});if(!Ye)throw new Dr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!N)return;P(Ye),A(new Ci.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:n}))}catch($e){if(!N)return;let he=to($e);Fe.current=!0,D(he),(0,it.invokeMerchantCallback)(()=>xe.current?.(he))}})(),()=>{N=!1,ye.destroy()}},[r,t,e,n]),(0,Ut.useEffect)(()=>{if(!V)return;let N=!1;We.current=!1,ie.current=!1;let H=V.on("submitting",()=>{ie.current=!0,_e(null),F("processing")}),ye=V.on("complete",M=>{Fe.current=!0,ie.current=!1,F("success"),(async()=>(await new Promise(Ye=>setTimeout(Ye,600)),!We.current&&(We.current=!0,(0,it.invokeMerchantCallback)(()=>{ke.current?.({status:"succeeded",sessionId:e,...M.paymentMethod?{paymentMethod:M.paymentMethod}:{}})}),N||F(null))))()}),$e=V.on("decline",M=>{Fe.current=!0,ie.current=!1,_e(M.message??null),F("error"),(0,it.invokeMerchantCallback)(()=>{Z.current?.({status:"declined",sessionId:e,...M.declineReason?{reason:M.declineReason}:{},...M.message?{message:M.message}:{}})}),(async()=>(await new Promise(Ye=>setTimeout(Ye,400)),N||F(null)))()}),he=V.on("challenge_dismissed",()=>{F(null)});return()=>{N=!0,H(),ye(),$e(),he()}},[V,e]),ee?(0,Vn.jsx)("div",{role:"alert",children:ee.message}):!V||!f?.html?(0,Vn.jsx)(Vn.Fragment,{children:p}):(0,Vn.jsxs)(Vn.Fragment,{children:[ue&&(0,Vn.jsx)(Wr,{status:ue,errorMessage:ne,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...G?{theme:G}:{}}),(0,Vn.jsx)(lo,{capture:V,html:f.html,messageToken:f.messageToken,expectedOrigin:f.expectedOrigin,verificationRequired:f.verificationRequired,theme:kt,containerStyle:pt,onReady:()=>{(0,it.invokeMerchantCallback)(()=>we.current?.())},onValidation:N=>{(0,it.invokeMerchantCallback)(()=>Re.current?.(N))},onError:N=>{if(!N)return;ie.current&&(ie.current=!1,_e(N),F("error"),setTimeout(()=>F(null),400));let H=to(new Error(N),{code:"card_setup_widget_failed",retryable:!0});(0,it.invokeMerchantCallback)(()=>xe.current?.(H))}})]})}var ic=require("@flopay/js/card-setup"),co=require("@flopay/shared"),sc=require("@paypal/paypal-js"),Co=require("react");var cc=require("react/jsx-runtime");function lc({clientId:e,environment:t,currency:r,sessionId:n,nonce:a,billingApiUrl:i,telemetry:l,customer:{userId:u,email:p},onSubmitting:v,onConfirmed:R,onFailed:w,onAbandoned:x}){let K=(0,Co.useRef)(null),T=(0,Co.useRef)({onSubmitting:v,onConfirmed:R,onFailed:w,onAbandoned:x});T.current={onSubmitting:v,onConfirmed:R,onFailed:w,onAbandoned:x};let[V]=(0,Co.useState)(()=>(0,Un.detectPayPalEnvironment)().inAppBrowser);return(0,Co.useEffect)(()=>{let A=!0,f,P=new ic.PaymentAPI(i,{telemetry:l}),ee={userId:u,email:p};return(async()=>{try{let D=await(0,sc.loadScript)({clientId:e,...r?{currency:r.toUpperCase()}:{},components:"buttons",...t==="sandbox"||t==="production"?{environment:t}:{}}),ue=K.current;if(!A||!ue)return;if(!D?.Buttons)throw new co.FloPayError("PayPal could not be loaded.","api_error",{code:"paypal_unavailable"});let F=D.Buttons({createVaultSetupToken:async()=>{T.current.onSubmitting();let ne=await P.createSessionIntent(n,a,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:co.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:"setup"});if(ne.provider!=="paypal"||ne.providerObjectType!=="setup_token")throw new co.FloPayError("The billing API did not return a PayPal setup token.","api_error",{code:"InvalidSessionIntentResponse"});return ne.providerObjectId},onApprove:async ne=>{let _e=ne.vaultSetupToken;if(!_e)throw new co.FloPayError("PayPal approved without a setup token.","api_error",{code:"paypal_setup_token_missing"});let ie=await P.processPayment(ee.userId,{sessionId:n,nonce:a,paymentMethodCategory:"paypal",tokenizedData:{id:_e,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:co.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE},accountData:ee});if(!ie.ok)throw new co.FloPayError("PayPal could not be saved.","api_error",{code:"paypal_setup_failed",statusCode:ie.status});A&&T.current.onConfirmed()},onCancel:()=>{A&&T.current.onAbandoned()},onError:ne=>{if(!A)return;let{popupBlocked:_e}=(0,Se.classifyExternalMethodFailure)(ne,{inAppBrowser:V,handoffObserved:!1});T.current.onFailed(_e?new Error((0,Se.buildExternalMethodRecoveryMessage)("PayPal",!0,V)):ne,{code:_e?"popup_blocked":"paypal_setup_failed",retryable:!0})}});f=()=>F.close(),await F.render(ue)}catch(D){if(!A)return;T.current.onFailed(D,{code:"paypal_unavailable",retryable:!0})}})(),()=>{A=!1,f?.().catch(()=>{}),P.destroy()}},[i,e,r,p,t,V,a,n,l,u]),(0,cc.jsx)("div",{ref:K,"data-flopay-paypal-setup":""})}var uc=require("@flopay/js/card-setup"),uo=require("@flopay/shared"),Wn=require("@stripe/react-stripe-js"),pc=require("@stripe/stripe-js"),Or=require("react");var Mr=require("react/jsx-runtime"),mc={apple_pay:{types:["card"],wallet:"applePay"},google_pay:{types:["card"],wallet:"googlePay"},link:{types:["link"],wallet:"link"},paypal:{types:["paypal"],wallet:"paypal"},amazon_pay:{types:["amazon_pay"],wallet:"amazonPay"}},bs=new Map;function ou(e){let t=bs.get(e);if(t)return t;let r=(0,pc.loadStripe)(e).catch(n=>{throw bs.delete(e),n});return bs.set(e,r),r}function au(e){return e?(0,uo.toStripeAppearance)(e):void 0}function iu(e){return(0,Se.isProviderDecline)(e)||e.code==="setup_intent_authentication_failure"||e.code==="payment_method_provider_decline"}function dc(e){return e==="paypal"?"PayPal":(0,uo.getStripeMethodDisplayName)(e)}function su(){return typeof window>"u"?"":window.location.href}var lu={position:"absolute",width:"100%",height:0,overflow:"hidden",visibility:"hidden",pointerEvents:"none"};function yc(e){let{publishableKey:t,method:r,currency:n,futureUse:a,futureUseUnsupported:i,appearance:l}=e,[u]=(0,Or.useState)(()=>ou(t)),p=(0,Or.useMemo)(()=>{let v=au(l),R=(0,uo.resolveSetupFutureUsage)({futureUse:a,futureUseUnsupported:i},r,"setup");return{mode:"setup",currency:n.toLowerCase(),paymentMethodTypes:mc[r]?.types??[r],...R?{setupFutureUsage:R}:{},...v?{appearance:v}:{}}},[l,n,a,i,r]);return(0,Mr.jsx)(Wn.Elements,{stripe:u,options:p,children:(0,Mr.jsx)(cu,{...e})})}function cu({method:e,category:t,sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,appearance:l,themeId:u,buttonsLayout:p,onSubmitting:v,onConfirmed:R,onDeclined:w,onFailed:x,onValidation:K,onUnavailable:T}){let V=(0,Wn.useStripe)(),A=(0,Wn.useElements)(),[f,P]=(0,Or.useState)(!1),[ee,D]=(0,Or.useState)("loading"),[ue,F]=(0,Or.useState)(!1),[ne,_e]=(0,Or.useState)(!1),ie=(0,Or.useRef)(!1),[We]=(0,Or.useState)(()=>(0,Un.detectPayPalEnvironment)()),[kt,de]=(0,Or.useState)(!1),G=(0,Or.useCallback)((pe,Re)=>{if((0,Se.classifyExternalMethodFailure)(pe,{inAppBrowser:We.inAppBrowser,handoffObserved:!1}).popupBlocked){de(!0),x(new Error((0,Se.buildExternalMethodRecoveryMessage)(dc(e),!0,We.inAppBrowser)),{code:"popup_blocked",retryable:!0});return}x(Re.message===void 0?pe:new Error(Re.message),{code:Re.code,retryable:!0})},[We.inAppBrowser,e,x]),pt=(0,Or.useCallback)(async()=>{if(!(!V||!A||ie.current)){ie.current=!0,P(!0);try{let pe=await A.submit();if(pe.error){K(pe.error.message??null);return}v();let Re=await new uc.PaymentAPI(a,{telemetry:i}).createSessionIntent(r,n,{provider:"stripe",paymentMethodCategory:t,paymentMethodType:e,paymentMethodId:null,intentKind:"setup"});if(Re.provider!=="stripe"||Re.intentKind!=="setup")throw new uo.FloPayError("The billing API returned a non-setup intent.","api_error",{code:"InvalidSessionIntentResponse"});let Fe=await V.confirmSetup({elements:A,clientSecret:Re.clientSecret,confirmParams:{return_url:su()},redirect:"if_required"});if(Fe.error){iu(Fe.error)?w({...Fe.error.decline_code||Fe.error.code?{reason:Fe.error.decline_code??Fe.error.code}:{},...Fe.error.message?{message:Fe.error.message}:{}}):G(Fe.error,{code:"payment_method_setup_provider_failed",message:Fe.error.message??"The payment method could not be saved."});return}R()}catch(pe){G(pe,{code:"payment_method_setup_failed"})}finally{ie.current=!1,P(!1)}}},[a,t,A,e,n,R,w,v,K,G,r,V,i]),we=mc[e]?.wallet,xe=we==="paypal"&&(0,zn.resolveStripePayPalPresentation)(We,"auto",kt?"blocked":We.popupCapability)==="redirect",ke=l?.variables?.borderRadius??p?.cardButton?.borderRadius??8;if(t==="wallet"&&we&&!xe)return(0,Mr.jsxs)(Mr.Fragment,{children:[(0,Mr.jsx)(Yo,{}),(0,Mr.jsx)(wa,{state:ee,borderRadius:ke,children:(0,Mr.jsx)(Wn.ExpressCheckoutElement,{options:{...ai,paymentMethods:oi([e])},onReady:pe=>{let Re=Sa(pe,[we]);D(Re),Re==="unavailable"&&T()},onLoadError:()=>{D("load_error"),T()},onConfirm:()=>{pt()}})})]});let Z=dc(e);return(0,Mr.jsxs)(Mr.Fragment,{children:[ue?(0,Mr.jsx)(ni,{method:e,themeId:u,hasNextStep:!0,highlighted:ne,disabled:f,onClick:()=>_e(pe=>!pe),backgroundColor:p?.cardButton?.backgroundColor,borderColor:p?.cardInputBorder,textColor:p?.cardButton?.color,borderRadius:ke}):null,(0,Mr.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,"aria-hidden":!ne,style:ne?{display:"flex",flexDirection:"column"}:lu,children:[(0,Mr.jsx)(Wn.PaymentElement,{options:{layout:ii},onReady:()=>F(!0),onLoadError:()=>T(),onChange:pe=>{pe.complete&&K(null)}}),(0,Mr.jsx)(si,{testId:`flopay-payment-method-save-${e}`,attributes:{"data-flopay-payment-method-save":e},disabled:!V||!A||f||!ne,onClick:()=>{pt()},color:l?.variables?.colorPrimary??"#4A49FF",borderRadius:l?.variables?.borderRadius??"8px",style:p?.submitButton,children:f?"Saving\u2026":`Save ${Z}`})]})]})}var xa=require("@flopay/js/card-setup"),fr=require("@flopay/shared"),Je=Vi(require("react"),1);var Jo=require("@flopay/js/card-setup"),kr=require("@flopay/shared");var ir=require("react/jsx-runtime"),du=15,uu=2e3;function pu(e){return{userId:e.customer?.id??"",email:e.customer?.email??""}}function Cs(e){return new Promise(t=>setTimeout(t,e))}async function mu(e,t,r){if(!t.trim())throw new fr.FloPayError("FloPayPaymentMethodSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!r.trim())throw new fr.FloPayError("FloPayPaymentMethodSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let n=await e.getUnifiedCheckoutSession(t,r),a=n.data.session;if(!a||!(0,fr.isCardSetupCheckoutSession)(a))throw new fr.FloPayError("FloPayPaymentMethodSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidPaymentMethodSetupSession",param:"sessionId"});let i=(0,kr.readSetupAdvertisement)(n);if(!(0,kr.advertisesAnyMethod)(i)){let{skippedForMissingCurrency:l}=i,u=l.length>0?`FloPay: this setup session advertises only Stripe methods (${l.join(", ")}), and they need the session's currency, which the setup-session read did not carry.`:"FloPay: this setup session advertises no payment method.";throw new fr.FloPayError(u,"validation_error",{code:"NoAdvertisedPaymentMethods",param:"sessionId"})}return{session:a,advertisement:i}}async function yu(e,t,r,n,a){let i=t.vault??null;(0,fr.isMountableVaultBlock)(i)||(i=await e.getVaultCapture(r,n));let l=(0,fr.resolveVaultMountOptions)(i,{billingApiUrl:a,sessionId:r,nonce:n});if(!l)throw new fr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});return l}var Si=class extends Je.default.Component{constructor(){super(...arguments);this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(r){this.props.onFailed(r,{code:"payment_method_setup_load_failed",retryable:!1})}render(){return this.state.failed?null:this.props.children}};function fc({branches:{StripeSetupMethod:e,PayPalSetupMethod:t},sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,theme:l="modern-light",containerStyle:u,appearance:p,buttonsStyles:v,loading:R=null,onReady:w,onComplete:x,onDecline:K,onCancel:T,onValidation:V,onError:A}){let[f]=(0,Je.useState)(Jo.readSetupRedirectReturn),[P,ee]=(0,Je.useState)(null),[D,ue]=(0,Je.useState)(!1),[F,ne]=(0,Je.useState)(null),[_e,ie]=(0,Je.useState)(null),[We,kt]=(0,Je.useState)(null),[de,G]=(0,Je.useState)(null),[pt,we]=(0,Je.useState)(()=>new Set),xe=(0,Je.useRef)(pt),ke=(0,Je.useRef)(null);ke.current=P;let Z=(0,Je.useRef)(!1),pe=(0,Je.useRef)(!1),Re=(0,Je.useRef)(!1),Fe=(0,Je.useRef)(!1),rt=(0,Je.useRef)(0),me=(0,Je.useRef)(0),N=(0,Je.useRef)(!1),{vaultTheme:H,surface:ye,overlayTheme:$e,appearance:he,buttonsLayout:M}=(0,Je.useMemo)(()=>bi({theme:l,appearance:p,buttonsStyles:v}),[l,p,v]),Ye=(0,Je.useMemo)(()=>(0,ka.mergeCardSetupSurface)(ye,u),[ye,u]),Te=(0,Je.useRef)({sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,onReady:w,onComplete:x,onDecline:K,onCancel:T,onValidation:V,onError:A});Te.current={sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,onReady:w,onComplete:x,onDecline:K,onCancel:T,onValidation:V,onError:A},(0,Je.useEffect)(()=>{N.current=!0;let k=rt.current+1;return rt.current=k,()=>{N.current=!1,me.current+=1,queueMicrotask(()=>{rt.current===k&&(Re.current||Fe.current||(Fe.current=!0,(0,it.invokeMerchantCallback)(()=>{Te.current.onCancel?.({status:"cancelled",sessionId:r})})))})}},[r]);let tt=(0,Je.useCallback)((k,Q)=>{Re.current=!0,Z.current=!1,G({status:"success",wording:k,message:null}),(async()=>(await Cs(600),!pe.current&&(pe.current=!0,(0,it.invokeMerchantCallback)(()=>{Te.current.onComplete?.({status:"succeeded",sessionId:Te.current.sessionId,...Q?{paymentMethod:Q}:{}})}),N.current&&G(null))))()},[]),Ze=(0,Je.useCallback)((k,Q)=>{Re.current=!0,Z.current=!1,G({status:"error",wording:k,message:Q.message??null}),(0,it.invokeMerchantCallback)(()=>{Te.current.onDecline?.({status:"declined",sessionId:Te.current.sessionId,...Q.reason?{reason:Q.reason}:{},...Q.message?{message:Q.message}:{}})}),(async()=>(await Cs(400),N.current&&G(null)))()},[]),ze=(0,Je.useCallback)((k,Q)=>{Z.current?(Z.current=!1,G({status:"error",wording:k,message:Q.message}),setTimeout(()=>{N.current&&G(null)},400)):G(null),(0,it.invokeMerchantCallback)(()=>Te.current.onError?.(Q))},[]),He=(0,Je.useCallback)(async k=>{let Q=me.current+1;me.current=Q;let be=()=>!N.current||Q!==me.current;Z.current=!0,G({status:"processing",wording:"payment_method",message:null});let Be=new xa.PaymentAPI((0,fr.resolveBillingApiUrl)(Te.current.billingApiUrl),{telemetry:Te.current.telemetry});try{for(let S=0;S<du;S+=1){if((S>0||k.waitFirst)&&await Cs(uu),be())return;let Bt=await Be.getUnifiedCheckoutSession(Te.current.sessionId,Te.current.nonce);if(be())return;let rr=Bt.data.session?.status;if(rr==="complete"){ue(!0),tt("payment_method");return}if(rr==="expired")throw new fr.FloPayError("This setup session expired before the payment method was saved.","validation_error",{code:"payment_method_setup_expired"})}throw new fr.FloPayError("The payment method could not be confirmed yet. Please try again.","api_error",{code:"payment_method_setup_unverified"})}catch(S){if(be())return;let Bt=S instanceof fr.FloPayError&&S.code==="payment_method_setup_unverified";ze("payment_method",to(S,Bt?{retryable:!0}:{}))}finally{Be.destroy()}},[ze,tt]);(0,Je.useEffect)(()=>{let k=!0,Q=(0,fr.resolveBillingApiUrl)(a),be=new xa.PaymentAPI(Q,{telemetry:i});ee(null),ue(!1),ne(null),ie(null),kt(null);let Be=new Set;return xe.current=Be,we(Be),Re.current=!1,Fe.current=!1,pe.current=!1,(async()=>{try{let{session:S,advertisement:Bt}=await mu(be,r,n);if(!k)return;let rr={advertisement:Bt,customer:pu(S),...S.futureUse?{futureUse:S.futureUse}:{},...S.futureUseUnsupported?{futureUseUnsupported:S.futureUseUnsupported}:{}};if(f){if((0,Jo.clearSetupRedirectParams)(),S.status==="complete"){ue(!0),ee(rr),tt("payment_method");return}f.failed?Ze("payment_method",{reason:"redirect_failed"}):He({waitFirst:!0})}let sr=Bt.card?await yu(be,S,r,n,Q):null;if(!k)return;ee(rr),sr&&(ie(sr),ne(new xa.PciVaultCardCapture({sessionId:r,operation:"card_setup",telemetry:i})))}catch(S){if(!k)return;let Bt=to(S);Re.current=!0,kt(Bt),(0,it.invokeMerchantCallback)(()=>Te.current.onError?.(Bt))}})(),()=>{k=!1,be.destroy()}},[a,n,f,Ze,tt,r,i,He]),(0,Je.useEffect)(()=>{if(!F)return;Z.current=!1;let k=F.on("submitting",()=>{Z.current=!0,G({status:"processing",wording:"card",message:null})}),Q=F.on("complete",S=>{tt("card",S.paymentMethod)}),be=F.on("decline",S=>{Ze("card",{...S.declineReason?{reason:S.declineReason}:{},...S.message?{message:S.message}:{}})}),Be=F.on("challenge_dismissed",()=>{G(null)});return()=>{k(),Q(),be(),Be()}},[F,Ze,tt]);let Le=(0,Je.useCallback)((k,Q,be)=>{if(be.retryable){ze("payment_method",to(Q,be));return}if(xe.current.has(k))return;let Be=new Set(xe.current);Be.add(k),xe.current=Be,we(Be);let S=ke.current?.advertisement,Bt=S?(0,kr.advertisedMethodKeys)(S).some(rr=>!Be.has(rr)):!1;ze("payment_method",to(Q,{code:be.code,retryable:Bt}))},[ze]),Et=(0,Je.useMemo)(()=>({onSubmitting:()=>{Z.current=!0,G({status:"processing",wording:"payment_method",message:null})},onConfirmed:()=>{He({waitFirst:!1})},onDeclined:k=>Ze("payment_method",k),onValidation:k=>{(0,it.invokeMerchantCallback)(()=>Te.current.onValidation?.(k))},onAbandoned:()=>{Z.current=!1,G(null)}}),[Ze,He]),zt=(0,Je.useRef)(Le);zt.current=Le;let ft=(0,Je.useRef)(new Map),Ft=k=>{let Q=ft.current.get(k);if(Q)return Q;let be=(Be,S)=>zt.current(k,Be,S);return ft.current.set(k,be),be},q=(0,Je.useCallback)(k=>{if(xe.current.has(k))return;let Q=new Set(xe.current);Q.add(k),xe.current=Q,we(Q);let be=ke.current?.advertisement;be&&(0,kr.advertisedMethodKeys)(be).some(S=>!Q.has(S))||ze("payment_method",to(new Error("FloPay: none of the advertised payment methods can be used here."),{code:"payment_method_setup_unavailable",retryable:!1}))},[ze]),Pe=(0,Je.useRef)(q);Pe.current=q;let st=(0,Je.useRef)(new Map),W=k=>{let Q=st.current.get(k);if(Q)return Q;let be=()=>Pe.current(k);return st.current.set(k,be),be},Ee=de?(0,ir.jsx)(Wr,{status:de.status,errorMessage:de.message,...(0,kr.setupOverlayLabels)(de.wording),successNote:null,...$e?{theme:$e}:{}}):null;if(We)return(0,ir.jsx)("div",{role:"alert",children:We.message});if(!P||D)return(0,ir.jsxs)(ir.Fragment,{children:[Ee,P?null:R]});let{advertisement:nt,customer:Ke,futureUse:Rt,futureUseUnsupported:qt}=P,b=(0,fr.resolveBillingApiUrl)(a),L=i===void 0?{}:{telemetry:i},qe=nt.stripe.filter(({method:k})=>!pt.has(k)),fe=pt.has("paypal")?null:nt.paypal,h=!!(nt.card&&F&&_e?.html),ve=({method:k,publishableKey:Q,currency:be})=>(0,ir.jsx)("div",{"data-flopay-payment-method":k,style:{display:"contents"},children:(0,ir.jsx)(Si,{onFailed:Ft(k),children:(0,ir.jsx)(Je.Suspense,{fallback:null,children:(0,ir.jsx)(e,{method:k,category:(0,kr.stripeMethodCategory)(k),publishableKey:Q,currency:be,...Rt?{futureUse:Rt}:{},...qt?{futureUseUnsupported:qt}:{},sessionId:r,nonce:n,billingApiUrl:b,...L,...he?{appearance:he}:{},...M?{buttonsLayout:M}:{},...typeof l=="string"?{themeId:l}:{},...Et,onFailed:Ft(k),onUnavailable:W(k)})})})},k),j=qe.filter(({method:k})=>(0,kr.stripeMethodCategory)(k)==="wallet"),Y=qe.filter(({method:k})=>(0,kr.stripeMethodCategory)(k)!=="wallet"),te=qe.length>0||fe!==null;return(0,ir.jsxs)(ir.Fragment,{children:[Ee,te?(0,ir.jsxs)("div",{"data-flopay-payment-methods":"",style:{position:"relative",display:"flex",flexDirection:"column",gap:"0.5rem"},children:[j.map(ve),fe?(0,ir.jsx)("div",{"data-flopay-payment-method":"paypal",children:(0,ir.jsx)(Si,{onFailed:Ft("paypal"),children:(0,ir.jsx)(Je.Suspense,{fallback:null,children:(0,ir.jsx)(t,{clientId:fe.clientId,...fe.environment?{environment:fe.environment}:{},...nt.currency?{currency:nt.currency}:{},sessionId:r,nonce:n,billingApiUrl:b,customer:Ke,...L,...Et,onFailed:Ft("paypal"),onUnavailable:W("paypal")})})})}):null,Y.map(ve)]}):null,h&&te?(0,ir.jsx)(li,{label:"or add a card"}):null,h&&F&&_e?.html?(0,ir.jsx)("div",{"data-flopay-payment-method":"card",children:(0,ir.jsx)(lo,{capture:F,html:_e.html,messageToken:_e.messageToken,expectedOrigin:_e.expectedOrigin,verificationRequired:_e.verificationRequired,theme:H,containerStyle:Ye,onReady:()=>{(0,it.invokeMerchantCallback)(()=>Te.current.onReady?.())},onValidation:k=>{(0,it.invokeMerchantCallback)(()=>Te.current.onValidation?.(k))},onError:k=>{k&&ze("card",to(new Error(k),{code:"card_setup_widget_failed",retryable:!0}))}})}):null]})}var hc=require("react/jsx-runtime"),fu={StripeSetupMethod:yc,PayPalSetupMethod:lc};function gc(e){return(0,hc.jsx)(fc,{...e,branches:fu})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayPaymentMethodSetup,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});
47
+ `})]})}return(0,F.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&T(Jo),r&&(n||a)&&T(Jo),r&&(0,F.jsx)("button",{type:"button",onClick:()=>{e?.("card"),I(!0)},style:{width:"100%",...y,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:_.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",boxShadow:"0 1px 2px rgba(0,0,0,0.04)",transition:"transform 0.1s",position:"relative",opacity:1,..._.cardButton},onMouseDown:v=>{v.currentTarget.style.transform="scale(0.985)"},onMouseUp:v=>{v.currentTarget.style.transform="scale(1)"},children:(0,F.jsx)(Do,{content:p})}),(0,F.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var fn=require("react/jsx-runtime"),eu=44;function oc(e){return new Promise(t=>setTimeout(t,e))}function tu(e,t){return e instanceof gn.FloPayError?e:new gn.FloPayError(e instanceof Error?e.message:t,"api_error")}function ru(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function nu(e){if(e.createSession)return{...e.createSession,checkoutMode:"auto"};if(!e.clientId||!e.account||!e.successUrl||!e.cancelUrl)return null;let t=e.products!=null;return{clientId:e.clientId,products:e.products,items:t?void 0:e.items,subscriptions:t?void 0:e.subscriptions,account:e.account,successUrl:e.successUrl,cancelUrl:e.cancelUrl,couponCodes:e.couponCodes,tagsData:e.tagsData,utmMetadata:e.utmMetadata,checkoutMode:"auto"}}function ac({sessionId:e,nonce:t,createSession:r,paymentMethodId:n,checkoutMethod:a,clientId:i,products:l,items:u,subscriptions:p,account:P,successUrl:E,cancelUrl:S,couponCodes:I,tagsData:K,utmMetadata:_,billingApiUrl:X,locale:T,theme:y,appearance:v,buttonsTheme:pe,buttonsStyles:b,onSuccess:Te,onError:B,onDecline:ae,children:me,disabled:ue=!1,type:Ae="button",style:ct,...Ge}){let D=(0,yt.useMemo)(()=>(0,gn.resolveBillingApiUrl)(X),[X]),bt=(0,yt.useMemo)(()=>nu({createSession:r,clientId:i,products:l,items:u,subscriptions:p,account:P,successUrl:E,cancelUrl:S,couponCodes:I,tagsData:K,utmMetadata:_}),[P,S,i,I,r,l,u,p,E,K,_]),[Xe,Le]=(0,yt.useState)(!1),[fe,J]=(0,yt.useState)(null),[G,Fe]=(0,yt.useState)(null),[je,Je]=(0,yt.useState)(!1),[re,Q]=(0,yt.useState)(null),[se,W]=(0,yt.useState)(null),We=(0,yt.useRef)(!0),Be=(0,yt.useRef)(null),ge=(0,yt.useRef)(se),N=(0,yt.useRef)(Te),Ce=(0,yt.useRef)(B),dt=(0,yt.useRef)(ae),Ne=(0,yt.useCallback)(w=>ei(Be,async O=>{try{return await w(O)}catch($e){throw O.aborted?$o($e):$e}}),[]);(0,yt.useEffect)(()=>{ge.current=se},[se]),(0,yt.useEffect)(()=>{N.current=Te},[Te]),(0,yt.useEffect)(()=>{Ce.current=B},[B]),(0,yt.useEffect)(()=>{dt.current=ae},[ae]),(0,yt.useEffect)(()=>(We.current=!0,()=>{We.current=!1,Be.current?.abort()}),[]),(0,yt.useEffect)(()=>{if(typeof window>"u")return;let w=O=>{O.key==="Escape"&&W(null)};return window.addEventListener("keydown",w),()=>{window.removeEventListener("keydown",w)}},[]);let at=(0,yt.useCallback)((w,O=ba)=>{dt.current?.(hr(O,w,{code:w.code,declineCode:w.declineCode}))},[]),Me=(0,yt.useCallback)(async w=>{We.current&&(Fe(null),Je(w.result.status==="authorized"),J("success"),await oc(600),We.current&&(0,tt.invokeMerchantCallback)(()=>N.current?.(w)))},[]),nt=(0,yt.useCallback)(async(w,O)=>{We.current&&(Ce.current?.(w),O?.emitDecline&&at(w,O.method),Fe(w.message),Je(!1),J("error"),await oc(400))},[at]),it=(0,yt.useCallback)(async(w,O,$e)=>{let Re=w.data.session??null;if(!Re)throw so(new gn.FloPayError("No session data returned","api_error"),O);let h=Re.clientSecret||t;if(Jn(Re)){await Me({result:Xn(Re,O),session:Re,sessionId:Re.id||O,autoCompleted:!1});return}if(Re.status==="expired")throw so($a(Re),Re.id||O);try{if(w.autoProcessingPending){let q=w.autoProcessingPending,V=new Ci.PaymentAPI(D),De=await Ne(ye=>V.waitForCheckoutSessionCompletion(q.sessionId,{initialDelayMs:q.retryAfterMs,nonce:h,statusUrl:q.statusUrl,signal:ye})),f=lo(De,Re),he=De.autoProcessingError?.type==="3ds_required"&&De.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:De.autoProcessingError.nextActionRedirectUrl}:null;if(he&&O&&h){let ye=await Ne(gt=>Ho(he,{billingApiUrl:D,sessionId:O,nonce:h,session:Re,signal:gt,telemetry:!0}));await Me({result:ye,session:Re,sessionId:Re.id||O,autoCompleted:!1});return}if(De.autoProcessingError)throw qn(De.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:De.autoProcessingError.checkoutMethod});if(!Jn(f))throw No(f);await Me({result:Xn(f,O),session:f,sessionId:f.id||O,autoCompleted:!1});return}if(w.autoProcessingError){let q=w.autoProcessingError.nextActionRedirectUrl;if(w.autoProcessingError.type==="3ds_required"&&q&&O&&h){let V=await Ne(ye=>xl({billingApiUrl:D,sessionId:O,nonce:h,nextActionRedirectUrl:q,signal:ye}));if(V.status==="declined")throw qn({type:V.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:V.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:w.autoProcessingError.checkoutMethod});let f=await new Ci.PaymentAPI(D).waitForCheckoutSessionCompletion(O,{initialDelayMs:0,nonce:h}),he=lo(f,Re);if(!Jn(he))throw qn({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:w.autoProcessingError.checkoutMethod});await Me({result:Xn(he,O),session:he,sessionId:he.id||O,autoCompleted:!1});return}throw qn(w.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:w.autoProcessingError.checkoutMethod})}if($e?.fromCreateSession&&w.autoProcessingAttempted===!0)throw qn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ce=await Ko({billingApiUrl:D,sessionId:O??Re.id,session:Re,nonce:h});if(ce.type==="next_action_required"&&h){let q=O??Re.id,V=await Ne(De=>Ho(ce,{billingApiUrl:D,sessionId:q,nonce:h,session:Re,signal:De,telemetry:!0}));await Me({result:V,session:Re,sessionId:Re.id||q,autoCompleted:!1});return}if(ce.type!=="success")throw qn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await Me({result:ce.result,session:Re,sessionId:Re.id||O,autoCompleted:!1})}catch(ce){let q=Re.id||O,V=so(Sa(ce),q);if(V.code==="three_ds_aborted")return;if(V.code==="checkout_processing_timeout"){if(!We.current)return;Q(V.message),(0,tt.invokeMerchantCallback)(()=>Ce.current?.(V));return}await nt(V,{emitDecline:!0,method:V.checkoutMethod??ba}),ru(V,q)&&q&&We.current&&W({sessionId:q,errorMessage:V.message,nonce:h||void 0,payPalOrderId:V.orderId})}},[t,D,Ne,nt,Me]),ar=(0,yt.useCallback)(async w=>{if(Ge.onClick?.(w),!(w.defaultPrevented||ue||Xe)){if(W(null),Q(null),e&&bt){let O=new gn.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await nt(O),We.current&&(J(null),Fe(null));return}if(!e&&!bt){let O=new gn.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await nt(O),We.current&&(J(null),Fe(null));return}Le(!0),Fe(null),Je(!1),J("processing");try{let O=new Ci.PaymentAPI(D);if(e){let $e=await O.getUnifiedCheckoutSession(e,t);await it($e,e);return}try{let $e=await O.createAndFetchSession({...bt});await it($e,$e.data.session?.id??null,{fromCreateSession:!0})}catch($e){if(Ha($e)==="session_auto_completed"){await Me({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw $e}}catch(O){await nt(so(tu(O,"Automatic payment failed. Please try again."),e))}finally{We.current&&(J(null),Fe(null),Le(!1))}}},[Ge.onClick,bt,ue,Xe,t,it,D,e,nt,Me]),Dt=(0,yt.useCallback)(w=>{let O=ge.current;W(null),N.current?.({result:w,session:null,sessionId:O?.sessionId??null,autoCompleted:!1})},[]),St=(0,yt.useCallback)(w=>{Ce.current?.(w)},[]),we=(0,yt.useCallback)(w=>{dt.current?.(w)},[]),M=(0,yt.useMemo)(()=>(0,gn.resolveTheme)(y),[y]),ft=(0,yt.useMemo)(()=>{let w=M?.buttonsLayout??(0,gn.resolveButtonsLayoutTheme)(pe);return b?{...w,...b,cardButton:{...w.cardButton,...b.cardButton}}:w},[M,pe,b]),ut=(0,yt.useMemo)(()=>{let w=M?.appearance;return v?w?{...w,...v,variables:{...w.variables,...v.variables}}:v:w},[v,M]),z=ut?.variables,ke=z?.colorPrimary??"#4A49FF",Nt=z?.colorPrimaryHover??(0,ps.darkenHex)(ke,.12),Ue=z?.borderRadius??"8px";return(0,fn.jsxs)(fn.Fragment,{children:[(0,fn.jsx)("button",{...Ge,type:Ae,onClick:ar,disabled:ue||Xe,"aria-busy":Xe,style:{width:"100%",...me===void 0?{boxSizing:"border-box",height:eu,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...ft.cardButton,...us({themeBundle:M,resolvedPrimaryColor:ke,resolvedBorderRadius:Ue,submitButtonStyle:ft.submitButton,explicitPrimaryColor:z?.colorPrimary}),fontSize:ft.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:ue||Xe?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:ue||Xe?.6:1,...ct},onMouseEnter:w=>{Ge.onMouseEnter?.(w),!w.defaultPrevented&&!ue&&!Xe&&(M||z?.colorPrimary)&&(w.currentTarget.style.backgroundColor=Nt)},onMouseLeave:w=>{Ge.onMouseLeave?.(w),!w.defaultPrevented&&(M||z?.colorPrimary)&&(w.currentTarget.style.backgroundColor=ke)},onMouseDown:w=>{Ge.onMouseDown?.(w),w.defaultPrevented||(w.currentTarget.style.transform="scale(0.985)")},onMouseUp:w=>{Ge.onMouseUp?.(w),w.defaultPrevented||(w.currentTarget.style.transform="scale(1)")},children:(0,fn.jsx)(Do,{content:me})}),re&&(0,fn.jsx)("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:re}),fe&&(0,fn.jsx)($r,{status:fe,errorMessage:G,authorized:je}),se&&(0,fn.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:w=>{w.target===w.currentTarget&&W(null)},style:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.45)",display:"flex",alignItems:"center",justifyContent:"center",padding:"1.5rem",zIndex:1100},children:(0,fn.jsx)("div",{style:{width:"100%",maxWidth:520,maxHeight:"90vh",overflowY:"auto",background:"white",borderRadius:20,padding:"1.5rem",boxShadow:"0 24px 80px rgba(15, 23, 42, 0.28)",display:"flex",flexDirection:"column",gap:"1rem"},children:(0,fn.jsx)(vi,{sessionId:se.sessionId,nonce:se.nonce,checkoutMode:"full",billingApiUrl:D,locale:T,theme:y,...ut?{appearance:ut}:{},buttonsTheme:pe,buttonsStyles:b,initialErrorMessage:se.errorMessage,initialPayPalOrderId:se.payPalOrderId,cardTitleContent:null,onComplete:Dt,onError:St,onDecline:we})})})]})}var Si=require("@flopay/js/card-setup"),Dr=require("@flopay/shared"),Vt=require("react");var Cs=require("@flopay/shared"),ou=require("@flopay/shared");function bi(e){let t=(0,Cs.resolveCardSetupTheme)(e);return{...t,surface:t.surface,overlayTheme:t.overlayTheme}}var Vn=require("react/jsx-runtime"),xa=class extends Dr.FloPayError{constructor(t,r,n){super(t,r,n),this.name="FloPayCardSetupError",this.retryable=n.retryable}};function no(e,t={}){let r=e instanceof Dr.FloPayError?e:void 0,n=r?.statusCode,a=t.retryable??(r?.type==="network_error"||r?.type==="rate_limit_error"||typeof n=="number"&&n>=500||r?.code==="vault_capture_timeout"||!r);return new xa(r?.message??(e instanceof Error?e.message:"Failed to load the secure card form."),r?.type??"api_error",{code:t.code??r?.code??"card_setup_load_failed",retryable:a,...r?.param?{param:r.param}:{},...n===void 0?{}:{statusCode:n}})}function ic({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,theme:a="modern-light",containerStyle:i,appearance:l,buttonsStyles:u,loading:p=null,onReady:P,onComplete:E,onDecline:S,onCancel:I,onValidation:K,onError:_}){let[X,T]=(0,Vt.useState)(null),[y,v]=(0,Vt.useState)(null),[pe,b]=(0,Vt.useState)(null),[Te,B]=(0,Vt.useState)(null),[ae,me]=(0,Vt.useState)(null),ue=(0,Vt.useRef)(!1),Ae=(0,Vt.useRef)(!1),{vaultTheme:ct,surface:Ge,overlayTheme:D}=(0,Vt.useMemo)(()=>bi({theme:a,appearance:l,buttonsStyles:u}),[a,l,u]),bt=(0,Vt.useMemo)(()=>(0,Ra.mergeCardSetupSurface)(Ge,i),[Ge,i]),Xe=(0,Vt.useRef)(P),Le=(0,Vt.useRef)(_),fe=(0,Vt.useRef)(E),J=(0,Vt.useRef)(S),G=(0,Vt.useRef)(I),Fe=(0,Vt.useRef)(K),je=(0,Vt.useRef)(!1),Je=(0,Vt.useRef)(!1),re=(0,Vt.useRef)(0);return Xe.current=P,Le.current=_,fe.current=E,J.current=S,G.current=I,Fe.current=K,(0,Vt.useEffect)(()=>{let Q=re.current+1;return re.current=Q,()=>{queueMicrotask(()=>{re.current===Q&&(je.current||Je.current||(Je.current=!0,(0,tt.invokeMerchantCallback)(()=>{G.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,Vt.useEffect)(()=>{let Q=!0,se=(0,Dr.resolveBillingApiUrl)(r),W=new Si.PaymentAPI(se,{telemetry:n});return T(null),v(null),b(null),je.current=!1,Je.current=!1,(async()=>{try{if(!e.trim())throw new Dr.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new Dr.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let We=await W.getUnifiedCheckoutSession(e,t);if(!Q)return;let Be=We.data.session;if(!Be||!(0,Dr.isCardSetupCheckoutSession)(Be))throw new Dr.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let ge=Be.vault;(0,Dr.isMountableVaultBlock)(ge)||(ge=await W.getVaultCapture(e,t));let N=(0,Dr.resolveVaultMountOptions)(ge,{billingApiUrl:se,sessionId:e,nonce:t});if(!N)throw new Dr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!Q)return;v(N),T(new Si.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:n}))}catch(We){if(!Q)return;let Be=no(We);je.current=!0,b(Be),(0,tt.invokeMerchantCallback)(()=>Le.current?.(Be))}})(),()=>{Q=!1,W.destroy()}},[r,t,e,n]),(0,Vt.useEffect)(()=>{if(!X)return;let Q=!1;Ae.current=!1,ue.current=!1;let se=X.on("submitting",()=>{ue.current=!0,me(null),B("processing")}),W=X.on("complete",ge=>{je.current=!0,ue.current=!1,B("success"),(async()=>(await new Promise(N=>setTimeout(N,600)),!Ae.current&&(Ae.current=!0,(0,tt.invokeMerchantCallback)(()=>{fe.current?.({status:"succeeded",sessionId:e,...ge.paymentMethod?{paymentMethod:ge.paymentMethod}:{}})}),Q||B(null))))()}),We=X.on("decline",ge=>{je.current=!0,ue.current=!1,me(ge.message??null),B("error"),(0,tt.invokeMerchantCallback)(()=>{J.current?.({status:"declined",sessionId:e,...ge.declineReason?{reason:ge.declineReason}:{},...ge.message?{message:ge.message}:{}})}),(async()=>(await new Promise(N=>setTimeout(N,400)),Q||B(null)))()}),Be=X.on("challenge_dismissed",()=>{B(null)});return()=>{Q=!0,se(),W(),We(),Be()}},[X,e]),pe?(0,Vn.jsx)("div",{role:"alert",children:pe.message}):!X||!y?.html?(0,Vn.jsx)(Vn.Fragment,{children:p}):(0,Vn.jsxs)(Vn.Fragment,{children:[Te&&(0,Vn.jsx)($r,{status:Te,errorMessage:ae,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...D?{theme:D}:{}}),(0,Vn.jsx)(co,{capture:X,html:y.html,messageToken:y.messageToken,expectedOrigin:y.expectedOrigin,verificationRequired:y.verificationRequired,theme:ct,containerStyle:bt,onReady:()=>{(0,tt.invokeMerchantCallback)(()=>Xe.current?.())},onValidation:Q=>{(0,tt.invokeMerchantCallback)(()=>Fe.current?.(Q))},onError:Q=>{if(!Q)return;ue.current&&(ue.current=!1,me(Q),B("error"),setTimeout(()=>B(null),400));let se=no(new Error(Q),{code:"card_setup_widget_failed",retryable:!0});(0,tt.invokeMerchantCallback)(()=>Le.current?.(se))}})]})}var sc=require("@flopay/js/card-setup"),uo=require("@flopay/shared"),lc=require("@paypal/paypal-js"),wo=require("react");var dc=require("react/jsx-runtime");function cc({clientId:e,environment:t,currency:r,sessionId:n,nonce:a,billingApiUrl:i,telemetry:l,customer:{userId:u,email:p},onSubmitting:P,onConfirmed:E,onFailed:S,onAbandoned:I}){let K=(0,wo.useRef)(null),_=(0,wo.useRef)({onSubmitting:P,onConfirmed:E,onFailed:S,onAbandoned:I});_.current={onSubmitting:P,onConfirmed:E,onFailed:S,onAbandoned:I};let[X]=(0,wo.useState)(()=>(0,Un.detectPayPalEnvironment)().inAppBrowser);return(0,wo.useEffect)(()=>{let T=!0,y,v=new sc.PaymentAPI(i,{telemetry:l}),pe={userId:u,email:p};return(async()=>{try{let b=await(0,lc.loadScript)({clientId:e,...r?{currency:r.toUpperCase()}:{},components:"buttons",...t==="sandbox"||t==="production"?{environment:t}:{}}),Te=K.current;if(!T||!Te)return;if(!b?.Buttons)throw new uo.FloPayError("PayPal could not be loaded.","api_error",{code:"paypal_unavailable"});let B=b.Buttons({createVaultSetupToken:async()=>{_.current.onSubmitting();let ae=await v.createSessionIntent(n,a,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:"setup"});if(ae.provider!=="paypal"||ae.providerObjectType!=="setup_token")throw new uo.FloPayError("The billing API did not return a PayPal setup token.","api_error",{code:"InvalidSessionIntentResponse"});return ae.providerObjectId},onApprove:async ae=>{let me=ae.vaultSetupToken;if(!me)throw new uo.FloPayError("PayPal approved without a setup token.","api_error",{code:"paypal_setup_token_missing"});let ue=await v.processPayment(pe.userId,{sessionId:n,nonce:a,paymentMethodCategory:"paypal",tokenizedData:{id:me,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE},accountData:pe});if(!ue.ok)throw new uo.FloPayError("PayPal could not be saved.","api_error",{code:"paypal_setup_failed",statusCode:ue.status});T&&_.current.onConfirmed()},onCancel:()=>{T&&_.current.onAbandoned()},onError:ae=>{if(!T)return;let{popupBlocked:me}=(0,Se.classifyExternalMethodFailure)(ae,{inAppBrowser:X,handoffObserved:!1});_.current.onFailed(me?new Error((0,Se.buildExternalMethodRecoveryMessage)("PayPal",!0,X)):ae,{code:me?"popup_blocked":"paypal_setup_failed",retryable:!0})}});y=()=>B.close(),await B.render(Te)}catch(b){if(!T)return;_.current.onFailed(b,{code:"paypal_unavailable",retryable:!0})}})(),()=>{T=!1,y?.().catch(()=>{}),v.destroy()}},[i,e,r,p,t,X,a,n,l,u]),(0,dc.jsx)("div",{ref:K,"data-flopay-paypal-setup":""})}var pc=require("@flopay/js/card-setup"),po=require("@flopay/shared"),Wn=require("@stripe/react-stripe-js"),mc=require("@stripe/stripe-js"),Or=require("react");var xr=require("react/jsx-runtime"),yc={apple_pay:{types:["card"],wallet:"applePay"},google_pay:{types:["card"],wallet:"googlePay"},link:{types:["link"],wallet:"link"},paypal:{types:["paypal"],wallet:"paypal"},amazon_pay:{types:["amazon_pay"],wallet:"amazonPay"}},bs=new Map;function au(e){let t=bs.get(e);if(t)return t;let r=(0,mc.loadStripe)(e).catch(n=>{throw bs.delete(e),n});return bs.set(e,r),r}function iu(e){return e?(0,po.toStripeAppearance)(e):void 0}function su(e){return(0,Se.isProviderDecline)(e)||e.code==="setup_intent_authentication_failure"||e.code==="payment_method_provider_decline"}function uc(e){return e==="paypal"?"PayPal":(0,po.getStripeMethodDisplayName)(e)}function lu(){return typeof window>"u"?"":window.location.href}var cu={position:"absolute",width:"100%",height:0,overflow:"hidden",visibility:"hidden",pointerEvents:"none"};function fc(e){let{publishableKey:t,method:r,currency:n,futureUse:a,futureUseUnsupported:i,appearance:l}=e,[u]=(0,Or.useState)(()=>au(t)),p=(0,Or.useMemo)(()=>{let P=iu(l),E=(0,po.resolveSetupFutureUsage)({futureUse:a,futureUseUnsupported:i},r,"setup");return{mode:"setup",currency:n.toLowerCase(),paymentMethodTypes:yc[r]?.types??[r],...E?{setupFutureUsage:E}:{},...P?{appearance:P}:{}}},[l,n,a,i,r]);return(0,xr.jsx)(Wn.Elements,{stripe:u,options:p,children:(0,xr.jsx)(du,{...e})})}function du({method:e,category:t,sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,appearance:l,themeId:u,buttonsLayout:p,onSubmitting:P,onConfirmed:E,onDeclined:S,onFailed:I,onValidation:K,onUnavailable:_}){let X=(0,Wn.useStripe)(),T=(0,Wn.useElements)(),[y,v]=(0,Or.useState)(!1),[pe,b]=(0,Or.useState)("loading"),[Te,B]=(0,Or.useState)(!1),[ae,me]=(0,Or.useState)(!1),ue=(0,Or.useRef)(!1),[Ae]=(0,Or.useState)(()=>(0,Un.detectPayPalEnvironment)()),[ct,Ge]=(0,Or.useState)(!1),D=(0,Or.useCallback)((G,Fe)=>{if((0,Se.classifyExternalMethodFailure)(G,{inAppBrowser:Ae.inAppBrowser,handoffObserved:!1}).popupBlocked){Ge(!0),I(new Error((0,Se.buildExternalMethodRecoveryMessage)(uc(e),!0,Ae.inAppBrowser)),{code:"popup_blocked",retryable:!0});return}I(Fe.message===void 0?G:new Error(Fe.message),{code:Fe.code,retryable:!0})},[Ae.inAppBrowser,e,I]),bt=(0,Or.useCallback)(async()=>{if(!(!X||!T||ue.current)){ue.current=!0,v(!0);try{let G=await T.submit();if(G.error){K(G.error.message??null);return}P();let Fe=await new pc.PaymentAPI(a,{telemetry:i}).createSessionIntent(r,n,{provider:"stripe",paymentMethodCategory:t,paymentMethodType:e,paymentMethodId:null,intentKind:"setup"});if(Fe.provider!=="stripe"||Fe.intentKind!=="setup")throw new po.FloPayError("The billing API returned a non-setup intent.","api_error",{code:"InvalidSessionIntentResponse"});let je=await X.confirmSetup({elements:T,clientSecret:Fe.clientSecret,confirmParams:{return_url:lu()},redirect:"if_required"});if(je.error){su(je.error)?S({...je.error.decline_code||je.error.code?{reason:je.error.decline_code??je.error.code}:{},...je.error.message?{message:je.error.message}:{}}):D(je.error,{code:"payment_method_setup_provider_failed",message:je.error.message??"The payment method could not be saved."});return}E()}catch(G){D(G,{code:"payment_method_setup_failed"})}finally{ue.current=!1,v(!1)}}},[a,t,T,e,n,E,S,P,K,D,r,X,i]),Xe=yc[e]?.wallet,Le=Xe==="paypal"&&(0,zn.resolveStripePayPalPresentation)(Ae,"auto",ct?"blocked":Ae.popupCapability)==="redirect",fe=l?.variables?.borderRadius??p?.cardButton?.borderRadius??8;if(t==="wallet"&&Xe&&!Le)return(0,xr.jsxs)(xr.Fragment,{children:[(0,xr.jsx)(Xo,{}),(0,xr.jsx)(ka,{state:pe,borderRadius:fe,children:(0,xr.jsx)(Wn.ExpressCheckoutElement,{options:{...ii,paymentMethods:ai([e])},onReady:G=>{let Fe=wa(G,[Xe]);b(Fe),Fe==="unavailable"&&_()},onLoadError:()=>{b("load_error"),_()},onConfirm:()=>{bt()}})})]});let J=uc(e);return(0,xr.jsxs)(xr.Fragment,{children:[Te?(0,xr.jsx)(oi,{method:e,themeId:u,hasNextStep:!0,highlighted:ae,disabled:y,onClick:()=>me(G=>!G),backgroundColor:p?.cardButton?.backgroundColor,borderColor:p?.cardInputBorder,textColor:p?.cardButton?.color,borderRadius:fe}):null,(0,xr.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,"aria-hidden":!ae,style:ae?{display:"flex",flexDirection:"column"}:cu,children:[(0,xr.jsx)(Wn.PaymentElement,{options:{layout:si},onReady:()=>B(!0),onLoadError:()=>_(),onChange:G=>{G.complete&&K(null)}}),(0,xr.jsx)(li,{testId:`flopay-payment-method-save-${e}`,attributes:{"data-flopay-payment-method-save":e},disabled:!X||!T||y||!ae,onClick:()=>{bt()},color:l?.variables?.colorPrimary??"#4A49FF",borderRadius:l?.variables?.borderRadius??"8px",style:p?.submitButton,children:y?"Saving\u2026":`Save ${J}`})]})]})}var Aa=require("@flopay/js/card-setup"),mr=require("@flopay/shared"),Ye=Wi(require("react"),1);var Zo=require("@flopay/js/card-setup"),Cr=require("@flopay/shared");var or=require("react/jsx-runtime"),uu=15,pu=2e3;function mu(e){return{userId:e.customer?.id??"",email:e.customer?.email??""}}function Ss(e){return new Promise(t=>setTimeout(t,e))}async function yu(e,t,r){if(!t.trim())throw new mr.FloPayError("FloPayPaymentMethodSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!r.trim())throw new mr.FloPayError("FloPayPaymentMethodSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let n=await e.getUnifiedCheckoutSession(t,r),a=n.data.session;if(!a||!(0,mr.isCardSetupCheckoutSession)(a))throw new mr.FloPayError("FloPayPaymentMethodSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidPaymentMethodSetupSession",param:"sessionId"});let i=(0,Cr.readSetupAdvertisement)(n);if(!(0,Cr.advertisesAnyMethod)(i)){let{skippedForMissingCurrency:l}=i,u=l.length>0?`FloPay: this setup session advertises only Stripe methods (${l.join(", ")}), and they need the session's currency, which the setup-session read did not carry.`:"FloPay: this setup session advertises no payment method.";throw new mr.FloPayError(u,"validation_error",{code:"NoAdvertisedPaymentMethods",param:"sessionId"})}return{session:a,advertisement:i}}async function fu(e,t,r,n,a){let i=t.vault??null;(0,mr.isMountableVaultBlock)(i)||(i=await e.getVaultCapture(r,n));let l=(0,mr.resolveVaultMountOptions)(i,{billingApiUrl:a,sessionId:r,nonce:n});if(!l)throw new mr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});return l}var wi=class extends Ye.default.Component{constructor(){super(...arguments);this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(r){this.props.onFailed(r,{code:"payment_method_setup_load_failed",retryable:!1})}render(){return this.state.failed?null:this.props.children}};function gc({branches:{StripeSetupMethod:e,PayPalSetupMethod:t},sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,theme:l="modern-light",containerStyle:u,appearance:p,buttonsStyles:P,loading:E=null,onReady:S,onComplete:I,onDecline:K,onCancel:_,onValidation:X,onError:T}){let[y]=(0,Ye.useState)(Zo.readSetupRedirectReturn),[v,pe]=(0,Ye.useState)(null),[b,Te]=(0,Ye.useState)(!1),[B,ae]=(0,Ye.useState)(null),[me,ue]=(0,Ye.useState)(null),[Ae,ct]=(0,Ye.useState)(null),[Ge,D]=(0,Ye.useState)(null),[bt,Xe]=(0,Ye.useState)(()=>new Set),Le=(0,Ye.useRef)(bt),fe=(0,Ye.useRef)(null);fe.current=v;let J=(0,Ye.useRef)(!1),G=(0,Ye.useRef)(!1),Fe=(0,Ye.useRef)(!1),je=(0,Ye.useRef)(!1),Je=(0,Ye.useRef)(0),re=(0,Ye.useRef)(0),Q=(0,Ye.useRef)(!1),{vaultTheme:se,surface:W,overlayTheme:We,appearance:Be,buttonsLayout:ge}=(0,Ye.useMemo)(()=>bi({theme:l,appearance:p,buttonsStyles:P}),[l,p,P]),N=(0,Ye.useMemo)(()=>(0,Ra.mergeCardSetupSurface)(W,u),[W,u]),Ce=(0,Ye.useRef)({sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,onReady:S,onComplete:I,onDecline:K,onCancel:_,onValidation:X,onError:T});Ce.current={sessionId:r,nonce:n,billingApiUrl:a,telemetry:i,onReady:S,onComplete:I,onDecline:K,onCancel:_,onValidation:X,onError:T},(0,Ye.useEffect)(()=>{Q.current=!0;let f=Je.current+1;return Je.current=f,()=>{Q.current=!1,re.current+=1,queueMicrotask(()=>{Je.current===f&&(Fe.current||je.current||(je.current=!0,(0,tt.invokeMerchantCallback)(()=>{Ce.current.onCancel?.({status:"cancelled",sessionId:r})})))})}},[r]);let dt=(0,Ye.useCallback)((f,he)=>{Fe.current=!0,J.current=!1,D({status:"success",wording:f,message:null}),(async()=>(await Ss(600),!G.current&&(G.current=!0,(0,tt.invokeMerchantCallback)(()=>{Ce.current.onComplete?.({status:"succeeded",sessionId:Ce.current.sessionId,...he?{paymentMethod:he}:{}})}),Q.current&&D(null))))()},[]),Ne=(0,Ye.useCallback)((f,he)=>{Fe.current=!0,J.current=!1,D({status:"error",wording:f,message:he.message??null}),(0,tt.invokeMerchantCallback)(()=>{Ce.current.onDecline?.({status:"declined",sessionId:Ce.current.sessionId,...he.reason?{reason:he.reason}:{},...he.message?{message:he.message}:{}})}),(async()=>(await Ss(400),Q.current&&D(null)))()},[]),at=(0,Ye.useCallback)((f,he)=>{J.current?(J.current=!1,D({status:"error",wording:f,message:he.message}),setTimeout(()=>{Q.current&&D(null)},400)):D(null),(0,tt.invokeMerchantCallback)(()=>Ce.current.onError?.(he))},[]),Me=(0,Ye.useCallback)(async f=>{let he=re.current+1;re.current=he;let ye=()=>!Q.current||he!==re.current;J.current=!0,D({status:"processing",wording:"payment_method",message:null});let gt=new Aa.PaymentAPI((0,mr.resolveBillingApiUrl)(Ce.current.billingApiUrl),{telemetry:Ce.current.telemetry});try{for(let x=0;x<uu;x+=1){if((x>0||f.waitFirst)&&await Ss(pu),ye())return;let be=await gt.getUnifiedCheckoutSession(Ce.current.sessionId,Ce.current.nonce);if(ye())return;let Gt=be.data.session?.status;if(Gt==="complete"){Te(!0),dt("payment_method");return}if(Gt==="expired")throw new mr.FloPayError("This setup session expired before the payment method was saved.","validation_error",{code:"payment_method_setup_expired"})}throw new mr.FloPayError("The payment method could not be confirmed yet. Please try again.","api_error",{code:"payment_method_setup_unverified"})}catch(x){if(ye())return;let be=x instanceof mr.FloPayError&&x.code==="payment_method_setup_unverified";at("payment_method",no(x,be?{retryable:!0}:{}))}finally{gt.destroy()}},[at,dt]);(0,Ye.useEffect)(()=>{let f=!0,he=(0,mr.resolveBillingApiUrl)(a),ye=new Aa.PaymentAPI(he,{telemetry:i});pe(null),Te(!1),ae(null),ue(null),ct(null);let gt=new Set;return Le.current=gt,Xe(gt),Fe.current=!1,je.current=!1,G.current=!1,(async()=>{try{let{session:x,advertisement:be}=await yu(ye,r,n);if(!f)return;let Gt={advertisement:be,customer:mu(x),...x.futureUse?{futureUse:x.futureUse}:{},...x.futureUseUnsupported?{futureUseUnsupported:x.futureUseUnsupported}:{}};if(y){if((0,Zo.clearSetupRedirectParams)(),x.status==="complete"){Te(!0),pe(Gt),dt("payment_method");return}y.failed?Ne("payment_method",{reason:"redirect_failed"}):Me({waitFirst:!0})}let br=be.card?await fu(ye,x,r,n,he):null;if(!f)return;pe(Gt),br&&(ue(br),ae(new Aa.PciVaultCardCapture({sessionId:r,operation:"card_setup",telemetry:i})))}catch(x){if(!f)return;let be=no(x);Fe.current=!0,ct(be),(0,tt.invokeMerchantCallback)(()=>Ce.current.onError?.(be))}})(),()=>{f=!1,ye.destroy()}},[a,n,y,Ne,dt,r,i,Me]),(0,Ye.useEffect)(()=>{if(!B)return;J.current=!1;let f=B.on("submitting",()=>{J.current=!0,D({status:"processing",wording:"card",message:null})}),he=B.on("complete",x=>{dt("card",x.paymentMethod)}),ye=B.on("decline",x=>{Ne("card",{...x.declineReason?{reason:x.declineReason}:{},...x.message?{message:x.message}:{}})}),gt=B.on("challenge_dismissed",()=>{D(null)});return()=>{f(),he(),ye(),gt()}},[B,Ne,dt]);let nt=(0,Ye.useCallback)((f,he,ye)=>{if(ye.retryable){at("payment_method",no(he,ye));return}if(Le.current.has(f))return;let gt=new Set(Le.current);gt.add(f),Le.current=gt,Xe(gt);let x=fe.current?.advertisement,be=x?(0,Cr.advertisedMethodKeys)(x).some(Gt=>!gt.has(Gt)):!1;at("payment_method",no(he,{code:ye.code,retryable:be}))},[at]),it=(0,Ye.useMemo)(()=>({onSubmitting:()=>{J.current=!0,D({status:"processing",wording:"payment_method",message:null})},onConfirmed:()=>{Me({waitFirst:!1})},onDeclined:f=>Ne("payment_method",f),onValidation:f=>{(0,tt.invokeMerchantCallback)(()=>Ce.current.onValidation?.(f))},onAbandoned:()=>{J.current=!1,D(null)}}),[Ne,Me]),ar=(0,Ye.useRef)(nt);ar.current=nt;let Dt=(0,Ye.useRef)(new Map),St=f=>{let he=Dt.current.get(f);if(he)return he;let ye=(gt,x)=>ar.current(f,gt,x);return Dt.current.set(f,ye),ye},we=(0,Ye.useCallback)(f=>{if(Le.current.has(f))return;let he=new Set(Le.current);he.add(f),Le.current=he,Xe(he);let ye=fe.current?.advertisement;ye&&(0,Cr.advertisedMethodKeys)(ye).some(x=>!he.has(x))||at("payment_method",no(new Error("FloPay: none of the advertised payment methods can be used here."),{code:"payment_method_setup_unavailable",retryable:!1}))},[at]),M=(0,Ye.useRef)(we);M.current=we;let ft=(0,Ye.useRef)(new Map),ut=f=>{let he=ft.current.get(f);if(he)return he;let ye=()=>M.current(f);return ft.current.set(f,ye),ye},z=Ge?(0,or.jsx)($r,{status:Ge.status,errorMessage:Ge.message,...(0,Cr.setupOverlayLabels)(Ge.wording),successNote:null,...We?{theme:We}:{}}):null;if(Ae)return(0,or.jsx)("div",{role:"alert",children:Ae.message});if(!v||b)return(0,or.jsxs)(or.Fragment,{children:[z,v?null:E]});let{advertisement:ke,customer:Nt,futureUse:Ue,futureUseUnsupported:Mt}=v,w=(0,mr.resolveBillingApiUrl)(a),O=i===void 0?{}:{telemetry:i},$e=ke.stripe.filter(({method:f})=>!bt.has(f)),Re=bt.has("paypal")?null:ke.paypal,h=!!(ke.card&&B&&me?.html),ce=({method:f,publishableKey:he,currency:ye})=>(0,or.jsx)("div",{"data-flopay-payment-method":f,style:{display:"contents"},children:(0,or.jsx)(wi,{onFailed:St(f),children:(0,or.jsx)(Ye.Suspense,{fallback:null,children:(0,or.jsx)(e,{method:f,category:(0,Cr.stripeMethodCategory)(f),publishableKey:he,currency:ye,...Ue?{futureUse:Ue}:{},...Mt?{futureUseUnsupported:Mt}:{},sessionId:r,nonce:n,billingApiUrl:w,...O,...Be?{appearance:Be}:{},...ge?{buttonsLayout:ge}:{},...typeof l=="string"?{themeId:l}:{},...it,onFailed:St(f),onUnavailable:ut(f)})})})},f),q=$e.filter(({method:f})=>(0,Cr.stripeMethodCategory)(f)==="wallet"),V=$e.filter(({method:f})=>(0,Cr.stripeMethodCategory)(f)!=="wallet"),De=$e.length>0||Re!==null;return(0,or.jsxs)(or.Fragment,{children:[z,De?(0,or.jsxs)("div",{"data-flopay-payment-methods":"",style:{position:"relative",display:"flex",flexDirection:"column",gap:"0.5rem"},children:[q.map(ce),Re?(0,or.jsx)("div",{"data-flopay-payment-method":"paypal",children:(0,or.jsx)(wi,{onFailed:St("paypal"),children:(0,or.jsx)(Ye.Suspense,{fallback:null,children:(0,or.jsx)(t,{clientId:Re.clientId,...Re.environment?{environment:Re.environment}:{},...ke.currency?{currency:ke.currency}:{},sessionId:r,nonce:n,billingApiUrl:w,customer:Nt,...O,...it,onFailed:St("paypal"),onUnavailable:ut("paypal")})})})}):null,V.map(ce)]}):null,h&&De?(0,or.jsx)(ci,{label:"or add a card"}):null,h&&B&&me?.html?(0,or.jsx)("div",{"data-flopay-payment-method":"card",children:(0,or.jsx)(co,{capture:B,html:me.html,messageToken:me.messageToken,expectedOrigin:me.expectedOrigin,verificationRequired:me.verificationRequired,theme:se,containerStyle:N,onReady:()=>{(0,tt.invokeMerchantCallback)(()=>Ce.current.onReady?.())},onValidation:f=>{(0,tt.invokeMerchantCallback)(()=>Ce.current.onValidation?.(f))},onError:f=>{f&&at("card",no(new Error(f),{code:"card_setup_widget_failed",retryable:!0}))}})}):null]})}var Pc=require("react/jsx-runtime"),gu={StripeSetupMethod:fc,PayPalSetupMethod:cc};function hc(e){return(0,Pc.jsx)(gc,{...e,branches:gu})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayPaymentMethodSetup,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});