@flopay/react 1.11.6 → 1.12.1
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/README.md +35 -2
- package/dist/card-setup-entry.cjs +2 -2
- package/dist/card-setup-entry.d.cts +31 -8
- package/dist/card-setup-entry.d.ts +31 -8
- package/dist/card-setup-entry.mjs +1 -1
- package/dist/chunk-4DGIEZ4S.mjs +1 -0
- package/dist/chunk-XVCGDHF2.mjs +6 -0
- package/dist/index.cjs +9 -9
- package/dist/index.mjs +6 -6
- package/dist/payment-method-setup-entry.cjs +3 -3
- package/dist/payment-method-setup-entry.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-KKA5TF5P.mjs +0 -6
- package/dist/chunk-Q5RE4G4O.mjs +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{a as Sl}from"./chunk-Q5RE4G4O.mjs";import{c as Nt,d as Sr,e as Xo,f as Ti,g as ll,h as cl,i as Qo,j as dl,k as rd,m as od}from"./chunk-KKA5TF5P.mjs";import{a as bl}from"./chunk-HSYSKQPT.mjs";import{a as ta,b as Oa,c as xi,d as Bi,e as Fi,f as fl,g as gl,h as hl,i as Pl,j as vl,k as Cl}from"./chunk-H4MQCBX4.mjs";import{a as Ba,b as Mi,c as ul,d as Ai,e as go,f as pl,g as zr,h as Fa,i as yl,j as ea,k as Da,l as ml}from"./chunk-VK67324N.mjs";import{dropThirdPartyOnlyError as Cf}from"@flopay/shared";import{PaymentAPI as Cs}from"@flopay/js";import{FloPayError as Ca,resolveBillingApiUrl as Op,resolveButtonsLayoutTheme as Np,resolveTheme as Lp}from"@flopay/shared";import{useCallback as Fr,useEffect as No,useMemo as ba,useRef as Lo,useState as zo}from"react";import{Fragment as bo,jsx as Kn,jsxs as wl}from"react/jsx-runtime";function ad(){return wl(bo,{children:[wl("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:[Kn("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),Kn("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",Kn("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:Kn("path",{d:"M9 18l6-6-6-6"})})]})}function id(){return Kn(bo,{children:"Go back"})}function sd(){return Kn(bo,{children:"Secure card checkout"})}function ho(e){return e!==void 0&&(e===""||e===null||e===!1)}function Po({content:e}){return Kn(bo,{children:e===void 0?Kn(ad,{}):e})}function vo({content:e}){return Kn(bo,{children:e===void 0?Kn(id,{}):e})}function na({content:e}){return Kn(bo,{children:e===void 0?Kn(sd,{}):e})}import{CHECKOUT_PROCESSING_TIMEOUT_MESSAGE as ld,canRecoverHostedCardForm as cd,classifyTelemetryFailure as dd,FloPayError as kn,isCardHolderNamePlaceholder as ud,isMoneySettledOutcome as pd,isMountableVaultBlock as yd,isSetupIntentClientSecret as md,isValidEmail as fd,resolveSetupFutureUsage as gd,resolveWalletModeOptions as hd}from"@flopay/shared";import{canRecoverHostedCardForm as Qr,hasServerSideCardGateway as Bl}from"@flopay/shared";import{splitFullName as aa}from"@flopay/shared";import{applyFriendlyMessageOverride as wo}from"@flopay/shared";var Pd="Checkout is temporarily unavailable. Please try again later.";function Di(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof kn&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function vd(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 kl(){return new kn(Pd,"api_error",{code:"CheckoutInitializationFailed"})}function Il(e,t,n){let o=e?.data.session,a=o?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(n&&(yd(o?.vault)||o?.gateways?.pcivault||a?.includes("card")||cd(o))||t&&e?.data.paypal?.publishableKey)}function Rl(e,t){if(t&&(!(e instanceof kn)||e.type==="authentication_error"))return Di(e);if(!(e instanceof kn&&vd(e))){if(!t&&!(e instanceof kn)&&(e instanceof TypeError||e instanceof SyntaxError))return{...dd(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof kn)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof kn))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function Co(e,t,n,o={}){let a;return(i={})=>{if(a!==void 0)return a;let s={...o,...i,email:i.email?.trim()||o.email?.trim()},c=ud(s.firstName,s.lastName);if(!fd(s.email))return Promise.reject(new kn("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let f={};for(let[C,E]of Object.entries(s)){if(c&&C.endsWith("Name")||typeof E!="string")continue;let k=E.trim();k&&(f[C]=k)}return a=e.claimCheckoutSession(t,n,{accountData:f}),a.catch(()=>{}),a}}function El(e,t){if(!t)return e;if(!e)return t;let n;return"checkoutMetadata"in t?n=t:"checkoutMetadata"in e&&(n=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...n?{checkoutMetadata:n.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function Oi(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 _l(e,t){let n=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}))],o=n.reduce((i,s)=>i+(s.overrideAmount??s.totalAmount??0),0),a=e.currency??n.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(o*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:n.map((i,s)=>({uuid:`synthetic-${i.type??"item"}-${s}`,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 Ni(e,t){return t?{...e,...t}:e}function un(e,t,n){let o=typeof t=="string"?t:t.message,a=typeof t=="string"?n?.code:n?.code??t.code,i=typeof t=="string"?n?.declineCode:n?.declineCode??t.declineCode,s=typeof t=="string"?void 0:t.sessionId;return{method:e,message:o,...a?{code:a}:{},...i?{declineCode:i}:{},...s?{sessionId:s}:{}}}function Ur(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}function Mr(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Ar(e){return e?.status==="authorized"||e?.status==="complete"}function qr(e,t){if(e.data.session)return e.data.session;let n=e.raw,o=n?.latestTransactionAttempt?.result,a=n?.status==="authorized"||o==="AUTHORIZED";return a||n?.status==="completed"||o==="SUCCESS"?{...t,status:a?"authorized":"complete"}:n?.status==="expired"?{...t,status:"expired"}:void 0}function Tl(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function Na(e){let t=Tl(e);return new kn(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function La(e){return e instanceof kn||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function So(e){return Tl(e)?new kn("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new kn("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new kn(ld,"api_error",{code:"checkout_processing_timeout"})}function ra(e,t){return e==="processing"||pd(e,t)}function Ml(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function Al(e,t){let n=e;if(md(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:i,error:s}=await n.retrieveSetupIntent(t);if(s)throw new kn(s.message??"Failed to retrieve setup intent.","api_error",{...s.code?{code:s.code}:{}});return i??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:o,error:a}=await n.retrievePaymentIntent(t);if(a)throw new kn(a.message??"Failed to retrieve payment intent.","api_error",{...a.code?{code:a.code}:{}});return o??null}var bd=["apple_pay","google_pay"];function xl(e,t="automatic",n){let o=gd(n,bd,"wallet");return{...hd(e,t),paymentMethodTypes:["card"],...o?{setupFutureUsage:o}:{}}}var Cd=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Li(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:Cd.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function oa(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}import{FloPay as Pp,PaymentAPI as ai,SESSION_CREATE_TELEMETRY as vp}from"@flopay/js";import{buildCheckoutDisplayData as bp,classifyTelemetryFailure as Dc,FloPayError as bn,isDetachedSessionEligible as Cp,isMountableVaultBlock as Sp,resolveBillingApiUrl as wp,resolveButtonsLayoutTheme as kp,resolveDirectPaypalConfig as Oc,resolveIdempotencyKey as _c,resolveCheckoutLogLayout as Ip,resolveTheme as Nc,SDK_VERSION as Lc,telemetryStatusClass as Rp}from"@flopay/shared";import ps,{useCallback as vn,useEffect as pr,useMemo as Yn,useRef as At,useState as Gt}from"react";import{createContext as Fl}from"react";var Gn=Fl({flopay:null,paypalFlopay:null,billingApiUrl:""}),cr=Fl({session:null,loading:!1,error:null});import{PaymentAPI as Ui}from"@flopay/js";import{buildPayPalProcessPaymentRequest as Od,buildPayPalSessionIntentRequest as Nd,buildPayPalTokenizedBody as Ld,classifyTelemetryFailure as zd,describePayPalProcessFailure as Ud,FloPayError as qi,friendlyPayPalFailureMessage as qd,generateIdempotencyKey as jd,isPayPalTeardownMessage as $d,isValidEmail as jl,mergePayPalPayerIdentity as Wd,needsPayPalPayerDetails as Hd,normalizeGatewayEnvironment as Vd,paypalProviderIdentityRequired as $l,resolvePayPalApprovalIdentity as Kd,resolvePayPalDeclineReason as Gd,SDK_VERSION as Yd,usesPayPalVaultedChannel as Jd}from"@flopay/shared";import{loadScript as Zd}from"@paypal/paypal-js";import{useCallback as wr,useContext as Xd,useEffect as Lt,useMemo as ca,useRef as ot,useState as Wr}from"react";import{compactBuyerIdentity as Sd,isValidEmail as wd}from"@flopay/shared";import{useCallback as Dl,useEffect as kd,useRef as Ol,useState as Ll}from"react";import{compactBuyerIdentity as dr}from"@flopay/shared";import{jsx as Nl,jsxs as ia}from"react/jsx-runtime";function ko(){let[e,t]=Ll(null),n=Ol(null),o=Ol(0),a=Dl((s,c)=>(n.current?.(null),o.current+=1,t({id:o.current,methodLabel:s,identity:c}),new Promise(f=>{n.current=f})),[]),i=Dl(s=>{let c=n.current;n.current=null,t(null),c?.(s)},[]);return kd(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:a,finish:i}}function Io({identity:e,methodLabel:t,onComplete:n,onCancel:o,submitting:a=!1,testId:i="flopay-buyer-identity-pane"}){let[s,c]=Ll(e.email?.trim()??""),f=wd(s.trim());return ia("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:[ia("div",{style:{fontWeight:700},children:["Continue with ",t]}),ia("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",Nl("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:s,onChange:C=>c(C.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),ia("div",{style:{display:"flex",gap:"0.5rem"},children:[o&&Nl("button",{type:"button",onClick:o,style:{flex:1,minHeight:42},children:"Cancel"}),ia("button",{type:"button",disabled:!f||a,onClick:()=>{n(Sd({...e,email:s.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}import{resolveBillingApiUrl as Id}from"@flopay/shared";import{useContext as za}from"react";function jr(){return za(Gn).flopay}function zi(){return za(Gn).paypalFlopay??null}function Rd(){return za(cr)}function zl(){return za(Gn).billingApiUrl||Id()}import{FLO_INSTRUMENT_ONCE_NAMES as Ed,invokeMerchantCallback as _d,projectFloInstrument as Td}from"@flopay/shared";import{useCallback as Md,useRef as Ua}from"react";import{FLO_INSTRUMENT_ONCE_NAMES as Ul}from"@flopay/shared";function Ro(e,t){let n=Ua(e);n.current=e;let o=Ua(new Set),a=Ua(t),i=Ua(t);return Xo(()=>{i.current=t,a.current!==t&&(a.current=t,o.current.clear())},[t]),Md(s=>{if(i.current!==t)return;let c=Td(s);if(c){if(Ed.has(c.name)){if(o.current.has(c.name))return;o.current.add(c.name)}_d(()=>n.current?.(c))}},[t])}import{createContext as Ad}from"react";var sa=Ad(null);function qa(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var xd=Symbol.for("@flopay/js.telemetry.bridge.v1"),Bd=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function Fd(){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 Dd(e){let t=Fd(),n=(a,i)=>a?a.bind(e):i,o=n(e.now,t.now);return{error:n(e.error,t.error),log:n(e.log,t.log),performance:n(e.performance,t.performance),terminal:n(e.terminal,t.terminal),now:o,elapsed:e.elapsed?e.elapsed.bind(e):a=>Math.max(0,o()-a),setCheckoutContext:n(e.setCheckoutContext,t.setCheckoutContext),beginCheckout:n(e.beginCheckout,t.beginCheckout),disable:n(e.disable,t.disable),subscribe:n(e.subscribe,t.subscribe),flush:n(e.flush,t.flush),destroy:n(e.destroy,t.destroy)}}function ja(e){let t=globalThis[Bd];return Dd(t?.(e)??{})}function pn(e){if(e)return e[xd]}import{useCallback as $r,useEffect as ql,useRef as eo}from"react";function la(e,t){let n=eo(0),o=eo(null),a=eo(null),i=eo(e),s=eo(t?.onHandoffObserved),c=eo(t?.defersMissingTerminal),f=eo(t?.onMissingTerminalDeferred);ql(()=>{i.current=e,s.current=t?.onHandoffObserved,c.current=t?.defersMissingTerminal,f.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let C=$r((v=a.current)=>{v?.timer&&(clearTimeout(v.timer),v.timer=null)},[]),E=$r(v=>{C();let P=n.current+1;return n.current=P,o.current=null,a.current={generation:P,method:v,timer:null,yieldedControl:!1},P},[C]),k=$r(v=>{let P=a.current;return v!==void 0&&P?.generation!==v?!1:(C(P),a.current=null,(v===void 0||o.current===v)&&(o.current=null),!0)},[C]),z=$r(v=>{let P=a.current,he=v??P?.generation??n.current;(v===void 0||P?.generation===v)&&(C(P),a.current=null),o.current=he},[C]),ne=$r(v=>o.current===(v??n.current),[]),O=$r(v=>a.current?.generation===v&&o.current!==v,[]),ve=$r(()=>{let v=a.current;v&&(C(v),!v.yieldedControl&&(v.yieldedControl=!0,s.current?.(v.method)))},[C]),V=$r(()=>{let v=a.current;!v?.yieldedControl||document.visibilityState!=="visible"||(C(v),v.timer=setTimeout(()=>{if(v.timer=null,a.current?.generation===v.generation){if(c.current?.(v.method)){f.current?.(v.method,v.generation);return}a.current=null,o.current=v.generation,i.current(v.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},ul))},[C]);return ql(()=>{let v=()=>{document.visibilityState==="visible"?V():ve()};return document.addEventListener("visibilitychange",v),window.addEventListener("blur",ve),window.addEventListener("focus",V),()=>{document.removeEventListener("visibilitychange",v),window.removeEventListener("blur",ve),window.removeEventListener("focus",V),C()}},[C,ve,V]),{startAttempt:E,finishAttempt:k,invalidateAttempt:z,isAttemptInvalidated:ne,isAttemptCurrent:O,generationRef:n}}import{jsx as to,jsxs as ji}from"react/jsx-runtime";var $a=45,Qd=1e3,eu=11e3,tu={width:"100%",minHeight:$a,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"},nu={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 ru(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:nu[e.kind]??null}}function Wl(e,t){return e==="watchdog_expired"?"paypal_render_timeout":pl(t)?"paypal_init_timeout":"paypal_init_failure"}function ou(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function Hl({sessionId:e,nonce:t,billingApiUrl:n,email:o,billingName:a,onBuyerIdentityReady:i,clientId:s,environment:c,currency:f,isSubscription:C,providerObjectType:E,approvalPresentation:k,onTokenizedBody:z,onComplete:ne,onErrorChange:O,onDecline:ve,onTechnicalFailure:V,isProcessing:v=!1,onLoadStateChange:P,onInitializationStateChange:he,allowAutomaticRetry:N=!0,onButtonClick:Ie,runBeforeButtonClick:Y,session:Fe,existingOrderId:lt,telemetry:ze,telemetryContext:ct,onInstrument:zt,debug:pe=!1}){let Te=jr(),Pt=Ro(zt,e),Re=ca(()=>{if(Te)return null;let u=ja({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:Yd,enabled:ze!==!1});return u.setCheckoutContext(ct??{}),u.beginCheckout(ct??{}),u},[n,Te,ze,ct?.checkoutMode,ct?.layout]),He=ca(()=>pn(Te),[Te]);Lt(()=>()=>{Re&&Re.flush().catch(()=>{}).finally(()=>Re.destroy())},[Re]);let ke=ca(()=>({error:u=>{He?He.error(u):Re?.error(u),Pt({class:"technical_error",errorCode:u.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":u.errorCode,requestCategory:u.requestCategory,provider:u.provider})},log:u=>{He?He.log(u):Re?.log(u),Pt({class:"lifecycle",name:u.name,provider:u.provider})},performance:u=>{He?He.performance(u):Re?.performance(u)},terminal:u=>{He?He.terminal(u):Re?.terminal(u)},startTiming:()=>He?.now()??Re?.now()??0,elapsed:u=>He?.elapsed(u)??Math.max(0,(Re?.now()??u)-u)}),[Pt,He,Re]),Q=ot(null),je=ot(0),$e=ot(null),pt=ot(null),be=ot(null),ye=Xd(sa),re=ot(null);re.current||(re.current=qa());let M=ye??re.current,Ce=ot(null),Ue=ot(!1),[Me,U]=Wr(!1),[vt,qe]=Wr(!1),[Ee,Je]=Wr(0),Ae=ot(0),[Qe,De]=Wr(!1),bt=ot(!1),Yt=ot(!1),[yt,Et]=Wr(!1),[I,ee]=Wr(!1),{request:Oe,collect:F,finish:Se}=ko(),mt=ot({sessionId:e,required:$l(o,Fe)});mt.current.sessionId!==e&&(mt.current={sessionId:e,required:$l(o,Fe)});let Ne=mt.current.required,wt=ca(()=>n.replace(/\/+$/,""),[n]),d=Fe?.gateways?.paypal?.providerObjectType??E,m=d??(C?"subscription":"order"),[A]=Wr(ea),T=Fe?.gateways?.paypal?.approvalPresentation??k,J=Da(A,T==="app_switch"?"app_switch":void 0,m),ft=Jd(d),me=ca(()=>JSON.stringify([wt,s,f,c??"",m,ft,J,e,lt??""]),[wt,s,f,c,lt,m,ft,J,e]),We=ot(me),H=We.current!==me,Ut=ot(pe),Ct=ot(null),[_t,at]=Wr([]),oe=wr(u=>{Ut.current&&at(xe=>[...xe,`${new Date().toISOString().slice(11,23)} ${u}`])},[]);Lt(()=>{Ut.current=pe,pe&&oe("debug:enabled"),Ct.current?.setEnabled(pe)},[oe,pe]);let In=ot(z),Bn=ot(ne),yn=ot(O),qt=ot(ve),Fn=ot(V),Dn=ot(Ie),hn=ot(P),Tt=ot(he),Ve=ot(i),Le=ot(Y),Rn=ot(Fe),kt=ot(o),On=ot(a),mn=ot(t),jt=ot(null),Qt=ot(new Map),Jn=ot(new Map),$n=ot(!1);Lt(()=>($n.current=!0,()=>{$n.current=!1}),[]),Lt(()=>{In.current=z},[z]),Lt(()=>{Ve.current=i},[i]),Lt(()=>{Bn.current=ne},[ne]),Lt(()=>{yn.current=O},[O]),Lt(()=>{qt.current=ve},[ve]),Lt(()=>{Fn.current=V},[V]),Lt(()=>{Dn.current=Ie},[Ie]),Lt(()=>{hn.current=P},[P]),Lt(()=>{Tt.current=he},[he]),Lt(()=>{Le.current=Y},[Y]),Lt(()=>{Rn.current=Fe},[Fe]),Lt(()=>{kt.current=o},[o]),Lt(()=>{On.current=a},[a]),Lt(()=>{mn.current=t},[t]),Lt(()=>{Ae.current=Ee},[Ee]),Lt(()=>{Qe&&Ce.current?.focus()},[Qe,Ee]);let en=wr(()=>{window.setTimeout(()=>{Ce.current?.focus()},0)},[]),xt=wr(()=>{U(!1),Je(u=>u+1)},[]),Cn=wr(()=>{De(!1),(Q.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??Q.current)?.focus?.()},[]);Lt(()=>{!Me||!Ue.current||(Ue.current=!1,Cn())},[Cn,Me,Ee]);let ln=wr((u,xe)=>{let L=xe?.popupBlocked??zr(u);L&&M.markBlocked();let Pn=Ba("PayPal",L,A.inAppBrowser),Nn=Fn.current;if(Nn){let Jt=L&&A.inAppBrowser?new qi(Pn,"api_error",{code:xe?.code??"paypal_popup_blocked"}):u;Nn("paypal",Jt,xe);return}yn.current?.(Pn)},[M,A.inAppBrowser]),Ft=wr(u=>{let xe=$e.current,L=pt.current;xe===null||!L||(ke.log({...L,popupCapability:M.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:u}),ke.performance({...L,popupCapability:M.current(),stage:"overlay_return",durationMs:ke.elapsed(xe),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:u}),$e.current=null)},[M,ke]),fn=wr((u,xe,L)=>{let Pn=pt.current;Ft("overlay_timeout"),Pn&&ke.error({...Pn,popupCapability:M.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),ln(xe,{...L,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:J,terminalReason:"overlay_timeout"}),De(!0),xt(),en()},[Ft,en,ln,M,J,xt,ke]),Dt=wr(()=>{M.markAvailable();let u=pt.current;u&&(be.current=u.attempt,ke.log({...u,popupCapability:M.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[M,ke]),{finishAttempt:on,generationRef:Bt,invalidateAttempt:ae,isAttemptCurrent:Zn,isAttemptInvalidated:Xn,startAttempt:Qn}=la(fn,{onHandoffObserved:Dt}),tn=wr(()=>(De(!1),Qn("paypal")),[Qn]),En=wr(u=>{ae(u?.generation),u?.showRetry&&De(!0),u?.remount&&xt(),u?.focus!==!1&&en()},[en,ae,xt]),Sn=u=>{let xe=jt.current;return xe&&Jn.current.set(u,xe),u};Lt(()=>{We.current!==me&&(We.current=me,bt.current=!1,Yt.current=!1,U(!1),qe(!1),Et(!1),Tt.current?.("loading"))},[me]),Lt(()=>{Nt(()=>hn.current?.(Me&&!yt))},[Me,yt]);let ce=Vd(c);Lt(()=>{let u={attempt:Bt.current+1,inAppBrowser:A.inAppBrowser,appFamily:A.appFamily,popupCapability:M.current(),presentationMode:J},xe=()=>({...pt.current??u,popupCapability:M.current()}),L={error:l=>ke.error({...l,...xe()}),log:l=>ke.log({...l,...xe()}),performance:l=>ke.performance({...l,...xe()}),terminal:l=>ke.terminal({...l,...xe()}),startTiming:ke.startTiming,elapsed:ke.elapsed},Pn=s?`${s.slice(0,6)}\u2026(len ${s.length})`:"(empty)",Nn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(oe(`mount clientId=${Pn} env=${c??"(unset)"}\u2192${ce??"live"} ccy=${f} sub=${C}`),oe(`ua=${Nn.slice(0,80)}${Nn.length>80?"\u2026":""}`),!s){oe("FAIL: clientId empty \u2014 gateway misconfigured"),Et(!0),L.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(!Q.current){oe("FAIL: containerRef not attached");return}je.current=L.startTiming(),L.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Jt=!1,_n=!1,nt=()=>Jt||_n,yr=ft?m:void 0,Dr,It=!1,Ln=()=>{Dr=jd(),Dr||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),It=!0},er=null,tr=!1,$t=null,mr=!1,fr=()=>{!$t||mr||(mr=!0,$t.close().catch(()=>{}))},Tn=!1,gr=!1,Wn=Q.current,hr=null,Er=null,zn=[],nr=null,rr=!1,Mt=!1,Un=null,wn=l=>{if(!l||typeof l.getBoundingClientRect!="function")return"(no rect)";let y=l.getBoundingClientRect();return`${Math.round(y.width)}\xD7${Math.round(y.height)}`},or=l=>{if(!l)return"(empty)";try{let y=new URL(l,typeof window>"u"?"https://localhost":window.location.href),h=y.pathname.toLowerCase();return h.includes("checkcaptcha")||h.includes("captcha")?`CAPTCHA(${y.host}${h})`:h.includes("risk")||h.includes("challenge")?`RISK(${y.host}${h})`:h.includes("smart/buttons")?`smart-buttons(${y.host})`:`${y.host}${h}`.slice(0,100)}catch{return l.slice(0,80)}},ar=l=>{let y=l.getAttribute("src"),h=l.getAttribute("srcdoc"),$=l.getAttribute("name"),le=l.getAttribute("sandbox"),Pe=[];return y&&Pe.push(`src=${or(y)}`),h&&Pe.push(`srcdoc[${h.length}ch]`),!y&&!h&&Pe.push("src=(empty) srcdoc=(empty)"),$&&Pe.push(`name=${$.slice(0,40)}`),le!==null&&Pe.push(`sandbox="${le.slice(0,40)}"`),Pe.join(" ")},tt=l=>{if(!(l instanceof HTMLIFrameElement))return"";try{let y=l.contentDocument;if(!y)return"cd=null";let h=y.body?.children.length??0,$=y.body?.innerHTML.length??0,le=y.head?.innerHTML.length??0;return`cd=same-origin readyState=${y.readyState} body[${h}children,${$}ch] head[${le}ch]`}catch(y){return`cd=cross-origin(${y.message.slice(0,30)})`}},nn=[],cn=l=>{if(nt())return;let y=l.message??String(l.error??"(no message)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(oe(`window:error ${y.slice(0,140)}`),nn.push(y))},Mn=l=>{if(nt())return;let y=l.reason instanceof Error?l.reason.message:String(l.reason??"(no reason)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(oe(`window:rejection ${y.slice(0,140)}`),nn.push(y))},Or={value:0},Pr=()=>{hr?.disconnect(),hr=null,Er?.disconnect(),Er=null;for(let l of zn.splice(0))clearTimeout(l);Mt=!1,rr&&typeof window<"u"&&(window.removeEventListener("error",cn),window.removeEventListener("unhandledrejection",Mn)),rr=!1},_r=()=>{if(!(rr||nt()||Tn)){if(rr=!0,nn.length=0,Or.value=0,typeof window<"u"&&(window.addEventListener("error",cn),window.addEventListener("unhandledrejection",Mn)),typeof PerformanceObserver<"u")try{Er=new PerformanceObserver(l=>{if(!nt())for(let y of l.getEntries()){if(!y.name.toLowerCase().includes("paypal"))continue;Or.value+=1;let h=Math.round(y.duration);oe(`net ${h}ms ${y.name.slice(0,90)}`)}}),Er.observe({type:"resource",buffered:!0})}catch{}Un?.()}},Hn=()=>{nr&&(clearTimeout(nr),nr=null)},rn=()=>{Pr(),Hn()},Nr={setEnabled:l=>{l?_r():Pr()}};Ct.current=Nr,Ut.current&&_r();let an=$d,w=l=>{if(nt()||an(l))return;let y=wo(l)??l;Nt(()=>yn.current?.(y))},b=(l,y)=>{if(Jt||tr)return;tr=!0,_n=!0,rn(),fr();let h=ru({kind:l,generationActive:!0,automaticRetryAllowed:N,automaticRetryUsed:bt.current});if(h.action==="retry"){bt.current=!0,U(!1),ee(!1),qe(!0),Tt.current?.("retrying"),er=setTimeout(()=>{Jt||Je($=>$+1)},Qd);return}if(U(!1),ee(!1),qe(!1),Et(!0),h.action!=="ignore"){if(Tt.current?.("exhausted"),h.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",y);return}if(h.report){let $=Mi({code:Wl(l,y),message:y},{inAppBrowser:A.inAppBrowser,handoffObserved:!1});$.popupBlocked&&M.markBlocked(),L.error({errorCode:$.popupBlocked?$.errorCode:h.report.errorCode,stage:h.report.stage,operationOutcome:h.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:$.terminalReason})}Yt.current||(Yt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Wl(l,y)))}};Et(!1);let j=async(l,y=jt.current)=>{if(nt())return;let h=y?.sessionId??e;if(In.current){await In.current(l,{sessionId:h,accountPatch:y?.accountPatch,nonce:y?.nonce});return}let $=L.startTiming();L.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let le=()=>{L.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"processing",durationMs:L.elapsed($),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let Pe=Od({body:l,sessionId:h,nonce:y?.nonce??mn.current,accountPatch:y?.accountPatch,session:Rn.current,email:kt.current}),te=await new Ui(wt,{telemetry:!1}).processPayment(Pe.userId,Pe.params);if(te.ok){if(_n||Jt&&$n.current)return;le(),L.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),Nt(()=>Bn.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(nt())return;let we=await te.json().catch(()=>null),Be=Ud(we),rt=Be.message;le(),te.status===400&&(typeof we?.declineCode=="string"||!Array.isArray(we?.fields))?L.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):te.status===400||te.status===422?L.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):L.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:ou(te.status),failureCategory:te.status>=500?"server_error":void 0}),w(rt),Nt(()=>qt.current?.(un("paypal",rt,{code:Be.code,declineCode:Be.declineCode})));return}catch(Pe){if(nt())return;le(),L.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let Ht=qd(Pe instanceof Error?Pe.message:void 0);w(Ht),Nt(()=>qt.current?.(un("paypal",Ht)));return}},K=()=>new qi("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),it=l=>nt()?Promise.reject(K()):Promise.resolve(l),Wt=async l=>{if(nt())throw K();It||Ln();let y=jt.current,h=y?.sessionId??e,$=y?.nonce??mn.current;L.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let le;try{le=await new Ui(wt,{telemetry:!1}).createSessionIntent(h,$??"",Nd(yr),{idempotencyKey:Dr})}catch(Pe){throw L.error({...zd(Pe,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),Pe}if(nt())throw K();if(le.provider!=="paypal"||le.providerObjectType!==m)throw new Error(l);return L.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),le.providerObjectId},de=(l,y)=>{let h=y?.nonce??mn.current;if(!h)return;let $=y?.sessionId??e,le=Gd(l);new Ui(wt,{telemetry:!1}).reportSessionIntentDecline($,h,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:le}).catch(()=>{})},x=Ee;oe("loadScript:scheduled (deferred 1 tick)");let B=null,R=setTimeout(()=>{if(Jt){oe("loadScript:skipped (cancelled before defer ran)");return}oe("loadScript:start");let l=ce==="live"?"production":ce,y={};m==="subscription"?y={intent:"subscription",vault:!0}:m==="order"&&(y={intent:"capture"}),B=Zd({clientId:s,currency:f,...y,...l?{environment:l}:{},...l==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let h=!1;B.then($=>{if(h=!0,oe(`loadScript:resolved inactive=${nt()} ns=${!!$} buttons=${!!$?.Buttons}`),nt())return;if(!$?.Buttons){oe("FAIL: namespace missing Buttons factory"),b("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}L.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"provider_ready",durationMs:L.elapsed(je.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),L.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let le=async(Z,S)=>{if(nt()||Ae.current!==x)return;let q=Z.vaultSetupToken??Z.subscriptionID??Z.orderID??"",Ke=q?Jn.current.get(q):Qt.current.get(x);if(!(!Ke||!Zn(Ke.generation))&&on(Ke.generation)){Jn.current.delete(q),Qt.current.delete(Ke.surfaceKey),Ft("approved");try{if(ee(!0),Nt(()=>yn.current?.(null)),!q)throw new qi("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let ge=Kd({accountPatch:Ke.accountPatch,email:kt.current,billingName:On.current,session:Rn.current});if(Hd(ge))try{ge=Wd(ge,await S?.order?.get?.())}catch{}if((Ve.current||Ne)&&!jl(ge.email)){let dt=await F("PayPal",ge);if(!dt)return;ge=dt}jl(ge.email)&&(Ke.accountPatch=dr({...Ke.accountPatch,...ge}),await Ve.current?.(ge));let _e=Ld(q,yr);await j(_e,Ke)}catch(ge){w(ge instanceof Error?ge.message:"PayPal capture failed.")}finally{nt()||ee(!1)}}},Pe=Z=>{let S=lt?()=>it(lt):()=>Wt(Z);return async()=>Sn(await S())},Ht=$.Buttons({style:{layout:"horizontal",height:$a,tagline:!1},...J==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(Z,S)=>{if(nt()){await S.reject();return}Ln();let q=Le.current,Ke={};if(q)try{let dt=await q("paypal");if(nt()){await S.reject();return}if(!dt.proceed){jt.current=null,Qt.current.delete(x),await S.reject();return}Ke={sessionId:dt.sessionId,accountPatch:dt.accountPatch,nonce:dt.nonce}}catch(dt){oe(`onClick:runBeforeButtonClick rejected msg=${(dt instanceof Error?dt.message:String(dt)).slice(0,120)}`),jt.current=null,Qt.current.delete(x),await S.reject();return}Nt(()=>Dn.current?.("paypal"));let ge=tn(),_e={generation:ge,surfaceKey:x,...Ke};jt.current=_e,Qt.current.set(x,_e),pt.current={...u,attempt:ge},await S.resolve(),L.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),L.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),$e.current=L.startTiming()},createOrder:m==="order"?Pe("Failed to create PayPal order."):void 0,createSubscription:m==="subscription"?Pe("Failed to create PayPal subscription."):void 0,createVaultSetupToken:m==="setup_token"?async()=>Sn(await Wt("Failed to create PayPal setup token.")):void 0,onApprove:le,onCancel:()=>{if(nt())return;let Z=Qt.current.get(x)??jt.current;Z&&Qt.current.delete(Z.surfaceKey),jt.current=null,Ft("cancelled"),L.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),Ue.current=!0,En({generation:Z?.generation,remount:!0,focus:!1})},onError:Z=>{if(nt()||Ae.current!==x)return;let S=Z instanceof Error?Z.message:"PayPal failed to render.";if(oe(`onError rendered=${Tn} msg=${S.slice(0,120)}`),Tn){let q=Qt.current.get(x)??jt.current;if(q&&!Zn(q.generation)||!q&&Xn())return;if(an(S)){on(q?.generation);return}let{errorCode:Ke,popupBlocked:ge,providerDeclined:_e,terminalReason:dt}=Mi(Z,{inAppBrowser:A.inAppBrowser,handoffObserved:q!=null&&be.current===q.generation});if(ge&&M.markBlocked(),Ft(dt),_e){L.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:dt}),de(Z,q),Nt(()=>qt.current?.(un("paypal",S))),q&&Qt.current.delete(q.surfaceKey),jt.current=null,on(q?.generation);return}L.error({errorCode:Ke,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:dt}),q&&Qt.current.delete(q.surfaceKey),jt.current=null,En({generation:q?.generation,remount:!0,showRetry:!0,focus:!0}),ln(Z,{code:"paypal_runtime_failed",popupBlocked:ge,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:J,terminalReason:dt});return}b(an(S)?"teardown":"pre_ready_callback",S)}}),te=Ht.isEligible();if(oe(`isEligible=${te}`),L.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!te){U(!1),b("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}gr=!0,$t=Ht,Un=()=>{if(!rr||Mt||nt()||Tn)return;Mt=!0,oe(`container:dims ${wn(Wn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(hr=new MutationObserver(S=>{if(!nt()){for(let q of S)if(q.type==="childList")q.addedNodes.forEach(Ke=>{if(!(Ke instanceof Element))return;let ge=Ke.tagName.toLowerCase(),_e=(Ke.getAttribute("title")??"").slice(0,40),dt=ge==="iframe"?` ${ar(Ke)}`:"";oe(`child+ ${ge}${_e?` title="${_e}"`:""}${dt} dims=${wn(Ke)}`)});else if(q.type==="attributes"&&q.target instanceof Element){let Ke=q.target;if(Ke.tagName.toLowerCase()!=="iframe")continue;let ge=q.attributeName;(ge==="src"||ge==="srcdoc")&&oe(`attr~ iframe ${ge}=${ge==="srcdoc"?`[${(Ke.getAttribute("srcdoc")??"").length}ch]`:or(Ke.getAttribute("src"))} dims=${wn(Ke)}`)}}}),hr.observe(Wn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let Z=S=>{if(nt()||Tn)return;let q=Wn.querySelectorAll("iframe"),Ke=typeof document<"u"&&"hasStorageAccess"in document;oe(`watchdog:${S} container=${wn(Wn)} children=${Wn.childElementCount} iframes=${q.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${Ke} paypalNetRequests=${Or.value}`),q.forEach((ge,_e)=>{let dt=(ge.getAttribute("title")??"").slice(0,40);oe(` iframe[${_e}] ${wn(ge)}${dt?` title="${dt}"`:""} ${ar(ge)}`);let Ze=tt(ge);Ze&&oe(` ${Ze}`)}),nn.length===0&&oe(" (no PayPal/zoid window errors captured)")};zn.push(setTimeout(()=>Z("3s"),3e3)),zn.push(setTimeout(()=>Z("8s"),8e3)),zn.push(setTimeout(()=>Z("15s"),15e3))},Un(),oe("render:start");let Be=L.startTiming();nr=setTimeout(()=>{nt()||Tn||(oe("watchdog:11s retryable render timeout"),b("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},eu);let rt=Ht.render(Wn);(async()=>{try{if(await rt,oe(`render:resolved inactive=${nt()}`),rn(),nt()){fr();return}Tn=!0,U(!0),qe(!1),Tt.current?.("ready"),L.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"checkout_render",durationMs:L.elapsed(Be),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(Z){let S=Z instanceof Error?Z.message:"PayPal failed to render.";oe(`render:rejected msg=${S.slice(0,120)}`),rn(),b(an(S)?"teardown":"render_rejected",S)}})()}).catch($=>{let le=$ instanceof Error?$.message:"PayPal operation failed.";oe(`provider:failed msg=${le.slice(0,120)}`);let Pe="script_rejected";h&&an(le)?Pe="teardown":h&&gr&&(Pe="render_rejected"),b(Pe,le)})},0);return()=>{Jt=!0,clearTimeout(R),er&&clearTimeout(er),rn(),Ct.current===Nr&&(Ct.current=null),fr(),$e.current=null,pt.current=null}},[N,wt,s,f,c,m,J,ft,e,lt,Ee,ke,F,Ne,oe,Ft]);let et=pe?ji("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:yt?"#fef2f2":"#f3f4f6",border:`1px solid ${yt?"#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=${Me} failed=${yt})`,_t.length===0?`
|
|
1
|
+
import{a as vl}from"./chunk-4DGIEZ4S.mjs";import{c as Nt,d as Sr,e as Xo,f as _i,g as sl,h as td,j as nd}from"./chunk-XVCGDHF2.mjs";import{a as hl}from"./chunk-HSYSKQPT.mjs";import{a as ea,b as Da,c as Ai,d as xi,e as Bi,f as pl,g as yl,h as ml,i as fl,j as gl,k as Pl}from"./chunk-H4MQCBX4.mjs";import{a as xa,b as Ti,c as ll,d as Mi,e as go,f as cl,g as zr,h as Ba,i as dl,j as Qo,k as Fa,l as ul}from"./chunk-VK67324N.mjs";import{dropThirdPartyOnlyError as Cf}from"@flopay/shared";import{PaymentAPI as bs}from"@flopay/js";import{FloPayError as ba,resolveBillingApiUrl as Np,resolveButtonsLayoutTheme as Lp,resolveTheme as zp}from"@flopay/shared";import{useCallback as Fr,useEffect as No,useMemo as va,useRef as Lo,useState as zo}from"react";import{Fragment as bo,jsx as Kn,jsxs as bl}from"react/jsx-runtime";function rd(){return bl(bo,{children:[bl("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:[Kn("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),Kn("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",Kn("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:Kn("path",{d:"M9 18l6-6-6-6"})})]})}function od(){return Kn(bo,{children:"Go back"})}function ad(){return Kn(bo,{children:"Secure card checkout"})}function ho(e){return e!==void 0&&(e===""||e===null||e===!1)}function Po({content:e}){return Kn(bo,{children:e===void 0?Kn(rd,{}):e})}function vo({content:e}){return Kn(bo,{children:e===void 0?Kn(od,{}):e})}function ta({content:e}){return Kn(bo,{children:e===void 0?Kn(ad,{}):e})}import{CHECKOUT_PROCESSING_TIMEOUT_MESSAGE as id,canRecoverHostedCardForm as sd,classifyTelemetryFailure as ld,FloPayError as kn,isCardHolderNamePlaceholder as cd,isMoneySettledOutcome as dd,isMountableVaultBlock as ud,isSetupIntentClientSecret as pd,isValidEmail as yd,resolveSetupFutureUsage as md,resolveWalletModeOptions as fd}from"@flopay/shared";import{canRecoverHostedCardForm as Qr,hasServerSideCardGateway as Ml}from"@flopay/shared";import{splitFullName as oa}from"@flopay/shared";import{applyFriendlyMessageOverride as wo}from"@flopay/shared";var gd="Checkout is temporarily unavailable. Please try again later.";function Fi(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof kn&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function hd(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 kn(gd,"api_error",{code:"CheckoutInitializationFailed"})}function Sl(e,t,n){let o=e?.data.session,a=o?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(n&&(ud(o?.vault)||o?.gateways?.pcivault||a?.includes("card")||sd(o))||t&&e?.data.paypal?.publishableKey)}function wl(e,t){if(t&&(!(e instanceof kn)||e.type==="authentication_error"))return Fi(e);if(!(e instanceof kn&&hd(e))){if(!t&&!(e instanceof kn)&&(e instanceof TypeError||e instanceof SyntaxError))return{...ld(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof kn)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof kn))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function Co(e,t,n,o={}){let a;return(i={})=>{if(a!==void 0)return a;let s={...o,...i,email:i.email?.trim()||o.email?.trim()},c=cd(s.firstName,s.lastName);if(!yd(s.email))return Promise.reject(new kn("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let f={};for(let[C,E]of Object.entries(s)){if(c&&C.endsWith("Name")||typeof E!="string")continue;let k=E.trim();k&&(f[C]=k)}return a=e.claimCheckoutSession(t,n,{accountData:f}),a.catch(()=>{}),a}}function kl(e,t){if(!t)return e;if(!e)return t;let n;return"checkoutMetadata"in t?n=t:"checkoutMetadata"in e&&(n=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...n?{checkoutMetadata:n.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function Di(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 Il(e,t){let n=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}))],o=n.reduce((i,s)=>i+(s.overrideAmount??s.totalAmount??0),0),a=e.currency??n.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(o*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:n.map((i,s)=>({uuid:`synthetic-${i.type??"item"}-${s}`,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 Oi(e,t){return t?{...e,...t}:e}function un(e,t,n){let o=typeof t=="string"?t:t.message,a=typeof t=="string"?n?.code:n?.code??t.code,i=typeof t=="string"?n?.declineCode:n?.declineCode??t.declineCode,s=typeof t=="string"?void 0:t.sessionId;return{method:e,message:o,...a?{code:a}:{},...i?{declineCode:i}:{},...s?{sessionId:s}:{}}}function Ur(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}function Mr(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Ar(e){return e?.status==="authorized"||e?.status==="complete"}function qr(e,t){if(e.data.session)return e.data.session;let n=e.raw,o=n?.latestTransactionAttempt?.result,a=n?.status==="authorized"||o==="AUTHORIZED";return a||n?.status==="completed"||o==="SUCCESS"?{...t,status:a?"authorized":"complete"}:n?.status==="expired"?{...t,status:"expired"}:void 0}function Rl(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function Oa(e){let t=Rl(e);return new kn(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function Na(e){return e instanceof kn||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function So(e){return Rl(e)?new kn("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new kn("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new kn(id,"api_error",{code:"checkout_processing_timeout"})}function na(e,t){return e==="processing"||dd(e,t)}function El(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function _l(e,t){let n=e;if(pd(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:i,error:s}=await n.retrieveSetupIntent(t);if(s)throw new kn(s.message??"Failed to retrieve setup intent.","api_error",{...s.code?{code:s.code}:{}});return i??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:o,error:a}=await n.retrievePaymentIntent(t);if(a)throw new kn(a.message??"Failed to retrieve payment intent.","api_error",{...a.code?{code:a.code}:{}});return o??null}var Pd=["apple_pay","google_pay"];function Tl(e,t="automatic",n){let o=md(n,Pd,"wallet");return{...fd(e,t),paymentMethodTypes:["card"],...o?{setupFutureUsage:o}:{}}}var vd=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Ni(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:vd.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function ra(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}import{FloPay as vp,PaymentAPI as oi,SESSION_CREATE_TELEMETRY as bp}from"@flopay/js";import{buildCheckoutDisplayData as Cp,classifyTelemetryFailure as Bc,FloPayError as bn,isDetachedSessionEligible as Sp,isMountableVaultBlock as wp,resolveBillingApiUrl as kp,resolveButtonsLayoutTheme as Ip,resolveDirectPaypalConfig as Fc,resolveIdempotencyKey as Rc,resolveCheckoutLogLayout as Rp,resolveTheme as Dc,SDK_VERSION as Oc,telemetryStatusClass as Ep}from"@flopay/shared";import us,{useCallback as vn,useEffect as pr,useMemo as Yn,useRef as At,useState as Gt}from"react";import{createContext as Al}from"react";var Gn=Al({flopay:null,paypalFlopay:null,billingApiUrl:""}),cr=Al({session:null,loading:!1,error:null});import{PaymentAPI as zi}from"@flopay/js";import{buildPayPalProcessPaymentRequest as Fd,buildPayPalSessionIntentRequest as Dd,buildPayPalTokenizedBody as Od,classifyTelemetryFailure as Nd,describePayPalProcessFailure as Ld,FloPayError as Ui,friendlyPayPalFailureMessage as zd,generateIdempotencyKey as Ud,isPayPalTeardownMessage as qd,isValidEmail as zl,mergePayPalPayerIdentity as jd,needsPayPalPayerDetails as $d,normalizeGatewayEnvironment as Wd,paypalProviderIdentityRequired as Ul,resolvePayPalApprovalIdentity as Hd,resolvePayPalDeclineReason as Vd,SDK_VERSION as Kd,usesPayPalVaultedChannel as Gd}from"@flopay/shared";import{loadScript as Yd}from"@paypal/paypal-js";import{useCallback as wr,useContext as Jd,useEffect as Lt,useMemo as la,useRef as ot,useState as Wr}from"react";import{compactBuyerIdentity as bd,isValidEmail as Cd}from"@flopay/shared";import{useCallback as xl,useEffect as Sd,useRef as Bl,useState as Dl}from"react";import{compactBuyerIdentity as dr}from"@flopay/shared";import{jsx as Fl,jsxs as aa}from"react/jsx-runtime";function ko(){let[e,t]=Dl(null),n=Bl(null),o=Bl(0),a=xl((s,c)=>(n.current?.(null),o.current+=1,t({id:o.current,methodLabel:s,identity:c}),new Promise(f=>{n.current=f})),[]),i=xl(s=>{let c=n.current;n.current=null,t(null),c?.(s)},[]);return Sd(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:a,finish:i}}function Io({identity:e,methodLabel:t,onComplete:n,onCancel:o,submitting:a=!1,testId:i="flopay-buyer-identity-pane"}){let[s,c]=Dl(e.email?.trim()??""),f=Cd(s.trim());return aa("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:[aa("div",{style:{fontWeight:700},children:["Continue with ",t]}),aa("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",Fl("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:s,onChange:C=>c(C.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),aa("div",{style:{display:"flex",gap:"0.5rem"},children:[o&&Fl("button",{type:"button",onClick:o,style:{flex:1,minHeight:42},children:"Cancel"}),aa("button",{type:"button",disabled:!f||a,onClick:()=>{n(bd({...e,email:s.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}import{resolveBillingApiUrl as wd}from"@flopay/shared";import{useContext as La}from"react";function jr(){return La(Gn).flopay}function Li(){return La(Gn).paypalFlopay??null}function kd(){return La(cr)}function Ol(){return La(Gn).billingApiUrl||wd()}import{FLO_INSTRUMENT_ONCE_NAMES as Id,invokeMerchantCallback as Rd,projectFloInstrument as Ed}from"@flopay/shared";import{useCallback as _d,useRef as za}from"react";import{FLO_INSTRUMENT_ONCE_NAMES as Nl}from"@flopay/shared";function Ro(e,t){let n=za(e);n.current=e;let o=za(new Set),a=za(t),i=za(t);return Xo(()=>{i.current=t,a.current!==t&&(a.current=t,o.current.clear())},[t]),_d(s=>{if(i.current!==t)return;let c=Ed(s);if(c){if(Id.has(c.name)){if(o.current.has(c.name))return;o.current.add(c.name)}Rd(()=>n.current?.(c))}},[t])}import{createContext as Td}from"react";var ia=Td(null);function Ua(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Md=Symbol.for("@flopay/js.telemetry.bridge.v1"),Ad=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function xd(){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 Bd(e){let t=xd(),n=(a,i)=>a?a.bind(e):i,o=n(e.now,t.now);return{error:n(e.error,t.error),log:n(e.log,t.log),performance:n(e.performance,t.performance),terminal:n(e.terminal,t.terminal),now:o,elapsed:e.elapsed?e.elapsed.bind(e):a=>Math.max(0,o()-a),setCheckoutContext:n(e.setCheckoutContext,t.setCheckoutContext),beginCheckout:n(e.beginCheckout,t.beginCheckout),disable:n(e.disable,t.disable),subscribe:n(e.subscribe,t.subscribe),flush:n(e.flush,t.flush),destroy:n(e.destroy,t.destroy)}}function qa(e){let t=globalThis[Ad];return Bd(t?.(e)??{})}function pn(e){if(e)return e[Md]}import{useCallback as $r,useEffect as Ll,useRef as eo}from"react";function sa(e,t){let n=eo(0),o=eo(null),a=eo(null),i=eo(e),s=eo(t?.onHandoffObserved),c=eo(t?.defersMissingTerminal),f=eo(t?.onMissingTerminalDeferred);Ll(()=>{i.current=e,s.current=t?.onHandoffObserved,c.current=t?.defersMissingTerminal,f.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let C=$r((v=a.current)=>{v?.timer&&(clearTimeout(v.timer),v.timer=null)},[]),E=$r(v=>{C();let P=n.current+1;return n.current=P,o.current=null,a.current={generation:P,method:v,timer:null,yieldedControl:!1},P},[C]),k=$r(v=>{let P=a.current;return v!==void 0&&P?.generation!==v?!1:(C(P),a.current=null,(v===void 0||o.current===v)&&(o.current=null),!0)},[C]),z=$r(v=>{let P=a.current,he=v??P?.generation??n.current;(v===void 0||P?.generation===v)&&(C(P),a.current=null),o.current=he},[C]),ne=$r(v=>o.current===(v??n.current),[]),O=$r(v=>a.current?.generation===v&&o.current!==v,[]),ve=$r(()=>{let v=a.current;v&&(C(v),!v.yieldedControl&&(v.yieldedControl=!0,s.current?.(v.method)))},[C]),V=$r(()=>{let v=a.current;!v?.yieldedControl||document.visibilityState!=="visible"||(C(v),v.timer=setTimeout(()=>{if(v.timer=null,a.current?.generation===v.generation){if(c.current?.(v.method)){f.current?.(v.method,v.generation);return}a.current=null,o.current=v.generation,i.current(v.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},ll))},[C]);return Ll(()=>{let v=()=>{document.visibilityState==="visible"?V():ve()};return document.addEventListener("visibilitychange",v),window.addEventListener("blur",ve),window.addEventListener("focus",V),()=>{document.removeEventListener("visibilitychange",v),window.removeEventListener("blur",ve),window.removeEventListener("focus",V),C()}},[C,ve,V]),{startAttempt:E,finishAttempt:k,invalidateAttempt:z,isAttemptInvalidated:ne,isAttemptCurrent:O,generationRef:n}}import{jsx as to,jsxs as qi}from"react/jsx-runtime";var ja=45,Zd=1e3,Xd=11e3,Qd={width:"100%",minHeight:ja,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"},eu={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 tu(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:eu[e.kind]??null}}function ql(e,t){return e==="watchdog_expired"?"paypal_render_timeout":cl(t)?"paypal_init_timeout":"paypal_init_failure"}function nu(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function jl({sessionId:e,nonce:t,billingApiUrl:n,email:o,billingName:a,onBuyerIdentityReady:i,clientId:s,environment:c,currency:f,isSubscription:C,providerObjectType:E,approvalPresentation:k,onTokenizedBody:z,onComplete:ne,onErrorChange:O,onDecline:ve,onTechnicalFailure:V,isProcessing:v=!1,onLoadStateChange:P,onInitializationStateChange:he,allowAutomaticRetry:N=!0,onButtonClick:Ie,runBeforeButtonClick:Y,session:Fe,existingOrderId:lt,telemetry:ze,telemetryContext:ct,onInstrument:zt,debug:pe=!1}){let Te=jr(),Pt=Ro(zt,e),Re=la(()=>{if(Te)return null;let u=qa({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:Kd,enabled:ze!==!1});return u.setCheckoutContext(ct??{}),u.beginCheckout(ct??{}),u},[n,Te,ze,ct?.checkoutMode,ct?.layout]),He=la(()=>pn(Te),[Te]);Lt(()=>()=>{Re&&Re.flush().catch(()=>{}).finally(()=>Re.destroy())},[Re]);let ke=la(()=>({error:u=>{He?He.error(u):Re?.error(u),Pt({class:"technical_error",errorCode:u.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":u.errorCode,requestCategory:u.requestCategory,provider:u.provider})},log:u=>{He?He.log(u):Re?.log(u),Pt({class:"lifecycle",name:u.name,provider:u.provider})},performance:u=>{He?He.performance(u):Re?.performance(u)},terminal:u=>{He?He.terminal(u):Re?.terminal(u)},startTiming:()=>He?.now()??Re?.now()??0,elapsed:u=>He?.elapsed(u)??Math.max(0,(Re?.now()??u)-u)}),[Pt,He,Re]),Q=ot(null),je=ot(0),$e=ot(null),pt=ot(null),be=ot(null),ye=Jd(ia),re=ot(null);re.current||(re.current=Ua());let M=ye??re.current,Ce=ot(null),Ue=ot(!1),[Me,U]=Wr(!1),[vt,qe]=Wr(!1),[Ee,Je]=Wr(0),Ae=ot(0),[Qe,De]=Wr(!1),bt=ot(!1),Yt=ot(!1),[yt,Et]=Wr(!1),[I,ee]=Wr(!1),{request:Oe,collect:F,finish:Se}=ko(),mt=ot({sessionId:e,required:Ul(o,Fe)});mt.current.sessionId!==e&&(mt.current={sessionId:e,required:Ul(o,Fe)});let Ne=mt.current.required,wt=la(()=>n.replace(/\/+$/,""),[n]),d=Fe?.gateways?.paypal?.providerObjectType??E,m=d??(C?"subscription":"order"),[A]=Wr(Qo),T=Fe?.gateways?.paypal?.approvalPresentation??k,J=Fa(A,T==="app_switch"?"app_switch":void 0,m),ft=Gd(d),me=la(()=>JSON.stringify([wt,s,f,c??"",m,ft,J,e,lt??""]),[wt,s,f,c,lt,m,ft,J,e]),We=ot(me),H=We.current!==me,Ut=ot(pe),Ct=ot(null),[_t,at]=Wr([]),oe=wr(u=>{Ut.current&&at(xe=>[...xe,`${new Date().toISOString().slice(11,23)} ${u}`])},[]);Lt(()=>{Ut.current=pe,pe&&oe("debug:enabled"),Ct.current?.setEnabled(pe)},[oe,pe]);let In=ot(z),Bn=ot(ne),yn=ot(O),qt=ot(ve),Fn=ot(V),Dn=ot(Ie),hn=ot(P),Tt=ot(he),Ve=ot(i),Le=ot(Y),Rn=ot(Fe),kt=ot(o),On=ot(a),mn=ot(t),jt=ot(null),Qt=ot(new Map),Jn=ot(new Map),$n=ot(!1);Lt(()=>($n.current=!0,()=>{$n.current=!1}),[]),Lt(()=>{In.current=z},[z]),Lt(()=>{Ve.current=i},[i]),Lt(()=>{Bn.current=ne},[ne]),Lt(()=>{yn.current=O},[O]),Lt(()=>{qt.current=ve},[ve]),Lt(()=>{Fn.current=V},[V]),Lt(()=>{Dn.current=Ie},[Ie]),Lt(()=>{hn.current=P},[P]),Lt(()=>{Tt.current=he},[he]),Lt(()=>{Le.current=Y},[Y]),Lt(()=>{Rn.current=Fe},[Fe]),Lt(()=>{kt.current=o},[o]),Lt(()=>{On.current=a},[a]),Lt(()=>{mn.current=t},[t]),Lt(()=>{Ae.current=Ee},[Ee]),Lt(()=>{Qe&&Ce.current?.focus()},[Qe,Ee]);let en=wr(()=>{window.setTimeout(()=>{Ce.current?.focus()},0)},[]),xt=wr(()=>{U(!1),Je(u=>u+1)},[]),Cn=wr(()=>{De(!1),(Q.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??Q.current)?.focus?.()},[]);Lt(()=>{!Me||!Ue.current||(Ue.current=!1,Cn())},[Cn,Me,Ee]);let ln=wr((u,xe)=>{let L=xe?.popupBlocked??zr(u);L&&M.markBlocked();let Pn=xa("PayPal",L,A.inAppBrowser),Nn=Fn.current;if(Nn){let Jt=L&&A.inAppBrowser?new Ui(Pn,"api_error",{code:xe?.code??"paypal_popup_blocked"}):u;Nn("paypal",Jt,xe);return}yn.current?.(Pn)},[M,A.inAppBrowser]),Ft=wr(u=>{let xe=$e.current,L=pt.current;xe===null||!L||(ke.log({...L,popupCapability:M.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:u}),ke.performance({...L,popupCapability:M.current(),stage:"overlay_return",durationMs:ke.elapsed(xe),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:u}),$e.current=null)},[M,ke]),fn=wr((u,xe,L)=>{let Pn=pt.current;Ft("overlay_timeout"),Pn&&ke.error({...Pn,popupCapability:M.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),ln(xe,{...L,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:J,terminalReason:"overlay_timeout"}),De(!0),xt(),en()},[Ft,en,ln,M,J,xt,ke]),Dt=wr(()=>{M.markAvailable();let u=pt.current;u&&(be.current=u.attempt,ke.log({...u,popupCapability:M.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[M,ke]),{finishAttempt:on,generationRef:Bt,invalidateAttempt:ae,isAttemptCurrent:Zn,isAttemptInvalidated:Xn,startAttempt:Qn}=sa(fn,{onHandoffObserved:Dt}),tn=wr(()=>(De(!1),Qn("paypal")),[Qn]),En=wr(u=>{ae(u?.generation),u?.showRetry&&De(!0),u?.remount&&xt(),u?.focus!==!1&&en()},[en,ae,xt]),Sn=u=>{let xe=jt.current;return xe&&Jn.current.set(u,xe),u};Lt(()=>{We.current!==me&&(We.current=me,bt.current=!1,Yt.current=!1,U(!1),qe(!1),Et(!1),Tt.current?.("loading"))},[me]),Lt(()=>{Nt(()=>hn.current?.(Me&&!yt))},[Me,yt]);let ce=Wd(c);Lt(()=>{let u={attempt:Bt.current+1,inAppBrowser:A.inAppBrowser,appFamily:A.appFamily,popupCapability:M.current(),presentationMode:J},xe=()=>({...pt.current??u,popupCapability:M.current()}),L={error:l=>ke.error({...l,...xe()}),log:l=>ke.log({...l,...xe()}),performance:l=>ke.performance({...l,...xe()}),terminal:l=>ke.terminal({...l,...xe()}),startTiming:ke.startTiming,elapsed:ke.elapsed},Pn=s?`${s.slice(0,6)}\u2026(len ${s.length})`:"(empty)",Nn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(oe(`mount clientId=${Pn} env=${c??"(unset)"}\u2192${ce??"live"} ccy=${f} sub=${C}`),oe(`ua=${Nn.slice(0,80)}${Nn.length>80?"\u2026":""}`),!s){oe("FAIL: clientId empty \u2014 gateway misconfigured"),Et(!0),L.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(!Q.current){oe("FAIL: containerRef not attached");return}je.current=L.startTiming(),L.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Jt=!1,_n=!1,nt=()=>Jt||_n,yr=ft?m:void 0,Dr,It=!1,Ln=()=>{Dr=Ud(),Dr||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),It=!0},er=null,tr=!1,$t=null,mr=!1,fr=()=>{!$t||mr||(mr=!0,$t.close().catch(()=>{}))},Tn=!1,gr=!1,Wn=Q.current,hr=null,Er=null,zn=[],nr=null,rr=!1,Mt=!1,Un=null,wn=l=>{if(!l||typeof l.getBoundingClientRect!="function")return"(no rect)";let y=l.getBoundingClientRect();return`${Math.round(y.width)}\xD7${Math.round(y.height)}`},or=l=>{if(!l)return"(empty)";try{let y=new URL(l,typeof window>"u"?"https://localhost":window.location.href),h=y.pathname.toLowerCase();return h.includes("checkcaptcha")||h.includes("captcha")?`CAPTCHA(${y.host}${h})`:h.includes("risk")||h.includes("challenge")?`RISK(${y.host}${h})`:h.includes("smart/buttons")?`smart-buttons(${y.host})`:`${y.host}${h}`.slice(0,100)}catch{return l.slice(0,80)}},ar=l=>{let y=l.getAttribute("src"),h=l.getAttribute("srcdoc"),$=l.getAttribute("name"),le=l.getAttribute("sandbox"),Pe=[];return y&&Pe.push(`src=${or(y)}`),h&&Pe.push(`srcdoc[${h.length}ch]`),!y&&!h&&Pe.push("src=(empty) srcdoc=(empty)"),$&&Pe.push(`name=${$.slice(0,40)}`),le!==null&&Pe.push(`sandbox="${le.slice(0,40)}"`),Pe.join(" ")},tt=l=>{if(!(l instanceof HTMLIFrameElement))return"";try{let y=l.contentDocument;if(!y)return"cd=null";let h=y.body?.children.length??0,$=y.body?.innerHTML.length??0,le=y.head?.innerHTML.length??0;return`cd=same-origin readyState=${y.readyState} body[${h}children,${$}ch] head[${le}ch]`}catch(y){return`cd=cross-origin(${y.message.slice(0,30)})`}},nn=[],cn=l=>{if(nt())return;let y=l.message??String(l.error??"(no message)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(oe(`window:error ${y.slice(0,140)}`),nn.push(y))},Mn=l=>{if(nt())return;let y=l.reason instanceof Error?l.reason.message:String(l.reason??"(no reason)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(oe(`window:rejection ${y.slice(0,140)}`),nn.push(y))},Or={value:0},Pr=()=>{hr?.disconnect(),hr=null,Er?.disconnect(),Er=null;for(let l of zn.splice(0))clearTimeout(l);Mt=!1,rr&&typeof window<"u"&&(window.removeEventListener("error",cn),window.removeEventListener("unhandledrejection",Mn)),rr=!1},_r=()=>{if(!(rr||nt()||Tn)){if(rr=!0,nn.length=0,Or.value=0,typeof window<"u"&&(window.addEventListener("error",cn),window.addEventListener("unhandledrejection",Mn)),typeof PerformanceObserver<"u")try{Er=new PerformanceObserver(l=>{if(!nt())for(let y of l.getEntries()){if(!y.name.toLowerCase().includes("paypal"))continue;Or.value+=1;let h=Math.round(y.duration);oe(`net ${h}ms ${y.name.slice(0,90)}`)}}),Er.observe({type:"resource",buffered:!0})}catch{}Un?.()}},Hn=()=>{nr&&(clearTimeout(nr),nr=null)},rn=()=>{Pr(),Hn()},Nr={setEnabled:l=>{l?_r():Pr()}};Ct.current=Nr,Ut.current&&_r();let an=qd,w=l=>{if(nt()||an(l))return;let y=wo(l)??l;Nt(()=>yn.current?.(y))},b=(l,y)=>{if(Jt||tr)return;tr=!0,_n=!0,rn(),fr();let h=tu({kind:l,generationActive:!0,automaticRetryAllowed:N,automaticRetryUsed:bt.current});if(h.action==="retry"){bt.current=!0,U(!1),ee(!1),qe(!0),Tt.current?.("retrying"),er=setTimeout(()=>{Jt||Je($=>$+1)},Zd);return}if(U(!1),ee(!1),qe(!1),Et(!0),h.action!=="ignore"){if(Tt.current?.("exhausted"),h.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",y);return}if(h.report){let $=Ti({code:ql(l,y),message:y},{inAppBrowser:A.inAppBrowser,handoffObserved:!1});$.popupBlocked&&M.markBlocked(),L.error({errorCode:$.popupBlocked?$.errorCode:h.report.errorCode,stage:h.report.stage,operationOutcome:h.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:$.terminalReason})}Yt.current||(Yt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",ql(l,y)))}};Et(!1);let j=async(l,y=jt.current)=>{if(nt())return;let h=y?.sessionId??e;if(In.current){await In.current(l,{sessionId:h,accountPatch:y?.accountPatch,nonce:y?.nonce});return}let $=L.startTiming();L.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let le=()=>{L.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"processing",durationMs:L.elapsed($),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let Pe=Fd({body:l,sessionId:h,nonce:y?.nonce??mn.current,accountPatch:y?.accountPatch,session:Rn.current,email:kt.current}),te=await new zi(wt,{telemetry:!1}).processPayment(Pe.userId,Pe.params);if(te.ok){if(_n||Jt&&$n.current)return;le(),L.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),Nt(()=>Bn.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(nt())return;let we=await te.json().catch(()=>null),Be=Ld(we),rt=Be.message;le(),te.status===400&&(typeof we?.declineCode=="string"||!Array.isArray(we?.fields))?L.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):te.status===400||te.status===422?L.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):L.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:nu(te.status),failureCategory:te.status>=500?"server_error":void 0}),w(rt),Nt(()=>qt.current?.(un("paypal",rt,{code:Be.code,declineCode:Be.declineCode})));return}catch(Pe){if(nt())return;le(),L.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let Ht=zd(Pe instanceof Error?Pe.message:void 0);w(Ht),Nt(()=>qt.current?.(un("paypal",Ht)));return}},K=()=>new Ui("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),it=l=>nt()?Promise.reject(K()):Promise.resolve(l),Wt=async l=>{if(nt())throw K();It||Ln();let y=jt.current,h=y?.sessionId??e,$=y?.nonce??mn.current;L.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let le;try{le=await new zi(wt,{telemetry:!1}).createSessionIntent(h,$??"",Dd(yr),{idempotencyKey:Dr})}catch(Pe){throw L.error({...Nd(Pe,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),Pe}if(nt())throw K();if(le.provider!=="paypal"||le.providerObjectType!==m)throw new Error(l);return L.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),le.providerObjectId},de=(l,y)=>{let h=y?.nonce??mn.current;if(!h)return;let $=y?.sessionId??e,le=Vd(l);new zi(wt,{telemetry:!1}).reportSessionIntentDecline($,h,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:le}).catch(()=>{})},x=Ee;oe("loadScript:scheduled (deferred 1 tick)");let B=null,R=setTimeout(()=>{if(Jt){oe("loadScript:skipped (cancelled before defer ran)");return}oe("loadScript:start");let l=ce==="live"?"production":ce,y={};m==="subscription"?y={intent:"subscription",vault:!0}:m==="order"&&(y={intent:"capture"}),B=Yd({clientId:s,currency:f,...y,...l?{environment:l}:{},...l==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let h=!1;B.then($=>{if(h=!0,oe(`loadScript:resolved inactive=${nt()} ns=${!!$} buttons=${!!$?.Buttons}`),nt())return;if(!$?.Buttons){oe("FAIL: namespace missing Buttons factory"),b("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}L.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"provider_ready",durationMs:L.elapsed(je.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),L.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let le=async(Z,S)=>{if(nt()||Ae.current!==x)return;let q=Z.vaultSetupToken??Z.subscriptionID??Z.orderID??"",Ke=q?Jn.current.get(q):Qt.current.get(x);if(!(!Ke||!Zn(Ke.generation))&&on(Ke.generation)){Jn.current.delete(q),Qt.current.delete(Ke.surfaceKey),Ft("approved");try{if(ee(!0),Nt(()=>yn.current?.(null)),!q)throw new Ui("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let ge=Hd({accountPatch:Ke.accountPatch,email:kt.current,billingName:On.current,session:Rn.current});if($d(ge))try{ge=jd(ge,await S?.order?.get?.())}catch{}if((Ve.current||Ne)&&!zl(ge.email)){let dt=await F("PayPal",ge);if(!dt)return;ge=dt}zl(ge.email)&&(Ke.accountPatch=dr({...Ke.accountPatch,...ge}),await Ve.current?.(ge));let _e=Od(q,yr);await j(_e,Ke)}catch(ge){w(ge instanceof Error?ge.message:"PayPal capture failed.")}finally{nt()||ee(!1)}}},Pe=Z=>{let S=lt?()=>it(lt):()=>Wt(Z);return async()=>Sn(await S())},Ht=$.Buttons({style:{layout:"horizontal",height:ja,tagline:!1},...J==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(Z,S)=>{if(nt()){await S.reject();return}Ln();let q=Le.current,Ke={};if(q)try{let dt=await q("paypal");if(nt()){await S.reject();return}if(!dt.proceed){jt.current=null,Qt.current.delete(x),await S.reject();return}Ke={sessionId:dt.sessionId,accountPatch:dt.accountPatch,nonce:dt.nonce}}catch(dt){oe(`onClick:runBeforeButtonClick rejected msg=${(dt instanceof Error?dt.message:String(dt)).slice(0,120)}`),jt.current=null,Qt.current.delete(x),await S.reject();return}Nt(()=>Dn.current?.("paypal"));let ge=tn(),_e={generation:ge,surfaceKey:x,...Ke};jt.current=_e,Qt.current.set(x,_e),pt.current={...u,attempt:ge},await S.resolve(),L.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),L.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),$e.current=L.startTiming()},createOrder:m==="order"?Pe("Failed to create PayPal order."):void 0,createSubscription:m==="subscription"?Pe("Failed to create PayPal subscription."):void 0,createVaultSetupToken:m==="setup_token"?async()=>Sn(await Wt("Failed to create PayPal setup token.")):void 0,onApprove:le,onCancel:()=>{if(nt())return;let Z=Qt.current.get(x)??jt.current;Z&&Qt.current.delete(Z.surfaceKey),jt.current=null,Ft("cancelled"),L.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),Ue.current=!0,En({generation:Z?.generation,remount:!0,focus:!1})},onError:Z=>{if(nt()||Ae.current!==x)return;let S=Z instanceof Error?Z.message:"PayPal failed to render.";if(oe(`onError rendered=${Tn} msg=${S.slice(0,120)}`),Tn){let q=Qt.current.get(x)??jt.current;if(q&&!Zn(q.generation)||!q&&Xn())return;if(an(S)){on(q?.generation);return}let{errorCode:Ke,popupBlocked:ge,providerDeclined:_e,terminalReason:dt}=Ti(Z,{inAppBrowser:A.inAppBrowser,handoffObserved:q!=null&&be.current===q.generation});if(ge&&M.markBlocked(),Ft(dt),_e){L.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:dt}),de(Z,q),Nt(()=>qt.current?.(un("paypal",S))),q&&Qt.current.delete(q.surfaceKey),jt.current=null,on(q?.generation);return}L.error({errorCode:Ke,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:dt}),q&&Qt.current.delete(q.surfaceKey),jt.current=null,En({generation:q?.generation,remount:!0,showRetry:!0,focus:!0}),ln(Z,{code:"paypal_runtime_failed",popupBlocked:ge,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:J,terminalReason:dt});return}b(an(S)?"teardown":"pre_ready_callback",S)}}),te=Ht.isEligible();if(oe(`isEligible=${te}`),L.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!te){U(!1),b("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}gr=!0,$t=Ht,Un=()=>{if(!rr||Mt||nt()||Tn)return;Mt=!0,oe(`container:dims ${wn(Wn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(hr=new MutationObserver(S=>{if(!nt()){for(let q of S)if(q.type==="childList")q.addedNodes.forEach(Ke=>{if(!(Ke instanceof Element))return;let ge=Ke.tagName.toLowerCase(),_e=(Ke.getAttribute("title")??"").slice(0,40),dt=ge==="iframe"?` ${ar(Ke)}`:"";oe(`child+ ${ge}${_e?` title="${_e}"`:""}${dt} dims=${wn(Ke)}`)});else if(q.type==="attributes"&&q.target instanceof Element){let Ke=q.target;if(Ke.tagName.toLowerCase()!=="iframe")continue;let ge=q.attributeName;(ge==="src"||ge==="srcdoc")&&oe(`attr~ iframe ${ge}=${ge==="srcdoc"?`[${(Ke.getAttribute("srcdoc")??"").length}ch]`:or(Ke.getAttribute("src"))} dims=${wn(Ke)}`)}}}),hr.observe(Wn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let Z=S=>{if(nt()||Tn)return;let q=Wn.querySelectorAll("iframe"),Ke=typeof document<"u"&&"hasStorageAccess"in document;oe(`watchdog:${S} container=${wn(Wn)} children=${Wn.childElementCount} iframes=${q.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${Ke} paypalNetRequests=${Or.value}`),q.forEach((ge,_e)=>{let dt=(ge.getAttribute("title")??"").slice(0,40);oe(` iframe[${_e}] ${wn(ge)}${dt?` title="${dt}"`:""} ${ar(ge)}`);let Ze=tt(ge);Ze&&oe(` ${Ze}`)}),nn.length===0&&oe(" (no PayPal/zoid window errors captured)")};zn.push(setTimeout(()=>Z("3s"),3e3)),zn.push(setTimeout(()=>Z("8s"),8e3)),zn.push(setTimeout(()=>Z("15s"),15e3))},Un(),oe("render:start");let Be=L.startTiming();nr=setTimeout(()=>{nt()||Tn||(oe("watchdog:11s retryable render timeout"),b("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},Xd);let rt=Ht.render(Wn);(async()=>{try{if(await rt,oe(`render:resolved inactive=${nt()}`),rn(),nt()){fr();return}Tn=!0,U(!0),qe(!1),Tt.current?.("ready"),L.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),L.performance({stage:"checkout_render",durationMs:L.elapsed(Be),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(Z){let S=Z instanceof Error?Z.message:"PayPal failed to render.";oe(`render:rejected msg=${S.slice(0,120)}`),rn(),b(an(S)?"teardown":"render_rejected",S)}})()}).catch($=>{let le=$ instanceof Error?$.message:"PayPal operation failed.";oe(`provider:failed msg=${le.slice(0,120)}`);let Pe="script_rejected";h&&an(le)?Pe="teardown":h&&gr&&(Pe="render_rejected"),b(Pe,le)})},0);return()=>{Jt=!0,clearTimeout(R),er&&clearTimeout(er),rn(),Ct.current===Nr&&(Ct.current=null),fr(),$e.current=null,pt.current=null}},[N,wt,s,f,c,m,J,ft,e,lt,Ee,ke,F,Ne,oe,Ft]);let et=pe?qi("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:yt?"#fef2f2":"#f3f4f6",border:`1px solid ${yt?"#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=${Me} failed=${yt})`,_t.length===0?`
|
|
2
2
|
(waiting for first lifecycle event\u2026)`:`
|
|
3
3
|
${_t.join(`
|
|
4
|
-
`)}`]}):null;return yt&&!H?pe?to("div",{children:et}):null:ji("div",{children:[et,Oe&&to(Io,{identity:Oe.identity,methodLabel:Oe.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Se,onCancel:()=>Se(null)}),ji("div",{"aria-hidden":vt||Oe?!0:void 0,style:vt||Oe?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:$a},children:[!Me&&!vt&&to("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"}}),to("div",{ref:Q,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:$a,display:"flex",opacity:Me?1:0},"aria-busy":I||v},Ee)]},Ee),Qe&&to("button",{ref:Ce,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:Cn,style:tu,children:"Try PayPal again"})]})}function Wa(e){return to(Hl,{...e})}function Vl(e){return to(Hl,{...e})}import{jsx as Kl,jsxs as au}from"react/jsx-runtime";function Eo({children:e,margin:t,icon:n=!0,styleOverride:o}){return au("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,...n?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...o??{}},children:[n&&Kl("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:Kl("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]})}import{clearCachedInlineCheckout as Ha,clearCachedInlineSession as $i,hashCreateParams as Gl,legacyCachedSessionMatchesDraft as Yl,persistCachedInlineIdempotencyKey as Va,persistCachedInlineSession as Ka,readCachedInlineIdempotencyKey as Jl,readCachedInlineSession as Zl,serializeCreateParams as da}from"@flopay/shared";import{resolveBillingApiUrl as iu}from"@flopay/shared";import{useEffect as Hr,useMemo as su,useRef as Xl,useState as Ql}from"react";import{jsx as lu}from"react/jsx-runtime";function Ga({flopay:e,paypalFlopay:t,options:n,onInstrument:o,children:a}){let[i,s]=Ql(e instanceof Promise?null:e),[c,f]=Ql(t instanceof Promise||!t?null:t),C=Xl(null),E=Xl(null),k=Ro(o);Hr(()=>{k({class:"lifecycle",name:"checkout.mount"})},[k]),Hr(()=>{i&&k({class:"lifecycle",name:"sdk.initialize.ready"})},[k,i]),Hr(()=>{if(i)return pn(i)?.subscribe?.(k)},[k,i]),Hr(()=>{if(!(!c||c===i))return pn(c)?.subscribe?.(k)},[k,i,c]),Hr(()=>{if(!i)return;let O=pn(i);return C.current=O?.beginCheckout()??O?.now()??0,O?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{O?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),Hr(()=>{let O=!1;return e instanceof Promise?e.then(ve=>{O||s(ve)},()=>{O||k({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):s(e),()=>{O=!0}},[k,e]),Hr(()=>{let O=!1;if(!t){f(null);return}return t instanceof Promise?t.then(ve=>{O||f(ve)},()=>{O||k({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):f(t),()=>{O=!0}},[k,t]),Hr(()=>{if(!i||E.current===i)return;E.current=i;let O=pn(i);O?.log({name:"checkout.rendered",stage:"checkout_render"}),k({class:"lifecycle",name:"checkout.rendered"}),O?.performance({stage:"checkout_render",durationMs:O.elapsed(C.current??0),durationMode:"machine"})},[k,i]);let z=iu(n?.billingApiUrl),ne=su(()=>({flopay:i,paypalFlopay:c,billingApiUrl:z,emitInstrument:k}),[i,c,z,k]);return lu(Gn.Provider,{value:ne,children:a})}import{markSessionRecentlyCompleted as _o,wasSessionRecentlyCompleted as Wi}from"@flopay/shared";async function Ya(e,t){e.current?.abort();let n=new AbortController;e.current=n;try{return await t(n.signal)}finally{e.current===n&&(e.current=null)}}import{completeSavedCardNextAction as cu,loadFloPay as ec,PaymentAPI as Za,runSavedCardChallenge as du}from"@flopay/js";import{classifyPaymentRejection as uu,FloPayError as St,isAuthorizationOnlySession as pu,isMountableVaultBlock as yu,isSetupIntentClientSecret as mu,normalizeCheckoutFailureOutcome as tc}from"@flopay/shared";var pa="card";async function fu(e,t,n){if(n){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:i,error:s}=await e.retrieveSetupIntent(t);return{error:s,intent:i??null}}if(typeof e.retrievePaymentIntent!="function")return null;let{paymentIntent:o,error:a}=await e.retrievePaymentIntent(t);return{error:a,intent:o??null}}async function gu(e,t,n,o){if(o){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:s,error:c}=await e.confirmCardSetup(t,n);return{error:c,intent:s??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:a,error:i}=await e.confirmCardPayment(t,n);return{error:i,intent:a??null}}function To(e){return new St("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function hu(){return new St("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Vi(e,t){return Object.assign(e,{checkoutMethod:t})}function xr(e,t){let n=e instanceof St?e:new St(e instanceof Error?e.message:"Payment provider failed.","api_error",{code:"provider_runtime_failure"});return Object.assign(n,{checkoutMethod:t,telemetryFailureCategory:"provider_runtime",telemetryRequestCategory:"provider_sdk"})}async function ua(e,t){try{return await e()}catch(n){throw xr(n,t)}}function rc(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 oc(e){return du(e)}async function Mo(e,t){let{billingApiUrl:n,sessionId:o,signal:a}=t,i=t.nonce??t.session.clientSecret,s=new Za(n,{telemetry:!1}),c=`${n.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(o)}/status`,f;try{f=await cu({billingApiUrl:n,sessionId:o,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:a,createDeclineError:E=>kr({type:E.declineReason??"authorization_declined",gatewayErrorCode:E.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"})},s)}catch(E){if(a.aborted||E instanceof Error&&E.name==="AbortError")throw E instanceof St&&E.code==="three_ds_aborted"?E:To(E);if(!(E instanceof St)||E.code!=="three_ds_timeout"&&E.code!=="checkout_processing_timeout")throw E;try{f=await s.waitForCheckoutSessionCompletion(o,{initialDelayMs:0,nonce:i,statusUrl:c,timeoutMs:5e3,signal:a})}catch(z){if(a.aborted)throw To(z);if(!(z instanceof St)||z.code!=="checkout_processing_timeout")throw z}let k=f&&qr(f,t.session);if(!Ar(k)&&k?.status!=="expired"){if(t.telemetry){let z=new Za(n);try{z.reportThreeDsAbandoned(o)}finally{z.destroy()}}throw hu()}}let C=f&&qr(f,t.session);if(!Ar(C))throw So(C);return{...Mr(C,o),checkoutMethod:"card"}}function kr(e,t="Payment failed. Please try again.",n){let o=n?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),a=e?.message??t,i=wo(a)??a,s=Vi(new St(i,"api_error",{code:e?.code??tc(e?.outcome)??tc(e?.type)??e?.gatewayErrorCode}),o);return e?.orderId&&(s.orderId=e.orderId),s}function Hi(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function Ja(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function ac(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let a of n)if(typeof a=="string"&&a.length>0&&(!t?.requirePaymentIntentClientSecret||Ja(a)))return a;let o=e?.data;if(o&&typeof o=="object"){let a=o,i=[a.threeDSecureToken,a.clientSecret,a.stripeClientSecret,a.id];for(let c of i)if(typeof c=="string"&&c.length>0&&(!t?.requirePaymentIntentClientSecret||Ja(c)))return c;let s=a.gateways;if(s&&typeof s=="object"){let c=s.stripe;if(c&&typeof c=="object"){let f=c,C=[f.stripeClientSecret,f.clientSecret];for(let E of C)if(typeof E=="string"&&E.length>0&&(!t?.requirePaymentIntentClientSecret||Ja(E)))return E}}}}async function Pu({billingApiUrl:e,sessionId:t,nonce:n,responseJson:o}){let a=ac(o,{requirePaymentIntentClientSecret:!0});if(typeof a=="string"&&a.length>0)return{type:"3ds_required",threeDSecureToken:a};if(!t)return null;try{let c=(await new Za(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(Ja(c))return{type:"3ds_required",threeDSecureToken:c}}catch{}return null}async function Ao({billingApiUrl:e,sessionId:t,session:n,nonce:o,tokenizedData:a,returnUrl:i,telemetry:s}){let c=e.replace(/\/+$/,""),f=t??n.id,C=o??n.clientSecret,E=n.customer?.id??n.accountData?.userId??"",k=n.customer?.email??n.accountData?.email??"",z=n.customer?.firstName??n.accountData?.firstName??"",ne=n.customer?.lastName??n.accountData?.lastName??"",O=n.customer?.country??n.accountData?.country??void 0,ve=n.customer?.zip??n.accountData?.zip??void 0,v=await new Za(c,s===!1?{telemetry:!1}:void 0).processPayment(E,{sessionId:f,nonce:C,paymentMethodCategory:"saved",tokenizedData:a,accountData:{userId:E,email:k,firstName:z,lastName:ne,country:O,zip:ve},returnUrl:i??Hi(n)});if(v.ok){let N=typeof v.json=="function"?await v.json().catch(()=>null):null;if(pu(n)||N?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof N?.paymentId=="string"?N.paymentId:n.paymentId,sessionId:typeof N?.sessionId=="string"?N.sessionId:f,authorizationExpiresAt:typeof N?.authorizationExpiresAt=="string"?N.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:oa(a),checkoutMethod:nc(a,n)}};let Ie=a?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...Ie?{paymentIntentId:Ie}:{},paymentMethodId:oa(a),checkoutMethod:nc(a,n)}}}let P;try{P=await v.json()}catch(N){throw new St("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:v.status,cause:N})}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 N=ac(P);if(!N)throw new St("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:v.status});return{type:P.type,threeDSecureToken:N,paymentMethodId:P.paymentMethodId}}if(P?.gatewayErrorCode==="authentication_required"){let N=await Pu({billingApiUrl:c,sessionId:f,nonce:C,responseJson:P});if(N)return N;throw Vi(new St("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let he=new St(P?.message??"Payment failed. Please try again.","api_error",{code:P?.code??P?.gatewayErrorCode,declineCode:P?.declineCode??P?.gatewayDeclineReason,statusCode:v.status});throw Object.assign(he,{telemetryOutcome:uu(v.status,P)})}async function Xa(e,{flopay:t,paypalFlopay:n,attempt3DS:o,billingApiUrl:a,sessionId:i,session:s,returnUrl:c,telemetry:f,signal:C}){let E=t?.getRawProvider();if(!E)throw xr(new St("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!o||!e.threeDSecureToken)throw Vi(new St("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let k=mu(e.threeDSecureToken),z=null,ne=e.paymentMethodId,O=await ua(()=>fu(E,e.threeDSecureToken,k),"card");if(O){if(O.error)throw xr(new St(O.error.message??`Failed to retrieve 3DS ${k?"setup":"payment"} status.`,"api_error",{code:O.error.code}),"card");let V=O.intent;!ne&&V?.payment_method&&(typeof V.payment_method=="string"?ne=V.payment_method:"id"in V.payment_method&&(ne=V.payment_method.id??void 0))}let ve=ne?await ua(()=>gu(E,e.threeDSecureToken,{payment_method:ne,return_url:c??Hi(s)??window.location.href},k),"card"):null;if(ve){if(ve.error)throw xr(new St(ve.error.message??"3DS authentication failed.","api_error",{code:ve.error.code}),"card");z=ve.intent}else{let V=await ua(()=>E.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(V.error)throw xr(new St(V.error.message??"3DS authentication failed.","api_error",{code:V.error.code}),"card");z=(k?V.setupIntent:V.paymentIntent)??null}if(z&&(z.status==="requires_capture"||z.status==="succeeded"||z.status==="processing")){let V=await Ao({billingApiUrl:a,sessionId:i,session:s,telemetry:f,tokenizedData:{id:z.id,type:"card",threeDSecureActionResultTokenId:z.id},returnUrl:c});return V.type==="success"?{...V.result,paymentIntentId:V.result.paymentIntentId??z.id,paymentMethodId:V.result.paymentMethodId??ne}:V.type==="next_action_required"?Mo(V,{billingApiUrl:a,sessionId:i??s.id,session:s,signal:C}):Xa(V,{flopay:t,paypalFlopay:n,attempt3DS:o,billingApiUrl:a,sessionId:i,session:s,returnUrl:c,telemetry:f,signal:C})}throw xr(new St("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let k=(n??t)?.getRawProvider();if(!k)throw xr(new St("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:ne}=await ua(()=>k.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(ne)throw xr(new St(ne.message??"PayPal authorization failed.","api_error",{code:ne.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:z}=await ua(()=>k.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:c??Hi(s)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(z)throw xr(new St(z.message??"PayPal authorization failed.","api_error",{code:z.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new St("Unsupported payment redirect state.","api_error")}function ya(e){if(e instanceof St){let o=wo(e.message);return o&&o!==e.message?Object.assign(new St(o,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.",n=wo(t)??t;return new St(n,"api_error")}function Ki(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,o=yu(e.data.session?.vault)||Qr(e.data.session);if(!t&&!n&&!o)throw new St("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 nc(e,t){return e?e.isPaypal?"paypal":"card":t&&Qr(t)?"card":void 0}async function Gi({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:o,telemetry:a}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[s,c]=await Promise.all([ec(e,{billingApiUrl:n,locale:o,telemetry:a}),i?ec(i,{billingApiUrl:n,locale:o,telemetry:a}).catch(C=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",C),null)):Promise.resolve(null)]);if(!s)throw new St("The payment provider did not initialize.","authentication_error");let f=null;return i?f=c:t&&(f=s),{flopay:s,paypalFlopay:f}}import{PaymentAPI as Bo,PciVaultCardCapture as vu,toStripeAppearance as bu}from"@flopay/js";import{buildCheckoutProcessMetadata as Cu,buildProcessPaymentAvsAccount as Su,COUNTRY_OPTIONS as wu,classifyPaymentRejection as ku,clearStripePayPalReturn as Iu,FloPayError as Br,filterStripeMethodsByCountryGate as Ru,getPostalCodeExample as Eu,getPostalCodeLabel as ns,getStateFromPostalCode as _u,getStateLabel as Yi,getStateOptions as Tu,getStripeMethodDisplayName as ga,hasMatchingStripePayPalReturn as Mu,isAuthorizationOnlySession as Ji,isAVSFieldVisible as Kt,isMountableVaultBlock as Au,isPostalCodeSupported as xu,isSetupIntentClientSecret as Zi,isValidEmail as gn,isValidPostalCode as Bu,needsStripeMethodExplicitConfirm as ic,normalizeBeforeButtonClickError as sc,normalizeCheckoutFailureOutcome as Fu,partitionStripeMethods as Du,randomUuidV4 as Ou,readMatchingStripePayPalContinuation as Nu,readStripeRedirectParams as vc,resolveAVSConfig as Lu,resolveButtonsLayoutTheme as zu,resolveSetupFutureUsage as bc,resolveTheme as Uu,resolveVaultMountOptions as Xi,STRIPE_PAYPAL_RESUME_KEY as qu,derivePrimaryTileStyle as ju,stripeExpressMethodToOptionKey as $u,stripeRedirectReturnUrl as Cc}from"@flopay/shared";import{ExpressCheckoutElement as Sc,PaymentElement as Wu,Elements as no,useElements as is,useStripe as ss}from"@stripe/react-stripe-js";import Hu,{useCallback as Ye,useContext as Do,useEffect as ht,useMemo as gt,useRef as G,useState as ie}from"react";function xo(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function Qa(e,t){if(e)return{error:n=>e.error(xo(t,n)),log:n=>e.log(xo(t,n)),performance:n=>e.performance(xo(t,n)),terminal:n=>e.terminal(xo(t,n)),now:()=>e.now(),elapsed:n=>e.elapsed(n),setCheckoutContext:n=>e.setCheckoutContext(n),beginCheckout:n=>e.beginCheckout(n),disable:()=>e.disable(),subscribe:n=>e.subscribe(n),flush:()=>e.flush(),destroy:()=>e.destroy()}}import{Fragment as Fo,jsx as p,jsxs as Xe}from"react/jsx-runtime";var Ir="flopay_stripe_resume",lc="flopay_wallet_resume",wc="fw1",Vu="fw2",kc=300*1e3,Ku=900,Gu=25e3,Yu=25e3,Ju=1e4,ur={provider:"paypal",paymentMethodCategory:"paypal"},Zu="x-flopay-process-result-source",Xu="status";async function Qu(e,t,n){try{let o=(await e.getUnifiedCheckoutSession(t,n)).data.session;if(o?.status==="complete")return null;if(o?.status==="authorized")return{status:"authorized",paymentId:o.paymentId,sessionId:o.id||t,authorizationExpiresAt:o.authorizationExpiresAt}}catch{}}var ei={},fa=class{constructor(t){this.reason=t}};function ep(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function Xt(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`${Vu}:${e}`}function ti(e){return Xt(ls(e))}function ni(e,t){if(typeof window>"u")return null;let n=ls(e);try{let o=localStorage.getItem(n);if(!o)return null;let a=JSON.parse(o);return typeof a.createdAt!="number"||Date.now()-a.createdAt<0||Date.now()-a.createdAt>kc||a.sessionId!==e||a.nonce!==t||typeof a.clientSecret!="string"||typeof a.providerObjectId!="string"||typeof a.paymentMethodType!="string"?(ti(e),null):a}catch{return ti(e),null}}function tp(e){return Xt(ls(e.sessionId),e)}function cc(e,t,n){let o=ni(e,t);return!o||o.clientSecret!==n?!1:ti(e)}function Qi(e,t,n){if(typeof window>"u")return;ni(e,t)?.clientSecret===n&&ti(e)}function np(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function es(e,t,n){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 o=n?e.status==="succeeded":ra(e.status),a=np(e);return!o||!a?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:a}}async function dc(e,t,n){let o=null;try{return await Promise.race([Al(e,t),new Promise(a=>{o=window.setTimeout(()=>{o!==null&&n?.delete(o),a(null)},Ju),n?.add(o)})])}finally{o!==null&&(window.clearTimeout(o),n?.delete(o))}}function rp(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Ic(e){return e instanceof Br&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function ri(e,t,...n){let o=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:o});try{return await new Bo(e,{telemetry:!1}).createSessionIntent(...n)}catch(a){throw Ic(a)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:o}),a}}var ts=qu,ma=new Map,op=250,uc="Just a moment \u2014 we are finalizing your order. Please press pay again.",ap="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function cs(e,t,n,o){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk",...o?{terminalReason:o}:{}})}async function oi({billingApiUrl:e,sessionId:t,nonce:n,request:o}){if(!(!t||!n))try{await new Bo(e,{telemetry:!1}).reportSessionIntentDecline(t,n,o)}catch{}}function ip(e){return e instanceof Br&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Rc({event:e,fallbackEmail:t,fallbackName:n}){let o=e.billingDetails,a=t?.trim(),i=aa(n),s=i.firstName?i:aa(o?.name);return dr({email:gn(a)?a:o?.email?.trim(),firstName:s.firstName,lastName:s.lastName})}async function sp({event:e,prepared:t,email:n,billingName:o,methodLabel:a,collect:i}){let s=Rc({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||o});return gn(s.email)?s:i(a,s)}var ha=180,pc=`flopay-card-enter ${ha}ms cubic-bezier(0, 0, 0.2, 1) both`,yc=`flopay-card-exit ${ha}ms cubic-bezier(0.4, 0, 0.2, 1) both`,lp=`flopay-buttons-enter ${ha}ms cubic-bezier(0, 0, 0.2, 1) both`,cp=`flopay-buttons-exit ${ha}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function dp(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function ds(e){return ju(e)}var up={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function pp(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 rs={width:"100%",minHeight:ta,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 mc(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function os(e){return e==="paypal"?"PayPal":ga(e)}function yp(e){let t=Eu(e);return`Enter a valid ${ns(e)}${t?` (e.g. ${t})`:""}`}function mp(e,t,n){let o=xu(e),a=t.trim(),i=n&&o,s=i&&!a,c=i&&!!a&&!Bu(e,a);return{visible:n,supported:o,required:i,empty:s,malformed:c}}function fp(e,t){let n=e.trim(),o=t&&!n,a=t&&!!n&&!gn(n);return{required:t,empty:o,malformed:a,value:n}}function gp(e){return typeof e=="number"?`${e}px`:e}function us(e){return p(hp,{...e})}function fc({sessionId:e,nonce:t,email:n,billingApiUrl:o,onTokenizedBody:a,onErrorChange:i,isProcessing:s=!1,onButtonClick:c,onDecline:f,onTechnicalFailure:C,runBeforeButtonClick:E,billingName:k,onBuyerIdentityReady:z,onLoadStateChange:ne,placeholderBorderRadius:O,popupCapabilityOwner:ve,externalTelemetryContext:V,presentationMode:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=ss(),Ie=is(),Y=gt(()=>Qa(pn(P),V),[V,P]),[Fe,lt]=ie("loading");ht(()=>{ne?.(Fe)},[Fe,ne]);let[ze,ct]=ie(!1),zt=G(!1),pe=!gn(n?.trim())||!k?.trim(),{request:Te,collect:Pt,finish:Re}=ko(),He=G(!1),ke=G(null),Q=G(null),[je,$e]=ie(0),[pt,be]=ie(!1),ye=G(!1),re=G(new Map),{startAttempt:M,finishAttempt:Ce,invalidateAttempt:Ue,isAttemptInvalidated:Me,isAttemptCurrent:U,generationRef:vt}=la((I,ee,Oe)=>{C?.(I,ee,{...Oe,popupBlocked:Oe?.popupBlocked??zr(ee),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:v,terminalReason:"overlay_timeout"}),be(!0),$e(F=>F+1)},{onHandoffObserved:()=>{ve.markAvailable(),Y?.log({name:"provider.popup.opened",stage:"overlay_open",...ur,attempt:vt.current})}});ht(()=>{pt&&Q.current?.focus()},[pt,je]);let qe=Ye(()=>{$e(I=>I+1)},[]),Ee=Ye((I,ee,Oe)=>{Ue(Oe),C?.("paypal",I,{code:ee,popupBlocked:zr(I),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:v}),be(!0),qe()},[Ue,C,v,qe]),Je=Ye(()=>{window.setTimeout(()=>{(ke.current?.querySelector("iframe")??ke.current)?.focus()},0)},[]);ht(()=>{ye.current&&(ye.current=!1,Je())},[Je,je]);let Ae=Ye(()=>{be(!1),i?.(null),Je()},[Je,i]);ht(()=>{if(!N||He.current)return;let[I,ee,Oe]=vc();if(!I||!ee)return;let F=Nu(ee);if(!F)return;He.current=!0;let Se=!0,mt=ma.get(ee);mt||(mt=Oe==="failed"?Promise.resolve(null):Promise.resolve().then(()=>N.retrievePaymentIntent(ee)),ma.set(ee,mt));let Ne={accountPatch:F.accountPatch,sessionId:F.sessionId,nonce:F.nonce},wt=()=>{Y?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...ur,requestCategory:"provider_sdk"})};return Y?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...ur}),(async()=>{try{ct(!0);let d=await mt;if(!Se)return;if(d?.error){ma.delete(ee),wt(),i?.(d.error.message??"Failed to retrieve PayPal payment status.");return}if(Iu(),ma.delete(ee),Oe==="failed"){let A="PayPal payment was declined. Please try again.";Y?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}),i?.(A),f?.(un("paypal",A));return}let m=d?.paymentIntent;if(m&&m.id!==I){wt(),i?.("Failed to match the returned PayPal payment.");return}if(m&&(m.status==="requires_capture"||m.status==="succeeded")){let A=typeof m.payment_method=="string"?m.payment_method:m.payment_method?.id;a({id:A??m.id,type:"card",threeDSecureActionResultTokenId:m.id,isPaypal:!0},{...Ne,presentationMode:"redirect"})}else{let A="PayPal payment was not completed. Please try again.";Y?.terminal({outcome:m?.status==="canceled"?"payment_cancelled":"payment_declined",...ur,terminalReason:m?.status==="canceled"?"cancelled":"provider_declined"}),i?.(A),f?.(un("paypal",A))}}catch(d){if(!Se)return;ma.delete(ee),wt(),i?.(d instanceof Error?d.message:"Failed to complete PayPal payment.")}finally{Se&&ct(!1)}})(),()=>{Se=!1,He.current=!1}},[N,a,i,f,Y]);let Qe=Ye(async(I=!1)=>{let ee=E?await E("paypal"):{proceed:!0};if(!ee.proceed)return re.current.delete(je),!1;let Oe=M("paypal");return re.current.set(je,{generation:Oe,accountPatch:ee.accountPatch,sessionId:ee.sessionId,nonce:ee.nonce}),be(!1),Y?.log({name:`provider.${I?"redirect.started":"handoff.requested"}`,stage:I?"redirect":"overlay_open",...ur,attempt:Oe}),c?.("paypal"),!0},[c,Y,E,M,je]),De=Ye(async I=>{if(s||ze||!await Qe()){I.reject();return}I.resolve()},[s,Qe,ze]),bt=Ye(async I=>{if(!N||!Ie)return;let ee=re.current.get(je);if(ee&&!U(ee.generation)){re.current.delete(je);return}if(!ee&&Me()||ee&&!Ce(ee.generation))return;ee||Ce();let Oe=ee??null;if(re.current.delete(je),!Oe&&E){let _=await E("paypal");if(!_.proceed){I.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}Oe={accountPatch:_.accountPatch,sessionId:_.sessionId,nonce:_.nonce}}let F=Oe?.sessionId??e,Se=Oe?.nonce??t,mt=await sp({event:I,prepared:Oe,email:n,billingName:k,methodLabel:"PayPal",collect:Pt});if(!mt){I.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Ne=mt.email,wt={...Oe?.accountPatch,...dr(mt,!0)};try{if(ct(!0),i?.(null),!F||!gn(Ne))throw new Error("Missing sessionId or email for PayPal payment");await z?.(mt);let _=N.createPaymentMethod,{error:d,paymentMethod:m}=await _({type:"paypal"});if(d){Ee(d,"stripe_paypal_create_payment_method_failed",ee?.generation),I.paymentFailed({reason:"fail"});return}let A=await ri(o,he,F,Se??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:m?.id??null,intentKind:"payment"});if(A.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let T=A.clientSecret,J={return_url:Cc()};if(m?.id&&(J.payment_method=m.id),!Xt(ts,{clientSecret:T,sessionId:F,nonce:Se,accountPatch:wt})&&v==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:me,paymentIntent:We}=await N.confirmPayment({clientSecret:T,confirmParams:J,redirect:"if_required"});if(me){if(Xt(ts),Fa(me)){let Ut=me.message??"Your payment was declined.";Y?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}),i?.(Ut),f?.(un("paypal",Ut,{code:go(me),declineCode:Ai(me)})),await oi({billingApiUrl:o,sessionId:F,nonce:Se,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:go(me)??"provider_declined"}})}else Ee(me,"stripe_paypal_confirm_failed",ee?.generation);return}Xt(ts);let H=typeof We?.payment_method=="string"?We.payment_method:We?.payment_method?.id;a({id:H??We?.id,type:"card",threeDSecureActionResultTokenId:We?.id,isPaypal:!0},{accountPatch:wt,paymentMethodCategory:"paypal",presentationMode:v,sessionId:F,nonce:Se});return}catch(_){Ee(_,"stripe_paypal_failed",ee?.generation)}finally{ct(!1)}},[N,Ie,e,t,n,k,Pt,z,o,he,a,i,f,E,Ee,Ce,U,Me,Y,v,je]),Yt=Ye(async()=>{if(!(zt.current||s||ze||!N||!Ie)){zt.current=!0,ct(!0);try{if(!await Qe(!0))return;await bt({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{zt.current=!1,ct(!1)}}},[Ie,bt,s,Qe,N,ze]),yt=v==="redirect"?p("button",{type:"button",disabled:s||ze,onClick:()=>{Yt()},style:{width:"100%",minHeight:ta,border:"1px solid #d1d5db",borderRadius:O??8,background:"#ffc439",color:"#111827",cursor:s||ze?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):p(Sc,{onReady:I=>lt(xi(I,["paypal"])),onLoadError:()=>{lt("load_error"),cs(Y,"paypal","paypal","provider_error")},onClick:De,onConfirm:bt,onCancel:()=>{let I=re.current.get(je);re.current.delete(je),Y?.terminal({outcome:"payment_cancelled",...ur,terminalReason:"cancelled",...I?{attempt:I.generation}:{}}),Ue(I?.generation),be(!1),ye.current=!0,qe()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:pe,emailRequired:pe,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},je),Et=Xe(Fo,{children:[Xe("div",{ref:ke,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[pt&&p("button",{ref:Q,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Ae,style:rs,children:"Try PayPal again"}),Te&&p(Io,{identity:Te.identity,methodLabel:Te.methodLabel,onComplete:Re,onCancel:()=>Re(null)},Te.id),p("div",{style:{display:Te?"none":void 0},children:yt})]}),ze&&!Te&&p(Sr,{status:"processing"})]});return v==="redirect"?Et:p(Bi,{state:Fe,placeholderTestId:"flopay-paypal-placeholder",borderRadius:O,children:Et})}function gc(e){return e==="apple_pay"||e==="google_pay"}function hc({sessionId:e,nonce:t,email:n,billingApiUrl:o,intentKind:a,expressMethods:i,onTokenizedBody:s,onErrorChange:c,onButtonClick:f,onDecline:C,onTechnicalFailure:E,runBeforeButtonClick:k,billingName:z,onBuyerIdentityReady:ne,onLoadStateChange:O,placeholderBorderRadius:ve,popupCapabilityOwner:V,externalTelemetryContext:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=ss(),Ie=is(),Y=gt(()=>Qa(pn(P),v),[v,P]),[Fe,lt]=ie("loading");ht(()=>{O?.(Fe)},[Fe,O]);let[ze,ct]=ie(!1),zt=G(!gn(n?.trim())||!z?.trim()).current,{request:pe,collect:Te,finish:Pt}=ko(),Re=G(null),He=G(null),[ke,Q]=ie(0),[je,$e]=ie(!1),[pt,be]=ie(()=>ni(e,t)?"blocked":"idle"),[ye,re]=ie("google_pay"),M=G(null),Ce=G(!0),Ue=G(!1),Me=G("google_pay"),U=G("google_pay"),vt=G(null),qe=G(null),Ee=G(new Set),Je=G(null);ht(()=>(Ce.current=!0,()=>{Ce.current=!1;for(let _ of Ee.current)window.clearTimeout(_);Ee.current.clear()}),[]);let Ae=G(new Map),{startAttempt:Qe,finishAttempt:De,invalidateAttempt:bt,isAttemptInvalidated:Yt,isAttemptCurrent:yt,generationRef:Et}=la((_,d,m)=>{E?.(_,d,{...m,popupBlocked:m?.popupBlocked??zr(d),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),re(_),$e(!0),Q(A=>A+1)},{onHandoffObserved:_=>{V.markAvailable(),Y?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Et.current,..._==="apple_pay"||_==="google_pay"?{walletType:_}:{}})},defersMissingTerminal:gc,onMissingTerminalDeferred:(_,d)=>{let m=Y?.now()??globalThis.performance?.now()??Date.now(),A=Je.current,T=A?.generation===d?A.startedAt:m;Y?.performance({stage:"overlay_return",durationMs:Math.max(0,m-T),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:d,...gc(_)?{walletType:_}:{}}),Y?.flush?.().catch(()=>{})}});ht(()=>{je&&He.current?.focus()},[je,ke]);let I=Ye(()=>{Q(_=>_+1)},[]),ee=Ye((_,d,m,A,T=!1)=>{bt(A),E?.(_,d,{code:m,popupBlocked:zr(d),telemetryReported:T,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),re(_),$e(!0),I()},[bt,E,I]),Oe=Ye(()=>{window.setTimeout(()=>{(Re.current?.querySelector("iframe")??Re.current)?.focus()},0)},[]);ht(()=>{Ue.current&&(Ue.current=!1,Oe())},[Oe,ke]);let F=Ye(()=>{$e(!1),c?.(null),Oe()},[Oe,c]),Se=Ye(()=>{M.current?.()},[]);ht(()=>{let _=ni(e,t);if(!_)return;let d=!1,m=!1,A=async()=>{if(!m){m=!0,d||be("checking");try{let T=await dc(N,_.clientSecret,Ee.current);if(d)return;let J=es(T,_.providerObjectId,Zi(_.clientSecret));if(J.kind==="confirmed"){if(!cc(e,t,_.clientSecret))return;M.current=null,be("idle"),s({id:J.paymentMethodId,type:"card",threeDSecureActionResultTokenId:J.intentId},{..._.accountPatch?{accountPatch:_.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(J.kind==="terminal"){Qi(e,t,_.clientSecret),M.current=null,be("idle"),re(_.paymentMethodType),$e(!0),I();return}be("blocked")}catch{d||be("blocked")}finally{m=!1}}};return M.current=A,be("blocked"),()=>{d=!0,M.current===A&&(M.current=null)}},[t,s,I,e,N]);let mt=Ye(async _=>{let d=!1,m=Ve=>{d||(d=!0,_.paymentFailed({reason:"fail",...Ve?{message:Ve}:{}}))};if(!N||!Ie){m();return}let A=Ae.current.get(ke);if(A&&!yt(A.generation)){Ae.current.delete(ke),m();return}if(!A&&Yt()){m();return}if(A&&!De(A.generation)){m();return}A||De();let T=_.expressPaymentType??A?.method??Me.current,J=A??null,ft=mc(T),me;T==="apple_pay"?me="apple_pay":T==="google_pay"&&(me="google_pay");let We=A?.generation??Et.current,H=Y,Ut=H?.now()??globalThis.performance?.now()??Date.now(),Ct=new AbortController,_t=!1,at=!1,oe=null,In=e,Bn="processing",yn="other",qt="provider_runtime",Fn,Dn=new Promise((Ve,Le)=>{Fn=Le}),hn=window.setTimeout(()=>{_t=!0,Ct.abort(),Fn(ei)},Gu),Tt=async(Ve,Le,Rn)=>{Bn=Ve,yn=Le,qt=Le==="intent_create"||Le==="session_claim"?"transport_error":"provider_runtime";let kt=H?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([Rn,Dn])}finally{let On=H?.now()??globalThis.performance?.now()??Date.now();H?.performance({stage:Ve,durationMs:Math.max(0,On-kt),durationMode:"machine",requestCategory:Le,paymentMethodCategory:"wallet",provider:"stripe",..._t?{statusClass:"timeout"}:{}})}};try{if(ct(!0),c?.(null),!J&&k){let ce=await Tt("processing","other",k(ft));if(!ce.proceed){m();return}J={accountPatch:ce.accountPatch,sessionId:ce.sessionId,nonce:ce.nonce}}let Ve=J?.sessionId??e;In=Ve;let Le=J?.nonce??t,Rn=vt.current??J?.accountPatch,kt=Rc({event:_,fallbackEmail:Rn?.email??n,fallbackName:[Rn?.firstName,Rn?.lastName].join(" ").trim()||z});if(!gn(kt.email)){m("Buyer details are required."),Te(os(T),kt).then(ce=>{ce&&(vt.current=ce)});return}vt.current=null;let On={...J?.accountPatch,...dr(kt,!0)};await Tt("processing","session_claim",Promise.resolve(ne?.(kt)));let{error:mn}=await Tt("tokenization","provider_sdk",Ie.submit());if(mn){m(),ee(T,mn,"stripe_wallet_submit_failed",A?.generation);return}if(!Ve)throw new Error("Missing sessionId or email for payment.");let jt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:T,paymentMethodId:null,intentKind:a},Qt=JSON.stringify({sessionId:Ve,nonce:Le??"",request:jt}),Jn=qe.current,$n=Jn?.retryIdentity===Qt?Jn.authorizationAttemptId:Ou();qe.current={authorizationAttemptId:$n,retryIdentity:Qt};let en=await Tt("processing","intent_create",ri(o,he,Ve,Le??"",{...jt,authorizationAttemptId:$n},{signal:Ct.signal}));if(en.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let xt=en.clientSecret,Cn=tp({createdAt:Date.now(),sessionId:Ve,...Le?{nonce:Le}:{},clientSecret:xt,providerObjectId:en.providerObjectId,paymentMethodType:T,accountPatch:On});window.clearTimeout(hn),at=!0,H?.performance({stage:"callback",durationMs:Math.max(0,(H?.now()??globalThis.performance?.now()??Date.now())-Ut),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let ln=H?.now()??globalThis.performance?.now()??Date.now(),Ft={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...me?{walletType:me}:{},attempt:We},fn=!1,Dt=null;H?.log({name:"payment.provider_confirmation.started",...Ft}),oe=window.setTimeout(()=>{oe!==null&&Ee.current.delete(oe),fn=!0;let ce=H?.now()??globalThis.performance?.now()??Date.now();H?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Ft,operationOutcome:"watchdog_expired",durationMs:Math.max(0,ce-ln),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),H?.flush?.().catch(()=>{}),Dt?.()},Yu),Ee.current.add(oe);let on=(ce,et)=>{oe!==null&&(window.clearTimeout(oe),Ee.current.delete(oe),oe=null);let u=H?.now()??globalThis.performance?.now()??Date.now(),xe=Math.max(0,u-ln),L=ce;fn&&(ce==="resolved"?L="resolved_late":ce==="returned_error"?L="returned_error_late":L="rejected_late");let Pn=et??(ce==="resolved"?"approved":"provider_error");return H?.log({name:"payment.provider_confirmation.returned",...Ft,operationOutcome:L,terminalReason:Pn}),H?.performance({...Ft,durationMs:xe,durationMode:"buyer",operationOutcome:L,terminalReason:Pn}),{durationMs:xe,operationOutcome:L,terminalReason:Pn}},Bt=!1,ae=!1,Zn=ce=>{if(!ce||typeof ce!="object")return null;let et=ce;if(et.error)return null;let u=et.setupIntent??et.paymentIntent,xe=es(u??null,void 0,!!et.setupIntent);return xe.kind==="confirmed"?xe:null},Xn=ce=>{if(Bt||A&&Et.current!==A.generation)return;let et=Zn(ce);if(!et)return;if(Cn&&!cc(Ve,Le,xt)){Bt=!0;return}let{intentId:u,paymentMethodId:xe}=et;Bt=!0,ae=!0,qe.current=null,M.current=null,Ce.current&&(be("idle"),ct(!1));let L=`${wc}:${Ve}`;Xt(L,{createdAt:Date.now(),sessionId:Ve,nonce:Le,accountPatch:On,paymentMethodId:xe,providerIntentId:u,paymentMethodType:T});try{s({id:xe,type:"card",threeDSecureActionResultTokenId:u},{accountPatch:On,paymentMethodCategory:"wallet",sessionId:Ve,nonce:Le})}finally{Xt(L)}},Qn=!1;Dt=async()=>{if(!(Qn||Bt||ae)){Qn=!0,Ce.current&&be("checking");try{let ce=await dc(N,xt,Ee.current);if(Bt||ae)return;let et=Zi(xt),u=es(ce,en.providerObjectId,et);if(u.kind==="confirmed"){Xn(et?{setupIntent:ce}:{paymentIntent:ce});return}if(u.kind==="terminal"){if(ae=!0,Qi(Ve,Le,xt),qe.current=null,M.current=null,!Ce.current)return;be("idle"),m(),ee(T,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",A?.generation,!0);return}Ce.current&&!ae&&(be("blocked"),ct(!1))}catch{Ce.current&&!ae&&(be("blocked"),ct(!1))}finally{Qn=!1}}},M.current=Dt;let tn,En;try{let ce=await(Zi(xt)?N.confirmSetup({elements:Ie,clientSecret:xt,redirect:"if_required"}):N.confirmPayment({elements:Ie,clientSecret:xt,redirect:"if_required"}));if(!ce||typeof ce!="object")throw new fa(ep(ce));if(tn=ce,!tn.error&&!Zn(tn))throw new fa("confirmation_result_unconfirmed");En=on(tn.error?"returned_error":"resolved",tn.error&&Fa(tn.error)?"provider_declined":void 0)}catch(ce){let et=ce instanceof fa?ce.reason:void 0,u=et!==void 0,xe=on(u?"returned_error":"rejected");if(H?.error({...u?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:et}:Li(ce),...Ft,operationOutcome:xe.operationOutcome,durationMs:xe.durationMs,statusClass:"unknown",terminalReason:xe.terminalReason}),!Ce.current||Bt)return;await Dt?.();return}let Sn=tn.error;if(Sn){if(!Ce.current||Bt)return;if(Fa(Sn)){ae=!0,Qi(Ve,Le,xt),qe.current=null,M.current=null,be("idle");let ce=Sn.message??"Your payment was declined.";m(ce),c?.(ce),C?.(un(ft,ce,{code:go(Sn),declineCode:Ai(Sn)})),oi({billingApiUrl:o,sessionId:Ve,nonce:Le,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:T,providerDeclineReason:go(Sn)??"provider_declined",...en.intentKind==="payment"&&en.providerObjectId.startsWith("pi_")?{providerIntentId:en.providerObjectId}:{}}})}else H?.error({...Li(Sn),...Ft,operationOutcome:En.operationOutcome,durationMs:En.durationMs,statusClass:"unknown",terminalReason:En.terminalReason}),await Dt?.();return}if(Xn(tn),!Bt)throw new Error("Invalid provider returned for APM intent")}catch(Ve){if(Ve===ei){let Le=H?.now()??globalThis.performance?.now()??Date.now();H?.error({errorCode:rp(yn),stage:Bn,requestCategory:yn,paymentMethodCategory:"wallet",provider:"stripe",...me?{walletType:me}:{},operationOutcome:"watchdog_expired",checkoutSessionId:In,durationMs:Math.max(0,Le-Ut),statusClass:"timeout",failureCategory:qt,attempt:We,terminalReason:"provider_error"}),H?.flush?.().catch(()=>{})}m(),ee(T,Ve,Ve===ei?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",A?.generation,Ve===ei)}finally{if(window.clearTimeout(hn),oe!==null&&(window.clearTimeout(oe),Ee.current.delete(oe)),!at){let Ve=H?.now()??globalThis.performance?.now()??Date.now();H?.performance({stage:"callback",durationMs:Math.max(0,Ve-Ut),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",..._t?{statusClass:"timeout"}:{}})}Ce.current&&ct(!1)}},[N,Ie,e,t,n,z,Te,ne,o,he,a,s,c,C,k,ee,De,yt,Yt,Et,Y,ke]),Ne=gt(()=>gl(i),[i]),wt=gt(()=>i.map($u),[i]);return Xe(Fo,{children:[p(Bi,{state:Fe,placeholderTestId:"flopay-wallet-placeholder",borderRadius:ve,children:Xe("div",{ref:Re,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[je&&Xe("button",{ref:He,type:"button","data-testid":"flopay-wallet-retry-button",onClick:F,style:rs,children:["Try ",os(ye)," again"]}),pt!=="idle"&&Xe("div",{role:"status","aria-live":"polite",children:[p("p",{children:"We are still confirming your payment. Check its status before trying again."}),p("button",{type:"button",onClick:Se,disabled:pt==="checking",style:rs,children:pt==="checking"?"Checking payment status\u2026":"Check payment status"})]}),pe&&p(Io,{identity:pe.identity,methodLabel:pe.methodLabel,onComplete:Pt,onCancel:()=>Pt(null)},pe.id),pt==="idle"&&p("div",{style:{display:pe?"none":void 0},children:p(Sc,{onReady:_=>{lt(xi(_,wt))},onLoadError:_=>{lt("load_error"),cs(Y,"stripe","wallet","provider_error")},onClick:async _=>{let d=Y?.now()??globalThis.performance?.now()??Date.now();Me.current=_.expressPaymentType,U.current=mc(_.expressPaymentType);let m=!0,A=window.setTimeout(()=>{m=!1,_.reject()},Ku),T=k?await k(U.current):{proceed:!0};if(window.clearTimeout(A),!m)return;if(!T.proceed){Ae.current.delete(ke),_.reject();return}let J=Qe(_.expressPaymentType);Je.current={generation:J,startedAt:d},Ae.current.set(ke,{generation:J,method:_.expressPaymentType,accountPatch:T.accountPatch,sessionId:T.sessionId,nonce:T.nonce}),$e(!1),Y?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:J,..._.expressPaymentType==="apple_pay"||_.expressPaymentType==="google_pay"?{walletType:_.expressPaymentType}:{}}),f?.(U.current),_.resolve()},onConfirm:mt,onCancel:()=>{let _=Ae.current.get(ke);Ae.current.delete(ke),Y?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",..._?{attempt:_.generation}:{}}),bt(_?.generation),qe.current=null,$e(!1),Ue.current=!0,I()},options:{...hl,paymentMethods:Ne,emailRequired:zt,billingAddressRequired:zt}},ke)})]})}),ze&&p(Sr,{status:"processing"})]})}function Ec(e,t,n){let o=bc(n,t,"inline_apm");return{...e,paymentMethodTypes:[t],...o?{setupFutureUsage:o}:null}}function as({method:e,sessionId:t,nonce:n,email:o,billingName:a,onBuyerIdentityReady:i,billingApiUrl:s,onTokenizedBody:c,onErrorChange:f,onDecline:C,onCancel:E,runBeforeButtonClick:k,onButtonClick:z,isProcessing:ne,submitButtonColor:O,submitButtonBorderRadius:ve,submitButtonStyle:V,errorText:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=ss(),Ie=is(),[Y,Fe]=ie(!1),lt=G(!1),[ze,ct]=ie(!1),[zt,pe]=ie("loading"),[Te,Pt]=ie(""),Re=!gn(o?.trim()),He=!Re||gn(Te.trim()),ke=Ye(async()=>{if(!N||!Ie||ne||lt.current||!ze)return;lt.current=!0,Fe(!0);let Q=k?await k("card"):{proceed:!0};if(!Q.proceed){lt.current=!1,Fe(!1);return}z?.("card");let je=Q.sessionId??t,$e=Q.nonce??n,pt=aa(a?.trim()),be=dr({email:Q.accountPatch?.email?.trim()||o?.trim()||Te.trim(),firstName:Q.accountPatch?.firstName?.trim()||pt.firstName,lastName:Q.accountPatch?.lastName?.trim()||pt.lastName}),ye=be.email,re=dr({...Q.accountPatch,...be});try{if(f?.(null),!gn(ye))throw new Error("A valid email address is required for payment.");await i?.(be);let M=await Ie.submit();if(M.error){f?.(M.error.message??"Payment failed.");return}let Ce=[be.firstName,be.lastName].filter(Boolean).join(" "),Ue=await N.createPaymentMethod({elements:Ie,params:{billing_details:{email:ye,...Ce?{name:Ce}:{}}}});if(Ue.error||!Ue.paymentMethod){f?.(Ue.error?.message??"Failed to create payment method.");return}let Me=Ue.paymentMethod;if(!je||!ye)throw new Error("Missing sessionId or email for payment.");let U=Me.type||e,vt=await ri(s,he,je,$e??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:U,paymentMethodId:null,intentKind:"payment"});if(vt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let qe=vt.clientSecret;Xt(Ir,{clientSecret:qe,sessionId:je,nonce:$e,accountPatch:re,paymentMethodId:Me.id,paymentMethodType:Me.type??e,gateway:"stripe"});let{error:Ee,paymentIntent:Je}=await N.confirmPayment({clientSecret:qe,confirmParams:{return_url:window.location.href,payment_method:Me.id},redirect:"if_required"});if(Ee){Xt(Ir);let De=Ee.message??"Payment failed.";f?.(De),C?.(un("card",De,{code:Ee.code})),await oi({billingApiUrl:s,sessionId:je,nonce:$e,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:Ee.code??"provider_declined"}});return}let Ae=Je?.status;if(!ra(Ae)){Xt(Ir);let De=Ae==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";f?.(De),C?.(un("card",De,{code:Ae??"missing_payment_intent"}));return}Xt(Ir);let Qe=typeof Je?.payment_method=="string"?Je.payment_method:Je?.payment_method?.id;c({id:Qe??Me.id,type:"card",threeDSecureActionResultTokenId:Je?.id,gateway:"stripe",paymentMethodType:Me.type??e},{accountPatch:re,paymentMethodCategory:"apm",sessionId:je,nonce:$e})}catch(M){f?.(M instanceof Error?M.message:"Payment failed. Please try again.")}finally{lt.current=!1,Fe(!1)}},[N,Ie,ne,ze,k,z,t,n,o,a,Te,i,s,he,e,c,f,C]);return Xe("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Re&&p("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Re&&Xe("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",p("input",{type:"email",autoComplete:"email",required:!0,value:Te,onChange:Q=>Pt(Q.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),p(Wu,{onReady:()=>pe("ready"),onLoadError:()=>{pe("load_error"),cs(pn(P),"stripe","apm")},onChange:Q=>{ct(!!Q.complete)},options:{layout:Pl,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...a?.trim()?{name:a.trim()}:{},...gn(o?.trim())?{email:o?.trim()}:{}}}}}),p(vl,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{ke()},disabled:!ze||!He||Y||ne||zt!=="ready",color:O,borderRadius:ve,style:V,children:Y?"Processing\u2026":`Pay with ${ga(e)}`}),v&&p(Eo,{margin:"0.75rem 0 0",children:v})]})}function Pc({sessionId:e,nonce:t,email:n,billingName:o,onBuyerIdentityReady:a,billingApiUrl:i,paymentElementMethods:s,stripeInstance:c,paymentElementBaseOptions:f,futureUseSession:C,onTokenizedBody:E,onErrorChange:k,onButtonClick:z,onDecline:ne,runBeforeButtonClick:O,onLoadStateChange:ve,isProcessing:V=!1,submitButtonColor:v="#4A49FF",submitButtonBorderRadius:P=8,submitButtonStyle:he,buttonAppearance:N,themeId:Ie,onExpandApm:Y,expandedApmMethod:Fe}){let{emitInstrument:lt}=Do(Gn),[ze,ct]=ie(null),[zt,pe]=ie(null),Te=G(!1),{request:Pt,collect:Re,finish:He}=ko();ht(()=>{s.length>0&&c?ve?.("ready"):c||ve?.("loading")},[s.length,c,ve]);let ke=Ye(async ye=>{if(!c||Te.current||V)return;Te.current=!0,pe(ye);let re=O?await O("card"):{proceed:!0};if(!re.proceed){Te.current=!1,pe(null);return}z?.("card");let M=re.sessionId??e,Ce=re.nonce??t,Ue=aa([re.accountPatch?.firstName,re.accountPatch?.lastName].filter(Boolean).join(" ")||o),Me=dr({email:re.accountPatch?.email?.trim()||n?.trim(),firstName:re.accountPatch?.firstName?.trim()||Ue.firstName,lastName:re.accountPatch?.lastName?.trim()||Ue.lastName});if(!gn(Me.email)){pe(null);let qe=await Re(ga(ye),Me);if(!qe){Te.current=!1;return}Me=qe,pe(ye)}let U=Me.email,vt=dr({...re.accountPatch,...Me});try{if(k?.(null),!M||!gn(U))throw new Error("Missing sessionId or email for payment.");await a?.(Me);let qe=await ri(i,lt,M,Ce??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ye,paymentMethodId:null,intentKind:"payment"});if(qe.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ee=qe.clientSecret;Xt(Ir,{clientSecret:Ee,sessionId:M,nonce:Ce,accountPatch:vt,paymentMethodType:ye,gateway:"stripe"});let{error:Je,paymentIntent:Ae}=await c.confirmPayment({clientSecret:Ee,confirmParams:{return_url:window.location.href,payment_method_data:{type:ye,billing_details:{name:[Me.firstName,Me.lastName].filter(Boolean).join(" "),...U?{email:U}:{}}}},redirect:"if_required"});if(Je){Xt(Ir);let bt=Je.message??"Payment failed.";k?.(bt),ne?.(un("card",bt,{code:Je.code})),await oi({billingApiUrl:i,sessionId:M,nonce:Ce,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ye,providerDeclineReason:Je.code??"provider_declined"}});return}let Qe=Ae?.status;if(!ra(Qe)){Xt(Ir);let bt=Qe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";k?.(bt),ne?.(un("card",bt,{code:Qe??"missing_payment_intent"}));return}Xt(Ir);let De=typeof Ae?.payment_method=="string"?Ae.payment_method:Ae?.payment_method?.id;E({id:De??Ae?.id,type:"card",threeDSecureActionResultTokenId:Ae?.id,gateway:"stripe",paymentMethodType:ye},{accountPatch:vt,paymentMethodCategory:"apm",sessionId:M,nonce:Ce})}catch(qe){k?.(qe instanceof Error?qe.message:"Payment failed. Please try again.")}finally{Te.current=!1,pe(null)}},[c,V,O,z,e,t,n,Re,i,lt,o,a,E,k,ne]),[Q,je]=ie(null),$e=Y?Fe??null:Q,pt=Ye(ye=>{Te.current||V||$e&&$e!==ye||(ic(ye)?Y?Y(ye):je(ye):ke(ye))},[$e,V,ke,Y]),be=gt(()=>Q?Ec(f,Q,C):null,[Q,f,C]);return p("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Pt?p(Io,{identity:Pt.identity,methodLabel:Pt.methodLabel,onComplete:He,onCancel:()=>He(null)},Pt.id):s.map(ye=>{let re=Fe===ye,M=zt===ye,Ce=zt!==null&&zt!==ye||Fe!=null&&Fe!==ye;return Xe(Hu.Fragment,{children:[p(fl,{method:ye,themeId:Ie,submitting:M,disabled:Ce,highlighted:re,hasNextStep:ic(ye),onClick:()=>pt(ye),backgroundColor:N?.backgroundColor,borderColor:N?.borderColor,textColor:N?.textColor,borderRadius:N?.borderRadius,fontFamily:N?.fontFamily}),!Y&&Q===ye&&be&&c&&p(no,{stripe:c,options:be,children:p(as,{method:ye,sessionId:e,nonce:t,email:n,billingName:o,onBuyerIdentityReady:a,billingApiUrl:i,onTokenizedBody:E,onErrorChange:k,onDecline:ne,onCancel:()=>je(null),runBeforeButtonClick:O,onButtonClick:z,isProcessing:V,submitButtonColor:v,submitButtonBorderRadius:P,submitButtonStyle:he})},ye)]},ye)})})}function hp({sessionId:e,nonce:t,billingApiUrl:n,telemetry:o,email:a,userId:i,onComplete:s,onError:c,onDecline:f,onTokenizedBody:C,firstName:E,lastName:k,chv:z,className:ne,submitLabel:O,isProcessing:ve,error:V,onErrorChange:v,showPayPal:P=!0,showStripe:he=!0,walletPresentation:N="auto",enabledPaymentMethods:Ie,enabledPaymentMethodCountries:Y,showApplePay:Fe=!0,showGooglePay:lt=!0,layout:ze="default",theme:ct,buttonsTheme:zt,buttonsStyles:pe,appearance:Te,cardButtonContent:Pt,cardBackButtonContent:Re,cardTitleContent:He,showSecurityFooter:ke,onButtonClick:Q,onBeforeButtonClick:je,onBuyerIdentityReady:$e,enableAVS:pt,cardFieldOrder:be,cardPreFormSlot:ye,avsLayout:re="row",country:M,zip:Ce,addressLine1:Ue,addressLine2:Me,city:U,state:vt,onCountryChange:qe,onZipChange:Ee,avsCheck:Je,checkoutType:Ae,checkoutLayout:Qe,totalAmount:De=0,currency:bt="usd",initialCardOpen:Yt=!1,directPaypal:yt,isSubscription:Et=!1,session:I,dataAttachmentPending:ee=!1,dataAttachmentRequiresIdentity:Oe=!1,debug:F=!1}){let Se=jr(),mt=zi(),Ne=Do(cr),{emitInstrument:wt}=Do(Gn),_=G(null);_.current||(_.current=qa());let d=_.current,[,m]=ie(0),A=G(null);A.current||(A.current=ea());let T=A.current,J=gt(()=>({browser:T,capability:d,presentationMode:"popup"}),[T,d]),ft=I??Ne.session,me=gt(()=>({futureUse:ft?.futureUse,futureUseUnsupported:ft?.futureUseUnsupported}),[ft?.futureUse,ft?.futureUseUnsupported]),We=ft?.gateways?.paypal?.providerObjectType??yt?.providerObjectType,H=ee||Ne.claimPending===!0,Ut=Oe||Ne.claimRequiresIdentity===!0,Ct=H&&!Ut,_t=zl(),at=n||_t,[oe,In]=ie(!1),[Bn,yn]=ie(null),[qt,Fn]=ie(M??""),[Dn,hn]=ie(Ce??""),[Tt,Ve]=ie(Ue??""),[Le,Rn]=ie(Me??""),[kt,On]=ie(U??""),[mn,jt]=ie(vt??""),[Qt,Jn]=ie(""),[$n,en]=ie({}),xt=G(Ce??""),Cn=G(M??""),ln=G(Ue??""),Ft=G(Me??""),fn=G(U??""),Dt=G(vt??""),on=G(""),Bt=G({});ht(()=>{let r=(g,W,fe,D,X)=>{if(Bt.current[g])return;let Rt=W?.trim();!Rt||Rt===fe.current||(fe.current=Rt,D(Rt),X?.(Rt))};r("country",M,Cn,Fn,qe),r("zip",Ce,xt,hn,Ee),r("addressLine1",Ue,ln,Ve),r("addressLine2",Me,Ft,Rn),r("city",U,fn,On),r("state",vt,Dt,jt)},[M,Ce,Ue,Me,U,vt,qe,Ee]);let ae=gt(()=>Lu(pt),[pt]),Zn=ae!==null,Xn=gt(()=>Ji(I),[I]),Qn=Au(I?.vault),tn=!!I?.gateways?.pcivault,En=Bl(I),ce=!!(I?.gateways?.stripe?.enabledPaymentMethods??Ie)?.includes("card")||Qr(I),et=Qn||ce||tn,u=!!(he&&et&&e),[xe,L]=ie(()=>ze!=="buttons"||Yt?e??null:null),[Pn,Nn]=ie(0),Jt=ze!=="buttons"||Yt||!!e&&xe===e,_n=I?.captureMethod,nt=G(Se);ht(()=>{nt.current=Se},[Se]);let[yr,Dr]=ie(null);ht(()=>{if(!u||!e||!Jt){Dr(null);return}let r=nt.current?nt.current.cardCapture({sessionId:e,captureMethod:_n}):new vu({sessionId:e,captureMethod:_n,billingApiUrl:at,telemetry:o});return Dr({sessionId:e,captureMethod:_n,billingApiUrl:at,telemetry:o,capture:r}),()=>{r.unmount()}},[u,e,Jt,_n,at,o]);let It=u&&e&&Jt&&yr?.sessionId===e&&yr.captureMethod===_n&&yr.billingApiUrl===at&&yr.telemetry===o?yr.capture:null,Ln=gt(()=>{let r=qt,g=ae?Kt(ae.postal_code,r):!1;return mp(r,Dn,g)},[ae,qt,Dn]),{avsInvalid:er,invalidAvsFields:tr}=gt(()=>{let r={line1:!1,city:!1,state:!1,zip:!1};if(!u||!ae)return{avsInvalid:!1,invalidAvsFields:r};let g=qt,W=(X,Rt)=>Kt(X,g)&&!Rt.trim(),fe={line1:W(ae.address_line_1,Tt),city:W(ae.city,kt),state:W(ae.state,mn),zip:Ln.empty||Ln.malformed};return{avsInvalid:fe.line1||fe.city||fe.state||fe.zip,invalidAvsFields:fe}},[u,ae,qt,Tt,kt,mn,Ln]),[$t,mr]=ie(!1),[fr,Tn]=ie(!1),[gr,Wn]=ie(!1),[hr,Er]=ie({line1:!1,city:!1,state:!1}),zn=G(!1),nr=G({email:!1,line1:!1,city:!1,state:!1,zip:!1}),rr=G(!1),Mt=Ye(r=>{nr.current[r]=!0,rr.current=!0},[]),Un=Ye(r=>!zn.current&&nr.current[r],[]),wn=Ye(r=>{Un(r)&&Er(g=>g[r]?g:{...g,[r]:!0})},[Un]),[or,ar]=ie(()=>Xi(I?.vault,{billingApiUrl:at,sessionId:e,nonce:t})),[tt,nn]=ie(Yt&&et?"card":"buttons"),[cn,Mn]=ie(null),Or=tt==="expanding"||tt==="card",Pr=I?.gateways?.stripe&&!En?"stripe":void 0,_r=Ye(()=>{wt?.({class:"card_surface",provider:Pr})},[Pr,wt]),Hn=G(null),rn=Ye(r=>{Hn.current&&clearTimeout(Hn.current),Hn.current=setTimeout(()=>{Hn.current=null,r()},ha)},[]);ht(()=>()=>{Hn.current&&clearTimeout(Hn.current)},[]);let Nr=G(!1),[an,w]=ie(0),b=G(null),j=Ye(()=>{_r(),L(e??null),Nr.current&&(Nr.current=!1,w(r=>r+1)),Nn(r=>r+1),nn("expanding"),rn(()=>nn("card"))},[rn,_r,e]),K=Ye(()=>{nn("collapsing"),rn(()=>nn("buttons"))},[rn]),it=Ye(r=>{Mn(r),nn("apm-expanding"),rn(()=>nn("apm-form"))},[rn]),Wt=Ye(()=>{nn("apm-collapsing"),rn(()=>{nn("buttons"),Mn(null)})},[rn]);ht(()=>{ze==="buttons"&&Yt&&et&&(L(e??null),nn("card"))},[ze,Yt,et,e]);let[de,x]=ie(null),B=G(!1),R=G(null),l=G("idle"),[y,h]=ie(!1),$=G(y);$.current=y;let[le,Pe]=ie(()=>yt?.existingOrderId?{orderId:yt.existingOrderId,attempts:1}:null),Ht=G(le);ht(()=>{Ht.current=le},[le]);let te=G(null),we=gt(()=>{if($e||Ne.claimBuyerIdentity||I?.buyerIdentified!==!1||!e||!t)return;let r=`${at}|${e}|${t}`;te.current?.key!==r&&(te.current={key:r,claim:Co(new Bo(at,{telemetry:!1}),e,t,{...i?{userId:i}:{},...E?{firstName:E}:{},...k?{lastName:k}:{}})});let g=te.current.claim;return async W=>{await g(W)}},[$e,Ne.claimBuyerIdentity,I?.buyerIdentified,e,t,at,i,E,k]),Be=$e??Ne.claimBuyerIdentity??we,rt=V??Bn,Z=gt(()=>Uu(ct),[ct]),S=gt(()=>{let r=Z?.buttonsLayout??zu(zt);return pe?{...r,...pe,cardButton:{...r.cardButton,...pe.cardButton},cardFormContainer:{...r.cardFormContainer,...pe.cardFormContainer},backButton:{...r.backButton,...pe.backButton},backButtonIcon:{...r.backButtonIcon,...pe.backButtonIcon},submitButton:{...r.submitButton,...pe.submitButton},title:{...r.title,...pe.title}}:r},[Z,zt,pe]),q=Te??Z?.appearance,Ke=gt(()=>cl({appearance:q,buttonsStyles:S,layout:ze}),[q,S,ze]),ge=Ne.inlineSessionPatchProcessing??!1,_e=(ve??oe)||ge,dt=at.replace(/\/+$/,""),Ze=gt(()=>Ni({userId:i,email:a,firstName:E,lastName:k,country:M,zip:Ce},$n),[i,a,E,k,M,Ce,$n]),oo=[Ze.firstName,Ze.lastName].filter(r=>!!r?.trim()).join(" "),Ss=!gn(Ze.email?.trim()),ci=G(null);u&&ci.current===null&&(ci.current=Ss);let Lr=u&&(ci.current??Ss),di=gt(()=>fp(Qt,Lr),[Qt,Lr]),ao=di.empty||di.malformed,qn=gt(()=>Se?Se.getRawProvider():null,[Se]),ws=gt(()=>mt?mt.getRawProvider():null,[mt]),Uo=De||100,io=bt.toLowerCase(),ui=gt(()=>q?bu(q):null,[q]),so=ui,ks=gt(()=>{let r=ui??{},g=r.rules??{};return{...r,rules:{...g,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...g[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...g[".AccordionItemContents"]??{}}}}},[ui]),Is=gt(()=>({...xl(De,ft?.captureMethod,me),currency:io,...so?{appearance:so}:null}),[De,io,ft?.captureMethod,me,so]),pi=bc(me,"paypal","paypal"),Rs=gt(()=>({mode:"payment",amount:Uo,currency:io,captureMethod:"manual",...pi?{setupFutureUsage:pi}:null,...so?{appearance:so}:null}),[Uo,io,pi,so]),ue=Ye(r=>{yn(r),v?.(r)},[v]),Es=G(0);ht(()=>{an!==Es.current&&(Es.current=an,ue(null))},[an,ue]);let yi=G(""),[_s,Uc]=ie(!1),mi=Ye(()=>{Uc(!0)},[]);ht(()=>{if(!u||!Lr||!Be||!_s||ao||yi.current)return;let r=dr({email:gn(Ze.email?.trim())?Ze.email?.trim():on.current.trim(),firstName:Ze.firstName?.trim(),lastName:Ze.lastName?.trim()});yi.current=JSON.stringify(r),en(g=>({...g,...r})),Promise.resolve(Be(r)).catch(g=>{yi.current="",ue(g instanceof Error?g.message:"Failed to attach buyer details.")})},[u,Lr,Be,_s,ao,Ze.email,Ze.firstName,Ze.lastName,ue]),ht(()=>{!u||!It||It.setCardFieldOrder?.(be??null,ae==null&&!Lr)},[u,It,be,ae,Lr]),ht(()=>{(tt==="expanding"||tt==="collapsing"||tt==="apm-expanding"||tt==="apm-collapsing")&&ue(null)},[tt,ue]);let vr=Ye((r,g,W)=>{f?.(un(r,g,W))},[f]),lo=Ye((r,g,W)=>{let fe=W?.popupBlocked??zr(g);fe&&d.markBlocked()&&m(Ge=>Ge+1);let D=Ba(os(r),fe,T.inAppBrowser),X=go(g),Rt=(X?.toLowerCase()==="error"?void 0:X)??yl(W?.code)??"external_payment_method_failed",lr=new Br(D,"api_error",{code:"external_payment_method_failed",param:r,details:{providerCode:Rt,popupBlocked:fe,inAppBrowser:T.inAppBrowser,appFamily:T.appFamily,popupCapability:d.current(),presentationMode:W?.presentationMode??"popup"}});W?.telemetryReported||pn(Se)?.error(xo({...J,presentationMode:W?.presentationMode??"popup"},{errorCode:fe?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:W?.provider??(r==="paypal"?"paypal":"stripe"),paymentMethodCategory:W?.paymentMethodCategory??(r==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:W?.terminalReason??(fe?"popup_blocked":"provider_error")})),x(null),ze==="buttons"&&(nn("buttons"),Mn(null)),ue(D),c?.(lr),console.error("[FloPay] External payment method failed:",{method:r,code:Rt,popupBlocked:fe})},[T,J,Se,ze,c,d,ue]);ht(()=>{if(!u||!e){ar(null);return}let r={billingApiUrl:dt,sessionId:e,nonce:t},g=Xi(I?.vault,r);if(g){ar(g);return}if(!Jt){ar(null);return}let W=`${dt}\0${e}\0${t??""}`,fe=b.current;if(fe&&fe.key===W){ar(fe.mount);return}ar(null);let D=!0;return new Bo(dt).getVaultCapture(e,t).then(X=>{if(!D)return;let Rt=Xi(X,r);Rt?.verificationRequired&&!X.html&&(b.current={key:W,mount:Rt}),Rt?ar(Rt):ue("Failed to load the secure card form.")}).catch(X=>{D&&ue(X instanceof Error?X.message:"Failed to load the secure card form.")}),()=>{D=!1}},[u,Jt,Pn,e,I?.vault,dt,t,ue]);let ir=G({onComplete:s,onError:c,updateError:ue,emitDecline:vr,resolvedAccount:Ze,avsConfig:ae,avsCheckProp:Je,sessionId:e,nonce:t,baseUrl:dt,captureMethod:I?.captureMethod,paymentId:I?.paymentId,authorizationExpiresAt:I?.authorizationExpiresAt,serverSideCardGateway:En});ir.current={onComplete:s,onError:c,updateError:ue,emitDecline:vr,resolvedAccount:Ze,avsConfig:ae,avsCheckProp:Je,sessionId:e,nonce:t,baseUrl:dt,captureMethod:I?.captureMethod,paymentId:I?.paymentId,authorizationExpiresAt:I?.authorizationExpiresAt,serverSideCardGateway:En};let fi=G(!1),Ts=Ye(()=>{let r=ir.current,g=r.resolvedAccount.email?.trim(),W=gn(g)?g:on.current.trim();if(!gn(W))return null;let fe=r.resolvedAccount.firstName?.trim(),D=r.resolvedAccount.lastName?.trim(),X=Cn.current.trim()||r.resolvedAccount.country?.trim()||"",Rt=r.avsConfig?Kt(r.avsConfig.state,X):!1,lr=r.avsConfig?Kt(r.avsConfig.address_line_1,X):!1,Ge=r.avsConfig?Kt(r.avsConfig.postal_code,X):!1,st=r.avsConfig?Kt(r.avsConfig.city,X):!1,ut=r.avsConfig?Kt(r.avsConfig.address_line_2,X):!1,Ot=lr&&!Rt&&Ge?_u(X,(xt.current??"").trim()):null,Jr=Rt?Dt.current:Ot;return{accountData:{userId:r.resolvedAccount.userId??"",email:W,...fe?{firstName:fe}:{},...D?{lastName:D}:{},...Ge&&xt.current?{zip:xt.current}:{},...st&&fn.current?{city:fn.current}:{},...Jr?{state:Jr}:{},...lr&&ln.current?{addressLine1:ln.current}:{},...ut&&Ft.current?{addressLine2:Ft.current}:{},...X?{country:X}:{}},...r.avsCheckProp===void 0?{}:{avsCheck:r.avsCheckProp},...r.avsConfig?{avsConfig:{country:Kt(r.avsConfig.country,X),postal_code:Ge,address_line_1:lr,address_line_2:ut,city:st,state:Rt}}:{}}},[]),Ms=G(H);Ms.current=H,ht(()=>{H||rt!==uc||ir.current.updateError(null)},[H,rt]),ht(()=>{!u||!It||It.setSubmitGate?.(er||H||ao||y)},[u,It,er,H,ao,y]),ht(()=>{if(!u||!It)return;fi.current=!1;let r=null,g=()=>{r&&clearTimeout(r),r=setTimeout(()=>{r=null,l.current="idle",x(null)},400)},W=It.on("submitting",()=>{mr(!0),R.current&&clearTimeout(R.current),l.current="validation-window",R.current=setTimeout(()=>{R.current=null,l.current==="validation-window"&&(l.current="processing")},op),x("processing");let Ge=ir.current;if(!Ge.sessionId||!Ge.nonce)return;let st=Ts();if(!st){Ge.updateError("Enter a valid email address."),l.current="idle",x(null);return}new Bo(Ge.baseUrl).patchAccountSnapshot(Ge.sessionId,Ge.nonce,st,{telemetryMode:"best_effort"}).catch(ut=>{if(!ip(ut))return;let Ot=ut instanceof Error?ut.message:"Please check your billing address and try again.";Ge.updateError(Ot),l.current="idle",x(null),Ge.onError?.(ut instanceof Br?ut:new Br(Ot,"api_error"))})}),fe=It.on("complete",Ge=>{_o(Ge.sessionId??ir.current.sessionId),l.current="terminal",h(!1),x("success"),setTimeout(()=>{if(fi.current)return;fi.current=!0;let st=ir.current,ut=Ji(st)||Ge.outcome==="authorized",Ot=st.serverSideCardGateway?{}:{paymentIntentId:Ge.intentId};ir.current.onComplete?.(ut?{status:"authorized",...Ot,paymentId:Ge.paymentId??st.paymentId,sessionId:Ge.sessionId??st.sessionId,authorizationExpiresAt:Ge.authorizationExpiresAt??st.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Ot,checkoutMethod:"card"})},600)}),D=It.on("decline",Ge=>{let st=ir.current,ut=Ge.message??"Your payment was declined. Please try another card or contact your bank.";l.current="terminal",h(!1),st.updateError(ut),x("error");let Ot=Ge.failureOutcome??Fu(Ge.declineReason)??"authorization_declined";st.emitDecline("card",ut,{code:Ot,declineCode:Ot}),g()}),X=It.on("error",Ge=>{let st=ir.current,ut=Ge.message??"There was a problem processing your payment. Please try again.";l.current="terminal",h(!1),st.updateError(ut),x("error"),st.onError?.(new Br(ut,"api_error",{code:Ge.failureOutcome??"capture_failed"})),g()}),Rt=It.on("challenge_dismissed",()=>{R.current&&(clearTimeout(R.current),R.current=null),l.current="processing",h(!0),x(null)}),lr=It.on("blocked",()=>{if($.current){ir.current.updateError(ap);return}if(!Ms.current){mr(!0);return}mi(),ir.current.updateError(uc)});return()=>{r&&(clearTimeout(r),r=null),R.current&&(clearTimeout(R.current),R.current=null),l.current="idle",h(!1),x(null),W(),fe(),D(),X(),Rt(),lr()}},[u,It,mi,Ts]);let br=!!yt?.clientId,qo=Array.isArray(Ie),Sa=qo&&Ie.length>0,As=qo&&Ie.includes("paypal"),wa=G(null);wa.current===null&&(wa.current=Mu());let co=wa.current?"redirect":ml(T,N,d.current()),{expressMethods:ka,paymentElementMethods:gi}=gt(()=>Du(Ie,{excludePaypal:br}),[Ie,br]),xs=br||!!mt||As&&co==="redirect",qc=gt(()=>xs?ka.filter(r=>r!=="paypal"):ka,[ka,xs]),jc=gt(()=>{let r=[];return Fe&&r.push("apple_pay"),lt&&r.push("google_pay"),r},[Fe,lt]),uo=qo?qc:jc,$c=he&&uo.length>0,Bs=Zn?qt:M,Ia=gt(()=>Ru(gi,Bs,Y),[gi,Bs,Y]),hi=gt(()=>({mode:"payment",amount:Uo,currency:io,paymentMethodCreation:"manual",appearance:ks}),[Uo,io,ks]),[Fs,Ds]=ie("loading"),[Os,Ns]=ie("loading"),[Ls,zs]=ie("loading"),[Wc,Pi]=ie(!1),[Us,vi]=ie("loading"),[bi,Hc]=ie();ht(()=>{Hc(ea())},[]);let Ra=bi?.inAppBrowser,Ea=bi?Da(bi,yt?.approvalPresentation,We??(Et?"subscription":"order")):"popup",qs=P&&(br||(qo?As:Ra===!1)),js=he&&$c,jo=(!Ct||!!Ne.waitForDataAttachment)&&qs&&br,$s=Us==="retrying"||Us==="exhausted",$o=null;he&&(mt?$o=ws:co==="redirect"&&($o=qn));let Ws=gt(()=>({...J,presentationMode:co}),[J,co]),Wo=!Ct&&qs&&!!$o&&(!br||$s),po=!Ct&&js&&!!qn,Ho=!Ct&&he&&Sa&&Ia.length>0&&!!qn,Vc=jo&&!$s?Wc:Wo&&Fi(Fs),Kc=po&&Fi(Os),Gc=Ho&&Ls!=="load_error",Hs=r=>r==="loading"||r==="ready",Vs=jo||Wo&&Hs(Fs)||po&&Hs(Os)||Ho&&Ls!=="load_error",_a=G(!1);ht(()=>{if(!_a.current){if(!he&&!P){_a.current=!0;let r=new Br("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");c?.(r),ue(r.message)}else if(!he&&P&&!br){_a.current=!0;let r=new Br("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");c?.(r),ue(r.message)}else if(Ra!==void 0&&!Ct&&!et&&!Vs){_a.current=!0;let r=new Br("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"});c?.(r),ue(r.message)}}},[he,P,br,Ra,Ct,et,Vs,c,ue]);let Ks=G(!1);ht(()=>{if(Ks.current||!Sa)return;let r=[];Fe!==!0&&r.push("showApplePay"),lt!==!0&&r.push("showGooglePay"),r.length!==0&&(Ks.current=!0,console.warn(`[FloPay] ${r.join(" / ")} ${r.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.`))},[Sa,Fe,lt]);let Gs=Ye((r,g)=>Ne.applyInlineSessionPatch?Ne.applyInlineSessionPatch(r).then(W=>({error:null,sessionId:W.sessionId||e,nonce:W.session?.clientSecret||t})).catch(W=>{let fe=sc(g,W);return ue(fe.message),c?.(fe),{error:fe,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ne.applyInlineSessionPatch,t,c,e,ue]),sr=Ye(async r=>{if(r!=="card"&&Ct&&await Ne.waitForDataAttachment?.(),!je)return{proceed:!0};try{let g=await je({method:r,sessionId:e||void 0,createSession:Ne.inlineSessionDraft});if(g===!1)return{proceed:!1};if(g&&typeof g=="object"){g.account&&en(fe=>({...fe??{},...g.account}));let W=await Gs(g,r);return W.error?{proceed:!1,accountPatch:g.account}:{proceed:!0,accountPatch:g.account,sessionId:W.sessionId,nonce:W.nonce}}return{proceed:!0}}catch(g){let W=sc(r,g);return ue(W.message),c?.(W),{proceed:!1}}},[Gs,Ne.inlineSessionDraft,Ne.waitForDataAttachment,Ct,je,c,e,ue]),Ys=Ye(async(r,g)=>{if(B.current)return;B.current=!0,In(!0),x("processing"),ue(null);let W=g?.sessionId??e,fe=g?.nonce??t,D=Ni(Ze,g?.accountPatch),X=g?.completionPaymentMethodId??oa(r),Rt=r.originalPaymentMethodId?{...r,originalPaymentMethodId:void 0}:r,lr=dp(r),Ge=g?.presentationMode?Qa(pn(Se),{...J,presentationMode:g.presentationMode}):void 0,st=()=>{wt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:lr}),Ge?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...ur,requestCategory:"process_payment"})};try{let ut=new Bo(dt),Ot=await ut.processPayment(D.userId??"",{sessionId:W,nonce:fe,paymentMethodCategory:g?.paymentMethodCategory??pp(r),tokenizedData:Rt,accountData:{...g?.accountPatch,userId:D.userId??"",email:D.email??"",firstName:D.firstName||void 0,lastName:D.lastName||void 0,...Su({avsConfig:ae,country:Cn.current,zip:xt.current,city:fn.current,state:Dt.current,addressLine1:ln.current,addressLine2:Ft.current})},...Cu({chv:z,avsCheck:Je,checkoutType:Ae,checkoutLayout:Qe,avsConfig:ae,country:Cn.current})}),Jr=async dn=>{let Zr=Ji(I)||dn?.status==="authorized";_o(W),Ge?.terminal({outcome:"payment_succeeded",...ur}),x("success"),Pe(null),await new Promise(Zo=>setTimeout(Zo,600));let Cr;typeof dn?.paymentId=="string"?Cr=dn.paymentId:I?.paymentId&&(Cr=I.paymentId);let Xr;typeof dn?.authorizationExpiresAt=="string"?Xr=dn.authorizationExpiresAt:I?.authorizationExpiresAt&&(Xr=I.authorizationExpiresAt),s?.(Zr?{status:"authorized",...Cr===void 0?{}:{paymentId:Cr},sessionId:typeof dn?.sessionId=="string"?dn.sessionId:W,...Xr===void 0?{}:{authorizationExpiresAt:Xr},paymentIntentId:r.threeDSecureActionResultTokenId,paymentMethodId:X,checkoutMethod:r.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:r.threeDSecureActionResultTokenId,paymentMethodId:X,checkoutMethod:r.isPaypal?"paypal":"card"})};if(Ot.ok){await Jr(Ot.status===204?null:await Ot.json().catch(()=>null));return}let jn=await Ot.json().catch(()=>null);if(jn?.type==="paypal_redirect_required"){let dn=jn.threeDSecureToken,Zr=jn.paymentMethodId||r.id||"";if(!Se||!dn){x("error"),ue("PayPal authorization required but no token provided.");return}try{let Cr=mt?.getRawProvider();if(!Cr){ue("PayPal is not available.");return}let Xr={return_url:window.location.href};Zr&&(Xr.payment_method=Zr);let{error:Zo}=await Cr.confirmPayment({clientSecret:dn,confirmParams:Xr,redirect:"if_required"});if(Zo){x("error");let sl=Zo.message??"PayPal payment failed.";ue(sl),vr("paypal",sl,{code:Zo.code})}}catch(Cr){x("error"),ue(Cr instanceof Error?Cr.message:"PayPal authorization failed.")}return}if(jn?.type==="paypal_direct_required"){let dn=jn.orderId;if(!dn){x("error"),ue("PayPal retry required but no order id provided.");return}let Zr=Ht.current?.attempts??0;if(Zr>=2){x("error"),ue("PayPal payment could not be completed after multiple attempts."),vr("paypal","paypal_direct_required retry limit exceeded");return}Pi(!1),vi("loading"),Pe({orderId:dn,attempts:Zr+1}),x(null);return}if(Ot.headers.get(Zu)===Xu){let dn=await Qu(ut,W,fe);if(dn!==void 0){await Jr(dn);return}}ku(Ot.status,jn)?Ge?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}):st(),x("error");let il=jn?.message??"Payment failed. Please try again.";ue(il),vr(r.isPaypal?"paypal":"card",il,{code:jn?.code??jn?.gatewayErrorCode,declineCode:jn?.declineCode??jn?.gatewayDeclineReason}),await new Promise(dn=>setTimeout(dn,400))}catch(ut){Ic(ut)||st(),x("error"),ue(ut instanceof Error?ut.message:"An unexpected error occurred"),await new Promise(Ot=>setTimeout(Ot,400))}finally{In(!1),x(null),B.current=!1}},[dt,e,t,Ze,ae,Je,Ae,Qe,z,Se,mt,I,s,ue,vr,wt,J]),An=Ye((r,g)=>{C?C(r):Ys(r,g)},[C,Ys]),Vo=`${wc}:${e}`;ht(()=>{if(typeof window>"u")return;let r=localStorage.getItem(Vo);if(!r)return;let g;try{g=JSON.parse(r)}catch{Xt(Vo);return}if(!g||typeof g.createdAt!="number"||Date.now()-g.createdAt<0||Date.now()-g.createdAt>kc||typeof g.paymentMethodId!="string"||typeof g.providerIntentId!="string"||typeof g.paymentMethodType!="string"||g.sessionId!==e||!t||g.nonce!==t||!uo.includes(g.paymentMethodType)){Xt(Vo);return}Xt(Vo),An({id:g.paymentMethodId,type:"card",threeDSecureActionResultTokenId:g.providerIntentId,gateway:"stripe",paymentMethodType:g.paymentMethodType},{...g.accountPatch?{accountPatch:g.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[An,t,e,Vo,uo]);let Js=G(!1);ht(()=>{if(typeof window>"u"||Js.current)return;let[r,g,W]=vc();if(!r||!g||wa.current||!Se)return;let fe=Se.getRawProvider();if(!fe)return;let D=st=>{let ut=localStorage.getItem(st);if(!ut)return null;try{return JSON.parse(ut)}catch{return Xt(st),null}},X=D(Ir)??D(lc),Rt;if(X?.clientSecret){if(X.clientSecret!==g)return;Rt={...X.accountPatch?{accountPatch:X.accountPatch}:{},...X.sessionId?{sessionId:X.sessionId}:{},...X.nonce?{nonce:X.nonce}:{}}}else if(X?.sessionId&&X.sessionId!==e)return;Js.current=!0,Xt(Ir),Xt(lc),window.history.replaceState({},"",Cc());let lr=X?.paymentMethodType??X?.tokenType??"card",Ge="card";(async()=>{if(W==="failed"){let Tr="Payment was declined. Please try again.";ue(Tr),vr(Ge,Tr);return}let{paymentIntent:st,error:ut}=await fe.retrievePaymentIntent(g);if(ut){let Tr=ut.message??"Failed to retrieve payment status.";ue(Tr),vr(Ge,Tr,{code:ut.code});return}let Ot=st?.status,Jr=ra(Ot);if(!st||!Jr){let Tr=Ot==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";ue(Tr),vr(Ge,Tr,{code:Ot??"missing_payment_intent"});return}let jn=typeof st.payment_method=="string"?st.payment_method:st.payment_method?.id;An({id:jn??X?.paymentMethodId??X?.tokenId??st.id,type:"card",threeDSecureActionResultTokenId:st.id,gateway:X?.gateway??"stripe",paymentMethodType:lr},Rt)})()},[e,An,Se,ue,vr]);let Ci=Ye(r=>{r.preventDefault()},[]);if(!(u||Se!==null))return p("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let Ko=ze==="buttons",xn=q?.variables,Yc=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Si=xn?.colorBackground,Jc=Si&&!Yc.has(Si)?Si:void 0,Go=S.cardInputBorder??(Ko?"#e5e7eb":"#A4A4FF"),Zs=xn?.colorDanger??"#dc2626",Vt=r=>tr[r]&&(hr[r]||$t),Ta=ao&&(gr||$t),Vn=r=>r?Zs:Go,Ma=(Ln.malformed||Ln.empty)&&(fr||$t),Zc=Vn(Ma),wi=S.cardFormContainer?.backgroundColor??Jc??(Ko?"white":"#EDEDFF"),yo=S.cardInputBackground??xn?.colorBackground??"white",ki=ho(Re),Xs=ho(He),mo=S.nameInput,Qs=S.cardInputFontSize??gp(mo?.fontSize)??xn?.fontSizeBase??"16px",el=typeof mo?.fontFamily=="string"?mo.fontFamily:xn?.fontFamily??"Poppins, sans-serif",tl=dl(mo?.fontWeight)??400,Xc=S.cardInputColor??(typeof mo?.color=="string"?mo.color:void 0)??xn?.colorText??"#262833",Qc=S.cardInputPlaceholderColor??"#9ca3af",Zt=xn?.borderRadius??"8px",Gr=xn?.borderRadius??S.cardButton?.borderRadius??Zt,Yr=xn?.colorPrimary??"#4A49FF",ed=xn?.colorPrimaryHover??Qo(Yr,.12),Ii=xn?.colorText??"#262833",Ri={fontSize:Qs,fontFamily:el,fontWeight:tl,color:Xc,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},Yo={marginTop:"0.375rem",...Ri,fontSize:"0.75rem",lineHeight:1.4,color:Zs},td={"--flopay-input-placeholder-color":Qc,"--flopay-input-font-size":Qs,"--flopay-input-font-family":el,"--flopay-input-font-weight":String(tl)},Jo=S.cardFormContainer??{},Ei=Jo.padding??(Ko?"0":"1rem"),_i=Jo.borderRadius??Zt,nd=It&&or?p(Ti,{capture:It,html:or.html,messageToken:or.messageToken,expectedOrigin:or.expectedOrigin,verificationRequired:or.verificationRequired,theme:Ke,submitLabel:O,onReady:()=>{if(!Lr&&!ae||typeof document>"u")return;let r=()=>{let W=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(W){zn.current=!0;try{W.focus()}finally{zn.current=!1}}};rr.current||r()},onError:r=>{r&&or.verificationRequired&&l.current==="idle"&&(Nr.current=!0),ue(r)},onValidation:r=>{let g=l.current;(g==="idle"||g==="validation-window")&&(ue(r),r&&l.current==="validation-window"&&(R.current&&(clearTimeout(R.current),R.current=null),l.current="idle",x(null)))}},an):p("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=Xe("div",{onFocusCapture:r=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(r.target.tagName)&&_r()},style:{backgroundColor:wi,borderRadius:_i,...Jo,padding:Ei,...td,display:"flex",flexDirection:"column"},children:[p("style",{children:`
|
|
4
|
+
`)}`]}):null;return yt&&!H?pe?to("div",{children:et}):null:qi("div",{children:[et,Oe&&to(Io,{identity:Oe.identity,methodLabel:Oe.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Se,onCancel:()=>Se(null)}),qi("div",{"aria-hidden":vt||Oe?!0:void 0,style:vt||Oe?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:ja},children:[!Me&&!vt&&to("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"}}),to("div",{ref:Q,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:ja,display:"flex",opacity:Me?1:0},"aria-busy":I||v},Ee)]},Ee),Qe&&to("button",{ref:Ce,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:Cn,style:Qd,children:"Try PayPal again"})]})}function $a(e){return to(jl,{...e})}function $l(e){return to(jl,{...e})}import{jsx as Wl,jsxs as ru}from"react/jsx-runtime";function Eo({children:e,margin:t,icon:n=!0,styleOverride:o}){return ru("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,...n?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...o??{}},children:[n&&Wl("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:Wl("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]})}import{clearCachedInlineCheckout as Wa,clearCachedInlineSession as ji,hashCreateParams as Hl,legacyCachedSessionMatchesDraft as Vl,persistCachedInlineIdempotencyKey as Ha,persistCachedInlineSession as Va,readCachedInlineIdempotencyKey as Kl,readCachedInlineSession as Gl,serializeCreateParams as ca}from"@flopay/shared";import{resolveBillingApiUrl as ou}from"@flopay/shared";import{useEffect as Hr,useMemo as au,useRef as Yl,useState as Jl}from"react";import{jsx as iu}from"react/jsx-runtime";function Ka({flopay:e,paypalFlopay:t,options:n,onInstrument:o,children:a}){let[i,s]=Jl(e instanceof Promise?null:e),[c,f]=Jl(t instanceof Promise||!t?null:t),C=Yl(null),E=Yl(null),k=Ro(o);Hr(()=>{k({class:"lifecycle",name:"checkout.mount"})},[k]),Hr(()=>{i&&k({class:"lifecycle",name:"sdk.initialize.ready"})},[k,i]),Hr(()=>{if(i)return pn(i)?.subscribe?.(k)},[k,i]),Hr(()=>{if(!(!c||c===i))return pn(c)?.subscribe?.(k)},[k,i,c]),Hr(()=>{if(!i)return;let O=pn(i);return C.current=O?.beginCheckout()??O?.now()??0,O?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{O?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),Hr(()=>{let O=!1;return e instanceof Promise?e.then(ve=>{O||s(ve)},()=>{O||k({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):s(e),()=>{O=!0}},[k,e]),Hr(()=>{let O=!1;if(!t){f(null);return}return t instanceof Promise?t.then(ve=>{O||f(ve)},()=>{O||k({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):f(t),()=>{O=!0}},[k,t]),Hr(()=>{if(!i||E.current===i)return;E.current=i;let O=pn(i);O?.log({name:"checkout.rendered",stage:"checkout_render"}),k({class:"lifecycle",name:"checkout.rendered"}),O?.performance({stage:"checkout_render",durationMs:O.elapsed(C.current??0),durationMode:"machine"})},[k,i]);let z=ou(n?.billingApiUrl),ne=au(()=>({flopay:i,paypalFlopay:c,billingApiUrl:z,emitInstrument:k}),[i,c,z,k]);return iu(Gn.Provider,{value:ne,children:a})}import{markSessionRecentlyCompleted as _o,wasSessionRecentlyCompleted as $i}from"@flopay/shared";async function Ga(e,t){e.current?.abort();let n=new AbortController;e.current=n;try{return await t(n.signal)}finally{e.current===n&&(e.current=null)}}import{completeSavedCardNextAction as su,loadFloPay as Zl,PaymentAPI as Ja,runSavedCardChallenge as lu}from"@flopay/js";import{classifyPaymentRejection as cu,FloPayError as St,isAuthorizationOnlySession as du,isMountableVaultBlock as uu,isSetupIntentClientSecret as pu,normalizeCheckoutFailureOutcome as Xl}from"@flopay/shared";var ua="card";async function yu(e,t,n){if(n){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:i,error:s}=await e.retrieveSetupIntent(t);return{error:s,intent:i??null}}if(typeof e.retrievePaymentIntent!="function")return null;let{paymentIntent:o,error:a}=await e.retrievePaymentIntent(t);return{error:a,intent:o??null}}async function mu(e,t,n,o){if(o){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:s,error:c}=await e.confirmCardSetup(t,n);return{error:c,intent:s??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:a,error:i}=await e.confirmCardPayment(t,n);return{error:i,intent:a??null}}function To(e){return new St("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function fu(){return new St("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Hi(e,t){return Object.assign(e,{checkoutMethod:t})}function xr(e,t){let n=e instanceof St?e:new St(e instanceof Error?e.message:"Payment provider failed.","api_error",{code:"provider_runtime_failure"});return Object.assign(n,{checkoutMethod:t,telemetryFailureCategory:"provider_runtime",telemetryRequestCategory:"provider_sdk"})}async function da(e,t){try{return await e()}catch(n){throw xr(n,t)}}function ec(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 tc(e){return lu(e)}async function Mo(e,t){let{billingApiUrl:n,sessionId:o,signal:a}=t,i=t.nonce??t.session.clientSecret,s=new Ja(n,{telemetry:!1}),c=`${n.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(o)}/status`,f;try{f=await su({billingApiUrl:n,sessionId:o,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:a,createDeclineError:E=>kr({type:E.declineReason??"authorization_declined",gatewayErrorCode:E.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"})},s)}catch(E){if(a.aborted||E instanceof Error&&E.name==="AbortError")throw E instanceof St&&E.code==="three_ds_aborted"?E:To(E);if(!(E instanceof St)||E.code!=="three_ds_timeout"&&E.code!=="checkout_processing_timeout")throw E;try{f=await s.waitForCheckoutSessionCompletion(o,{initialDelayMs:0,nonce:i,statusUrl:c,timeoutMs:5e3,signal:a})}catch(z){if(a.aborted)throw To(z);if(!(z instanceof St)||z.code!=="checkout_processing_timeout")throw z}let k=f&&qr(f,t.session);if(!Ar(k)&&k?.status!=="expired"){if(t.telemetry){let z=new Ja(n);try{z.reportThreeDsAbandoned(o)}finally{z.destroy()}}throw fu()}}let C=f&&qr(f,t.session);if(!Ar(C))throw So(C);return{...Mr(C,o),checkoutMethod:"card"}}function kr(e,t="Payment failed. Please try again.",n){let o=n?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),a=e?.message??t,i=wo(a)??a,s=Hi(new St(i,"api_error",{code:e?.code??Xl(e?.outcome)??Xl(e?.type)??e?.gatewayErrorCode}),o);return e?.orderId&&(s.orderId=e.orderId),s}function Wi(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function Ya(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function nc(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let a of n)if(typeof a=="string"&&a.length>0&&(!t?.requirePaymentIntentClientSecret||Ya(a)))return a;let o=e?.data;if(o&&typeof o=="object"){let a=o,i=[a.threeDSecureToken,a.clientSecret,a.stripeClientSecret,a.id];for(let c of i)if(typeof c=="string"&&c.length>0&&(!t?.requirePaymentIntentClientSecret||Ya(c)))return c;let s=a.gateways;if(s&&typeof s=="object"){let c=s.stripe;if(c&&typeof c=="object"){let f=c,C=[f.stripeClientSecret,f.clientSecret];for(let E of C)if(typeof E=="string"&&E.length>0&&(!t?.requirePaymentIntentClientSecret||Ya(E)))return E}}}}async function gu({billingApiUrl:e,sessionId:t,nonce:n,responseJson:o}){let a=nc(o,{requirePaymentIntentClientSecret:!0});if(typeof a=="string"&&a.length>0)return{type:"3ds_required",threeDSecureToken:a};if(!t)return null;try{let c=(await new Ja(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(Ya(c))return{type:"3ds_required",threeDSecureToken:c}}catch{}return null}async function Ao({billingApiUrl:e,sessionId:t,session:n,nonce:o,tokenizedData:a,returnUrl:i,telemetry:s}){let c=e.replace(/\/+$/,""),f=t??n.id,C=o??n.clientSecret,E=n.customer?.id??n.accountData?.userId??"",k=n.customer?.email??n.accountData?.email??"",z=n.customer?.firstName??n.accountData?.firstName??"",ne=n.customer?.lastName??n.accountData?.lastName??"",O=n.customer?.country??n.accountData?.country??void 0,ve=n.customer?.zip??n.accountData?.zip??void 0,v=await new Ja(c,s===!1?{telemetry:!1}:void 0).processPayment(E,{sessionId:f,nonce:C,paymentMethodCategory:"saved",tokenizedData:a,accountData:{userId:E,email:k,firstName:z,lastName:ne,country:O,zip:ve},returnUrl:i??Wi(n)});if(v.ok){let N=typeof v.json=="function"?await v.json().catch(()=>null):null;if(du(n)||N?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof N?.paymentId=="string"?N.paymentId:n.paymentId,sessionId:typeof N?.sessionId=="string"?N.sessionId:f,authorizationExpiresAt:typeof N?.authorizationExpiresAt=="string"?N.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:ra(a),checkoutMethod:Ql(a,n)}};let Ie=a?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...Ie?{paymentIntentId:Ie}:{},paymentMethodId:ra(a),checkoutMethod:Ql(a,n)}}}let P;try{P=await v.json()}catch(N){throw new St("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:v.status,cause:N})}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 N=nc(P);if(!N)throw new St("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:v.status});return{type:P.type,threeDSecureToken:N,paymentMethodId:P.paymentMethodId}}if(P?.gatewayErrorCode==="authentication_required"){let N=await gu({billingApiUrl:c,sessionId:f,nonce:C,responseJson:P});if(N)return N;throw Hi(new St("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let he=new St(P?.message??"Payment failed. Please try again.","api_error",{code:P?.code??P?.gatewayErrorCode,declineCode:P?.declineCode??P?.gatewayDeclineReason,statusCode:v.status});throw Object.assign(he,{telemetryOutcome:cu(v.status,P)})}async function Za(e,{flopay:t,paypalFlopay:n,attempt3DS:o,billingApiUrl:a,sessionId:i,session:s,returnUrl:c,telemetry:f,signal:C}){let E=t?.getRawProvider();if(!E)throw xr(new St("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!o||!e.threeDSecureToken)throw Hi(new St("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let k=pu(e.threeDSecureToken),z=null,ne=e.paymentMethodId,O=await da(()=>yu(E,e.threeDSecureToken,k),"card");if(O){if(O.error)throw xr(new St(O.error.message??`Failed to retrieve 3DS ${k?"setup":"payment"} status.`,"api_error",{code:O.error.code}),"card");let V=O.intent;!ne&&V?.payment_method&&(typeof V.payment_method=="string"?ne=V.payment_method:"id"in V.payment_method&&(ne=V.payment_method.id??void 0))}let ve=ne?await da(()=>mu(E,e.threeDSecureToken,{payment_method:ne,return_url:c??Wi(s)??window.location.href},k),"card"):null;if(ve){if(ve.error)throw xr(new St(ve.error.message??"3DS authentication failed.","api_error",{code:ve.error.code}),"card");z=ve.intent}else{let V=await da(()=>E.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(V.error)throw xr(new St(V.error.message??"3DS authentication failed.","api_error",{code:V.error.code}),"card");z=(k?V.setupIntent:V.paymentIntent)??null}if(z&&(z.status==="requires_capture"||z.status==="succeeded"||z.status==="processing")){let V=await Ao({billingApiUrl:a,sessionId:i,session:s,telemetry:f,tokenizedData:{id:z.id,type:"card",threeDSecureActionResultTokenId:z.id},returnUrl:c});return V.type==="success"?{...V.result,paymentIntentId:V.result.paymentIntentId??z.id,paymentMethodId:V.result.paymentMethodId??ne}:V.type==="next_action_required"?Mo(V,{billingApiUrl:a,sessionId:i??s.id,session:s,signal:C}):Za(V,{flopay:t,paypalFlopay:n,attempt3DS:o,billingApiUrl:a,sessionId:i,session:s,returnUrl:c,telemetry:f,signal:C})}throw xr(new St("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let k=(n??t)?.getRawProvider();if(!k)throw xr(new St("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:ne}=await da(()=>k.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(ne)throw xr(new St(ne.message??"PayPal authorization failed.","api_error",{code:ne.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:z}=await da(()=>k.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:c??Wi(s)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(z)throw xr(new St(z.message??"PayPal authorization failed.","api_error",{code:z.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new St("Unsupported payment redirect state.","api_error")}function pa(e){if(e instanceof St){let o=wo(e.message);return o&&o!==e.message?Object.assign(new St(o,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.",n=wo(t)??t;return new St(n,"api_error")}function Vi(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,o=uu(e.data.session?.vault)||Qr(e.data.session);if(!t&&!n&&!o)throw new St("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 Ql(e,t){return e?e.isPaypal?"paypal":"card":t&&Qr(t)?"card":void 0}async function Ki({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:o,telemetry:a}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[s,c]=await Promise.all([Zl(e,{billingApiUrl:n,locale:o,telemetry:a}),i?Zl(i,{billingApiUrl:n,locale:o,telemetry:a}).catch(C=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",C),null)):Promise.resolve(null)]);if(!s)throw new St("The payment provider did not initialize.","authentication_error");let f=null;return i?f=c:t&&(f=s),{flopay:s,paypalFlopay:f}}import{PaymentAPI as Bo,PciVaultCardCapture as hu,toStripeAppearance as Pu}from"@flopay/js";import{buildCheckoutProcessMetadata as vu,buildProcessPaymentAvsAccount as bu,COUNTRY_OPTIONS as Cu,classifyPaymentRejection as Su,clearStripePayPalReturn as wu,computeVaultCardThemeColors as ku,darkenHex as Iu,FloPayError as Br,filterStripeMethodsByCountryGate as Ru,getPostalCodeExample as Eu,getPostalCodeLabel as ts,getStateFromPostalCode as _u,getStateLabel as Gi,getStateOptions as Tu,getStripeMethodDisplayName as fa,hasMatchingStripePayPalReturn as Mu,isAuthorizationOnlySession as Yi,isAVSFieldVisible as Kt,isMountableVaultBlock as Au,isPostalCodeSupported as xu,isSetupIntentClientSecret as Ji,isValidEmail as gn,isValidPostalCode as Bu,needsStripeMethodExplicitConfirm as rc,normalizeBeforeButtonClickError as oc,normalizeCheckoutFailureOutcome as Fu,partitionStripeMethods as Du,randomUuidV4 as Ou,readMatchingStripePayPalContinuation as Nu,readStripeRedirectParams as gc,resolveAVSConfig as Lu,resolveButtonsLayoutTheme as zu,resolveSetupFutureUsage as hc,resolveTheme as Uu,resolveVaultMountOptions as Zi,STRIPE_PAYPAL_RESUME_KEY as qu,derivePrimaryTileStyle as ju,stripeExpressMethodToOptionKey as $u,stripeRedirectReturnUrl as Pc,toCssWeight as Wu}from"@flopay/shared";import{ExpressCheckoutElement as vc,PaymentElement as Hu,Elements as no,useElements as as,useStripe as is}from"@stripe/react-stripe-js";import Vu,{useCallback as Ye,useContext as Do,useEffect as ht,useMemo as gt,useRef as G,useState as ie}from"react";function xo(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function Xa(e,t){if(e)return{error:n=>e.error(xo(t,n)),log:n=>e.log(xo(t,n)),performance:n=>e.performance(xo(t,n)),terminal:n=>e.terminal(xo(t,n)),now:()=>e.now(),elapsed:n=>e.elapsed(n),setCheckoutContext:n=>e.setCheckoutContext(n),beginCheckout:n=>e.beginCheckout(n),disable:()=>e.disable(),subscribe:n=>e.subscribe(n),flush:()=>e.flush(),destroy:()=>e.destroy()}}import{darkenHex as Ic}from"@flopay/shared";import{Fragment as Fo,jsx as p,jsxs as Xe}from"react/jsx-runtime";var Ir="flopay_stripe_resume",ac="flopay_wallet_resume",bc="fw1",Ku="fw2",Cc=300*1e3,Gu=900,Yu=25e3,Ju=25e3,Zu=1e4,ur={provider:"paypal",paymentMethodCategory:"paypal"},Xu="x-flopay-process-result-source",Qu="status";async function ep(e,t,n){try{let o=(await e.getUnifiedCheckoutSession(t,n)).data.session;if(o?.status==="complete")return null;if(o?.status==="authorized")return{status:"authorized",paymentId:o.paymentId,sessionId:o.id||t,authorizationExpiresAt:o.authorizationExpiresAt}}catch{}}var Qa={},ma=class{constructor(t){this.reason=t}};function tp(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function Xt(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 ss(e){return`${Ku}:${e}`}function ei(e){return Xt(ss(e))}function ti(e,t){if(typeof window>"u")return null;let n=ss(e);try{let o=localStorage.getItem(n);if(!o)return null;let a=JSON.parse(o);return typeof a.createdAt!="number"||Date.now()-a.createdAt<0||Date.now()-a.createdAt>Cc||a.sessionId!==e||a.nonce!==t||typeof a.clientSecret!="string"||typeof a.providerObjectId!="string"||typeof a.paymentMethodType!="string"?(ei(e),null):a}catch{return ei(e),null}}function np(e){return Xt(ss(e.sessionId),e)}function ic(e,t,n){let o=ti(e,t);return!o||o.clientSecret!==n?!1:ei(e)}function Xi(e,t,n){if(typeof window>"u")return;ti(e,t)?.clientSecret===n&&ei(e)}function rp(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function Qi(e,t,n){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 o=n?e.status==="succeeded":na(e.status),a=rp(e);return!o||!a?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:a}}async function sc(e,t,n){let o=null;try{return await Promise.race([_l(e,t),new Promise(a=>{o=window.setTimeout(()=>{o!==null&&n?.delete(o),a(null)},Zu),n?.add(o)})])}finally{o!==null&&(window.clearTimeout(o),n?.delete(o))}}function op(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Sc(e){return e instanceof Br&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function ni(e,t,...n){let o=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:o});try{return await new Bo(e,{telemetry:!1}).createSessionIntent(...n)}catch(a){throw Sc(a)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:o}),a}}var es=qu,ya=new Map,ap=250,lc="Just a moment \u2014 we are finalizing your order. Please press pay again.",ip="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function ls(e,t,n,o){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk",...o?{terminalReason:o}:{}})}async function ri({billingApiUrl:e,sessionId:t,nonce:n,request:o}){if(!(!t||!n))try{await new Bo(e,{telemetry:!1}).reportSessionIntentDecline(t,n,o)}catch{}}function sp(e){return e instanceof Br&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function wc({event:e,fallbackEmail:t,fallbackName:n}){let o=e.billingDetails,a=t?.trim(),i=oa(n),s=i.firstName?i:oa(o?.name);return dr({email:gn(a)?a:o?.email?.trim(),firstName:s.firstName,lastName:s.lastName})}async function lp({event:e,prepared:t,email:n,billingName:o,methodLabel:a,collect:i}){let s=wc({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||o});return gn(s.email)?s:i(a,s)}var ga=180,cc=`flopay-card-enter ${ga}ms cubic-bezier(0, 0, 0.2, 1) both`,dc=`flopay-card-exit ${ga}ms cubic-bezier(0.4, 0, 0.2, 1) both`,cp=`flopay-buttons-enter ${ga}ms cubic-bezier(0, 0, 0.2, 1) both`,dp=`flopay-buttons-exit ${ga}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function up(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function cs(e){return ju(e)}var pp={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function yp(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 ns={width:"100%",minHeight:ea,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 uc(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function rs(e){return e==="paypal"?"PayPal":fa(e)}function mp(e){let t=Eu(e);return`Enter a valid ${ts(e)}${t?` (e.g. ${t})`:""}`}function fp(e,t,n){let o=xu(e),a=t.trim(),i=n&&o,s=i&&!a,c=i&&!!a&&!Bu(e,a);return{visible:n,supported:o,required:i,empty:s,malformed:c}}function gp(e,t){let n=e.trim(),o=t&&!n,a=t&&!!n&&!gn(n);return{required:t,empty:o,malformed:a,value:n}}function hp(e){return typeof e=="number"?`${e}px`:e}function ds(e){return p(Pp,{...e})}function pc({sessionId:e,nonce:t,email:n,billingApiUrl:o,onTokenizedBody:a,onErrorChange:i,isProcessing:s=!1,onButtonClick:c,onDecline:f,onTechnicalFailure:C,runBeforeButtonClick:E,billingName:k,onBuyerIdentityReady:z,onLoadStateChange:ne,placeholderBorderRadius:O,popupCapabilityOwner:ve,externalTelemetryContext:V,presentationMode:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=is(),Ie=as(),Y=gt(()=>Xa(pn(P),V),[V,P]),[Fe,lt]=ie("loading");ht(()=>{ne?.(Fe)},[Fe,ne]);let[ze,ct]=ie(!1),zt=G(!1),pe=!gn(n?.trim())||!k?.trim(),{request:Te,collect:Pt,finish:Re}=ko(),He=G(!1),ke=G(null),Q=G(null),[je,$e]=ie(0),[pt,be]=ie(!1),ye=G(!1),re=G(new Map),{startAttempt:M,finishAttempt:Ce,invalidateAttempt:Ue,isAttemptInvalidated:Me,isAttemptCurrent:U,generationRef:vt}=sa((I,ee,Oe)=>{C?.(I,ee,{...Oe,popupBlocked:Oe?.popupBlocked??zr(ee),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:v,terminalReason:"overlay_timeout"}),be(!0),$e(F=>F+1)},{onHandoffObserved:()=>{ve.markAvailable(),Y?.log({name:"provider.popup.opened",stage:"overlay_open",...ur,attempt:vt.current})}});ht(()=>{pt&&Q.current?.focus()},[pt,je]);let qe=Ye(()=>{$e(I=>I+1)},[]),Ee=Ye((I,ee,Oe)=>{Ue(Oe),C?.("paypal",I,{code:ee,popupBlocked:zr(I),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:v}),be(!0),qe()},[Ue,C,v,qe]),Je=Ye(()=>{window.setTimeout(()=>{(ke.current?.querySelector("iframe")??ke.current)?.focus()},0)},[]);ht(()=>{ye.current&&(ye.current=!1,Je())},[Je,je]);let Ae=Ye(()=>{be(!1),i?.(null),Je()},[Je,i]);ht(()=>{if(!N||He.current)return;let[I,ee,Oe]=gc();if(!I||!ee)return;let F=Nu(ee);if(!F)return;He.current=!0;let Se=!0,mt=ya.get(ee);mt||(mt=Oe==="failed"?Promise.resolve(null):Promise.resolve().then(()=>N.retrievePaymentIntent(ee)),ya.set(ee,mt));let Ne={accountPatch:F.accountPatch,sessionId:F.sessionId,nonce:F.nonce},wt=()=>{Y?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...ur,requestCategory:"provider_sdk"})};return Y?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...ur}),(async()=>{try{ct(!0);let d=await mt;if(!Se)return;if(d?.error){ya.delete(ee),wt(),i?.(d.error.message??"Failed to retrieve PayPal payment status.");return}if(wu(),ya.delete(ee),Oe==="failed"){let A="PayPal payment was declined. Please try again.";Y?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}),i?.(A),f?.(un("paypal",A));return}let m=d?.paymentIntent;if(m&&m.id!==I){wt(),i?.("Failed to match the returned PayPal payment.");return}if(m&&(m.status==="requires_capture"||m.status==="succeeded")){let A=typeof m.payment_method=="string"?m.payment_method:m.payment_method?.id;a({id:A??m.id,type:"card",threeDSecureActionResultTokenId:m.id,isPaypal:!0},{...Ne,presentationMode:"redirect"})}else{let A="PayPal payment was not completed. Please try again.";Y?.terminal({outcome:m?.status==="canceled"?"payment_cancelled":"payment_declined",...ur,terminalReason:m?.status==="canceled"?"cancelled":"provider_declined"}),i?.(A),f?.(un("paypal",A))}}catch(d){if(!Se)return;ya.delete(ee),wt(),i?.(d instanceof Error?d.message:"Failed to complete PayPal payment.")}finally{Se&&ct(!1)}})(),()=>{Se=!1,He.current=!1}},[N,a,i,f,Y]);let Qe=Ye(async(I=!1)=>{let ee=E?await E("paypal"):{proceed:!0};if(!ee.proceed)return re.current.delete(je),!1;let Oe=M("paypal");return re.current.set(je,{generation:Oe,accountPatch:ee.accountPatch,sessionId:ee.sessionId,nonce:ee.nonce}),be(!1),Y?.log({name:`provider.${I?"redirect.started":"handoff.requested"}`,stage:I?"redirect":"overlay_open",...ur,attempt:Oe}),c?.("paypal"),!0},[c,Y,E,M,je]),De=Ye(async I=>{if(s||ze||!await Qe()){I.reject();return}I.resolve()},[s,Qe,ze]),bt=Ye(async I=>{if(!N||!Ie)return;let ee=re.current.get(je);if(ee&&!U(ee.generation)){re.current.delete(je);return}if(!ee&&Me()||ee&&!Ce(ee.generation))return;ee||Ce();let Oe=ee??null;if(re.current.delete(je),!Oe&&E){let _=await E("paypal");if(!_.proceed){I.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}Oe={accountPatch:_.accountPatch,sessionId:_.sessionId,nonce:_.nonce}}let F=Oe?.sessionId??e,Se=Oe?.nonce??t,mt=await lp({event:I,prepared:Oe,email:n,billingName:k,methodLabel:"PayPal",collect:Pt});if(!mt){I.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Ne=mt.email,wt={...Oe?.accountPatch,...dr(mt,!0)};try{if(ct(!0),i?.(null),!F||!gn(Ne))throw new Error("Missing sessionId or email for PayPal payment");await z?.(mt);let _=N.createPaymentMethod,{error:d,paymentMethod:m}=await _({type:"paypal"});if(d){Ee(d,"stripe_paypal_create_payment_method_failed",ee?.generation),I.paymentFailed({reason:"fail"});return}let A=await ni(o,he,F,Se??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:m?.id??null,intentKind:"payment"});if(A.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let T=A.clientSecret,J={return_url:Pc()};if(m?.id&&(J.payment_method=m.id),!Xt(es,{clientSecret:T,sessionId:F,nonce:Se,accountPatch:wt})&&v==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:me,paymentIntent:We}=await N.confirmPayment({clientSecret:T,confirmParams:J,redirect:"if_required"});if(me){if(Xt(es),Ba(me)){let Ut=me.message??"Your payment was declined.";Y?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}),i?.(Ut),f?.(un("paypal",Ut,{code:go(me),declineCode:Mi(me)})),await ri({billingApiUrl:o,sessionId:F,nonce:Se,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:go(me)??"provider_declined"}})}else Ee(me,"stripe_paypal_confirm_failed",ee?.generation);return}Xt(es);let H=typeof We?.payment_method=="string"?We.payment_method:We?.payment_method?.id;a({id:H??We?.id,type:"card",threeDSecureActionResultTokenId:We?.id,isPaypal:!0},{accountPatch:wt,paymentMethodCategory:"paypal",presentationMode:v,sessionId:F,nonce:Se});return}catch(_){Ee(_,"stripe_paypal_failed",ee?.generation)}finally{ct(!1)}},[N,Ie,e,t,n,k,Pt,z,o,he,a,i,f,E,Ee,Ce,U,Me,Y,v,je]),Yt=Ye(async()=>{if(!(zt.current||s||ze||!N||!Ie)){zt.current=!0,ct(!0);try{if(!await Qe(!0))return;await bt({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{zt.current=!1,ct(!1)}}},[Ie,bt,s,Qe,N,ze]),yt=v==="redirect"?p("button",{type:"button",disabled:s||ze,onClick:()=>{Yt()},style:{width:"100%",minHeight:ea,border:"1px solid #d1d5db",borderRadius:O??8,background:"#ffc439",color:"#111827",cursor:s||ze?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):p(vc,{onReady:I=>lt(Ai(I,["paypal"])),onLoadError:()=>{lt("load_error"),ls(Y,"paypal","paypal","provider_error")},onClick:De,onConfirm:bt,onCancel:()=>{let I=re.current.get(je);re.current.delete(je),Y?.terminal({outcome:"payment_cancelled",...ur,terminalReason:"cancelled",...I?{attempt:I.generation}:{}}),Ue(I?.generation),be(!1),ye.current=!0,qe()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:pe,emailRequired:pe,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},je),Et=Xe(Fo,{children:[Xe("div",{ref:ke,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[pt&&p("button",{ref:Q,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Ae,style:ns,children:"Try PayPal again"}),Te&&p(Io,{identity:Te.identity,methodLabel:Te.methodLabel,onComplete:Re,onCancel:()=>Re(null)},Te.id),p("div",{style:{display:Te?"none":void 0},children:yt})]}),ze&&!Te&&p(Sr,{status:"processing"})]});return v==="redirect"?Et:p(xi,{state:Fe,placeholderTestId:"flopay-paypal-placeholder",borderRadius:O,children:Et})}function yc(e){return e==="apple_pay"||e==="google_pay"}function mc({sessionId:e,nonce:t,email:n,billingApiUrl:o,intentKind:a,expressMethods:i,onTokenizedBody:s,onErrorChange:c,onButtonClick:f,onDecline:C,onTechnicalFailure:E,runBeforeButtonClick:k,billingName:z,onBuyerIdentityReady:ne,onLoadStateChange:O,placeholderBorderRadius:ve,popupCapabilityOwner:V,externalTelemetryContext:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=is(),Ie=as(),Y=gt(()=>Xa(pn(P),v),[v,P]),[Fe,lt]=ie("loading");ht(()=>{O?.(Fe)},[Fe,O]);let[ze,ct]=ie(!1),zt=G(!gn(n?.trim())||!z?.trim()).current,{request:pe,collect:Te,finish:Pt}=ko(),Re=G(null),He=G(null),[ke,Q]=ie(0),[je,$e]=ie(!1),[pt,be]=ie(()=>ti(e,t)?"blocked":"idle"),[ye,re]=ie("google_pay"),M=G(null),Ce=G(!0),Ue=G(!1),Me=G("google_pay"),U=G("google_pay"),vt=G(null),qe=G(null),Ee=G(new Set),Je=G(null);ht(()=>(Ce.current=!0,()=>{Ce.current=!1;for(let _ of Ee.current)window.clearTimeout(_);Ee.current.clear()}),[]);let Ae=G(new Map),{startAttempt:Qe,finishAttempt:De,invalidateAttempt:bt,isAttemptInvalidated:Yt,isAttemptCurrent:yt,generationRef:Et}=sa((_,d,m)=>{E?.(_,d,{...m,popupBlocked:m?.popupBlocked??zr(d),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),re(_),$e(!0),Q(A=>A+1)},{onHandoffObserved:_=>{V.markAvailable(),Y?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Et.current,..._==="apple_pay"||_==="google_pay"?{walletType:_}:{}})},defersMissingTerminal:yc,onMissingTerminalDeferred:(_,d)=>{let m=Y?.now()??globalThis.performance?.now()??Date.now(),A=Je.current,T=A?.generation===d?A.startedAt:m;Y?.performance({stage:"overlay_return",durationMs:Math.max(0,m-T),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:d,...yc(_)?{walletType:_}:{}}),Y?.flush?.().catch(()=>{})}});ht(()=>{je&&He.current?.focus()},[je,ke]);let I=Ye(()=>{Q(_=>_+1)},[]),ee=Ye((_,d,m,A,T=!1)=>{bt(A),E?.(_,d,{code:m,popupBlocked:zr(d),telemetryReported:T,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),re(_),$e(!0),I()},[bt,E,I]),Oe=Ye(()=>{window.setTimeout(()=>{(Re.current?.querySelector("iframe")??Re.current)?.focus()},0)},[]);ht(()=>{Ue.current&&(Ue.current=!1,Oe())},[Oe,ke]);let F=Ye(()=>{$e(!1),c?.(null),Oe()},[Oe,c]),Se=Ye(()=>{M.current?.()},[]);ht(()=>{let _=ti(e,t);if(!_)return;let d=!1,m=!1,A=async()=>{if(!m){m=!0,d||be("checking");try{let T=await sc(N,_.clientSecret,Ee.current);if(d)return;let J=Qi(T,_.providerObjectId,Ji(_.clientSecret));if(J.kind==="confirmed"){if(!ic(e,t,_.clientSecret))return;M.current=null,be("idle"),s({id:J.paymentMethodId,type:"card",threeDSecureActionResultTokenId:J.intentId},{..._.accountPatch?{accountPatch:_.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(J.kind==="terminal"){Xi(e,t,_.clientSecret),M.current=null,be("idle"),re(_.paymentMethodType),$e(!0),I();return}be("blocked")}catch{d||be("blocked")}finally{m=!1}}};return M.current=A,be("blocked"),()=>{d=!0,M.current===A&&(M.current=null)}},[t,s,I,e,N]);let mt=Ye(async _=>{let d=!1,m=Ve=>{d||(d=!0,_.paymentFailed({reason:"fail",...Ve?{message:Ve}:{}}))};if(!N||!Ie){m();return}let A=Ae.current.get(ke);if(A&&!yt(A.generation)){Ae.current.delete(ke),m();return}if(!A&&Yt()){m();return}if(A&&!De(A.generation)){m();return}A||De();let T=_.expressPaymentType??A?.method??Me.current,J=A??null,ft=uc(T),me;T==="apple_pay"?me="apple_pay":T==="google_pay"&&(me="google_pay");let We=A?.generation??Et.current,H=Y,Ut=H?.now()??globalThis.performance?.now()??Date.now(),Ct=new AbortController,_t=!1,at=!1,oe=null,In=e,Bn="processing",yn="other",qt="provider_runtime",Fn,Dn=new Promise((Ve,Le)=>{Fn=Le}),hn=window.setTimeout(()=>{_t=!0,Ct.abort(),Fn(Qa)},Yu),Tt=async(Ve,Le,Rn)=>{Bn=Ve,yn=Le,qt=Le==="intent_create"||Le==="session_claim"?"transport_error":"provider_runtime";let kt=H?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([Rn,Dn])}finally{let On=H?.now()??globalThis.performance?.now()??Date.now();H?.performance({stage:Ve,durationMs:Math.max(0,On-kt),durationMode:"machine",requestCategory:Le,paymentMethodCategory:"wallet",provider:"stripe",..._t?{statusClass:"timeout"}:{}})}};try{if(ct(!0),c?.(null),!J&&k){let ce=await Tt("processing","other",k(ft));if(!ce.proceed){m();return}J={accountPatch:ce.accountPatch,sessionId:ce.sessionId,nonce:ce.nonce}}let Ve=J?.sessionId??e;In=Ve;let Le=J?.nonce??t,Rn=vt.current??J?.accountPatch,kt=wc({event:_,fallbackEmail:Rn?.email??n,fallbackName:[Rn?.firstName,Rn?.lastName].join(" ").trim()||z});if(!gn(kt.email)){m("Buyer details are required."),Te(rs(T),kt).then(ce=>{ce&&(vt.current=ce)});return}vt.current=null;let On={...J?.accountPatch,...dr(kt,!0)};await Tt("processing","session_claim",Promise.resolve(ne?.(kt)));let{error:mn}=await Tt("tokenization","provider_sdk",Ie.submit());if(mn){m(),ee(T,mn,"stripe_wallet_submit_failed",A?.generation);return}if(!Ve)throw new Error("Missing sessionId or email for payment.");let jt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:T,paymentMethodId:null,intentKind:a},Qt=JSON.stringify({sessionId:Ve,nonce:Le??"",request:jt}),Jn=qe.current,$n=Jn?.retryIdentity===Qt?Jn.authorizationAttemptId:Ou();qe.current={authorizationAttemptId:$n,retryIdentity:Qt};let en=await Tt("processing","intent_create",ni(o,he,Ve,Le??"",{...jt,authorizationAttemptId:$n},{signal:Ct.signal}));if(en.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let xt=en.clientSecret,Cn=np({createdAt:Date.now(),sessionId:Ve,...Le?{nonce:Le}:{},clientSecret:xt,providerObjectId:en.providerObjectId,paymentMethodType:T,accountPatch:On});window.clearTimeout(hn),at=!0,H?.performance({stage:"callback",durationMs:Math.max(0,(H?.now()??globalThis.performance?.now()??Date.now())-Ut),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let ln=H?.now()??globalThis.performance?.now()??Date.now(),Ft={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...me?{walletType:me}:{},attempt:We},fn=!1,Dt=null;H?.log({name:"payment.provider_confirmation.started",...Ft}),oe=window.setTimeout(()=>{oe!==null&&Ee.current.delete(oe),fn=!0;let ce=H?.now()??globalThis.performance?.now()??Date.now();H?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Ft,operationOutcome:"watchdog_expired",durationMs:Math.max(0,ce-ln),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),H?.flush?.().catch(()=>{}),Dt?.()},Ju),Ee.current.add(oe);let on=(ce,et)=>{oe!==null&&(window.clearTimeout(oe),Ee.current.delete(oe),oe=null);let u=H?.now()??globalThis.performance?.now()??Date.now(),xe=Math.max(0,u-ln),L=ce;fn&&(ce==="resolved"?L="resolved_late":ce==="returned_error"?L="returned_error_late":L="rejected_late");let Pn=et??(ce==="resolved"?"approved":"provider_error");return H?.log({name:"payment.provider_confirmation.returned",...Ft,operationOutcome:L,terminalReason:Pn}),H?.performance({...Ft,durationMs:xe,durationMode:"buyer",operationOutcome:L,terminalReason:Pn}),{durationMs:xe,operationOutcome:L,terminalReason:Pn}},Bt=!1,ae=!1,Zn=ce=>{if(!ce||typeof ce!="object")return null;let et=ce;if(et.error)return null;let u=et.setupIntent??et.paymentIntent,xe=Qi(u??null,void 0,!!et.setupIntent);return xe.kind==="confirmed"?xe:null},Xn=ce=>{if(Bt||A&&Et.current!==A.generation)return;let et=Zn(ce);if(!et)return;if(Cn&&!ic(Ve,Le,xt)){Bt=!0;return}let{intentId:u,paymentMethodId:xe}=et;Bt=!0,ae=!0,qe.current=null,M.current=null,Ce.current&&(be("idle"),ct(!1));let L=`${bc}:${Ve}`;Xt(L,{createdAt:Date.now(),sessionId:Ve,nonce:Le,accountPatch:On,paymentMethodId:xe,providerIntentId:u,paymentMethodType:T});try{s({id:xe,type:"card",threeDSecureActionResultTokenId:u},{accountPatch:On,paymentMethodCategory:"wallet",sessionId:Ve,nonce:Le})}finally{Xt(L)}},Qn=!1;Dt=async()=>{if(!(Qn||Bt||ae)){Qn=!0,Ce.current&&be("checking");try{let ce=await sc(N,xt,Ee.current);if(Bt||ae)return;let et=Ji(xt),u=Qi(ce,en.providerObjectId,et);if(u.kind==="confirmed"){Xn(et?{setupIntent:ce}:{paymentIntent:ce});return}if(u.kind==="terminal"){if(ae=!0,Xi(Ve,Le,xt),qe.current=null,M.current=null,!Ce.current)return;be("idle"),m(),ee(T,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",A?.generation,!0);return}Ce.current&&!ae&&(be("blocked"),ct(!1))}catch{Ce.current&&!ae&&(be("blocked"),ct(!1))}finally{Qn=!1}}},M.current=Dt;let tn,En;try{let ce=await(Ji(xt)?N.confirmSetup({elements:Ie,clientSecret:xt,redirect:"if_required"}):N.confirmPayment({elements:Ie,clientSecret:xt,redirect:"if_required"}));if(!ce||typeof ce!="object")throw new ma(tp(ce));if(tn=ce,!tn.error&&!Zn(tn))throw new ma("confirmation_result_unconfirmed");En=on(tn.error?"returned_error":"resolved",tn.error&&Ba(tn.error)?"provider_declined":void 0)}catch(ce){let et=ce instanceof ma?ce.reason:void 0,u=et!==void 0,xe=on(u?"returned_error":"rejected");if(H?.error({...u?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:et}:Ni(ce),...Ft,operationOutcome:xe.operationOutcome,durationMs:xe.durationMs,statusClass:"unknown",terminalReason:xe.terminalReason}),!Ce.current||Bt)return;await Dt?.();return}let Sn=tn.error;if(Sn){if(!Ce.current||Bt)return;if(Ba(Sn)){ae=!0,Xi(Ve,Le,xt),qe.current=null,M.current=null,be("idle");let ce=Sn.message??"Your payment was declined.";m(ce),c?.(ce),C?.(un(ft,ce,{code:go(Sn),declineCode:Mi(Sn)})),ri({billingApiUrl:o,sessionId:Ve,nonce:Le,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:T,providerDeclineReason:go(Sn)??"provider_declined",...en.intentKind==="payment"&&en.providerObjectId.startsWith("pi_")?{providerIntentId:en.providerObjectId}:{}}})}else H?.error({...Ni(Sn),...Ft,operationOutcome:En.operationOutcome,durationMs:En.durationMs,statusClass:"unknown",terminalReason:En.terminalReason}),await Dt?.();return}if(Xn(tn),!Bt)throw new Error("Invalid provider returned for APM intent")}catch(Ve){if(Ve===Qa){let Le=H?.now()??globalThis.performance?.now()??Date.now();H?.error({errorCode:op(yn),stage:Bn,requestCategory:yn,paymentMethodCategory:"wallet",provider:"stripe",...me?{walletType:me}:{},operationOutcome:"watchdog_expired",checkoutSessionId:In,durationMs:Math.max(0,Le-Ut),statusClass:"timeout",failureCategory:qt,attempt:We,terminalReason:"provider_error"}),H?.flush?.().catch(()=>{})}m(),ee(T,Ve,Ve===Qa?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",A?.generation,Ve===Qa)}finally{if(window.clearTimeout(hn),oe!==null&&(window.clearTimeout(oe),Ee.current.delete(oe)),!at){let Ve=H?.now()??globalThis.performance?.now()??Date.now();H?.performance({stage:"callback",durationMs:Math.max(0,Ve-Ut),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",..._t?{statusClass:"timeout"}:{}})}Ce.current&&ct(!1)}},[N,Ie,e,t,n,z,Te,ne,o,he,a,s,c,C,k,ee,De,yt,Yt,Et,Y,ke]),Ne=gt(()=>yl(i),[i]),wt=gt(()=>i.map($u),[i]);return Xe(Fo,{children:[p(xi,{state:Fe,placeholderTestId:"flopay-wallet-placeholder",borderRadius:ve,children:Xe("div",{ref:Re,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[je&&Xe("button",{ref:He,type:"button","data-testid":"flopay-wallet-retry-button",onClick:F,style:ns,children:["Try ",rs(ye)," again"]}),pt!=="idle"&&Xe("div",{role:"status","aria-live":"polite",children:[p("p",{children:"We are still confirming your payment. Check its status before trying again."}),p("button",{type:"button",onClick:Se,disabled:pt==="checking",style:ns,children:pt==="checking"?"Checking payment status\u2026":"Check payment status"})]}),pe&&p(Io,{identity:pe.identity,methodLabel:pe.methodLabel,onComplete:Pt,onCancel:()=>Pt(null)},pe.id),pt==="idle"&&p("div",{style:{display:pe?"none":void 0},children:p(vc,{onReady:_=>{lt(Ai(_,wt))},onLoadError:_=>{lt("load_error"),ls(Y,"stripe","wallet","provider_error")},onClick:async _=>{let d=Y?.now()??globalThis.performance?.now()??Date.now();Me.current=_.expressPaymentType,U.current=uc(_.expressPaymentType);let m=!0,A=window.setTimeout(()=>{m=!1,_.reject()},Gu),T=k?await k(U.current):{proceed:!0};if(window.clearTimeout(A),!m)return;if(!T.proceed){Ae.current.delete(ke),_.reject();return}let J=Qe(_.expressPaymentType);Je.current={generation:J,startedAt:d},Ae.current.set(ke,{generation:J,method:_.expressPaymentType,accountPatch:T.accountPatch,sessionId:T.sessionId,nonce:T.nonce}),$e(!1),Y?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:J,..._.expressPaymentType==="apple_pay"||_.expressPaymentType==="google_pay"?{walletType:_.expressPaymentType}:{}}),f?.(U.current),_.resolve()},onConfirm:mt,onCancel:()=>{let _=Ae.current.get(ke);Ae.current.delete(ke),Y?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",..._?{attempt:_.generation}:{}}),bt(_?.generation),qe.current=null,$e(!1),Ue.current=!0,I()},options:{...ml,paymentMethods:Ne,emailRequired:zt,billingAddressRequired:zt}},ke)})]})}),ze&&p(Sr,{status:"processing"})]})}function kc(e,t,n){let o=hc(n,t,"inline_apm");return{...e,paymentMethodTypes:[t],...o?{setupFutureUsage:o}:null}}function os({method:e,sessionId:t,nonce:n,email:o,billingName:a,onBuyerIdentityReady:i,billingApiUrl:s,onTokenizedBody:c,onErrorChange:f,onDecline:C,onCancel:E,runBeforeButtonClick:k,onButtonClick:z,isProcessing:ne,submitButtonColor:O,submitButtonBorderRadius:ve,submitButtonStyle:V,errorText:v}){let P=jr(),{emitInstrument:he}=Do(Gn),N=is(),Ie=as(),[Y,Fe]=ie(!1),lt=G(!1),[ze,ct]=ie(!1),[zt,pe]=ie("loading"),[Te,Pt]=ie(""),Re=!gn(o?.trim()),He=!Re||gn(Te.trim()),ke=Ye(async()=>{if(!N||!Ie||ne||lt.current||!ze)return;lt.current=!0,Fe(!0);let Q=k?await k("card"):{proceed:!0};if(!Q.proceed){lt.current=!1,Fe(!1);return}z?.("card");let je=Q.sessionId??t,$e=Q.nonce??n,pt=oa(a?.trim()),be=dr({email:Q.accountPatch?.email?.trim()||o?.trim()||Te.trim(),firstName:Q.accountPatch?.firstName?.trim()||pt.firstName,lastName:Q.accountPatch?.lastName?.trim()||pt.lastName}),ye=be.email,re=dr({...Q.accountPatch,...be});try{if(f?.(null),!gn(ye))throw new Error("A valid email address is required for payment.");await i?.(be);let M=await Ie.submit();if(M.error){f?.(M.error.message??"Payment failed.");return}let Ce=[be.firstName,be.lastName].filter(Boolean).join(" "),Ue=await N.createPaymentMethod({elements:Ie,params:{billing_details:{email:ye,...Ce?{name:Ce}:{}}}});if(Ue.error||!Ue.paymentMethod){f?.(Ue.error?.message??"Failed to create payment method.");return}let Me=Ue.paymentMethod;if(!je||!ye)throw new Error("Missing sessionId or email for payment.");let U=Me.type||e,vt=await ni(s,he,je,$e??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:U,paymentMethodId:null,intentKind:"payment"});if(vt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let qe=vt.clientSecret;Xt(Ir,{clientSecret:qe,sessionId:je,nonce:$e,accountPatch:re,paymentMethodId:Me.id,paymentMethodType:Me.type??e,gateway:"stripe"});let{error:Ee,paymentIntent:Je}=await N.confirmPayment({clientSecret:qe,confirmParams:{return_url:window.location.href,payment_method:Me.id},redirect:"if_required"});if(Ee){Xt(Ir);let De=Ee.message??"Payment failed.";f?.(De),C?.(un("card",De,{code:Ee.code})),await ri({billingApiUrl:s,sessionId:je,nonce:$e,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:Ee.code??"provider_declined"}});return}let Ae=Je?.status;if(!na(Ae)){Xt(Ir);let De=Ae==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";f?.(De),C?.(un("card",De,{code:Ae??"missing_payment_intent"}));return}Xt(Ir);let Qe=typeof Je?.payment_method=="string"?Je.payment_method:Je?.payment_method?.id;c({id:Qe??Me.id,type:"card",threeDSecureActionResultTokenId:Je?.id,gateway:"stripe",paymentMethodType:Me.type??e},{accountPatch:re,paymentMethodCategory:"apm",sessionId:je,nonce:$e})}catch(M){f?.(M instanceof Error?M.message:"Payment failed. Please try again.")}finally{lt.current=!1,Fe(!1)}},[N,Ie,ne,ze,k,z,t,n,o,a,Te,i,s,he,e,c,f,C]);return Xe("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Re&&p("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Re&&Xe("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",p("input",{type:"email",autoComplete:"email",required:!0,value:Te,onChange:Q=>Pt(Q.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),p(Hu,{onReady:()=>pe("ready"),onLoadError:()=>{pe("load_error"),ls(pn(P),"stripe","apm")},onChange:Q=>{ct(!!Q.complete)},options:{layout:fl,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...a?.trim()?{name:a.trim()}:{},...gn(o?.trim())?{email:o?.trim()}:{}}}}}),p(gl,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{ke()},disabled:!ze||!He||Y||ne||zt!=="ready",color:O,borderRadius:ve,style:V,children:Y?"Processing\u2026":`Pay with ${fa(e)}`}),v&&p(Eo,{margin:"0.75rem 0 0",children:v})]})}function fc({sessionId:e,nonce:t,email:n,billingName:o,onBuyerIdentityReady:a,billingApiUrl:i,paymentElementMethods:s,stripeInstance:c,paymentElementBaseOptions:f,futureUseSession:C,onTokenizedBody:E,onErrorChange:k,onButtonClick:z,onDecline:ne,runBeforeButtonClick:O,onLoadStateChange:ve,isProcessing:V=!1,submitButtonColor:v="#4A49FF",submitButtonBorderRadius:P=8,submitButtonStyle:he,buttonAppearance:N,themeId:Ie,onExpandApm:Y,expandedApmMethod:Fe}){let{emitInstrument:lt}=Do(Gn),[ze,ct]=ie(null),[zt,pe]=ie(null),Te=G(!1),{request:Pt,collect:Re,finish:He}=ko();ht(()=>{s.length>0&&c?ve?.("ready"):c||ve?.("loading")},[s.length,c,ve]);let ke=Ye(async ye=>{if(!c||Te.current||V)return;Te.current=!0,pe(ye);let re=O?await O("card"):{proceed:!0};if(!re.proceed){Te.current=!1,pe(null);return}z?.("card");let M=re.sessionId??e,Ce=re.nonce??t,Ue=oa([re.accountPatch?.firstName,re.accountPatch?.lastName].filter(Boolean).join(" ")||o),Me=dr({email:re.accountPatch?.email?.trim()||n?.trim(),firstName:re.accountPatch?.firstName?.trim()||Ue.firstName,lastName:re.accountPatch?.lastName?.trim()||Ue.lastName});if(!gn(Me.email)){pe(null);let qe=await Re(fa(ye),Me);if(!qe){Te.current=!1;return}Me=qe,pe(ye)}let U=Me.email,vt=dr({...re.accountPatch,...Me});try{if(k?.(null),!M||!gn(U))throw new Error("Missing sessionId or email for payment.");await a?.(Me);let qe=await ni(i,lt,M,Ce??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ye,paymentMethodId:null,intentKind:"payment"});if(qe.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ee=qe.clientSecret;Xt(Ir,{clientSecret:Ee,sessionId:M,nonce:Ce,accountPatch:vt,paymentMethodType:ye,gateway:"stripe"});let{error:Je,paymentIntent:Ae}=await c.confirmPayment({clientSecret:Ee,confirmParams:{return_url:window.location.href,payment_method_data:{type:ye,billing_details:{name:[Me.firstName,Me.lastName].filter(Boolean).join(" "),...U?{email:U}:{}}}},redirect:"if_required"});if(Je){Xt(Ir);let bt=Je.message??"Payment failed.";k?.(bt),ne?.(un("card",bt,{code:Je.code})),await ri({billingApiUrl:i,sessionId:M,nonce:Ce,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ye,providerDeclineReason:Je.code??"provider_declined"}});return}let Qe=Ae?.status;if(!na(Qe)){Xt(Ir);let bt=Qe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";k?.(bt),ne?.(un("card",bt,{code:Qe??"missing_payment_intent"}));return}Xt(Ir);let De=typeof Ae?.payment_method=="string"?Ae.payment_method:Ae?.payment_method?.id;E({id:De??Ae?.id,type:"card",threeDSecureActionResultTokenId:Ae?.id,gateway:"stripe",paymentMethodType:ye},{accountPatch:vt,paymentMethodCategory:"apm",sessionId:M,nonce:Ce})}catch(qe){k?.(qe instanceof Error?qe.message:"Payment failed. Please try again.")}finally{Te.current=!1,pe(null)}},[c,V,O,z,e,t,n,Re,i,lt,o,a,E,k,ne]),[Q,je]=ie(null),$e=Y?Fe??null:Q,pt=Ye(ye=>{Te.current||V||$e&&$e!==ye||(rc(ye)?Y?Y(ye):je(ye):ke(ye))},[$e,V,ke,Y]),be=gt(()=>Q?kc(f,Q,C):null,[Q,f,C]);return p("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Pt?p(Io,{identity:Pt.identity,methodLabel:Pt.methodLabel,onComplete:He,onCancel:()=>He(null)},Pt.id):s.map(ye=>{let re=Fe===ye,M=zt===ye,Ce=zt!==null&&zt!==ye||Fe!=null&&Fe!==ye;return Xe(Vu.Fragment,{children:[p(pl,{method:ye,themeId:Ie,submitting:M,disabled:Ce,highlighted:re,hasNextStep:rc(ye),onClick:()=>pt(ye),backgroundColor:N?.backgroundColor,borderColor:N?.borderColor,textColor:N?.textColor,borderRadius:N?.borderRadius,fontFamily:N?.fontFamily}),!Y&&Q===ye&&be&&c&&p(no,{stripe:c,options:be,children:p(os,{method:ye,sessionId:e,nonce:t,email:n,billingName:o,onBuyerIdentityReady:a,billingApiUrl:i,onTokenizedBody:E,onErrorChange:k,onDecline:ne,onCancel:()=>je(null),runBeforeButtonClick:O,onButtonClick:z,isProcessing:V,submitButtonColor:v,submitButtonBorderRadius:P,submitButtonStyle:he})},ye)]},ye)})})}function Pp({sessionId:e,nonce:t,billingApiUrl:n,telemetry:o,email:a,userId:i,onComplete:s,onError:c,onDecline:f,onTokenizedBody:C,firstName:E,lastName:k,chv:z,className:ne,submitLabel:O,isProcessing:ve,error:V,onErrorChange:v,showPayPal:P=!0,showStripe:he=!0,walletPresentation:N="auto",enabledPaymentMethods:Ie,enabledPaymentMethodCountries:Y,showApplePay:Fe=!0,showGooglePay:lt=!0,layout:ze="default",theme:ct,buttonsTheme:zt,buttonsStyles:pe,appearance:Te,cardButtonContent:Pt,cardBackButtonContent:Re,cardTitleContent:He,showSecurityFooter:ke,onButtonClick:Q,onBeforeButtonClick:je,onBuyerIdentityReady:$e,enableAVS:pt,cardFieldOrder:be,cardPreFormSlot:ye,avsLayout:re="row",country:M,zip:Ce,addressLine1:Ue,addressLine2:Me,city:U,state:vt,onCountryChange:qe,onZipChange:Ee,avsCheck:Je,checkoutType:Ae,checkoutLayout:Qe,totalAmount:De=0,currency:bt="usd",initialCardOpen:Yt=!1,directPaypal:yt,isSubscription:Et=!1,session:I,dataAttachmentPending:ee=!1,dataAttachmentRequiresIdentity:Oe=!1,debug:F=!1}){let Se=jr(),mt=Li(),Ne=Do(cr),{emitInstrument:wt}=Do(Gn),_=G(null);_.current||(_.current=Ua());let d=_.current,[,m]=ie(0),A=G(null);A.current||(A.current=Qo());let T=A.current,J=gt(()=>({browser:T,capability:d,presentationMode:"popup"}),[T,d]),ft=I??Ne.session,me=gt(()=>({futureUse:ft?.futureUse,futureUseUnsupported:ft?.futureUseUnsupported}),[ft?.futureUse,ft?.futureUseUnsupported]),We=ft?.gateways?.paypal?.providerObjectType??yt?.providerObjectType,H=ee||Ne.claimPending===!0,Ut=Oe||Ne.claimRequiresIdentity===!0,Ct=H&&!Ut,_t=Ol(),at=n||_t,[oe,In]=ie(!1),[Bn,yn]=ie(null),[qt,Fn]=ie(M??""),[Dn,hn]=ie(Ce??""),[Tt,Ve]=ie(Ue??""),[Le,Rn]=ie(Me??""),[kt,On]=ie(U??""),[mn,jt]=ie(vt??""),[Qt,Jn]=ie(""),[$n,en]=ie({}),xt=G(Ce??""),Cn=G(M??""),ln=G(Ue??""),Ft=G(Me??""),fn=G(U??""),Dt=G(vt??""),on=G(""),Bt=G({});ht(()=>{let r=(g,W,fe,D,X)=>{if(Bt.current[g])return;let Rt=W?.trim();!Rt||Rt===fe.current||(fe.current=Rt,D(Rt),X?.(Rt))};r("country",M,Cn,Fn,qe),r("zip",Ce,xt,hn,Ee),r("addressLine1",Ue,ln,Ve),r("addressLine2",Me,Ft,Rn),r("city",U,fn,On),r("state",vt,Dt,jt)},[M,Ce,Ue,Me,U,vt,qe,Ee]);let ae=gt(()=>Lu(pt),[pt]),Zn=ae!==null,Xn=gt(()=>Yi(I),[I]),Qn=Au(I?.vault),tn=!!I?.gateways?.pcivault,En=Ml(I),ce=!!(I?.gateways?.stripe?.enabledPaymentMethods??Ie)?.includes("card")||Qr(I),et=Qn||ce||tn,u=!!(he&&et&&e),[xe,L]=ie(()=>ze!=="buttons"||Yt?e??null:null),[Pn,Nn]=ie(0),Jt=ze!=="buttons"||Yt||!!e&&xe===e,_n=I?.captureMethod,nt=G(Se);ht(()=>{nt.current=Se},[Se]);let[yr,Dr]=ie(null);ht(()=>{if(!u||!e||!Jt){Dr(null);return}let r=nt.current?nt.current.cardCapture({sessionId:e,captureMethod:_n}):new hu({sessionId:e,captureMethod:_n,billingApiUrl:at,telemetry:o});return Dr({sessionId:e,captureMethod:_n,billingApiUrl:at,telemetry:o,capture:r}),()=>{r.unmount()}},[u,e,Jt,_n,at,o]);let It=u&&e&&Jt&&yr?.sessionId===e&&yr.captureMethod===_n&&yr.billingApiUrl===at&&yr.telemetry===o?yr.capture:null,Ln=gt(()=>{let r=qt,g=ae?Kt(ae.postal_code,r):!1;return fp(r,Dn,g)},[ae,qt,Dn]),{avsInvalid:er,invalidAvsFields:tr}=gt(()=>{let r={line1:!1,city:!1,state:!1,zip:!1};if(!u||!ae)return{avsInvalid:!1,invalidAvsFields:r};let g=qt,W=(X,Rt)=>Kt(X,g)&&!Rt.trim(),fe={line1:W(ae.address_line_1,Tt),city:W(ae.city,kt),state:W(ae.state,mn),zip:Ln.empty||Ln.malformed};return{avsInvalid:fe.line1||fe.city||fe.state||fe.zip,invalidAvsFields:fe}},[u,ae,qt,Tt,kt,mn,Ln]),[$t,mr]=ie(!1),[fr,Tn]=ie(!1),[gr,Wn]=ie(!1),[hr,Er]=ie({line1:!1,city:!1,state:!1}),zn=G(!1),nr=G({email:!1,line1:!1,city:!1,state:!1,zip:!1}),rr=G(!1),Mt=Ye(r=>{nr.current[r]=!0,rr.current=!0},[]),Un=Ye(r=>!zn.current&&nr.current[r],[]),wn=Ye(r=>{Un(r)&&Er(g=>g[r]?g:{...g,[r]:!0})},[Un]),[or,ar]=ie(()=>Zi(I?.vault,{billingApiUrl:at,sessionId:e,nonce:t})),[tt,nn]=ie(Yt&&et?"card":"buttons"),[cn,Mn]=ie(null),Or=tt==="expanding"||tt==="card",Pr=I?.gateways?.stripe&&!En?"stripe":void 0,_r=Ye(()=>{wt?.({class:"card_surface",provider:Pr})},[Pr,wt]),Hn=G(null),rn=Ye(r=>{Hn.current&&clearTimeout(Hn.current),Hn.current=setTimeout(()=>{Hn.current=null,r()},ga)},[]);ht(()=>()=>{Hn.current&&clearTimeout(Hn.current)},[]);let Nr=G(!1),[an,w]=ie(0),b=G(null),j=Ye(()=>{_r(),L(e??null),Nr.current&&(Nr.current=!1,w(r=>r+1)),Nn(r=>r+1),nn("expanding"),rn(()=>nn("card"))},[rn,_r,e]),K=Ye(()=>{nn("collapsing"),rn(()=>nn("buttons"))},[rn]),it=Ye(r=>{Mn(r),nn("apm-expanding"),rn(()=>nn("apm-form"))},[rn]),Wt=Ye(()=>{nn("apm-collapsing"),rn(()=>{nn("buttons"),Mn(null)})},[rn]);ht(()=>{ze==="buttons"&&Yt&&et&&(L(e??null),nn("card"))},[ze,Yt,et,e]);let[de,x]=ie(null),B=G(!1),R=G(null),l=G("idle"),[y,h]=ie(!1),$=G(y);$.current=y;let[le,Pe]=ie(()=>yt?.existingOrderId?{orderId:yt.existingOrderId,attempts:1}:null),Ht=G(le);ht(()=>{Ht.current=le},[le]);let te=G(null),we=gt(()=>{if($e||Ne.claimBuyerIdentity||I?.buyerIdentified!==!1||!e||!t)return;let r=`${at}|${e}|${t}`;te.current?.key!==r&&(te.current={key:r,claim:Co(new Bo(at,{telemetry:!1}),e,t,{...i?{userId:i}:{},...E?{firstName:E}:{},...k?{lastName:k}:{}})});let g=te.current.claim;return async W=>{await g(W)}},[$e,Ne.claimBuyerIdentity,I?.buyerIdentified,e,t,at,i,E,k]),Be=$e??Ne.claimBuyerIdentity??we,rt=V??Bn,Z=gt(()=>Uu(ct),[ct]),S=gt(()=>{let r=Z?.buttonsLayout??zu(zt);return pe?{...r,...pe,cardButton:{...r.cardButton,...pe.cardButton},cardFormContainer:{...r.cardFormContainer,...pe.cardFormContainer},backButton:{...r.backButton,...pe.backButton},backButtonIcon:{...r.backButtonIcon,...pe.backButtonIcon},submitButton:{...r.submitButton,...pe.submitButton},title:{...r.title,...pe.title}}:r},[Z,zt,pe]),q=Te??Z?.appearance,Ke=gt(()=>ku({appearance:q,buttonsStyles:S,layout:ze}),[q,S,ze]),ge=Ne.inlineSessionPatchProcessing??!1,_e=(ve??oe)||ge,dt=at.replace(/\/+$/,""),Ze=gt(()=>Oi({userId:i,email:a,firstName:E,lastName:k,country:M,zip:Ce},$n),[i,a,E,k,M,Ce,$n]),oo=[Ze.firstName,Ze.lastName].filter(r=>!!r?.trim()).join(" "),Cs=!gn(Ze.email?.trim()),li=G(null);u&&li.current===null&&(li.current=Cs);let Lr=u&&(li.current??Cs),ci=gt(()=>gp(Qt,Lr),[Qt,Lr]),ao=ci.empty||ci.malformed,qn=gt(()=>Se?Se.getRawProvider():null,[Se]),Ss=gt(()=>mt?mt.getRawProvider():null,[mt]),Uo=De||100,io=bt.toLowerCase(),di=gt(()=>q?Pu(q):null,[q]),so=di,ws=gt(()=>{let r=di??{},g=r.rules??{};return{...r,rules:{...g,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...g[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...g[".AccordionItemContents"]??{}}}}},[di]),ks=gt(()=>({...Tl(De,ft?.captureMethod,me),currency:io,...so?{appearance:so}:null}),[De,io,ft?.captureMethod,me,so]),ui=hc(me,"paypal","paypal"),Is=gt(()=>({mode:"payment",amount:Uo,currency:io,captureMethod:"manual",...ui?{setupFutureUsage:ui}:null,...so?{appearance:so}:null}),[Uo,io,ui,so]),ue=Ye(r=>{yn(r),v?.(r)},[v]),Rs=G(0);ht(()=>{an!==Rs.current&&(Rs.current=an,ue(null))},[an,ue]);let pi=G(""),[Es,Lc]=ie(!1),yi=Ye(()=>{Lc(!0)},[]);ht(()=>{if(!u||!Lr||!Be||!Es||ao||pi.current)return;let r=dr({email:gn(Ze.email?.trim())?Ze.email?.trim():on.current.trim(),firstName:Ze.firstName?.trim(),lastName:Ze.lastName?.trim()});pi.current=JSON.stringify(r),en(g=>({...g,...r})),Promise.resolve(Be(r)).catch(g=>{pi.current="",ue(g instanceof Error?g.message:"Failed to attach buyer details.")})},[u,Lr,Be,Es,ao,Ze.email,Ze.firstName,Ze.lastName,ue]),ht(()=>{!u||!It||It.setCardFieldOrder?.(be??null,ae==null&&!Lr)},[u,It,be,ae,Lr]),ht(()=>{(tt==="expanding"||tt==="collapsing"||tt==="apm-expanding"||tt==="apm-collapsing")&&ue(null)},[tt,ue]);let vr=Ye((r,g,W)=>{f?.(un(r,g,W))},[f]),lo=Ye((r,g,W)=>{let fe=W?.popupBlocked??zr(g);fe&&d.markBlocked()&&m(Ge=>Ge+1);let D=xa(rs(r),fe,T.inAppBrowser),X=go(g),Rt=(X?.toLowerCase()==="error"?void 0:X)??dl(W?.code)??"external_payment_method_failed",lr=new Br(D,"api_error",{code:"external_payment_method_failed",param:r,details:{providerCode:Rt,popupBlocked:fe,inAppBrowser:T.inAppBrowser,appFamily:T.appFamily,popupCapability:d.current(),presentationMode:W?.presentationMode??"popup"}});W?.telemetryReported||pn(Se)?.error(xo({...J,presentationMode:W?.presentationMode??"popup"},{errorCode:fe?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:W?.provider??(r==="paypal"?"paypal":"stripe"),paymentMethodCategory:W?.paymentMethodCategory??(r==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:W?.terminalReason??(fe?"popup_blocked":"provider_error")})),x(null),ze==="buttons"&&(nn("buttons"),Mn(null)),ue(D),c?.(lr),console.error("[FloPay] External payment method failed:",{method:r,code:Rt,popupBlocked:fe})},[T,J,Se,ze,c,d,ue]);ht(()=>{if(!u||!e){ar(null);return}let r={billingApiUrl:dt,sessionId:e,nonce:t},g=Zi(I?.vault,r);if(g){ar(g);return}if(!Jt){ar(null);return}let W=`${dt}\0${e}\0${t??""}`,fe=b.current;if(fe&&fe.key===W){ar(fe.mount);return}ar(null);let D=!0;return new Bo(dt).getVaultCapture(e,t).then(X=>{if(!D)return;let Rt=Zi(X,r);Rt?.verificationRequired&&!X.html&&(b.current={key:W,mount:Rt}),Rt?ar(Rt):ue("Failed to load the secure card form.")}).catch(X=>{D&&ue(X instanceof Error?X.message:"Failed to load the secure card form.")}),()=>{D=!1}},[u,Jt,Pn,e,I?.vault,dt,t,ue]);let ir=G({onComplete:s,onError:c,updateError:ue,emitDecline:vr,resolvedAccount:Ze,avsConfig:ae,avsCheckProp:Je,sessionId:e,nonce:t,baseUrl:dt,captureMethod:I?.captureMethod,paymentId:I?.paymentId,authorizationExpiresAt:I?.authorizationExpiresAt,serverSideCardGateway:En});ir.current={onComplete:s,onError:c,updateError:ue,emitDecline:vr,resolvedAccount:Ze,avsConfig:ae,avsCheckProp:Je,sessionId:e,nonce:t,baseUrl:dt,captureMethod:I?.captureMethod,paymentId:I?.paymentId,authorizationExpiresAt:I?.authorizationExpiresAt,serverSideCardGateway:En};let mi=G(!1),_s=Ye(()=>{let r=ir.current,g=r.resolvedAccount.email?.trim(),W=gn(g)?g:on.current.trim();if(!gn(W))return null;let fe=r.resolvedAccount.firstName?.trim(),D=r.resolvedAccount.lastName?.trim(),X=Cn.current.trim()||r.resolvedAccount.country?.trim()||"",Rt=r.avsConfig?Kt(r.avsConfig.state,X):!1,lr=r.avsConfig?Kt(r.avsConfig.address_line_1,X):!1,Ge=r.avsConfig?Kt(r.avsConfig.postal_code,X):!1,st=r.avsConfig?Kt(r.avsConfig.city,X):!1,ut=r.avsConfig?Kt(r.avsConfig.address_line_2,X):!1,Ot=lr&&!Rt&&Ge?_u(X,(xt.current??"").trim()):null,Jr=Rt?Dt.current:Ot;return{accountData:{userId:r.resolvedAccount.userId??"",email:W,...fe?{firstName:fe}:{},...D?{lastName:D}:{},...Ge&&xt.current?{zip:xt.current}:{},...st&&fn.current?{city:fn.current}:{},...Jr?{state:Jr}:{},...lr&&ln.current?{addressLine1:ln.current}:{},...ut&&Ft.current?{addressLine2:Ft.current}:{},...X?{country:X}:{}},...r.avsCheckProp===void 0?{}:{avsCheck:r.avsCheckProp},...r.avsConfig?{avsConfig:{country:Kt(r.avsConfig.country,X),postal_code:Ge,address_line_1:lr,address_line_2:ut,city:st,state:Rt}}:{}}},[]),Ts=G(H);Ts.current=H,ht(()=>{H||rt!==lc||ir.current.updateError(null)},[H,rt]),ht(()=>{!u||!It||It.setSubmitGate?.(er||H||ao||y)},[u,It,er,H,ao,y]),ht(()=>{if(!u||!It)return;mi.current=!1;let r=null,g=()=>{r&&clearTimeout(r),r=setTimeout(()=>{r=null,l.current="idle",x(null)},400)},W=It.on("submitting",()=>{mr(!0),R.current&&clearTimeout(R.current),l.current="validation-window",R.current=setTimeout(()=>{R.current=null,l.current==="validation-window"&&(l.current="processing")},ap),x("processing");let Ge=ir.current;if(!Ge.sessionId||!Ge.nonce)return;let st=_s();if(!st){Ge.updateError("Enter a valid email address."),l.current="idle",x(null);return}new Bo(Ge.baseUrl).patchAccountSnapshot(Ge.sessionId,Ge.nonce,st,{telemetryMode:"best_effort"}).catch(ut=>{if(!sp(ut))return;let Ot=ut instanceof Error?ut.message:"Please check your billing address and try again.";Ge.updateError(Ot),l.current="idle",x(null),Ge.onError?.(ut instanceof Br?ut:new Br(Ot,"api_error"))})}),fe=It.on("complete",Ge=>{_o(Ge.sessionId??ir.current.sessionId),l.current="terminal",h(!1),x("success"),setTimeout(()=>{if(mi.current)return;mi.current=!0;let st=ir.current,ut=Yi(st)||Ge.outcome==="authorized",Ot=st.serverSideCardGateway?{}:{paymentIntentId:Ge.intentId};ir.current.onComplete?.(ut?{status:"authorized",...Ot,paymentId:Ge.paymentId??st.paymentId,sessionId:Ge.sessionId??st.sessionId,authorizationExpiresAt:Ge.authorizationExpiresAt??st.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Ot,checkoutMethod:"card"})},600)}),D=It.on("decline",Ge=>{let st=ir.current,ut=Ge.message??"Your payment was declined. Please try another card or contact your bank.";l.current="terminal",h(!1),st.updateError(ut),x("error");let Ot=Ge.failureOutcome??Fu(Ge.declineReason)??"authorization_declined";st.emitDecline("card",ut,{code:Ot,declineCode:Ot}),g()}),X=It.on("error",Ge=>{let st=ir.current,ut=Ge.message??"There was a problem processing your payment. Please try again.";l.current="terminal",h(!1),st.updateError(ut),x("error"),st.onError?.(new Br(ut,"api_error",{code:Ge.failureOutcome??"capture_failed"})),g()}),Rt=It.on("challenge_dismissed",()=>{R.current&&(clearTimeout(R.current),R.current=null),l.current="processing",h(!0),x(null)}),lr=It.on("blocked",()=>{if($.current){ir.current.updateError(ip);return}if(!Ts.current){mr(!0);return}yi(),ir.current.updateError(lc)});return()=>{r&&(clearTimeout(r),r=null),R.current&&(clearTimeout(R.current),R.current=null),l.current="idle",h(!1),x(null),W(),fe(),D(),X(),Rt(),lr()}},[u,It,yi,_s]);let br=!!yt?.clientId,qo=Array.isArray(Ie),Ca=qo&&Ie.length>0,Ms=qo&&Ie.includes("paypal"),Sa=G(null);Sa.current===null&&(Sa.current=Mu());let co=Sa.current?"redirect":ul(T,N,d.current()),{expressMethods:wa,paymentElementMethods:fi}=gt(()=>Du(Ie,{excludePaypal:br}),[Ie,br]),As=br||!!mt||Ms&&co==="redirect",zc=gt(()=>As?wa.filter(r=>r!=="paypal"):wa,[wa,As]),Uc=gt(()=>{let r=[];return Fe&&r.push("apple_pay"),lt&&r.push("google_pay"),r},[Fe,lt]),uo=qo?zc:Uc,qc=he&&uo.length>0,xs=Zn?qt:M,ka=gt(()=>Ru(fi,xs,Y),[fi,xs,Y]),gi=gt(()=>({mode:"payment",amount:Uo,currency:io,paymentMethodCreation:"manual",appearance:ws}),[Uo,io,ws]),[Bs,Fs]=ie("loading"),[Ds,Os]=ie("loading"),[Ns,Ls]=ie("loading"),[jc,hi]=ie(!1),[zs,Pi]=ie("loading"),[vi,$c]=ie();ht(()=>{$c(Qo())},[]);let Ia=vi?.inAppBrowser,Ra=vi?Fa(vi,yt?.approvalPresentation,We??(Et?"subscription":"order")):"popup",Us=P&&(br||(qo?Ms:Ia===!1)),qs=he&&qc,jo=(!Ct||!!Ne.waitForDataAttachment)&&Us&&br,js=zs==="retrying"||zs==="exhausted",$o=null;he&&(mt?$o=Ss:co==="redirect"&&($o=qn));let $s=gt(()=>({...J,presentationMode:co}),[J,co]),Wo=!Ct&&Us&&!!$o&&(!br||js),po=!Ct&&qs&&!!qn,Ho=!Ct&&he&&Ca&&ka.length>0&&!!qn,Wc=jo&&!js?jc:Wo&&Bi(Bs),Hc=po&&Bi(Ds),Vc=Ho&&Ns!=="load_error",Ws=r=>r==="loading"||r==="ready",Hs=jo||Wo&&Ws(Bs)||po&&Ws(Ds)||Ho&&Ns!=="load_error",Ea=G(!1);ht(()=>{if(!Ea.current){if(!he&&!P){Ea.current=!0;let r=new Br("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");c?.(r),ue(r.message)}else if(!he&&P&&!br){Ea.current=!0;let r=new Br("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");c?.(r),ue(r.message)}else if(Ia!==void 0&&!Ct&&!et&&!Hs){Ea.current=!0;let r=new Br("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"});c?.(r),ue(r.message)}}},[he,P,br,Ia,Ct,et,Hs,c,ue]);let Vs=G(!1);ht(()=>{if(Vs.current||!Ca)return;let r=[];Fe!==!0&&r.push("showApplePay"),lt!==!0&&r.push("showGooglePay"),r.length!==0&&(Vs.current=!0,console.warn(`[FloPay] ${r.join(" / ")} ${r.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.`))},[Ca,Fe,lt]);let Ks=Ye((r,g)=>Ne.applyInlineSessionPatch?Ne.applyInlineSessionPatch(r).then(W=>({error:null,sessionId:W.sessionId||e,nonce:W.session?.clientSecret||t})).catch(W=>{let fe=oc(g,W);return ue(fe.message),c?.(fe),{error:fe,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ne.applyInlineSessionPatch,t,c,e,ue]),sr=Ye(async r=>{if(r!=="card"&&Ct&&await Ne.waitForDataAttachment?.(),!je)return{proceed:!0};try{let g=await je({method:r,sessionId:e||void 0,createSession:Ne.inlineSessionDraft});if(g===!1)return{proceed:!1};if(g&&typeof g=="object"){g.account&&en(fe=>({...fe??{},...g.account}));let W=await Ks(g,r);return W.error?{proceed:!1,accountPatch:g.account}:{proceed:!0,accountPatch:g.account,sessionId:W.sessionId,nonce:W.nonce}}return{proceed:!0}}catch(g){let W=oc(r,g);return ue(W.message),c?.(W),{proceed:!1}}},[Ks,Ne.inlineSessionDraft,Ne.waitForDataAttachment,Ct,je,c,e,ue]),Gs=Ye(async(r,g)=>{if(B.current)return;B.current=!0,In(!0),x("processing"),ue(null);let W=g?.sessionId??e,fe=g?.nonce??t,D=Oi(Ze,g?.accountPatch),X=g?.completionPaymentMethodId??ra(r),Rt=r.originalPaymentMethodId?{...r,originalPaymentMethodId:void 0}:r,lr=up(r),Ge=g?.presentationMode?Xa(pn(Se),{...J,presentationMode:g.presentationMode}):void 0,st=()=>{wt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:lr}),Ge?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...ur,requestCategory:"process_payment"})};try{let ut=new Bo(dt),Ot=await ut.processPayment(D.userId??"",{sessionId:W,nonce:fe,paymentMethodCategory:g?.paymentMethodCategory??yp(r),tokenizedData:Rt,accountData:{...g?.accountPatch,userId:D.userId??"",email:D.email??"",firstName:D.firstName||void 0,lastName:D.lastName||void 0,...bu({avsConfig:ae,country:Cn.current,zip:xt.current,city:fn.current,state:Dt.current,addressLine1:ln.current,addressLine2:Ft.current})},...vu({chv:z,avsCheck:Je,checkoutType:Ae,checkoutLayout:Qe,avsConfig:ae,country:Cn.current})}),Jr=async dn=>{let Zr=Yi(I)||dn?.status==="authorized";_o(W),Ge?.terminal({outcome:"payment_succeeded",...ur}),x("success"),Pe(null),await new Promise(Zo=>setTimeout(Zo,600));let Cr;typeof dn?.paymentId=="string"?Cr=dn.paymentId:I?.paymentId&&(Cr=I.paymentId);let Xr;typeof dn?.authorizationExpiresAt=="string"?Xr=dn.authorizationExpiresAt:I?.authorizationExpiresAt&&(Xr=I.authorizationExpiresAt),s?.(Zr?{status:"authorized",...Cr===void 0?{}:{paymentId:Cr},sessionId:typeof dn?.sessionId=="string"?dn.sessionId:W,...Xr===void 0?{}:{authorizationExpiresAt:Xr},paymentIntentId:r.threeDSecureActionResultTokenId,paymentMethodId:X,checkoutMethod:r.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:r.threeDSecureActionResultTokenId,paymentMethodId:X,checkoutMethod:r.isPaypal?"paypal":"card"})};if(Ot.ok){await Jr(Ot.status===204?null:await Ot.json().catch(()=>null));return}let jn=await Ot.json().catch(()=>null);if(jn?.type==="paypal_redirect_required"){let dn=jn.threeDSecureToken,Zr=jn.paymentMethodId||r.id||"";if(!Se||!dn){x("error"),ue("PayPal authorization required but no token provided.");return}try{let Cr=mt?.getRawProvider();if(!Cr){ue("PayPal is not available.");return}let Xr={return_url:window.location.href};Zr&&(Xr.payment_method=Zr);let{error:Zo}=await Cr.confirmPayment({clientSecret:dn,confirmParams:Xr,redirect:"if_required"});if(Zo){x("error");let il=Zo.message??"PayPal payment failed.";ue(il),vr("paypal",il,{code:Zo.code})}}catch(Cr){x("error"),ue(Cr instanceof Error?Cr.message:"PayPal authorization failed.")}return}if(jn?.type==="paypal_direct_required"){let dn=jn.orderId;if(!dn){x("error"),ue("PayPal retry required but no order id provided.");return}let Zr=Ht.current?.attempts??0;if(Zr>=2){x("error"),ue("PayPal payment could not be completed after multiple attempts."),vr("paypal","paypal_direct_required retry limit exceeded");return}hi(!1),Pi("loading"),Pe({orderId:dn,attempts:Zr+1}),x(null);return}if(Ot.headers.get(Xu)===Qu){let dn=await ep(ut,W,fe);if(dn!==void 0){await Jr(dn);return}}Su(Ot.status,jn)?Ge?.terminal({outcome:"payment_declined",...ur,terminalReason:"provider_declined"}):st(),x("error");let al=jn?.message??"Payment failed. Please try again.";ue(al),vr(r.isPaypal?"paypal":"card",al,{code:jn?.code??jn?.gatewayErrorCode,declineCode:jn?.declineCode??jn?.gatewayDeclineReason}),await new Promise(dn=>setTimeout(dn,400))}catch(ut){Sc(ut)||st(),x("error"),ue(ut instanceof Error?ut.message:"An unexpected error occurred"),await new Promise(Ot=>setTimeout(Ot,400))}finally{In(!1),x(null),B.current=!1}},[dt,e,t,Ze,ae,Je,Ae,Qe,z,Se,mt,I,s,ue,vr,wt,J]),An=Ye((r,g)=>{C?C(r):Gs(r,g)},[C,Gs]),Vo=`${bc}:${e}`;ht(()=>{if(typeof window>"u")return;let r=localStorage.getItem(Vo);if(!r)return;let g;try{g=JSON.parse(r)}catch{Xt(Vo);return}if(!g||typeof g.createdAt!="number"||Date.now()-g.createdAt<0||Date.now()-g.createdAt>Cc||typeof g.paymentMethodId!="string"||typeof g.providerIntentId!="string"||typeof g.paymentMethodType!="string"||g.sessionId!==e||!t||g.nonce!==t||!uo.includes(g.paymentMethodType)){Xt(Vo);return}Xt(Vo),An({id:g.paymentMethodId,type:"card",threeDSecureActionResultTokenId:g.providerIntentId,gateway:"stripe",paymentMethodType:g.paymentMethodType},{...g.accountPatch?{accountPatch:g.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[An,t,e,Vo,uo]);let Ys=G(!1);ht(()=>{if(typeof window>"u"||Ys.current)return;let[r,g,W]=gc();if(!r||!g||Sa.current||!Se)return;let fe=Se.getRawProvider();if(!fe)return;let D=st=>{let ut=localStorage.getItem(st);if(!ut)return null;try{return JSON.parse(ut)}catch{return Xt(st),null}},X=D(Ir)??D(ac),Rt;if(X?.clientSecret){if(X.clientSecret!==g)return;Rt={...X.accountPatch?{accountPatch:X.accountPatch}:{},...X.sessionId?{sessionId:X.sessionId}:{},...X.nonce?{nonce:X.nonce}:{}}}else if(X?.sessionId&&X.sessionId!==e)return;Ys.current=!0,Xt(Ir),Xt(ac),window.history.replaceState({},"",Pc());let lr=X?.paymentMethodType??X?.tokenType??"card",Ge="card";(async()=>{if(W==="failed"){let Tr="Payment was declined. Please try again.";ue(Tr),vr(Ge,Tr);return}let{paymentIntent:st,error:ut}=await fe.retrievePaymentIntent(g);if(ut){let Tr=ut.message??"Failed to retrieve payment status.";ue(Tr),vr(Ge,Tr,{code:ut.code});return}let Ot=st?.status,Jr=na(Ot);if(!st||!Jr){let Tr=Ot==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";ue(Tr),vr(Ge,Tr,{code:Ot??"missing_payment_intent"});return}let jn=typeof st.payment_method=="string"?st.payment_method:st.payment_method?.id;An({id:jn??X?.paymentMethodId??X?.tokenId??st.id,type:"card",threeDSecureActionResultTokenId:st.id,gateway:X?.gateway??"stripe",paymentMethodType:lr},Rt)})()},[e,An,Se,ue,vr]);let bi=Ye(r=>{r.preventDefault()},[]);if(!(u||Se!==null))return p("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let Ko=ze==="buttons",xn=q?.variables,Kc=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Ci=xn?.colorBackground,Gc=Ci&&!Kc.has(Ci)?Ci:void 0,Go=S.cardInputBorder??(Ko?"#e5e7eb":"#A4A4FF"),Js=xn?.colorDanger??"#dc2626",Vt=r=>tr[r]&&(hr[r]||$t),_a=ao&&(gr||$t),Vn=r=>r?Js:Go,Ta=(Ln.malformed||Ln.empty)&&(fr||$t),Yc=Vn(Ta),Si=S.cardFormContainer?.backgroundColor??Gc??(Ko?"white":"#EDEDFF"),yo=S.cardInputBackground??xn?.colorBackground??"white",wi=ho(Re),Zs=ho(He),mo=S.nameInput,Xs=S.cardInputFontSize??hp(mo?.fontSize)??xn?.fontSizeBase??"16px",Qs=typeof mo?.fontFamily=="string"?mo.fontFamily:xn?.fontFamily??"Poppins, sans-serif",el=Wu(mo?.fontWeight)??400,Jc=S.cardInputColor??(typeof mo?.color=="string"?mo.color:void 0)??xn?.colorText??"#262833",Zc=S.cardInputPlaceholderColor??"#9ca3af",Zt=xn?.borderRadius??"8px",Gr=xn?.borderRadius??S.cardButton?.borderRadius??Zt,Yr=xn?.colorPrimary??"#4A49FF",Xc=xn?.colorPrimaryHover??Iu(Yr,.12),ki=xn?.colorText??"#262833",Ii={fontSize:Xs,fontFamily:Qs,fontWeight:el,color:Jc,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},Yo={marginTop:"0.375rem",...Ii,fontSize:"0.75rem",lineHeight:1.4,color:Js},Qc={"--flopay-input-placeholder-color":Zc,"--flopay-input-font-size":Xs,"--flopay-input-font-family":Qs,"--flopay-input-font-weight":String(el)},Jo=S.cardFormContainer??{},Ri=Jo.padding??(Ko?"0":"1rem"),Ei=Jo.borderRadius??Zt,ed=It&&or?p(_i,{capture:It,html:or.html,messageToken:or.messageToken,expectedOrigin:or.expectedOrigin,verificationRequired:or.verificationRequired,theme:Ke,submitLabel:O,onReady:()=>{if(!Lr&&!ae||typeof document>"u")return;let r=()=>{let W=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(W){zn.current=!0;try{W.focus()}finally{zn.current=!1}}};rr.current||r()},onError:r=>{r&&or.verificationRequired&&l.current==="idle"&&(Nr.current=!0),ue(r)},onValidation:r=>{let g=l.current;(g==="idle"||g==="validation-window")&&(ue(r),r&&l.current==="validation-window"&&(R.current&&(clearTimeout(R.current),R.current=null),l.current="idle",x(null)))}},an):p("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"}),tl=Xe("div",{onFocusCapture:r=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(r.target.tagName)&&_r()},style:{backgroundColor:Si,borderRadius:Ei,...Jo,padding:Ri,...Qc,display:"flex",flexDirection:"column"},children:[p("style",{children:`
|
|
5
5
|
.flopay-shared-input::placeholder {
|
|
6
6
|
color: var(--flopay-input-placeholder-color);
|
|
7
7
|
opacity: 1;
|
|
@@ -9,13 +9,13 @@ ${_t.join(`
|
|
|
9
9
|
font-family: var(--flopay-input-font-family);
|
|
10
10
|
font-weight: var(--flopay-input-font-weight);
|
|
11
11
|
}
|
|
12
|
-
`}),Ko&&Or&&Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:u?-2:0},children:[Xe("button",{type:"button",onClick:K,style:{display:"inline-flex",alignItems:"center",gap:
|
|
13
|
-
`)}):null,
|
|
14
|
-
`)}):null,al=tt==="apm-expanding"||tt==="apm-form"||tt==="apm-collapsing",fo;tt==="apm-expanding"?fo=pc:tt==="apm-collapsing"&&(fo=yc);let xa=cn?Ec(hi,cn,me):null;if(ze==="buttons"){let r=tt==="buttons"||tt==="expanding"||tt==="apm-expanding",g=tt==="expanding"||tt==="card"||tt==="collapsing",W=Pt===void 0?{boxSizing:"border-box",height:ta,padding:"0 1rem"}:{padding:"0.9rem 1rem"},fe;tt==="expanding"||tt==="apm-expanding"?fe=cp:(tt==="collapsing"||tt==="apm-collapsing")&&(fe=lp);let D;return tt==="expanding"?D=pc:tt==="collapsing"&&(D=yc),Xe("form",{onSubmit:Ci,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Oa,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),Xe("div",{style:{display:"grid"},children:[Xe("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!r&&!fe?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!r&&!fe?up:{},...fe?{animation:fe,pointerEvents:"none"}:{}},children:[rl("flopay-direct-paypal-gate-debug"),ol("flopay-stripe-gate-debug"),jo&&yt&&Xe(Fo,{children:[le&&p("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."}),p(sa.Provider,{value:d,children:p(Wa,{sessionId:e,nonce:t,billingApiUrl:at,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,clientId:yt.clientId,environment:yt.environment,currency:bt.toUpperCase(),isSubscription:Et,providerObjectType:We,approvalPresentation:Ea==="popup"?void 0:Ea,onTokenizedBody:An,onComplete:s,onErrorChange:ue,onDecline:f,onTechnicalFailure:lo,onButtonClick:Q,runBeforeButtonClick:sr,isProcessing:_e,onLoadStateChange:Pi,onInitializationStateChange:vi,session:ft,existingOrderId:le?.orderId,debug:F},le?.orderId??"fresh")})]}),Wo&&p(no,{stripe:$o,options:Rs,children:p(fc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,isProcessing:_e,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Ds,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:Ws,presentationMode:co})}),po?p(no,{stripe:qn,options:Is,children:p(hc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,intentKind:De>0?"payment":"setup",expressMethods:uo,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Ns,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:J})}):null,!po&&js?p("div",{style:{height:ta,borderRadius:Gr,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,Ho&&p(Pc,{sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,paymentElementMethods:Ia,stripeInstance:qn,paymentElementBaseOptions:hi,futureUseSession:me,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:zs,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,onExpandApm:it,expandedApmMethod:cn,themeId:ct,buttonAppearance:{backgroundColor:S.cardButton?.backgroundColor,borderColor:S.cardInputBorder,textColor:S.cardButton?.color,borderRadius:Gr}}),u&&p("button",{type:"button",onClick:async()=>{_e||!(await sr("card")).proceed||(Q?.("card"),j())},disabled:_e,style:{width:"100%",...W,...S.cardButton,...ds({themeBundle:Z,resolvedPrimaryColor:Yr,resolvedBorderRadius:Zt,submitButtonStyle:S.submitButton,explicitPrimaryColor:xn?.colorPrimary}),fontSize:S.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:_e?"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:_e?.6:1},onMouseEnter:X=>{!_e&&(Z||xn?.colorPrimary)&&(X.currentTarget.style.backgroundColor=ed)},onMouseLeave:X=>{(Z||xn?.colorPrimary)&&(X.currentTarget.style.backgroundColor=Yr)},onMouseDown:X=>{X.currentTarget.style.transform="scale(0.985)"},onMouseUp:X=>{X.currentTarget.style.transform="scale(1)"},children:p(Po,{content:Pt})}),rt&&tt==="buttons"&&p(Eo,{margin:"0.25rem 0",styleOverride:S.errorBanner,children:rt})]}),u&&g&&p("div",{style:{gridArea:"1 / 1",...D?{animation:D}:{},...tt==="collapsing"?{pointerEvents:"none"}:{}},children:nl}),he&&al&&cn&&xa&&qn&&p("div",{style:{gridArea:"1 / 1",...fo?{animation:fo}:{},...tt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Xe("div",{style:{backgroundColor:wi,borderRadius:_i,...Jo,padding:Ei},children:[Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Xe("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Wt,style:{display:"inline-flex",alignItems:"center",gap:ki?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:S.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...S.backButton},"aria-label":"Back to payment methods",children:[p("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...S.backButtonIcon},children:p("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:p("path",{d:"M15 18l-6-6 6-6"})})}),p(vo,{content:Re})]}),p("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:S.titleFontSize??"1.05rem",color:Ii,paddingRight:80,...S.title},children:`Pay with ${ga(cn)}`})]}),p(no,{stripe:qn,options:xa,children:p(as,{method:cn,sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,onDecline:f,onCancel:Wt,runBeforeButtonClick:sr,onButtonClick:Q,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,errorText:rt})},cn)]})})]})]})}return al&&cn&&xa&&qn&&he?Xe("form",{onSubmit:Ci,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Oa,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),p("div",{style:{...fo?{animation:fo}:{},...tt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Xe("div",{style:{backgroundColor:wi,borderRadius:_i,...Jo,padding:Ei},children:[Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Xe("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Wt,style:{display:"inline-flex",alignItems:"center",gap:ki?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:S.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...S.backButton},"aria-label":"Back to payment methods",children:[p("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...S.backButtonIcon},children:p("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:p("path",{d:"M15 18l-6-6 6-6"})})}),p(vo,{content:Re})]}),p("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:S.titleFontSize??"1.05rem",color:Ii,paddingRight:80,...S.title},children:`Pay with ${ga(cn)}`})]}),p(no,{stripe:qn,options:xa,children:p(as,{method:cn,sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,onDecline:f,onCancel:Wt,runBeforeButtonClick:sr,onButtonClick:Q,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,errorText:rt})},cn)]})})]}):Xe("form",{onSubmit:Ci,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Oa,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),Xe("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[rl("flopay-direct-paypal-gate-debug-default"),ol("flopay-stripe-gate-debug-default"),jo&&yt&&Xe(Fo,{children:[le&&p("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."}),p(sa.Provider,{value:d,children:p(Wa,{sessionId:e,nonce:t,billingApiUrl:at,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,clientId:yt.clientId,environment:yt.environment,currency:bt.toUpperCase(),isSubscription:Et,providerObjectType:We,approvalPresentation:Ea==="popup"?void 0:Ea,onTokenizedBody:An,onComplete:s,onErrorChange:ue,onDecline:f,onTechnicalFailure:lo,onButtonClick:Q,runBeforeButtonClick:sr,isProcessing:_e,onLoadStateChange:Pi,onInitializationStateChange:vi,session:ft,existingOrderId:le?.orderId,debug:F},le?.orderId??"fresh")})]}),Wo&&p(no,{stripe:$o,options:Rs,children:p(fc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,isProcessing:_e,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Ds,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:Ws,presentationMode:co})}),po&&p(no,{stripe:qn,options:Is,children:p(hc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,intentKind:De>0?"payment":"setup",expressMethods:uo,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Ns,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:J})}),Ho&&p(Pc,{sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:at,paymentElementMethods:Ia,stripeInstance:qn,paymentElementBaseOptions:hi,futureUseSession:me,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:zs,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,themeId:ct,onExpandApm:it,expandedApmMethod:cn,buttonAppearance:{backgroundColor:S.cardButton?.backgroundColor,borderColor:S.cardInputBorder,textColor:S.cardButton?.color,borderRadius:Gr}})]}),u&&(Kc||Vc||Gc)&&p(ll,{label:"or pay with card"}),u&&nl]})}import{Fragment as Rr,jsx as se,jsxs as sn}from"react/jsx-runtime";var Oo=44,Ps="flopay_checkout_saved_payment_resume",li=new Map,ii=new Map;function Tc(e,t){t.settled&&t.consumers===0&&li.get(e)===t&&li.delete(e)}function Ep(e,t,n){let o=ii.get(e);if(o&&(!o.sdkGeneratedIdempotencyKey||!t||o.sdkGeneratedIdempotencyKey===t))return o.attempt;let a=n(),i={attempt:a,sdkGeneratedIdempotencyKey:t};ii.set(e,i);let s=()=>{ii.get(e)===i&&ii.delete(e)};return a.then(s,s),a}function Pa(e){return new Promise(t=>setTimeout(t,e))}function si(e,t,n){let o=ja({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:Lc,enabled:t!==!1});return o.beginCheckout(n),o}function va(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function ys(e,t,n,o,a,i){let s=si(e,t,n);s.error({errorCode:o,stage:a,paymentMethodCategory:"unknown",...i,...a==="session_read"?{requestCategory:"session_read"}:{}}),va(s)}function Mc(e,t,n,o){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()-n),durationMode:"machine",requestCategory:t,...o===void 0?{}:{attempt:o},statusClass:"2xx"})}function Ac(e,t,n,o,a){let i=Dc(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:n,durationMs:Math.max(0,e.now()-o),durationMode:"machine",requestCategory:n,attempt:a,statusClass:i.statusClass}),t instanceof bn&&t.code==="session_auto_completed"?!1:t instanceof bn&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown"}),!1):i.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown",requestCategory:n,statusClass:"4xx"}),!1):(e.error({...i,stage:n,paymentMethodCategory:"unknown",requestCategory:n}),!0)}function ms(e){return!e||e.data.stripe?.publishableKey?!1:!!Oc(e.data.paypal)?.clientId}var _p={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Tp(e){return new Pp(_p,{publishableKey:"provider_unavailable",...e})}async function fs(e,t){let{publishableKey:n,paypalPublishableKey:o}=Ki(e);return{...await Gi({publishableKey:n,paypalPublishableKey:o,...t}),publishableKey:n,paypalPublishableKey:o}}function vs(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Mp(){if(!vs())return null;try{let e=window.sessionStorage.getItem(Ps);return e?JSON.parse(e):null}catch{return null}}function xc(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 Ap(){if(typeof window>"u")return;let e=new URL(window.location.href),t=["payment_intent","payment_intent_client_secret","redirect_status"],n=!1;for(let o of t)e.searchParams.has(o)&&(e.searchParams.delete(o),n=!0);n&&window.history.replaceState(window.history.state,"",e.toString())}function Bc(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 Ip(!!e,t)}function xp(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function Fc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Bp(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 bs({sessionId:e,nonce:t,createSession:n,billingApiUrl:o,telemetry:a,appearance:i,locale:s,loading:c,error:f,onComplete:C,onError:E,onInstrument:k,onDecline:z,onCountryChange:ne,onZipChange:O,showPayPal:ve=!0,showStripe:V=!0,walletPresentation:v="auto",enabledPaymentMethods:P,showApplePay:he=!0,showGooglePay:N=!0,debug:Ie=!1,layout:Y,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe,showSecurityFooter:Te,onButtonClick:Pt,onBeforeButtonClick:Re,enableAVS:He,cardFieldOrder:ke,cardPreFormSlot:Q,avsLayout:je,submitLabel:$e,className:pt,initialErrorMessage:be=null,initialPayPalOrderId:ye,children:re,checkoutMode:M,confirmLabel:Ce,renderConfirmButton:Ue,onSessionCompleted:Me}){let U=wp(o),vt=Yn(()=>Nc(Fe),[Fe]),qe=i??vt?.appearance,Ee=n?"embedded_checkout":"standard_checkout",Je=hs(re,Y),[Ae,Qe]=Gt(null),[De,bt]=Gt(null),Yt=At(null),yt=At(null),Et=At(0),[I,ee]=Gt(null),Oe=At(null),[F,Se]=Gt(null),mt=Yn(()=>n?da(n):"",[n]),Ne=n?`create:${mt}`:`session:${e??""}`,wt=Fc(F),_=At(new Set),d=At(Ne),m=At(Ne);Xo(()=>{m.current=Ne,d.current!==Ne&&(d.current=Ne,_.current.clear())},[Ne]);let A=vn(w=>{if(m.current===Ne){if(Ul.has(w.name)){if(_.current.has(w.name))return;_.current.add(w.name)}Nt(()=>k?.(w))}},[Ne,k]),T=Ro(A,Ne),J=At(!1),ft=vn(w=>{if(J.current)return;let b=w.gateway||!wt?w:{...w,gateway:wt};A(b)},[A,wt]);pr(()=>{T({class:"lifecycle",name:"checkout.mount"})},[T]);let[me,We]=Gt(e??""),H=e??me,Ut=n?"":H,[Ct,_t]=Gt(!0),[at,oe]=Gt(null),[In,Bn]=Gt(0),[yn,qt]=Gt("full"),[Fn,Dn]=Gt(!1),[hn,Tt]=Gt(be),[Ve,Le]=Gt(null),[Rn,kt]=Gt(null),[On,mn]=Gt(!1),[jt,Qt]=Gt(void 0),[Jn,$n]=Gt(""),[en,xt]=Gt(!1),[Cn,ln]=Gt(!1),[Ft,fn]=Gt(!1),Dt=At(null),on=At(0),Bt=At(void 0),[ae,Zn]=Gt("loading"),[Xn,Qn]=Gt(0),tn=At(!1),En=At(!1),Sn=At(!1),ce=At(null),et=At(null),u=Yn(()=>({checkoutMode:M??yn,layout:xp(re,Y)}),[M,re,yn,Y]),xe=At(C);xe.current=C;let L=At(E);L.current=E;let Pn=At(z);Pn.current=z;let Nn=vn(w=>Ya(ce,async b=>{try{return await w(b)}catch(j){throw b.aborted?To(j):j}}),[]);pr(()=>()=>{ce.current?.abort(),ce.current=null},[]);let Jt=vn((w,b)=>{Yt.current=w,bt(w),Oe.current=b,ee(b)},[]),_n=vn(()=>{let w=yt.current;w&&(yt.current=null,w.destroy())},[]);pr(()=>{pn(De)?.setCheckoutContext(u),I&&I!==De&&pn(I)?.setCheckoutContext(u)},[De,I,u]);let nt=At(Me);nt.current=Me;let yr=vn(w=>{Zn(w),!(w!=="exhausted"||Sn.current)&&(Sn.current=!0,L.current?.(new bn("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Dr=vn(()=>{Zn("retrying"),Qn(w=>w+1)},[]);pr(()=>{Zn("loading"),Qn(0),Sn.current=!1},[H]),pr(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:Lc,checkout_type:Ee,checkout_layout:Je,billing_api_url:U})},[Je,Ee,U]);let It=Yn(()=>n?da(n,!0):"",[n]),Ln=Yn(()=>Jn===It?jt:void 0,[jt,Jn,It]),er=Yn(()=>n?Oi(n,Ln):void 0,[n,Ln]),tr=M??er?.checkoutMode??"full",$t=Yn(()=>er?{...er,checkoutMode:tr}:void 0,[er,tr]);pr(()=>{Qt(void 0),$n(It),Bt.current=void 0,Dt.current=null,fn(!1)},[It]),pr(()=>{Tt(be)},[be]);let mr=vn((w,b,j)=>{Nt(()=>{Pn.current?.(un(w,b,j))})},[]),fr=vn(async(w,b)=>{Tt(null),kt(null),mn(!1),Le("processing");let j=b?.sessionId??w.id,K=w.clientSecret||t,it=Fc(w),Wt=Yt.current??Oe.current,de=pn(Wt),x=Wt?null:si(U,a,u),B={log:te=>{de?de.log(te):x?.log(te)},error:te=>{de?de.error(te):x?.error(te)},terminal:te=>{de?de.terminal(te):x?.terminal(te)},performance:te=>{de?de.performance(te):x?.performance(te)},now:()=>de?.now()??x?.now()??0,elapsed:te=>de?.elapsed(te)??Math.max(0,(x?.now()??te)-te)},R=B.now(),l=!!(b?.initialAutoProcessingError||b?.initialAutoProcessingPending),y=!1,h,$=()=>{y||(y=!0,l=!0,h=B.now(),B.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},le=!1,Pe=()=>{le||(le=!0,B.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),B.performance({stage:"processing",durationMs:B.elapsed(R),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),h!==void 0&&B.performance({stage:"recovery",durationMs:B.elapsed(h),durationMode:"machine",paymentMethodCategory:"saved"}))};B.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),J.current=!0;try{B.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{J.current=!1}T({class:"lifecycle",name:"payment.processing.started",provider:it}),l&&$();let Ht;try{let te=rc(b?.initialAutoProcessingError),we=b?.initialAutoProcessingError?.type==="3ds_required"&&!b.initialAutoProcessingError.threeDSecureToken&&b.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:b.initialAutoProcessingError.nextActionRedirectUrl}:null,Be,rt=Z=>($(),Nn(S=>Mo(Z,{billingApiUrl:U,sessionId:j,nonce:K,session:w,signal:S})));if(we)Be=await rt(we);else if(te)$(),te.type==="paypal_redirect_required"&&et.current?.publishableKey&&xc({sessionId:j,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),Be=await Nn(Z=>Xa(te,{flopay:Yt.current,paypalFlopay:Oe.current,attempt3DS:b?.attempt3DS,billingApiUrl:U,sessionId:j,session:w,telemetry:!1,signal:Z})),te.type==="paypal_redirect_required"&&gs();else if(b?.initialAutoProcessingPending){let Z=b.initialAutoProcessingPending,S=new ai(U,{telemetry:!1}),q=await Nn(_e=>S.waitForCheckoutSessionCompletion(Z.sessionId,{initialDelayMs:Z.retryAfterMs,nonce:K,statusUrl:Z.statusUrl,signal:_e})),Ke=qr(q,w),ge=q.autoProcessingError?.type==="3ds_required"&&q.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:q.autoProcessingError.nextActionRedirectUrl}:null;if(ge)Be=await rt(ge);else{if(!Ar(Ke))throw So(Ke);Be=Mr(Ke,j)}}else{if(b?.initialAutoProcessingError)throw kr(b.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:b.initialAutoProcessingError.checkoutMethod});if(b?.fromCreateSession)return b?.fallbackToFull&&(qt("full"),Bc("full")),!1;{let Z=await Ao({billingApiUrl:U,sessionId:j,session:w,nonce:K,telemetry:!1});Z.type==="success"?Be=Z.result:Z.type==="next_action_required"?Be=await rt(Z):($(),Z.type==="paypal_redirect_required"&&et.current?.publishableKey&&xc({sessionId:j,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),Be=await Nn(S=>Xa(Z,{flopay:Yt.current,paypalFlopay:Oe.current,attempt3DS:b?.attempt3DS,billingApiUrl:U,sessionId:j,session:w,telemetry:!1,signal:S})),Z.type==="paypal_redirect_required"&&gs())}}j&&_o(j),Pe(),l&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),B.terminal({outcome:Be.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),mn(Be.status==="authorized"),Le("success"),await Pa(600),Ht=()=>xe.current?.(Be)}catch(te){let we=Ur(ya(te),j);if(we.code==="three_ds_aborted")return!1;let Be=we.checkoutMethod??pa;Tt(we.message),kt(we.message),mn(!1),b?.fallbackToFull&&(B.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),qt("full"),Bc("full")),Pe();let rt=we.statusCode===void 0?void 0:Rp(we.statusCode,"unknown"),Z=rt==="4xx"?{requestCategory:"process_payment",statusClass:rt}:{},S=rt===void 0||rt==="4xx";if(S&&(we.telemetryOutcome==="payment_declined"||!!(we.declineCode||we.code?.toLowerCase().includes("declin"))))B.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Z});else if(S&&(we.telemetryOutcome==="validation_rejected"||we.type==="validation_error"))B.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Z});else{let ge=Dc(te,l?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),_e=we.telemetryRequestCategory??"process_payment";J.current=!0;try{B.error({...ge,...we.telemetryFailureCategory?{failureCategory:we.telemetryFailureCategory}:{},stage:l?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:_e})}finally{J.current=!1}T({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:_e,provider:it})}return Nt(()=>L.current?.(we)),mr(Be,we,{code:we.code,declineCode:we.declineCode}),Le("error"),await Promise.allSettled([Pa(400),b?.ensureProvidersReady?b.ensureProvidersReady():Promise.resolve()]),l&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Pe(),x&&va(x),Le(null),kt(null)}return Nt(Ht),!0},[mr,T,t,U,Nn,a,u]);pr(()=>{if(typeof window>"u"||En.current)return;let w=new URLSearchParams(window.location.search),b=w.get("payment_intent_client_secret");if(!b)return;let j=Mp();j&&(En.current=!0,(async()=>{let K,it=0;Tt(null),kt(null),Le("processing"),Dn(!0);try{if(w.get("redirect_status")==="failed")throw Object.assign(new bn("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Wt,paypalFlopay:de}=await Gi({publishableKey:j.publishableKey,paypalPublishableKey:j.paypalPublishableKey,billingApiUrl:U,locale:s,telemetry:a});K=pn(de??Wt),K?.setCheckoutContext(u),it=K?.now()??0,K?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),K?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let x=(de??Wt)?.getRawProvider();if(!x)throw Object.assign(new bn("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:B,error:R}=await x.retrievePaymentIntent(b);if(R)throw Object.assign(new bn(R.message??"Failed to retrieve PayPal payment status.","api_error",{code:R.code}),{checkoutMethod:"paypal"});let l=Ml(B?.status);if(!B||l==="failed")throw Object.assign(new bn("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let y=typeof B.payment_method=="string"?B.payment_method:B.payment_method?.id,h=l;if(j.sessionId){let Pe=(await new ai(U,{telemetry:!1}).getUnifiedCheckoutSession(j.sessionId)).data.session;if(Pe&&Pe.status!=="complete"){let Ht=await Ao({billingApiUrl:U,sessionId:j.sessionId,session:Pe,telemetry:!1,tokenizedData:{id:y??B.id,type:"card",threeDSecureActionResultTokenId:B.id,isPaypal:!0}});if(Ht.type!=="success")throw Object.assign(new bn("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});h=Ht.result.status}}j.sessionId&&_o(j.sessionId),K?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),K?.performance({stage:"redirect_resume",durationMs:K.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),K?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Le("success"),await Pa(600),Nt(()=>xe.current?.({status:h,paymentIntentId:B.id,paymentMethodId:y,checkoutMethod:"paypal"}))}catch(Wt){let de=Ur(ya(Wt),j.sessionId),x=de.checkoutMethod??"paypal",B=!!(de.declineCode||de.code?.toLowerCase().includes("declin"));if(K)K.performance({stage:"redirect_resume",durationMs:K.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),B?K.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):K.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(B){let R=si(U,a,u);R.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),va(R)}else ys(U,a,u,"REDIRECT_RESUME_FAILED","redirect_resume");Tt(de.message),kt(de.message),Nt(()=>L.current?.(de)),mr(x,de,{code:de.code,declineCode:de.declineCode}),Le("error"),await Pa(400)}finally{gs(),Ap(),Le(null),kt(null),Dn(!1)}})())},[mr,s,U,a,u]);let Tn=At(null),gr=Yn(()=>$t?da($t):"",[$t]),Wn=At($t);Wn.current=$t,pr(()=>{We(e??"")},[e]),pr(()=>{tn.current=!1,Tt(be),kt(null),mn(!1),Le(null)},[gr,be,e]);async function hr(w,b,j){let K=si(U,a,u),it=new ai(U,{telemetry:!1}),Wt=!1;try{let de=w.idempotencyKey===void 0?void 0:_c(w.idempotencyKey),x=Zl(b,j),B=Jl(b,j);x?.canonicalIdentity===j&&B&&B.canonicalIdentity===void 0&&(Va(b,j,B.idempotencyKey),B={...B,canonicalIdentity:j});let R=de??(B?.canonicalIdentity===j?B.idempotencyKey:void 0),l,y=!1;K.log({name:x?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let h=x?.sid??null,$=null,le,Pe,Ht=!1;if(h)try{$=await it.getUnifiedCheckoutSession(h,x?.nonce),x&&x.canonicalIdentity===void 0&&(Yl($.data.session,w)?(Ka(b,j,h,x.nonce??$.data.session?.clientSecret),B&&B.canonicalIdentity===void 0&&(Va(b,j,B.idempotencyKey),R??(R=B.idempotencyKey))):(Ha(b,j),B=null,R=de,h=null,$=null));let we=$?.data.session?.status,Be=$?.data.session,rt=Be?.clientSecret||x?.nonce;if(h&&Be?.buyerIdentified===!1&&rt&&(Pe=Co(it,h,rt,w.account)),h&&$&&we==="complete"){if(Wi(h))return{sid:h,result:$};Ha(b,j),h=null,$=null,y=!0}}catch{K.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),x?.canonicalIdentity===void 0?(Ha(b,j),R=de):$i(b,j),h=null}if(!h){!de&&(y||!R)&&(R=_c(),l=R),R&&Va(b,j,R);let we=K.now(),Be=0;K.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let rt={...w,idempotencyKey:R,avsCheck:!!He,avsConfig:typeof He=="object"?He:void 0,checkoutType:"embedded_checkout",checkoutLayout:hs(re,Y)};Object.defineProperty(rt,vp,{configurable:!1,enumerable:!1,value:{onAttempt:q=>{Be=Math.max(Be,q)}}});let Z=()=>{Mc(K,"session_create",we,Be)},S=q=>{Ac(K,q,"session_create",we,Be)&&T({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if(Cp(rt)){let q=await it.createDetachedSession(rt);q.claimed.catch(()=>{}),$=q.shell,h=q.sessionId,Pe=q.claim;let Ke=K.now();K.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),le=q.claimed.then(ge=>{let _e=ge.data.session?.id??q.sessionId;return _e&&Ka(b,j,_e,ge.data.session?.clientSecret??q.nonce),Mc(K,"session_claim",Ke),Z(),ge},ge=>{throw $i(b,j),Ac(K,ge,"session_claim",Ke,0)&&T({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),ge}).finally(()=>va(K)),le.catch(()=>{}),Wt=!0,K.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),K.performance({stage:"session_shell",durationMs:K.now()-we,durationMode:"machine",requestCategory:"session_create",attempt:Be,statusClass:"2xx",paymentMethodCategory:"card"})}else $=await it.createAndFetchSession(rt),Z()}catch(q){throw S(q),q}h=$.data.session?.id??h??"",h&&!le&&Ka(b,j,h,$.data.session?.clientSecret)}let te=$?.data.session;return!Pe&&h&&te?.buyerIdentified===!1&&te.clientSecret&&(Pe=Co(it,h,te.clientSecret,w.account)),{sid:h??"",result:$,sdkGeneratedIdempotencyKey:l,...le?{claimed:le}:{},...Pe?{claim:Pe}:{},...Ht?{claimRequiresIdentity:!0}:{}}}finally{Wt||va(K)}}let Er=At(hr);Xo(()=>{Er.current=hr},[hr]);let zn=vn(async(w,b)=>{let j=Wn.current;if(!j)throw new bn("createSession is required to bootstrap checkout.","validation_error");let K=Oi(j,w),it=da(K),Wt=Gl(K),de=li.get(it);if(!de){let R={canonicalIdentity:it,promise:Er.current(K,Wt,it),consumers:0,settled:!1};de=R,li.set(it,R);let l=()=>{R.settled=!0,Tc(it,R)};R.promise.then(l,l)}de.consumers+=1;let x=!1,B=()=>{x||(x=!0,de.consumers-=1,Tc(it,de))};b?.(B);try{let R=await de.promise;Tn.current=it,w&&($n(It),Qt(te=>El(te,w)));let{sid:l,result:y,claimed:h,claim:$,claimRequiresIdentity:le}=R;if(Bt.current=$,fn(le===!0),Qe(y),y.data.session&&Se(y.data.session),l&&We(l),h){on.current+=1;let te=on.current;Dt.current=h,ln(!0),h.then(we=>{on.current===te&&(Dt.current===h&&(Dt.current=null),Qe(we),we.data.session&&Se(we.data.session),ln(!1),fn(!1))},we=>{on.current===te&&(Dt.current===h&&(Dt.current=null),ln(!1),fn(!1),oe(we instanceof bn?we:new bn(we instanceof Error?we.message:"Failed to create session","api_error")))})}else on.current+=1,Dt.current=null,ln(!1),fn(!1);let{flopay:Pe,paypalFlopay:Ht}=await fs(y,{billingApiUrl:U,locale:s,telemetry:a});return Jt(Pe,Ht),_t(!1),R}catch(R){throw Tn.current===it&&(Tn.current=null),R}finally{b||B()}},[It,Jt,s,U,a]),nr=At(fr);nr.current=fr;let rr=At(zn);rr.current=zn;let Mt=vn(async w=>{if(!Bp(w)||en)return{sessionId:me,session:F};xt(!0);try{let b=await zn(w);return{sessionId:b.sid,session:b.result.data.session??null}}finally{xt(!1)}},[zn,en,me,F]),Un=vn(async w=>{let b=Bt.current;if(!b)return;let j=on.current,K=await b(w);on.current===j&&(Qe(K),K.data.session&&Se(K.data.session))},[]),wn=vn(async()=>{await Dt.current},[]),or=vn(async()=>(await wn(),{proceed:!0}),[wn]);pr(()=>{let w=!1,b,j=++Et.current;_n(),oe(null),Bn(0);let K=()=>{w=!0,Et.current===j&&(Et.current+=1,_n())},it=Wn.current;if(gr&&it)return qt(tr),_t(!1),Tn.current===gr?K:(Se(_l(it,M)),(async()=>{let x=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),B=tr==="auto"&&!tn.current&&!x;B&&(Tt(null),kt(null),Le("processing"));try{let R=await rr.current(void 0,$=>{b=$}),l=R.result.data.session??null;et.current=Ki(R.result);let y=ms(R.result),h=Wi(R.sid||l?.id);if(!w&&B&&l&&!y&&!h){tn.current=!0,await Ep(gr,R.sdkGeneratedIdempotencyKey,()=>nr.current(l,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:R.result.autoProcessingError,initialAutoProcessingPending:R.result.autoProcessingPending,autoProcessingAttempted:R.result.autoProcessingAttempted,sessionId:R.sid||l.id}));return}!w&&B&&((y||h)&&(tn.current=!0),Le(null),kt(null))}catch(R){if(w)return;let l=La(R);if(B&&l==="session_auto_completed"){tn.current=!0,Le("success"),await Pa(600),w||(Nt(()=>{xe.current?.({status:"succeeded"})}),Le(null),kt(null));return}B&&(Le(null),kt(null));let y=R instanceof bn?R:new bn(R instanceof Error?R.message:"Failed to create session","api_error");oe(y)}finally{b?.(),b=void 0}})(),()=>{K(),b?.()});_t(!0);async function Wt(){let x=!1,B=null;try{let R=new ai(U,{telemetry:!1}),l=await R.getUnifiedCheckoutSession(H,t);if(B=l,w)return;Qe(l);let y=l.data.session??null;if(Se(y),!y)throw new bn("No session data returned","api_error");let h=y.checkoutMode;if(h==="setup")throw new bn("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(y.status==="authorized"){_t(!1),Nt(()=>{xe.current?.(Mr(y,H)),nt.current?.(y.successUrl??"")});return}if(y.status==="complete"){_t(!1),Nt(()=>{nt.current?.(y.successUrl??"")});return}if(y.status==="expired")throw Na(y);x=!0;let $=M??h??"full";qt($),on.current+=1;let le=y.clientSecret||t;Bt.current=y.buyerIdentified===!1&&le?Co(R,H,le,{...y.customer?.id?{userId:y.customer.id}:{}}):void 0,ln(!1),fn(!1);let Pe=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),Ht=ms(l);if($==="auto"&&!tn.current&&!Pe&&!Ht){tn.current=!0;let te=de(l);try{if(await nr.current(y,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>te,sessionId:H||y.id}),w)return;await te,w||_t(!1);return}catch{if(w)return;await te,w||_t(!1);return}}await de(l),w||_t(!1)}catch(R){if(w)return;let l=Rl(R,x);if(x&&T({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),l){let{errorCode:h,stage:$,...le}=l;ys(U,a,u,h,$,le)}if(l?.stage==="provider_load"&&(M??B?.data.session?.checkoutMode??"full")==="full"&&Il(B,ve,V)){let h=Tp({billingApiUrl:U,locale:s,telemetry:a});yt.current=h,Jt(h,null),Bn(1),_t(!1);return}let y=R instanceof bn&&l?.stage!=="provider_load"?R:kl();y!==R&&Nt(()=>L.current?.(y)),oe(y),_t(!1)}}async function de(x){let{flopay:B,paypalFlopay:R,...l}=await fs(x,{billingApiUrl:U,locale:s,telemetry:a});et.current={publishableKey:l.publishableKey,paypalPublishableKey:l.paypalPublishableKey},Jt(B,R),Bn(0)}return Wt(),K},[M,gr,tr,Ut,t,ve,V]);let ar=vn(async()=>{if(!Ae||In!==1)return;let w=Et.current;Bn(2);try{let{flopay:b,paypalFlopay:j}=await fs(Ae,{billingApiUrl:U,locale:s,telemetry:a});if(Et.current!==w)return;_n(),Jt(b,j),Bn(0)}catch(b){if(Et.current!==w)return;let{errorCode:j,stage:K,...it}=Di(b);ys(U,a,u,j,K,it)}},[_n,Jt,s,In,U,a,u,Ae]),tt=!!(H&&(F?.clientSecret||t)),nn=Fn||!tt,cn=vn(async()=>{if(!(Fn||!tt||!F)){Dn(!0),Tt(null);try{await fr(F,{attempt3DS:!0,fallbackToFull:!0,sessionId:H||F.id})}finally{Dn(!1)}}},[H,Fn,tt,fr,F]),Mn=Oc(Ae?.data.paypal,ye),Or=ms(Ae),Pr=Yn(()=>{if(!(!Ae||!F||!Ae.data.stripe?.publishableKey))return{billingApiUrl:U}},[Ae,F,U]),_r=!!(n&&!re&&Y==="buttons"&&Re&&tr==="full"),Hn=!!(H&&(Sp(F?.vault)||Qr(F))),rn=Yn(()=>({session:F,loading:Ct,error:at,checkoutMode:yn,inlineSessionDraft:$t,applyInlineSessionPatch:_r?Mt:void 0,inlineSessionPatchProcessing:en,claimPending:Cn,claimRequiresIdentity:Ft,claimBuyerIdentity:Un,waitForDataAttachment:wn}),[F,Ct,at,yn,$t,_r,Mt,en,Cn,Ft,Un,wn]),Nr=!!n&&Y==="buttons"&&!Or&&!Hn&&(!De||!Pr),an=Ve?se(Sr,{status:Ve,errorMessage:Rn,authorized:On}):null;if(Ct&&!Hn){if(c)return sn(Rr,{children:[c,an]});if(Y==="buttons"){let w=vt?.buttonsLayout?.cardButton?.borderRadius??vt?.appearance.variables?.borderRadius??8,b=j=>se("div",{style:{height:j,borderRadius:w,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return sn(Rr,{children:[sn("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[ve&&b(Oo),V&&(he||N)&&b(Oo),V&&b(Oo),se("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),an]})}return sn(Rr,{children:[sn("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[se("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),se("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),an]})}return at?f?se(cr.Provider,{value:rn,children:f(at)}):se(cr.Provider,{value:rn,children:se("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:at.message})}):Nr?sn(Rr,{children:[se(cr.Provider,{value:rn,children:se(Dp,{onButtonClick:Pt,showPayPal:ve,showStripe:V,showApplePay:he,showGooglePay:N,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe})}),an]}):Or&&F&&Mn?sn(Rr,{children:[se(cr.Provider,{value:rn,children:sn("div",{className:pt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[hn&&se(Eo,{icon:!1,children:hn}),ae==="retrying"&&se("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),ae==="exhausted"&&sn("div",{role:"alert",children:[se("div",{children:"PayPal is temporarily unavailable. Please try again."}),se("button",{type:"button",onClick:Dr,children:"Retry PayPal"})]}),ae!=="exhausted"&&se("div",{"aria-hidden":ae==="retrying"?!0:void 0,style:ae==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:se(Vl,{sessionId:H,nonce:F.clientSecret||void 0,billingApiUrl:U,email:F.customer?.email||$t?.account?.email,billingName:[F.customer?.firstName,F.customer?.lastName].filter(Boolean).join(" ")||[$t?.account?.firstName,$t?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Un,clientId:Mn.clientId,environment:Mn.environment,currency:(F.currency??"usd").toUpperCase(),isSubscription:F.mode==="subscription",providerObjectType:Mn.providerObjectType,approvalPresentation:Mn.approvalPresentation,existingOrderId:Mn.existingOrderId,onComplete:C,onErrorChange:Tt,onDecline:z,onButtonClick:Pt,runBeforeButtonClick:or,onInitializationStateChange:yr,allowAutomaticRetry:Xn===0,session:F,telemetry:a,telemetryContext:u,onInstrument:ft,debug:Ie},`${Ne}:paypal-init-${Xn}`)})]})}),an]}):yn==="confirm"?sn(Rr,{children:[se(cr.Provider,{value:rn,children:se(Ga,{flopay:De,paypalFlopay:I,options:Pr??{billingApiUrl:U},onInstrument:ft,children:sn("div",{className:pt,children:[hn&&se("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:hn}),Ue?Ue({onConfirm:cn,isProcessing:nn}):se("button",{type:"button",onClick:cn,disabled:nn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:nn?"not-allowed":"pointer",opacity:nn?.6:1},children:Fn?"Processing...":Ce??"Confirm Purchase"})]})},Ne)}),an]}):(!De||!Pr)&&!(Hn&&yn==="full")?se(Rr,{children:an}):sn(Rr,{children:[se(cr.Provider,{value:rn,children:sn(Ga,{flopay:De,paypalFlopay:I,options:Pr??{billingApiUrl:U},onInstrument:ft,children:[In===1&&se("button",{type:"button",onClick:ar,children:"Retry payment methods"}),re?sn(Rr,{children:[hn&&se("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:hn}),se(Fp,{sessionId:H,nonce:F?.clientSecret||void 0,billingApiUrl:U,session:F,submitLabel:$e,walletPresentation:v,children:re})]}):se(us,{sessionId:H,nonce:F?.clientSecret||void 0,telemetry:a,email:F?.customer?.email||$t?.account?.email,userId:F?.customer?.id||$t?.account?.userId,firstName:F?.customer?.firstName||$t?.account?.firstName,lastName:F?.customer?.lastName||$t?.account?.lastName,totalAmount:F?Math.round(bp(F).total*100):0,currency:F?.currency?.toLowerCase()??"usd",onComplete:C,onError:E,onDecline:z,error:hn,onErrorChange:Tt,showPayPal:ve,showStripe:V,walletPresentation:v,enabledPaymentMethods:In?[]:P??Ae?.data.stripe?.enabledPaymentMethods??F?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Ae?.data.stripe?.enabledPaymentMethodCountries,showApplePay:he,showGooglePay:N,layout:Y,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,appearance:qe,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe,onButtonClick:Pt,onBeforeButtonClick:Re,onBuyerIdentityReady:Un,enableAVS:He,...ke?{cardFieldOrder:ke}:{},...Q?{cardPreFormSlot:Q}:{},avsLayout:je,country:F?.customer?.country,city:F?.customer?.city,state:F?.customer?.state,onCountryChange:ne,onZipChange:O,avsCheck:!!He,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:hs(re,Y),className:pt,submitLabel:$e,directPaypal:Mn,isSubscription:F?.mode==="subscription",session:F,dataAttachmentPending:Cn,dataAttachmentRequiresIdentity:Ft,debug:Ie})]},Ne)}),an]})}function Fp({sessionId:e,nonce:t,billingApiUrl:n,session:o,submitLabel:a,walletPresentation:i,children:s}){return se(Rr,{children:ps.Children.map(s,c=>{if(!ps.isValidElement(c))return c;let f=c.props,C={};return f.sessionId||(C.sessionId=e),!f.nonce&&t&&(C.nonce=t),f.billingApiUrl||(C.billingApiUrl=n),f.submitLabel===void 0&&a!==void 0&&(C.submitLabel=a),f.walletPresentation===void 0&&(C.walletPresentation=i),o?.customer&&(f.email||(C.email=o.customer.email),f.userId||(C.userId=o.customer.id),f.firstName||(C.firstName=o.customer.firstName),f.lastName||(C.lastName=o.customer.lastName)),Object.keys(C).length===0?c:ps.cloneElement(c,C)})})}function Dp({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:o,showGooglePay:a,theme:i,buttonsTheme:s,buttonsStyles:c,cardButtonContent:f,cardBackButtonContent:C,cardTitleContent:E}){let[k,z]=Gt(!1),ne=Yn(()=>Nc(i),[i]),O=Yn(()=>{let P=ne?.buttonsLayout??kp(s);return c?{...P,...c,cardButton:{...P.cardButton,...c.cardButton},cardFormContainer:{...P.cardFormContainer,...c.cardFormContainer},backButton:{...P.backButton,...c.backButton},backButtonIcon:{...P.backButtonIcon,...c.backButtonIcon},submitButton:{...P.submitButton,...c.submitButton},title:{...P.title,...c.title}}:P},[ne,s,c]),ve=ne?.buttonsLayout?.cardButton?.borderRadius??ne?.appearance.variables?.borderRadius??8,V=P=>se("div",{style:{height:P,borderRadius:ve,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),v=f===void 0?{boxSizing:"border-box",height:Oo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(k){let P=O.cardInputBorder??"#e5e7eb",he=O.cardInputBackground??"white",N=ho(C),Ie=ho(E);return sn("div",{style:{backgroundColor:O.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...O.cardFormContainer},children:[sn("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[sn("button",{type:"button",onClick:()=>z(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:N?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...O.backButton},children:[se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...O.backButtonIcon},children:se("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:se("path",{d:"M15 18l-6-6 6-6"})})}),se(vo,{content:C})]}),Ie?se("div",{style:{flex:1}}):se("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...O.title},children:se(na,{content:E})})]}),se("div",{style:{backgroundColor:he,border:`1px solid ${P}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:se("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),sn("div",{style:{display:"flex"},children:[se("div",{style:{flex:1,backgroundColor:he,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomLeftRadius:8,padding:12,height:45},children:se("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),se("div",{style:{flex:1,backgroundColor:he,borderTop:"none",borderRight:`1px solid ${P}`,borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomRightRadius:8,padding:12,height:45},children:se("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),se("div",{style:{backgroundColor:he,border:`1px solid ${P}`,borderRadius:8,marginTop:8,padding:12,height:45},children:se("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),se("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...O.submitButton,opacity:.5}}),se("style",{children:`
|
|
12
|
+
`}),Ko&&Or&&Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:u?-2:0},children:[Xe("button",{type:"button",onClick:K,style:{display:"inline-flex",alignItems:"center",gap:wi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:S.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...S.backButton},"aria-label":"Back to payment methods",children:[p("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...S.backButtonIcon},children:p("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:p("path",{d:"M15 18l-6-6 6-6"})})}),p(vo,{content:Re})]}),Zs?p("div",{style:{flex:1}}):p("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:S.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...S.title},children:p(ta,{content:He})})]}),!Ko&&!Zs&&p("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:ki,order:u?-3:0,...S.title},children:p(ta,{content:He})}),u&&ye&&p("div",{style:{order:-2,width:"100%"},children:ye}),u&&Lr&&Xe("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[p("div",{style:{backgroundColor:yo,border:`1px solid ${Vn(_a)}`,borderRadius:Zt,padding:"10px"},children:p("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:Qt,onChange:r=>{Mt("email"),on.current=r.target.value,Jn(r.target.value)},onPointerDown:()=>Mt("email"),onKeyDown:()=>Mt("email"),onBlur:()=>{Un("email")&&Wn(!0),ao||yi()},disabled:_e,required:!0,"aria-invalid":_a||void 0,"aria-describedby":_a?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...Ii}})}),_a&&p("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:Yo,children:ci.empty?"Email address is required":"Enter a valid email address"})]}),ae&&p("div",{style:{order:u?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let r=qt,g=(D=!1)=>({backgroundColor:yo,border:`1px solid ${Vn(D)}`,borderRadius:Zt,marginTop:"0.5rem",padding:"10px"}),W=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...Ii}),fe=Tu(r);return Xe(Fo,{children:[Kt(ae.address_line_1,r)&&Xe(Fo,{children:[p("div",{style:g(Vt("line1")),children:p("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:Tt,onChange:D=>{Mt("line1"),Bt.current.addressLine1=!0,ln.current=D.target.value,Ve(D.target.value)},onPointerDown:()=>Mt("line1"),onKeyDown:()=>Mt("line1"),onBlur:()=>wn("line1"),disabled:_e,required:!0,"aria-invalid":Vt("line1")||void 0,"aria-describedby":Vt("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:W()})}),Vt("line1")&&p("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:Yo,children:"Street address is required"})]}),Kt(ae.address_line_2,r)&&p("div",{style:g(),children:p("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Le,onChange:D=>{Bt.current.addressLine2=!0,Ft.current=D.target.value,Rn(D.target.value)},disabled:_e,"data-testid":"flopay-address-line2",style:W()})}),(Kt(ae.city,r)||Kt(ae.state,r))&&Xe("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[Kt(ae.city,r)&&p("div",{style:{flex:1,backgroundColor:yo,borderTop:`1px solid ${Vn(Vt("city"))}`,borderRight:`1px solid ${Vn(Vt("city"))}`,borderBottom:`1px solid ${Vn(Vt("city"))}`,borderLeft:`1px solid ${Vn(Vt("city"))}`,padding:"10px",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,...Kt(ae.state,r)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:Zt}},children:p("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:kt,onChange:D=>{Mt("city"),Bt.current.city=!0,fn.current=D.target.value,On(D.target.value)},onPointerDown:()=>Mt("city"),onKeyDown:()=>Mt("city"),onBlur:()=>wn("city"),disabled:_e,required:!0,"aria-invalid":Vt("city")||void 0,"aria-describedby":Vt("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:W()})}),Kt(ae.state,r)&&p("div",{style:{flex:1,backgroundColor:yo,borderTop:`1px solid ${Vn(Vt("state"))}`,borderRight:`1px solid ${Vn(Vt("state"))}`,borderBottom:`1px solid ${Vn(Vt("state"))}`,borderLeft:`1px solid ${Vn(Vt("state"))}`,padding:"10px",borderTopRightRadius:Zt,borderBottomRightRadius:Zt,...Kt(ae.city,r)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${Vn(Vt("state")||Vt("city"))}`}:{borderRadius:Zt}},children:fe?Xe("select",{id:"flopay-billing-state",name:"billing-state",value:mn,onChange:D=>{Mt("state"),Bt.current.state=!0,Dt.current=D.target.value,jt(D.target.value)},onPointerDown:()=>Mt("state"),onKeyDown:()=>Mt("state"),onBlur:()=>wn("state"),disabled:_e,autoComplete:"billing address-level1",required:!0,"aria-invalid":Vt("state")||void 0,"aria-describedby":Vt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...W(),cursor:"pointer"},children:[p("option",{value:"",children:Gi(r)}),fe.map(D=>p("option",{value:D.code,children:D.name},D.code))]}):p("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:Gi(r),autoComplete:"billing address-level1",value:mn,onChange:D=>{Mt("state"),Bt.current.state=!0,Dt.current=D.target.value,jt(D.target.value)},onPointerDown:()=>Mt("state"),onKeyDown:()=>Mt("state"),onBlur:()=>wn("state"),disabled:_e,required:!0,"aria-invalid":Vt("state")||void 0,"aria-describedby":Vt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:W()})})]}),Vt("city")&&p("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:Yo,children:"City is required"}),Vt("state")&&Xe("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:Yo,children:[Gi(r)," is required"]}),(Kt(ae.country,r)||Kt(ae.postal_code,r))&&Xe("div",{style:{display:"flex",flexDirection:re==="column"?"column":"row",gap:re==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[Kt(ae.country,r)&&p("div",{style:{flex:re==="row"?1:void 0,backgroundColor:yo,borderTop:`1px solid ${Go}`,borderRight:`1px solid ${Go}`,borderBottom:`1px solid ${Go}`,borderLeft:`1px solid ${Go}`,padding:"10px",...re==="row"&&Kt(ae.postal_code,r)?{borderRadius:"0",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,borderRight:"none"}:{borderRadius:Zt}},children:Xe("select",{id:"flopay-billing-country",name:"billing-country",value:qt,onChange:D=>{Bt.current.country=!0,Cn.current=D.target.value,Fn(D.target.value),qe?.(D.target.value),Dt.current="",jt("")},disabled:_e,autoComplete:"billing country","data-testid":"flopay-country",style:{...W(),cursor:"pointer"},children:[qt===""?p("option",{value:"",children:"Select country"}):null,Cu.map(D=>Xe("option",{value:D.code,children:[D.flag," ",D.name]},D.code))]})}),Kt(ae.postal_code,r)&&p("div",{style:{flex:re==="row"?1:void 0,backgroundColor:yo,border:`1px solid ${Yc}`,padding:"10px",...re==="row"&&Kt(ae.country,r)?{borderRadius:"0",borderTopRightRadius:Zt,borderBottomRightRadius:Zt}:{borderRadius:Zt}},children:p("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:ts(qt),autoComplete:"billing postal-code",value:Dn,onChange:D=>{Mt("zip"),Bt.current.zip=!0,xt.current=D.target.value,hn(D.target.value),Ee?.(D.target.value)},onPointerDown:()=>Mt("zip"),onKeyDown:()=>Mt("zip"),onBlur:()=>{Un("zip")&&Tn(!0)},disabled:_e,required:Ln.required,"aria-invalid":Ta||void 0,"aria-describedby":Ta?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:W()})})]}),Ta&&p("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:Yo,children:Ln.empty?`${ts(r)} is required`:mp(r)})]})})()}),u&&ed,rt&&p(Eo,{margin:"0.75rem 0",styleOverride:S.errorBanner,children:rt})]}),Ma={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=r=>F?!P||!br?p("pre",{"data-testid":r,style:Ma,children:"FloPay/DirectPayPal-debug - not enabled"}):p("pre",{"data-testid":r,style:Ma,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${P}`,` directPaypalConfigured=${br}`,` inAppBrowserDetected=${String(Ia)}`,` shouldRenderDirectPayPal=${jo}`,` shouldRenderStripePayPal=${Wo}`,` hasPaypalStripeInstance=${!!Ss}`].join(`
|
|
13
|
+
`)}):null,rl=r=>F?!he||!qn?p("pre",{"data-testid":r,style:Ma,children:"FloPay/Stripe-debug - not enabled"}):p("pre",{"data-testid":r,style:Ma,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${he}`,` currency=${bt}`,` amountInCents=${Uo}`,` enabledPaymentMethods: ${JSON.stringify(Ie??[])}`,` enabledPaymentMethodsProvided=${qo}`,` hasEnabledMethods=${Ca}`,` expressMethods: ${JSON.stringify(wa)}`,` walletExpressMethods: ${JSON.stringify(uo)}`,` paymentElementMethods: ${JSON.stringify(fi)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(ka)}`,` hasStripeInstance=${!!qn}`,` shouldRenderWallets=${po}`,` shouldRenderPaymentElement=${Ho}`].join(`
|
|
14
|
+
`)}):null,ol=tt==="apm-expanding"||tt==="apm-form"||tt==="apm-collapsing",fo;tt==="apm-expanding"?fo=cc:tt==="apm-collapsing"&&(fo=dc);let Aa=cn?kc(gi,cn,me):null;if(ze==="buttons"){let r=tt==="buttons"||tt==="expanding"||tt==="apm-expanding",g=tt==="expanding"||tt==="card"||tt==="collapsing",W=Pt===void 0?{boxSizing:"border-box",height:ea,padding:"0 1rem"}:{padding:"0.9rem 1rem"},fe;tt==="expanding"||tt==="apm-expanding"?fe=dp:(tt==="collapsing"||tt==="apm-collapsing")&&(fe=cp);let D;return tt==="expanding"?D=cc:tt==="collapsing"&&(D=dc),Xe("form",{onSubmit:bi,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Da,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),Xe("div",{style:{display:"grid"},children:[Xe("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!r&&!fe?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!r&&!fe?pp:{},...fe?{animation:fe,pointerEvents:"none"}:{}},children:[nl("flopay-direct-paypal-gate-debug"),rl("flopay-stripe-gate-debug"),jo&&yt&&Xe(Fo,{children:[le&&p("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."}),p(ia.Provider,{value:d,children:p($a,{sessionId:e,nonce:t,billingApiUrl:at,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,clientId:yt.clientId,environment:yt.environment,currency:bt.toUpperCase(),isSubscription:Et,providerObjectType:We,approvalPresentation:Ra==="popup"?void 0:Ra,onTokenizedBody:An,onComplete:s,onErrorChange:ue,onDecline:f,onTechnicalFailure:lo,onButtonClick:Q,runBeforeButtonClick:sr,isProcessing:_e,onLoadStateChange:hi,onInitializationStateChange:Pi,session:ft,existingOrderId:le?.orderId,debug:F},le?.orderId??"fresh")})]}),Wo&&p(no,{stripe:$o,options:Is,children:p(pc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,isProcessing:_e,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Fs,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:$s,presentationMode:co})}),po?p(no,{stripe:qn,options:ks,children:p(mc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,intentKind:De>0?"payment":"setup",expressMethods:uo,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Os,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:J})}):null,!po&&qs?p("div",{style:{height:ea,borderRadius:Gr,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,Ho&&p(fc,{sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,paymentElementMethods:ka,stripeInstance:qn,paymentElementBaseOptions:gi,futureUseSession:me,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:Ls,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,onExpandApm:it,expandedApmMethod:cn,themeId:ct,buttonAppearance:{backgroundColor:S.cardButton?.backgroundColor,borderColor:S.cardInputBorder,textColor:S.cardButton?.color,borderRadius:Gr}}),u&&p("button",{type:"button",onClick:async()=>{_e||!(await sr("card")).proceed||(Q?.("card"),j())},disabled:_e,style:{width:"100%",...W,...S.cardButton,...cs({themeBundle:Z,resolvedPrimaryColor:Yr,resolvedBorderRadius:Zt,submitButtonStyle:S.submitButton,explicitPrimaryColor:xn?.colorPrimary}),fontSize:S.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:_e?"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:_e?.6:1},onMouseEnter:X=>{!_e&&(Z||xn?.colorPrimary)&&(X.currentTarget.style.backgroundColor=Xc)},onMouseLeave:X=>{(Z||xn?.colorPrimary)&&(X.currentTarget.style.backgroundColor=Yr)},onMouseDown:X=>{X.currentTarget.style.transform="scale(0.985)"},onMouseUp:X=>{X.currentTarget.style.transform="scale(1)"},children:p(Po,{content:Pt})}),rt&&tt==="buttons"&&p(Eo,{margin:"0.25rem 0",styleOverride:S.errorBanner,children:rt})]}),u&&g&&p("div",{style:{gridArea:"1 / 1",...D?{animation:D}:{},...tt==="collapsing"?{pointerEvents:"none"}:{}},children:tl}),he&&ol&&cn&&Aa&&qn&&p("div",{style:{gridArea:"1 / 1",...fo?{animation:fo}:{},...tt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Xe("div",{style:{backgroundColor:Si,borderRadius:Ei,...Jo,padding:Ri},children:[Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Xe("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Wt,style:{display:"inline-flex",alignItems:"center",gap:wi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:S.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...S.backButton},"aria-label":"Back to payment methods",children:[p("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...S.backButtonIcon},children:p("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:p("path",{d:"M15 18l-6-6 6-6"})})}),p(vo,{content:Re})]}),p("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:S.titleFontSize??"1.05rem",color:ki,paddingRight:80,...S.title},children:`Pay with ${fa(cn)}`})]}),p(no,{stripe:qn,options:Aa,children:p(os,{method:cn,sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,onDecline:f,onCancel:Wt,runBeforeButtonClick:sr,onButtonClick:Q,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,errorText:rt})},cn)]})})]})]})}return ol&&cn&&Aa&&qn&&he?Xe("form",{onSubmit:bi,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Da,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),p("div",{style:{...fo?{animation:fo}:{},...tt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Xe("div",{style:{backgroundColor:Si,borderRadius:Ei,...Jo,padding:Ri},children:[Xe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Xe("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Wt,style:{display:"inline-flex",alignItems:"center",gap:wi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:S.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...S.backButton},"aria-label":"Back to payment methods",children:[p("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...S.backButtonIcon},children:p("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:p("path",{d:"M15 18l-6-6 6-6"})})}),p(vo,{content:Re})]}),p("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:S.titleFontSize??"1.05rem",color:ki,paddingRight:80,...S.title},children:`Pay with ${fa(cn)}`})]}),p(no,{stripe:qn,options:Aa,children:p(os,{method:cn,sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,onDecline:f,onCancel:Wt,runBeforeButtonClick:sr,onButtonClick:Q,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,errorText:rt})},cn)]})})]}):Xe("form",{onSubmit:bi,className:ne,noValidate:!0,style:{position:"relative"},children:[p(Da,{}),de&&p(Sr,{status:de,errorMessage:rt,authorized:Xn}),Xe("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[nl("flopay-direct-paypal-gate-debug-default"),rl("flopay-stripe-gate-debug-default"),jo&&yt&&Xe(Fo,{children:[le&&p("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."}),p(ia.Provider,{value:d,children:p($a,{sessionId:e,nonce:t,billingApiUrl:at,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,clientId:yt.clientId,environment:yt.environment,currency:bt.toUpperCase(),isSubscription:Et,providerObjectType:We,approvalPresentation:Ra==="popup"?void 0:Ra,onTokenizedBody:An,onComplete:s,onErrorChange:ue,onDecline:f,onTechnicalFailure:lo,onButtonClick:Q,runBeforeButtonClick:sr,isProcessing:_e,onLoadStateChange:hi,onInitializationStateChange:Pi,session:ft,existingOrderId:le?.orderId,debug:F},le?.orderId??"fresh")})]}),Wo&&p(no,{stripe:$o,options:Is,children:p(pc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,onTokenizedBody:An,onErrorChange:ue,isProcessing:_e,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Fs,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:$s,presentationMode:co})}),po&&p(no,{stripe:qn,options:ks,children:p(mc,{sessionId:e,nonce:t,email:Ze.email,billingName:oo||void 0,onBuyerIdentityReady:Be,billingApiUrl:at,intentKind:De>0?"payment":"setup",expressMethods:uo,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,onTechnicalFailure:lo,runBeforeButtonClick:sr,onLoadStateChange:Os,placeholderBorderRadius:Gr,popupCapabilityOwner:d,externalTelemetryContext:J})}),Ho&&p(fc,{sessionId:e,nonce:t,email:Ze.email,billingName:[Ze.firstName,Ze.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:at,paymentElementMethods:ka,stripeInstance:qn,paymentElementBaseOptions:gi,futureUseSession:me,onTokenizedBody:An,onErrorChange:ue,onButtonClick:Q,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:Ls,isProcessing:_e,submitButtonColor:Yr,submitButtonBorderRadius:Zt,submitButtonStyle:S.submitButton,themeId:ct,onExpandApm:it,expandedApmMethod:cn,buttonAppearance:{backgroundColor:S.cardButton?.backgroundColor,borderColor:S.cardInputBorder,textColor:S.cardButton?.color,borderRadius:Gr}})]}),u&&(Hc||Wc||Vc)&&p(sl,{label:"or pay with card"}),u&&tl]})}import{Fragment as Rr,jsx as se,jsxs as sn}from"react/jsx-runtime";var Oo=44,hs="flopay_checkout_saved_payment_resume",si=new Map,ai=new Map;function Ec(e,t){t.settled&&t.consumers===0&&si.get(e)===t&&si.delete(e)}function _p(e,t,n){let o=ai.get(e);if(o&&(!o.sdkGeneratedIdempotencyKey||!t||o.sdkGeneratedIdempotencyKey===t))return o.attempt;let a=n(),i={attempt:a,sdkGeneratedIdempotencyKey:t};ai.set(e,i);let s=()=>{ai.get(e)===i&&ai.delete(e)};return a.then(s,s),a}function ha(e){return new Promise(t=>setTimeout(t,e))}function ii(e,t,n){let o=qa({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:Oc,enabled:t!==!1});return o.beginCheckout(n),o}function Pa(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function ps(e,t,n,o,a,i){let s=ii(e,t,n);s.error({errorCode:o,stage:a,paymentMethodCategory:"unknown",...i,...a==="session_read"?{requestCategory:"session_read"}:{}}),Pa(s)}function _c(e,t,n,o){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()-n),durationMode:"machine",requestCategory:t,...o===void 0?{}:{attempt:o},statusClass:"2xx"})}function Tc(e,t,n,o,a){let i=Bc(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:n,durationMs:Math.max(0,e.now()-o),durationMode:"machine",requestCategory:n,attempt:a,statusClass:i.statusClass}),t instanceof bn&&t.code==="session_auto_completed"?!1:t instanceof bn&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown"}),!1):i.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown",requestCategory:n,statusClass:"4xx"}),!1):(e.error({...i,stage:n,paymentMethodCategory:"unknown",requestCategory:n}),!0)}function ys(e){return!e||e.data.stripe?.publishableKey?!1:!!Fc(e.data.paypal)?.clientId}var Tp={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Mp(e){return new vp(Tp,{publishableKey:"provider_unavailable",...e})}async function ms(e,t){let{publishableKey:n,paypalPublishableKey:o}=Vi(e);return{...await Ki({publishableKey:n,paypalPublishableKey:o,...t}),publishableKey:n,paypalPublishableKey:o}}function Ps(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Ap(){if(!Ps())return null;try{let e=window.sessionStorage.getItem(hs);return e?JSON.parse(e):null}catch{return null}}function Mc(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 xp(){if(typeof window>"u")return;let e=new URL(window.location.href),t=["payment_intent","payment_intent_client_secret","redirect_status"],n=!1;for(let o of t)e.searchParams.has(o)&&(e.searchParams.delete(o),n=!0);n&&window.history.replaceState(window.history.state,"",e.toString())}function Ac(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 Rp(!!e,t)}function Bp(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function xc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Fp(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 vs({sessionId:e,nonce:t,createSession:n,billingApiUrl:o,telemetry:a,appearance:i,locale:s,loading:c,error:f,onComplete:C,onError:E,onInstrument:k,onDecline:z,onCountryChange:ne,onZipChange:O,showPayPal:ve=!0,showStripe:V=!0,walletPresentation:v="auto",enabledPaymentMethods:P,showApplePay:he=!0,showGooglePay:N=!0,debug:Ie=!1,layout:Y,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe,showSecurityFooter:Te,onButtonClick:Pt,onBeforeButtonClick:Re,enableAVS:He,cardFieldOrder:ke,cardPreFormSlot:Q,avsLayout:je,submitLabel:$e,className:pt,initialErrorMessage:be=null,initialPayPalOrderId:ye,children:re,checkoutMode:M,confirmLabel:Ce,renderConfirmButton:Ue,onSessionCompleted:Me}){let U=kp(o),vt=Yn(()=>Dc(Fe),[Fe]),qe=i??vt?.appearance,Ee=n?"embedded_checkout":"standard_checkout",Je=gs(re,Y),[Ae,Qe]=Gt(null),[De,bt]=Gt(null),Yt=At(null),yt=At(null),Et=At(0),[I,ee]=Gt(null),Oe=At(null),[F,Se]=Gt(null),mt=Yn(()=>n?ca(n):"",[n]),Ne=n?`create:${mt}`:`session:${e??""}`,wt=xc(F),_=At(new Set),d=At(Ne),m=At(Ne);Xo(()=>{m.current=Ne,d.current!==Ne&&(d.current=Ne,_.current.clear())},[Ne]);let A=vn(w=>{if(m.current===Ne){if(Nl.has(w.name)){if(_.current.has(w.name))return;_.current.add(w.name)}Nt(()=>k?.(w))}},[Ne,k]),T=Ro(A,Ne),J=At(!1),ft=vn(w=>{if(J.current)return;let b=w.gateway||!wt?w:{...w,gateway:wt};A(b)},[A,wt]);pr(()=>{T({class:"lifecycle",name:"checkout.mount"})},[T]);let[me,We]=Gt(e??""),H=e??me,Ut=n?"":H,[Ct,_t]=Gt(!0),[at,oe]=Gt(null),[In,Bn]=Gt(0),[yn,qt]=Gt("full"),[Fn,Dn]=Gt(!1),[hn,Tt]=Gt(be),[Ve,Le]=Gt(null),[Rn,kt]=Gt(null),[On,mn]=Gt(!1),[jt,Qt]=Gt(void 0),[Jn,$n]=Gt(""),[en,xt]=Gt(!1),[Cn,ln]=Gt(!1),[Ft,fn]=Gt(!1),Dt=At(null),on=At(0),Bt=At(void 0),[ae,Zn]=Gt("loading"),[Xn,Qn]=Gt(0),tn=At(!1),En=At(!1),Sn=At(!1),ce=At(null),et=At(null),u=Yn(()=>({checkoutMode:M??yn,layout:Bp(re,Y)}),[M,re,yn,Y]),xe=At(C);xe.current=C;let L=At(E);L.current=E;let Pn=At(z);Pn.current=z;let Nn=vn(w=>Ga(ce,async b=>{try{return await w(b)}catch(j){throw b.aborted?To(j):j}}),[]);pr(()=>()=>{ce.current?.abort(),ce.current=null},[]);let Jt=vn((w,b)=>{Yt.current=w,bt(w),Oe.current=b,ee(b)},[]),_n=vn(()=>{let w=yt.current;w&&(yt.current=null,w.destroy())},[]);pr(()=>{pn(De)?.setCheckoutContext(u),I&&I!==De&&pn(I)?.setCheckoutContext(u)},[De,I,u]);let nt=At(Me);nt.current=Me;let yr=vn(w=>{Zn(w),!(w!=="exhausted"||Sn.current)&&(Sn.current=!0,L.current?.(new bn("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Dr=vn(()=>{Zn("retrying"),Qn(w=>w+1)},[]);pr(()=>{Zn("loading"),Qn(0),Sn.current=!1},[H]),pr(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:Oc,checkout_type:Ee,checkout_layout:Je,billing_api_url:U})},[Je,Ee,U]);let It=Yn(()=>n?ca(n,!0):"",[n]),Ln=Yn(()=>Jn===It?jt:void 0,[jt,Jn,It]),er=Yn(()=>n?Di(n,Ln):void 0,[n,Ln]),tr=M??er?.checkoutMode??"full",$t=Yn(()=>er?{...er,checkoutMode:tr}:void 0,[er,tr]);pr(()=>{Qt(void 0),$n(It),Bt.current=void 0,Dt.current=null,fn(!1)},[It]),pr(()=>{Tt(be)},[be]);let mr=vn((w,b,j)=>{Nt(()=>{Pn.current?.(un(w,b,j))})},[]),fr=vn(async(w,b)=>{Tt(null),kt(null),mn(!1),Le("processing");let j=b?.sessionId??w.id,K=w.clientSecret||t,it=xc(w),Wt=Yt.current??Oe.current,de=pn(Wt),x=Wt?null:ii(U,a,u),B={log:te=>{de?de.log(te):x?.log(te)},error:te=>{de?de.error(te):x?.error(te)},terminal:te=>{de?de.terminal(te):x?.terminal(te)},performance:te=>{de?de.performance(te):x?.performance(te)},now:()=>de?.now()??x?.now()??0,elapsed:te=>de?.elapsed(te)??Math.max(0,(x?.now()??te)-te)},R=B.now(),l=!!(b?.initialAutoProcessingError||b?.initialAutoProcessingPending),y=!1,h,$=()=>{y||(y=!0,l=!0,h=B.now(),B.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},le=!1,Pe=()=>{le||(le=!0,B.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),B.performance({stage:"processing",durationMs:B.elapsed(R),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),h!==void 0&&B.performance({stage:"recovery",durationMs:B.elapsed(h),durationMode:"machine",paymentMethodCategory:"saved"}))};B.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),J.current=!0;try{B.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{J.current=!1}T({class:"lifecycle",name:"payment.processing.started",provider:it}),l&&$();let Ht;try{let te=ec(b?.initialAutoProcessingError),we=b?.initialAutoProcessingError?.type==="3ds_required"&&!b.initialAutoProcessingError.threeDSecureToken&&b.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:b.initialAutoProcessingError.nextActionRedirectUrl}:null,Be,rt=Z=>($(),Nn(S=>Mo(Z,{billingApiUrl:U,sessionId:j,nonce:K,session:w,signal:S})));if(we)Be=await rt(we);else if(te)$(),te.type==="paypal_redirect_required"&&et.current?.publishableKey&&Mc({sessionId:j,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),Be=await Nn(Z=>Za(te,{flopay:Yt.current,paypalFlopay:Oe.current,attempt3DS:b?.attempt3DS,billingApiUrl:U,sessionId:j,session:w,telemetry:!1,signal:Z})),te.type==="paypal_redirect_required"&&fs();else if(b?.initialAutoProcessingPending){let Z=b.initialAutoProcessingPending,S=new oi(U,{telemetry:!1}),q=await Nn(_e=>S.waitForCheckoutSessionCompletion(Z.sessionId,{initialDelayMs:Z.retryAfterMs,nonce:K,statusUrl:Z.statusUrl,signal:_e})),Ke=qr(q,w),ge=q.autoProcessingError?.type==="3ds_required"&&q.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:q.autoProcessingError.nextActionRedirectUrl}:null;if(ge)Be=await rt(ge);else{if(!Ar(Ke))throw So(Ke);Be=Mr(Ke,j)}}else{if(b?.initialAutoProcessingError)throw kr(b.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:b.initialAutoProcessingError.checkoutMethod});if(b?.fromCreateSession)return b?.fallbackToFull&&(qt("full"),Ac("full")),!1;{let Z=await Ao({billingApiUrl:U,sessionId:j,session:w,nonce:K,telemetry:!1});Z.type==="success"?Be=Z.result:Z.type==="next_action_required"?Be=await rt(Z):($(),Z.type==="paypal_redirect_required"&&et.current?.publishableKey&&Mc({sessionId:j,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),Be=await Nn(S=>Za(Z,{flopay:Yt.current,paypalFlopay:Oe.current,attempt3DS:b?.attempt3DS,billingApiUrl:U,sessionId:j,session:w,telemetry:!1,signal:S})),Z.type==="paypal_redirect_required"&&fs())}}j&&_o(j),Pe(),l&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),B.terminal({outcome:Be.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),mn(Be.status==="authorized"),Le("success"),await ha(600),Ht=()=>xe.current?.(Be)}catch(te){let we=Ur(pa(te),j);if(we.code==="three_ds_aborted")return!1;let Be=we.checkoutMethod??ua;Tt(we.message),kt(we.message),mn(!1),b?.fallbackToFull&&(B.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),qt("full"),Ac("full")),Pe();let rt=we.statusCode===void 0?void 0:Ep(we.statusCode,"unknown"),Z=rt==="4xx"?{requestCategory:"process_payment",statusClass:rt}:{},S=rt===void 0||rt==="4xx";if(S&&(we.telemetryOutcome==="payment_declined"||!!(we.declineCode||we.code?.toLowerCase().includes("declin"))))B.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Z});else if(S&&(we.telemetryOutcome==="validation_rejected"||we.type==="validation_error"))B.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Z});else{let ge=Bc(te,l?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),_e=we.telemetryRequestCategory??"process_payment";J.current=!0;try{B.error({...ge,...we.telemetryFailureCategory?{failureCategory:we.telemetryFailureCategory}:{},stage:l?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:_e})}finally{J.current=!1}T({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:_e,provider:it})}return Nt(()=>L.current?.(we)),mr(Be,we,{code:we.code,declineCode:we.declineCode}),Le("error"),await Promise.allSettled([ha(400),b?.ensureProvidersReady?b.ensureProvidersReady():Promise.resolve()]),l&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Pe(),x&&Pa(x),Le(null),kt(null)}return Nt(Ht),!0},[mr,T,t,U,Nn,a,u]);pr(()=>{if(typeof window>"u"||En.current)return;let w=new URLSearchParams(window.location.search),b=w.get("payment_intent_client_secret");if(!b)return;let j=Ap();j&&(En.current=!0,(async()=>{let K,it=0;Tt(null),kt(null),Le("processing"),Dn(!0);try{if(w.get("redirect_status")==="failed")throw Object.assign(new bn("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Wt,paypalFlopay:de}=await Ki({publishableKey:j.publishableKey,paypalPublishableKey:j.paypalPublishableKey,billingApiUrl:U,locale:s,telemetry:a});K=pn(de??Wt),K?.setCheckoutContext(u),it=K?.now()??0,K?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),K?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let x=(de??Wt)?.getRawProvider();if(!x)throw Object.assign(new bn("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:B,error:R}=await x.retrievePaymentIntent(b);if(R)throw Object.assign(new bn(R.message??"Failed to retrieve PayPal payment status.","api_error",{code:R.code}),{checkoutMethod:"paypal"});let l=El(B?.status);if(!B||l==="failed")throw Object.assign(new bn("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let y=typeof B.payment_method=="string"?B.payment_method:B.payment_method?.id,h=l;if(j.sessionId){let Pe=(await new oi(U,{telemetry:!1}).getUnifiedCheckoutSession(j.sessionId)).data.session;if(Pe&&Pe.status!=="complete"){let Ht=await Ao({billingApiUrl:U,sessionId:j.sessionId,session:Pe,telemetry:!1,tokenizedData:{id:y??B.id,type:"card",threeDSecureActionResultTokenId:B.id,isPaypal:!0}});if(Ht.type!=="success")throw Object.assign(new bn("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});h=Ht.result.status}}j.sessionId&&_o(j.sessionId),K?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),K?.performance({stage:"redirect_resume",durationMs:K.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),K?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Le("success"),await ha(600),Nt(()=>xe.current?.({status:h,paymentIntentId:B.id,paymentMethodId:y,checkoutMethod:"paypal"}))}catch(Wt){let de=Ur(pa(Wt),j.sessionId),x=de.checkoutMethod??"paypal",B=!!(de.declineCode||de.code?.toLowerCase().includes("declin"));if(K)K.performance({stage:"redirect_resume",durationMs:K.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),B?K.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):K.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(B){let R=ii(U,a,u);R.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Pa(R)}else ps(U,a,u,"REDIRECT_RESUME_FAILED","redirect_resume");Tt(de.message),kt(de.message),Nt(()=>L.current?.(de)),mr(x,de,{code:de.code,declineCode:de.declineCode}),Le("error"),await ha(400)}finally{fs(),xp(),Le(null),kt(null),Dn(!1)}})())},[mr,s,U,a,u]);let Tn=At(null),gr=Yn(()=>$t?ca($t):"",[$t]),Wn=At($t);Wn.current=$t,pr(()=>{We(e??"")},[e]),pr(()=>{tn.current=!1,Tt(be),kt(null),mn(!1),Le(null)},[gr,be,e]);async function hr(w,b,j){let K=ii(U,a,u),it=new oi(U,{telemetry:!1}),Wt=!1;try{let de=w.idempotencyKey===void 0?void 0:Rc(w.idempotencyKey),x=Gl(b,j),B=Kl(b,j);x?.canonicalIdentity===j&&B&&B.canonicalIdentity===void 0&&(Ha(b,j,B.idempotencyKey),B={...B,canonicalIdentity:j});let R=de??(B?.canonicalIdentity===j?B.idempotencyKey:void 0),l,y=!1;K.log({name:x?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let h=x?.sid??null,$=null,le,Pe,Ht=!1;if(h)try{$=await it.getUnifiedCheckoutSession(h,x?.nonce),x&&x.canonicalIdentity===void 0&&(Vl($.data.session,w)?(Va(b,j,h,x.nonce??$.data.session?.clientSecret),B&&B.canonicalIdentity===void 0&&(Ha(b,j,B.idempotencyKey),R??(R=B.idempotencyKey))):(Wa(b,j),B=null,R=de,h=null,$=null));let we=$?.data.session?.status,Be=$?.data.session,rt=Be?.clientSecret||x?.nonce;if(h&&Be?.buyerIdentified===!1&&rt&&(Pe=Co(it,h,rt,w.account)),h&&$&&we==="complete"){if($i(h))return{sid:h,result:$};Wa(b,j),h=null,$=null,y=!0}}catch{K.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),x?.canonicalIdentity===void 0?(Wa(b,j),R=de):ji(b,j),h=null}if(!h){!de&&(y||!R)&&(R=Rc(),l=R),R&&Ha(b,j,R);let we=K.now(),Be=0;K.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let rt={...w,idempotencyKey:R,avsCheck:!!He,avsConfig:typeof He=="object"?He:void 0,checkoutType:"embedded_checkout",checkoutLayout:gs(re,Y)};Object.defineProperty(rt,bp,{configurable:!1,enumerable:!1,value:{onAttempt:q=>{Be=Math.max(Be,q)}}});let Z=()=>{_c(K,"session_create",we,Be)},S=q=>{Tc(K,q,"session_create",we,Be)&&T({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if(Sp(rt)){let q=await it.createDetachedSession(rt);q.claimed.catch(()=>{}),$=q.shell,h=q.sessionId,Pe=q.claim;let Ke=K.now();K.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),le=q.claimed.then(ge=>{let _e=ge.data.session?.id??q.sessionId;return _e&&Va(b,j,_e,ge.data.session?.clientSecret??q.nonce),_c(K,"session_claim",Ke),Z(),ge},ge=>{throw ji(b,j),Tc(K,ge,"session_claim",Ke,0)&&T({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),ge}).finally(()=>Pa(K)),le.catch(()=>{}),Wt=!0,K.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),K.performance({stage:"session_shell",durationMs:K.now()-we,durationMode:"machine",requestCategory:"session_create",attempt:Be,statusClass:"2xx",paymentMethodCategory:"card"})}else $=await it.createAndFetchSession(rt),Z()}catch(q){throw S(q),q}h=$.data.session?.id??h??"",h&&!le&&Va(b,j,h,$.data.session?.clientSecret)}let te=$?.data.session;return!Pe&&h&&te?.buyerIdentified===!1&&te.clientSecret&&(Pe=Co(it,h,te.clientSecret,w.account)),{sid:h??"",result:$,sdkGeneratedIdempotencyKey:l,...le?{claimed:le}:{},...Pe?{claim:Pe}:{},...Ht?{claimRequiresIdentity:!0}:{}}}finally{Wt||Pa(K)}}let Er=At(hr);Xo(()=>{Er.current=hr},[hr]);let zn=vn(async(w,b)=>{let j=Wn.current;if(!j)throw new bn("createSession is required to bootstrap checkout.","validation_error");let K=Di(j,w),it=ca(K),Wt=Hl(K),de=si.get(it);if(!de){let R={canonicalIdentity:it,promise:Er.current(K,Wt,it),consumers:0,settled:!1};de=R,si.set(it,R);let l=()=>{R.settled=!0,Ec(it,R)};R.promise.then(l,l)}de.consumers+=1;let x=!1,B=()=>{x||(x=!0,de.consumers-=1,Ec(it,de))};b?.(B);try{let R=await de.promise;Tn.current=it,w&&($n(It),Qt(te=>kl(te,w)));let{sid:l,result:y,claimed:h,claim:$,claimRequiresIdentity:le}=R;if(Bt.current=$,fn(le===!0),Qe(y),y.data.session&&Se(y.data.session),l&&We(l),h){on.current+=1;let te=on.current;Dt.current=h,ln(!0),h.then(we=>{on.current===te&&(Dt.current===h&&(Dt.current=null),Qe(we),we.data.session&&Se(we.data.session),ln(!1),fn(!1))},we=>{on.current===te&&(Dt.current===h&&(Dt.current=null),ln(!1),fn(!1),oe(we instanceof bn?we:new bn(we instanceof Error?we.message:"Failed to create session","api_error")))})}else on.current+=1,Dt.current=null,ln(!1),fn(!1);let{flopay:Pe,paypalFlopay:Ht}=await ms(y,{billingApiUrl:U,locale:s,telemetry:a});return Jt(Pe,Ht),_t(!1),R}catch(R){throw Tn.current===it&&(Tn.current=null),R}finally{b||B()}},[It,Jt,s,U,a]),nr=At(fr);nr.current=fr;let rr=At(zn);rr.current=zn;let Mt=vn(async w=>{if(!Fp(w)||en)return{sessionId:me,session:F};xt(!0);try{let b=await zn(w);return{sessionId:b.sid,session:b.result.data.session??null}}finally{xt(!1)}},[zn,en,me,F]),Un=vn(async w=>{let b=Bt.current;if(!b)return;let j=on.current,K=await b(w);on.current===j&&(Qe(K),K.data.session&&Se(K.data.session))},[]),wn=vn(async()=>{await Dt.current},[]),or=vn(async()=>(await wn(),{proceed:!0}),[wn]);pr(()=>{let w=!1,b,j=++Et.current;_n(),oe(null),Bn(0);let K=()=>{w=!0,Et.current===j&&(Et.current+=1,_n())},it=Wn.current;if(gr&&it)return qt(tr),_t(!1),Tn.current===gr?K:(Se(Il(it,M)),(async()=>{let x=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),B=tr==="auto"&&!tn.current&&!x;B&&(Tt(null),kt(null),Le("processing"));try{let R=await rr.current(void 0,$=>{b=$}),l=R.result.data.session??null;et.current=Vi(R.result);let y=ys(R.result),h=$i(R.sid||l?.id);if(!w&&B&&l&&!y&&!h){tn.current=!0,await _p(gr,R.sdkGeneratedIdempotencyKey,()=>nr.current(l,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:R.result.autoProcessingError,initialAutoProcessingPending:R.result.autoProcessingPending,autoProcessingAttempted:R.result.autoProcessingAttempted,sessionId:R.sid||l.id}));return}!w&&B&&((y||h)&&(tn.current=!0),Le(null),kt(null))}catch(R){if(w)return;let l=Na(R);if(B&&l==="session_auto_completed"){tn.current=!0,Le("success"),await ha(600),w||(Nt(()=>{xe.current?.({status:"succeeded"})}),Le(null),kt(null));return}B&&(Le(null),kt(null));let y=R instanceof bn?R:new bn(R instanceof Error?R.message:"Failed to create session","api_error");oe(y)}finally{b?.(),b=void 0}})(),()=>{K(),b?.()});_t(!0);async function Wt(){let x=!1,B=null;try{let R=new oi(U,{telemetry:!1}),l=await R.getUnifiedCheckoutSession(H,t);if(B=l,w)return;Qe(l);let y=l.data.session??null;if(Se(y),!y)throw new bn("No session data returned","api_error");let h=y.checkoutMode;if(h==="setup")throw new bn("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(y.status==="authorized"){_t(!1),Nt(()=>{xe.current?.(Mr(y,H)),nt.current?.(y.successUrl??"")});return}if(y.status==="complete"){_t(!1),Nt(()=>{nt.current?.(y.successUrl??"")});return}if(y.status==="expired")throw Oa(y);x=!0;let $=M??h??"full";qt($),on.current+=1;let le=y.clientSecret||t;Bt.current=y.buyerIdentified===!1&&le?Co(R,H,le,{...y.customer?.id?{userId:y.customer.id}:{}}):void 0,ln(!1),fn(!1);let Pe=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),Ht=ys(l);if($==="auto"&&!tn.current&&!Pe&&!Ht){tn.current=!0;let te=de(l);try{if(await nr.current(y,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>te,sessionId:H||y.id}),w)return;await te,w||_t(!1);return}catch{if(w)return;await te,w||_t(!1);return}}await de(l),w||_t(!1)}catch(R){if(w)return;let l=wl(R,x);if(x&&T({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),l){let{errorCode:h,stage:$,...le}=l;ps(U,a,u,h,$,le)}if(l?.stage==="provider_load"&&(M??B?.data.session?.checkoutMode??"full")==="full"&&Sl(B,ve,V)){let h=Mp({billingApiUrl:U,locale:s,telemetry:a});yt.current=h,Jt(h,null),Bn(1),_t(!1);return}let y=R instanceof bn&&l?.stage!=="provider_load"?R:Cl();y!==R&&Nt(()=>L.current?.(y)),oe(y),_t(!1)}}async function de(x){let{flopay:B,paypalFlopay:R,...l}=await ms(x,{billingApiUrl:U,locale:s,telemetry:a});et.current={publishableKey:l.publishableKey,paypalPublishableKey:l.paypalPublishableKey},Jt(B,R),Bn(0)}return Wt(),K},[M,gr,tr,Ut,t,ve,V]);let ar=vn(async()=>{if(!Ae||In!==1)return;let w=Et.current;Bn(2);try{let{flopay:b,paypalFlopay:j}=await ms(Ae,{billingApiUrl:U,locale:s,telemetry:a});if(Et.current!==w)return;_n(),Jt(b,j),Bn(0)}catch(b){if(Et.current!==w)return;let{errorCode:j,stage:K,...it}=Fi(b);ps(U,a,u,j,K,it)}},[_n,Jt,s,In,U,a,u,Ae]),tt=!!(H&&(F?.clientSecret||t)),nn=Fn||!tt,cn=vn(async()=>{if(!(Fn||!tt||!F)){Dn(!0),Tt(null);try{await fr(F,{attempt3DS:!0,fallbackToFull:!0,sessionId:H||F.id})}finally{Dn(!1)}}},[H,Fn,tt,fr,F]),Mn=Fc(Ae?.data.paypal,ye),Or=ys(Ae),Pr=Yn(()=>{if(!(!Ae||!F||!Ae.data.stripe?.publishableKey))return{billingApiUrl:U}},[Ae,F,U]),_r=!!(n&&!re&&Y==="buttons"&&Re&&tr==="full"),Hn=!!(H&&(wp(F?.vault)||Qr(F))),rn=Yn(()=>({session:F,loading:Ct,error:at,checkoutMode:yn,inlineSessionDraft:$t,applyInlineSessionPatch:_r?Mt:void 0,inlineSessionPatchProcessing:en,claimPending:Cn,claimRequiresIdentity:Ft,claimBuyerIdentity:Un,waitForDataAttachment:wn}),[F,Ct,at,yn,$t,_r,Mt,en,Cn,Ft,Un,wn]),Nr=!!n&&Y==="buttons"&&!Or&&!Hn&&(!De||!Pr),an=Ve?se(Sr,{status:Ve,errorMessage:Rn,authorized:On}):null;if(Ct&&!Hn){if(c)return sn(Rr,{children:[c,an]});if(Y==="buttons"){let w=vt?.buttonsLayout?.cardButton?.borderRadius??vt?.appearance.variables?.borderRadius??8,b=j=>se("div",{style:{height:j,borderRadius:w,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return sn(Rr,{children:[sn("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[ve&&b(Oo),V&&(he||N)&&b(Oo),V&&b(Oo),se("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),an]})}return sn(Rr,{children:[sn("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[se("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),se("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),an]})}return at?f?se(cr.Provider,{value:rn,children:f(at)}):se(cr.Provider,{value:rn,children:se("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:at.message})}):Nr?sn(Rr,{children:[se(cr.Provider,{value:rn,children:se(Op,{onButtonClick:Pt,showPayPal:ve,showStripe:V,showApplePay:he,showGooglePay:N,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe})}),an]}):Or&&F&&Mn?sn(Rr,{children:[se(cr.Provider,{value:rn,children:sn("div",{className:pt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[hn&&se(Eo,{icon:!1,children:hn}),ae==="retrying"&&se("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),ae==="exhausted"&&sn("div",{role:"alert",children:[se("div",{children:"PayPal is temporarily unavailable. Please try again."}),se("button",{type:"button",onClick:Dr,children:"Retry PayPal"})]}),ae!=="exhausted"&&se("div",{"aria-hidden":ae==="retrying"?!0:void 0,style:ae==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:se($l,{sessionId:H,nonce:F.clientSecret||void 0,billingApiUrl:U,email:F.customer?.email||$t?.account?.email,billingName:[F.customer?.firstName,F.customer?.lastName].filter(Boolean).join(" ")||[$t?.account?.firstName,$t?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Un,clientId:Mn.clientId,environment:Mn.environment,currency:(F.currency??"usd").toUpperCase(),isSubscription:F.mode==="subscription",providerObjectType:Mn.providerObjectType,approvalPresentation:Mn.approvalPresentation,existingOrderId:Mn.existingOrderId,onComplete:C,onErrorChange:Tt,onDecline:z,onButtonClick:Pt,runBeforeButtonClick:or,onInitializationStateChange:yr,allowAutomaticRetry:Xn===0,session:F,telemetry:a,telemetryContext:u,onInstrument:ft,debug:Ie},`${Ne}:paypal-init-${Xn}`)})]})}),an]}):yn==="confirm"?sn(Rr,{children:[se(cr.Provider,{value:rn,children:se(Ka,{flopay:De,paypalFlopay:I,options:Pr??{billingApiUrl:U},onInstrument:ft,children:sn("div",{className:pt,children:[hn&&se("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:hn}),Ue?Ue({onConfirm:cn,isProcessing:nn}):se("button",{type:"button",onClick:cn,disabled:nn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:nn?"not-allowed":"pointer",opacity:nn?.6:1},children:Fn?"Processing...":Ce??"Confirm Purchase"})]})},Ne)}),an]}):(!De||!Pr)&&!(Hn&&yn==="full")?se(Rr,{children:an}):sn(Rr,{children:[se(cr.Provider,{value:rn,children:sn(Ka,{flopay:De,paypalFlopay:I,options:Pr??{billingApiUrl:U},onInstrument:ft,children:[In===1&&se("button",{type:"button",onClick:ar,children:"Retry payment methods"}),re?sn(Rr,{children:[hn&&se("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:hn}),se(Dp,{sessionId:H,nonce:F?.clientSecret||void 0,billingApiUrl:U,session:F,submitLabel:$e,walletPresentation:v,children:re})]}):se(ds,{sessionId:H,nonce:F?.clientSecret||void 0,telemetry:a,email:F?.customer?.email||$t?.account?.email,userId:F?.customer?.id||$t?.account?.userId,firstName:F?.customer?.firstName||$t?.account?.firstName,lastName:F?.customer?.lastName||$t?.account?.lastName,totalAmount:F?Math.round(Cp(F).total*100):0,currency:F?.currency?.toLowerCase()??"usd",onComplete:C,onError:E,onDecline:z,error:hn,onErrorChange:Tt,showPayPal:ve,showStripe:V,walletPresentation:v,enabledPaymentMethods:In?[]:P??Ae?.data.stripe?.enabledPaymentMethods??F?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Ae?.data.stripe?.enabledPaymentMethodCountries,showApplePay:he,showGooglePay:N,layout:Y,theme:Fe,buttonsTheme:lt,buttonsStyles:ze,appearance:qe,cardButtonContent:ct,cardBackButtonContent:zt,cardTitleContent:pe,onButtonClick:Pt,onBeforeButtonClick:Re,onBuyerIdentityReady:Un,enableAVS:He,...ke?{cardFieldOrder:ke}:{},...Q?{cardPreFormSlot:Q}:{},avsLayout:je,country:F?.customer?.country,city:F?.customer?.city,state:F?.customer?.state,onCountryChange:ne,onZipChange:O,avsCheck:!!He,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:gs(re,Y),className:pt,submitLabel:$e,directPaypal:Mn,isSubscription:F?.mode==="subscription",session:F,dataAttachmentPending:Cn,dataAttachmentRequiresIdentity:Ft,debug:Ie})]},Ne)}),an]})}function Dp({sessionId:e,nonce:t,billingApiUrl:n,session:o,submitLabel:a,walletPresentation:i,children:s}){return se(Rr,{children:us.Children.map(s,c=>{if(!us.isValidElement(c))return c;let f=c.props,C={};return f.sessionId||(C.sessionId=e),!f.nonce&&t&&(C.nonce=t),f.billingApiUrl||(C.billingApiUrl=n),f.submitLabel===void 0&&a!==void 0&&(C.submitLabel=a),f.walletPresentation===void 0&&(C.walletPresentation=i),o?.customer&&(f.email||(C.email=o.customer.email),f.userId||(C.userId=o.customer.id),f.firstName||(C.firstName=o.customer.firstName),f.lastName||(C.lastName=o.customer.lastName)),Object.keys(C).length===0?c:us.cloneElement(c,C)})})}function Op({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:o,showGooglePay:a,theme:i,buttonsTheme:s,buttonsStyles:c,cardButtonContent:f,cardBackButtonContent:C,cardTitleContent:E}){let[k,z]=Gt(!1),ne=Yn(()=>Dc(i),[i]),O=Yn(()=>{let P=ne?.buttonsLayout??Ip(s);return c?{...P,...c,cardButton:{...P.cardButton,...c.cardButton},cardFormContainer:{...P.cardFormContainer,...c.cardFormContainer},backButton:{...P.backButton,...c.backButton},backButtonIcon:{...P.backButtonIcon,...c.backButtonIcon},submitButton:{...P.submitButton,...c.submitButton},title:{...P.title,...c.title}}:P},[ne,s,c]),ve=ne?.buttonsLayout?.cardButton?.borderRadius??ne?.appearance.variables?.borderRadius??8,V=P=>se("div",{style:{height:P,borderRadius:ve,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),v=f===void 0?{boxSizing:"border-box",height:Oo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(k){let P=O.cardInputBorder??"#e5e7eb",he=O.cardInputBackground??"white",N=ho(C),Ie=ho(E);return sn("div",{style:{backgroundColor:O.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...O.cardFormContainer},children:[sn("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[sn("button",{type:"button",onClick:()=>z(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:N?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...O.backButton},children:[se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...O.backButtonIcon},children:se("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:se("path",{d:"M15 18l-6-6 6-6"})})}),se(vo,{content:C})]}),Ie?se("div",{style:{flex:1}}):se("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...O.title},children:se(ta,{content:E})})]}),se("div",{style:{backgroundColor:he,border:`1px solid ${P}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:se("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),sn("div",{style:{display:"flex"},children:[se("div",{style:{flex:1,backgroundColor:he,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomLeftRadius:8,padding:12,height:45},children:se("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),se("div",{style:{flex:1,backgroundColor:he,borderTop:"none",borderRight:`1px solid ${P}`,borderBottom:`1px solid ${P}`,borderLeft:`1px solid ${P}`,borderBottomRightRadius:8,padding:12,height:45},children:se("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),se("div",{style:{backgroundColor:he,border:`1px solid ${P}`,borderRadius:8,marginTop:8,padding:12,height:45},children:se("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),se("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...O.submitButton,opacity:.5}}),se("style",{children:`
|
|
15
15
|
@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
|
|
16
16
|
@keyframes flopay-interim-expand {
|
|
17
17
|
0% { opacity: 0; max-height: 0; transform: translateY(-12px); }
|
|
18
18
|
40% { opacity: 1; }
|
|
19
19
|
100% { opacity: 1; max-height: 600px; transform: translateY(0); }
|
|
20
20
|
}
|
|
21
|
-
`})]})}return sn("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&V(Oo),n&&(o||a)&&V(Oo),n&&se("button",{type:"button",onClick:()=>{e?.("card"),z(!0)},style:{width:"100%",...v,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:O.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,...O.cardButton},onMouseDown:P=>{P.currentTarget.style.transform="scale(0.985)"},onMouseUp:P=>{P.currentTarget.style.transform="scale(1)"},children:se(Po,{content:f})}),se("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}import{Fragment as Wp,jsx as ro,jsxs as Hp}from"react/jsx-runtime";var zp=44;function zc(e){return new Promise(t=>setTimeout(t,e))}function Up(e,t){return e instanceof Ca?e:new Ca(e instanceof Error?e.message:t,"api_error")}function qp(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function jp(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 $p({sessionId:e,nonce:t,createSession:n,paymentMethodId:o,checkoutMethod:a,clientId:i,products:s,items:c,subscriptions:f,account:C,successUrl:E,cancelUrl:k,couponCodes:z,tagsData:ne,utmMetadata:O,billingApiUrl:ve,locale:V,theme:v,appearance:P,buttonsTheme:he,buttonsStyles:N,onSuccess:Ie,onError:Y,onDecline:Fe,children:lt,disabled:ze=!1,type:ct="button",style:zt,...pe}){let Te=ba(()=>Op(ve),[ve]),Pt=ba(()=>jp({createSession:n,clientId:i,products:s,items:c,subscriptions:f,account:C,successUrl:E,cancelUrl:k,couponCodes:z,tagsData:ne,utmMetadata:O}),[C,k,i,z,n,s,c,f,E,ne,O]),[Re,He]=zo(!1),[ke,Q]=zo(null),[je,$e]=zo(null),[pt,be]=zo(!1),[ye,re]=zo(null),[M,Ce]=zo(null),Ue=Lo(!0),Me=Lo(null),U=Lo(M),vt=Lo(Ie),qe=Lo(Y),Ee=Lo(Fe),Je=Fr(d=>Ya(Me,async m=>{try{return await d(m)}catch(A){throw m.aborted?To(A):A}}),[]);No(()=>{U.current=M},[M]),No(()=>{vt.current=Ie},[Ie]),No(()=>{qe.current=Y},[Y]),No(()=>{Ee.current=Fe},[Fe]),No(()=>(Ue.current=!0,()=>{Ue.current=!1,Me.current?.abort()}),[]),No(()=>{if(typeof window>"u")return;let d=m=>{m.key==="Escape"&&Ce(null)};return window.addEventListener("keydown",d),()=>{window.removeEventListener("keydown",d)}},[]);let Ae=Fr((d,m=pa)=>{Ee.current?.(un(m,d,{code:d.code,declineCode:d.declineCode}))},[]),Qe=Fr(async d=>{Ue.current&&($e(null),be(d.result.status==="authorized"),Q("success"),await zc(600),Ue.current&&Nt(()=>vt.current?.(d)))},[]),De=Fr(async(d,m)=>{Ue.current&&(qe.current?.(d),m?.emitDecline&&Ae(d,m.method),$e(d.message),be(!1),Q("error"),await zc(400))},[Ae]),bt=Fr(async(d,m,A)=>{let T=d.data.session??null;if(!T)throw Ur(new Ca("No session data returned","api_error"),m);let J=T.clientSecret||t;if(Ar(T)){await Qe({result:Mr(T,m),session:T,sessionId:T.id||m,autoCompleted:!1});return}if(T.status==="expired")throw Ur(Na(T),T.id||m);try{if(d.autoProcessingPending){let me=d.autoProcessingPending,We=new Cs(Te),H=await Je(_t=>We.waitForCheckoutSessionCompletion(me.sessionId,{initialDelayMs:me.retryAfterMs,nonce:J,statusUrl:me.statusUrl,signal:_t})),Ut=qr(H,T),Ct=H.autoProcessingError?.type==="3ds_required"&&H.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:H.autoProcessingError.nextActionRedirectUrl}:null;if(Ct&&m&&J){let _t=await Je(at=>Mo(Ct,{billingApiUrl:Te,sessionId:m,nonce:J,session:T,signal:at,telemetry:!0}));await Qe({result:_t,session:T,sessionId:T.id||m,autoCompleted:!1});return}if(H.autoProcessingError)throw kr(H.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:H.autoProcessingError.checkoutMethod});if(!Ar(Ut))throw So(Ut);await Qe({result:Mr(Ut,m),session:Ut,sessionId:Ut.id||m,autoCompleted:!1});return}if(d.autoProcessingError){let me=d.autoProcessingError.nextActionRedirectUrl;if(d.autoProcessingError.type==="3ds_required"&&me&&m&&J){let We=await Je(_t=>oc({billingApiUrl:Te,sessionId:m,nonce:J,nextActionRedirectUrl:me,signal:_t}));if(We.status==="declined")throw kr({type:We.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:We.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:d.autoProcessingError.checkoutMethod});let Ut=await new Cs(Te).waitForCheckoutSessionCompletion(m,{initialDelayMs:0,nonce:J}),Ct=qr(Ut,T);if(!Ar(Ct))throw kr({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:d.autoProcessingError.checkoutMethod});await Qe({result:Mr(Ct,m),session:Ct,sessionId:Ct.id||m,autoCompleted:!1});return}throw kr(d.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:d.autoProcessingError.checkoutMethod})}if(A?.fromCreateSession&&d.autoProcessingAttempted===!0)throw kr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ft=await Ao({billingApiUrl:Te,sessionId:m??T.id,session:T,nonce:J});if(ft.type==="next_action_required"&&J){let me=m??T.id,We=await Je(H=>Mo(ft,{billingApiUrl:Te,sessionId:me,nonce:J,session:T,signal:H,telemetry:!0}));await Qe({result:We,session:T,sessionId:T.id||me,autoCompleted:!1});return}if(ft.type!=="success")throw kr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await Qe({result:ft.result,session:T,sessionId:T.id||m,autoCompleted:!1})}catch(ft){let me=T.id||m,We=Ur(ya(ft),me);if(We.code==="three_ds_aborted")return;if(We.code==="checkout_processing_timeout"){if(!Ue.current)return;re(We.message),Nt(()=>qe.current?.(We));return}await De(We,{emitDecline:!0,method:We.checkoutMethod??pa}),qp(We,me)&&me&&Ue.current&&Ce({sessionId:me,errorMessage:We.message,nonce:J||void 0,payPalOrderId:We.orderId})}},[t,Te,Je,De,Qe]),Yt=Fr(async d=>{if(pe.onClick?.(d),!(d.defaultPrevented||ze||Re)){if(Ce(null),re(null),e&&Pt){let m=new Ca("Provide either sessionId or create-session props, not both.","validation_error");await De(m),Ue.current&&(Q(null),$e(null));return}if(!e&&!Pt){let m=new Ca("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await De(m),Ue.current&&(Q(null),$e(null));return}He(!0),$e(null),be(!1),Q("processing");try{let m=new Cs(Te);if(e){let A=await m.getUnifiedCheckoutSession(e,t);await bt(A,e);return}try{let A=await m.createAndFetchSession({...Pt});await bt(A,A.data.session?.id??null,{fromCreateSession:!0})}catch(A){if(La(A)==="session_auto_completed"){await Qe({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw A}}catch(m){await De(Ur(Up(m,"Automatic payment failed. Please try again."),e))}finally{Ue.current&&(Q(null),$e(null),He(!1))}}},[pe.onClick,Pt,ze,Re,t,bt,Te,e,De,Qe]),yt=Fr(d=>{let m=U.current;Ce(null),vt.current?.({result:d,session:null,sessionId:m?.sessionId??null,autoCompleted:!1})},[]),Et=Fr(d=>{qe.current?.(d)},[]),I=Fr(d=>{Ee.current?.(d)},[]),ee=ba(()=>Lp(v),[v]),Oe=ba(()=>{let d=ee?.buttonsLayout??Np(he);return N?{...d,...N,cardButton:{...d.cardButton,...N.cardButton}}:d},[ee,he,N]),F=ba(()=>{let d=ee?.appearance;return P?d?{...d,...P,variables:{...d.variables,...P.variables}}:P:d},[P,ee]),Se=F?.variables,mt=Se?.colorPrimary??"#4A49FF",Ne=Se?.colorPrimaryHover??Qo(mt,.12),wt=Se?.borderRadius??"8px";return Hp(Wp,{children:[ro("button",{...pe,type:ct,onClick:Yt,disabled:ze||Re,"aria-busy":Re,style:{width:"100%",...lt===void 0?{boxSizing:"border-box",height:zp,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Oe.cardButton,...ds({themeBundle:ee,resolvedPrimaryColor:mt,resolvedBorderRadius:wt,submitButtonStyle:Oe.submitButton,explicitPrimaryColor:Se?.colorPrimary}),fontSize:Oe.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:ze||Re?"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:ze||Re?.6:1,...zt},onMouseEnter:d=>{pe.onMouseEnter?.(d),!d.defaultPrevented&&!ze&&!Re&&(ee||Se?.colorPrimary)&&(d.currentTarget.style.backgroundColor=Ne)},onMouseLeave:d=>{pe.onMouseLeave?.(d),!d.defaultPrevented&&(ee||Se?.colorPrimary)&&(d.currentTarget.style.backgroundColor=mt)},onMouseDown:d=>{pe.onMouseDown?.(d),d.defaultPrevented||(d.currentTarget.style.transform="scale(0.985)")},onMouseUp:d=>{pe.onMouseUp?.(d),d.defaultPrevented||(d.currentTarget.style.transform="scale(1)")},children:ro(Po,{content:lt})}),ye&&ro("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:ye}),ke&&ro(Sr,{status:ke,errorMessage:je,authorized:pt}),M&&ro("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:d=>{d.target===d.currentTarget&&Ce(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:ro("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:ro(bs,{sessionId:M.sessionId,nonce:M.nonce,checkoutMode:"full",billingApiUrl:Te,locale:V,theme:v,...F?{appearance:F}:{},buttonsTheme:he,buttonsStyles:N,initialErrorMessage:M.errorMessage,initialPayPalOrderId:M.payPalOrderId,cardTitleContent:null,onComplete:yt,onError:Et,onDecline:I})})})]})}import{jsx as Gp}from"react/jsx-runtime";var Vp={StripeSetupMethod:Cl,PayPalSetupMethod:bl};function Kp(e){return Gp(Sl,{...e,branches:Vp})}export{Wa as DirectPayPalButton,$p as FloPayAutomaticPaymentButton,od as FloPayCardSetup,rd as FloPayCardSetupError,bs as FloPayCheckout,Kp as FloPayPaymentMethodSetup,Ga as FloPayProvider,us as SplitCardForm,Ti as VaultCardFields,Cf as dropThirdPartyOnlyError,Rd as useCheckout,jr as useFloPay,zi as usePayPalFloPay};
|
|
21
|
+
`})]})}return sn("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&V(Oo),n&&(o||a)&&V(Oo),n&&se("button",{type:"button",onClick:()=>{e?.("card"),z(!0)},style:{width:"100%",...v,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:O.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,...O.cardButton},onMouseDown:P=>{P.currentTarget.style.transform="scale(0.985)"},onMouseUp:P=>{P.currentTarget.style.transform="scale(1)"},children:se(Po,{content:f})}),se("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}import{Fragment as Hp,jsx as ro,jsxs as Vp}from"react/jsx-runtime";var Up=44;function Nc(e){return new Promise(t=>setTimeout(t,e))}function qp(e,t){return e instanceof ba?e:new ba(e instanceof Error?e.message:t,"api_error")}function jp(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function $p(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 Wp({sessionId:e,nonce:t,createSession:n,paymentMethodId:o,checkoutMethod:a,clientId:i,products:s,items:c,subscriptions:f,account:C,successUrl:E,cancelUrl:k,couponCodes:z,tagsData:ne,utmMetadata:O,billingApiUrl:ve,locale:V,theme:v,appearance:P,buttonsTheme:he,buttonsStyles:N,onSuccess:Ie,onError:Y,onDecline:Fe,children:lt,disabled:ze=!1,type:ct="button",style:zt,...pe}){let Te=va(()=>Np(ve),[ve]),Pt=va(()=>$p({createSession:n,clientId:i,products:s,items:c,subscriptions:f,account:C,successUrl:E,cancelUrl:k,couponCodes:z,tagsData:ne,utmMetadata:O}),[C,k,i,z,n,s,c,f,E,ne,O]),[Re,He]=zo(!1),[ke,Q]=zo(null),[je,$e]=zo(null),[pt,be]=zo(!1),[ye,re]=zo(null),[M,Ce]=zo(null),Ue=Lo(!0),Me=Lo(null),U=Lo(M),vt=Lo(Ie),qe=Lo(Y),Ee=Lo(Fe),Je=Fr(d=>Ga(Me,async m=>{try{return await d(m)}catch(A){throw m.aborted?To(A):A}}),[]);No(()=>{U.current=M},[M]),No(()=>{vt.current=Ie},[Ie]),No(()=>{qe.current=Y},[Y]),No(()=>{Ee.current=Fe},[Fe]),No(()=>(Ue.current=!0,()=>{Ue.current=!1,Me.current?.abort()}),[]),No(()=>{if(typeof window>"u")return;let d=m=>{m.key==="Escape"&&Ce(null)};return window.addEventListener("keydown",d),()=>{window.removeEventListener("keydown",d)}},[]);let Ae=Fr((d,m=ua)=>{Ee.current?.(un(m,d,{code:d.code,declineCode:d.declineCode}))},[]),Qe=Fr(async d=>{Ue.current&&($e(null),be(d.result.status==="authorized"),Q("success"),await Nc(600),Ue.current&&Nt(()=>vt.current?.(d)))},[]),De=Fr(async(d,m)=>{Ue.current&&(qe.current?.(d),m?.emitDecline&&Ae(d,m.method),$e(d.message),be(!1),Q("error"),await Nc(400))},[Ae]),bt=Fr(async(d,m,A)=>{let T=d.data.session??null;if(!T)throw Ur(new ba("No session data returned","api_error"),m);let J=T.clientSecret||t;if(Ar(T)){await Qe({result:Mr(T,m),session:T,sessionId:T.id||m,autoCompleted:!1});return}if(T.status==="expired")throw Ur(Oa(T),T.id||m);try{if(d.autoProcessingPending){let me=d.autoProcessingPending,We=new bs(Te),H=await Je(_t=>We.waitForCheckoutSessionCompletion(me.sessionId,{initialDelayMs:me.retryAfterMs,nonce:J,statusUrl:me.statusUrl,signal:_t})),Ut=qr(H,T),Ct=H.autoProcessingError?.type==="3ds_required"&&H.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:H.autoProcessingError.nextActionRedirectUrl}:null;if(Ct&&m&&J){let _t=await Je(at=>Mo(Ct,{billingApiUrl:Te,sessionId:m,nonce:J,session:T,signal:at,telemetry:!0}));await Qe({result:_t,session:T,sessionId:T.id||m,autoCompleted:!1});return}if(H.autoProcessingError)throw kr(H.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:H.autoProcessingError.checkoutMethod});if(!Ar(Ut))throw So(Ut);await Qe({result:Mr(Ut,m),session:Ut,sessionId:Ut.id||m,autoCompleted:!1});return}if(d.autoProcessingError){let me=d.autoProcessingError.nextActionRedirectUrl;if(d.autoProcessingError.type==="3ds_required"&&me&&m&&J){let We=await Je(_t=>tc({billingApiUrl:Te,sessionId:m,nonce:J,nextActionRedirectUrl:me,signal:_t}));if(We.status==="declined")throw kr({type:We.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:We.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:d.autoProcessingError.checkoutMethod});let Ut=await new bs(Te).waitForCheckoutSessionCompletion(m,{initialDelayMs:0,nonce:J}),Ct=qr(Ut,T);if(!Ar(Ct))throw kr({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:d.autoProcessingError.checkoutMethod});await Qe({result:Mr(Ct,m),session:Ct,sessionId:Ct.id||m,autoCompleted:!1});return}throw kr(d.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:d.autoProcessingError.checkoutMethod})}if(A?.fromCreateSession&&d.autoProcessingAttempted===!0)throw kr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ft=await Ao({billingApiUrl:Te,sessionId:m??T.id,session:T,nonce:J});if(ft.type==="next_action_required"&&J){let me=m??T.id,We=await Je(H=>Mo(ft,{billingApiUrl:Te,sessionId:me,nonce:J,session:T,signal:H,telemetry:!0}));await Qe({result:We,session:T,sessionId:T.id||me,autoCompleted:!1});return}if(ft.type!=="success")throw kr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await Qe({result:ft.result,session:T,sessionId:T.id||m,autoCompleted:!1})}catch(ft){let me=T.id||m,We=Ur(pa(ft),me);if(We.code==="three_ds_aborted")return;if(We.code==="checkout_processing_timeout"){if(!Ue.current)return;re(We.message),Nt(()=>qe.current?.(We));return}await De(We,{emitDecline:!0,method:We.checkoutMethod??ua}),jp(We,me)&&me&&Ue.current&&Ce({sessionId:me,errorMessage:We.message,nonce:J||void 0,payPalOrderId:We.orderId})}},[t,Te,Je,De,Qe]),Yt=Fr(async d=>{if(pe.onClick?.(d),!(d.defaultPrevented||ze||Re)){if(Ce(null),re(null),e&&Pt){let m=new ba("Provide either sessionId or create-session props, not both.","validation_error");await De(m),Ue.current&&(Q(null),$e(null));return}if(!e&&!Pt){let m=new ba("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await De(m),Ue.current&&(Q(null),$e(null));return}He(!0),$e(null),be(!1),Q("processing");try{let m=new bs(Te);if(e){let A=await m.getUnifiedCheckoutSession(e,t);await bt(A,e);return}try{let A=await m.createAndFetchSession({...Pt});await bt(A,A.data.session?.id??null,{fromCreateSession:!0})}catch(A){if(Na(A)==="session_auto_completed"){await Qe({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw A}}catch(m){await De(Ur(qp(m,"Automatic payment failed. Please try again."),e))}finally{Ue.current&&(Q(null),$e(null),He(!1))}}},[pe.onClick,Pt,ze,Re,t,bt,Te,e,De,Qe]),yt=Fr(d=>{let m=U.current;Ce(null),vt.current?.({result:d,session:null,sessionId:m?.sessionId??null,autoCompleted:!1})},[]),Et=Fr(d=>{qe.current?.(d)},[]),I=Fr(d=>{Ee.current?.(d)},[]),ee=va(()=>zp(v),[v]),Oe=va(()=>{let d=ee?.buttonsLayout??Lp(he);return N?{...d,...N,cardButton:{...d.cardButton,...N.cardButton}}:d},[ee,he,N]),F=va(()=>{let d=ee?.appearance;return P?d?{...d,...P,variables:{...d.variables,...P.variables}}:P:d},[P,ee]),Se=F?.variables,mt=Se?.colorPrimary??"#4A49FF",Ne=Se?.colorPrimaryHover??Ic(mt,.12),wt=Se?.borderRadius??"8px";return Vp(Hp,{children:[ro("button",{...pe,type:ct,onClick:Yt,disabled:ze||Re,"aria-busy":Re,style:{width:"100%",...lt===void 0?{boxSizing:"border-box",height:Up,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Oe.cardButton,...cs({themeBundle:ee,resolvedPrimaryColor:mt,resolvedBorderRadius:wt,submitButtonStyle:Oe.submitButton,explicitPrimaryColor:Se?.colorPrimary}),fontSize:Oe.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:ze||Re?"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:ze||Re?.6:1,...zt},onMouseEnter:d=>{pe.onMouseEnter?.(d),!d.defaultPrevented&&!ze&&!Re&&(ee||Se?.colorPrimary)&&(d.currentTarget.style.backgroundColor=Ne)},onMouseLeave:d=>{pe.onMouseLeave?.(d),!d.defaultPrevented&&(ee||Se?.colorPrimary)&&(d.currentTarget.style.backgroundColor=mt)},onMouseDown:d=>{pe.onMouseDown?.(d),d.defaultPrevented||(d.currentTarget.style.transform="scale(0.985)")},onMouseUp:d=>{pe.onMouseUp?.(d),d.defaultPrevented||(d.currentTarget.style.transform="scale(1)")},children:ro(Po,{content:lt})}),ye&&ro("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:ye}),ke&&ro(Sr,{status:ke,errorMessage:je,authorized:pt}),M&&ro("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:d=>{d.target===d.currentTarget&&Ce(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:ro("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:ro(vs,{sessionId:M.sessionId,nonce:M.nonce,checkoutMode:"full",billingApiUrl:Te,locale:V,theme:v,...F?{appearance:F}:{},buttonsTheme:he,buttonsStyles:N,initialErrorMessage:M.errorMessage,initialPayPalOrderId:M.payPalOrderId,cardTitleContent:null,onComplete:yt,onError:Et,onDecline:I})})})]})}import{jsx as Yp}from"react/jsx-runtime";var Kp={StripeSetupMethod:Pl,PayPalSetupMethod:hl};function Gp(e){return Yp(vl,{...e,branches:Kp})}export{$a as DirectPayPalButton,Wp as FloPayAutomaticPaymentButton,nd as FloPayCardSetup,td as FloPayCardSetupError,vs as FloPayCheckout,Gp as FloPayPaymentMethodSetup,Ka as FloPayProvider,ds as SplitCardForm,_i as VaultCardFields,Cf as dropThirdPartyOnlyError,kd as useCheckout,jr as useFloPay,Li as usePayPalFloPay};
|