@flopay/react 1.11.3 → 1.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/card-setup-entry.cjs +2 -2
- package/dist/card-setup-entry.mjs +1 -1
- package/dist/chunk-52RFSQJ7.mjs +1 -0
- package/dist/chunk-AW5LOT2K.mjs +6 -0
- package/dist/index.cjs +9 -9
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- 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 +11 -11
- package/dist/chunk-AZRGKPW7.mjs +0 -6
- package/dist/chunk-LIYRDFMO.mjs +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{a as Al}from"./chunk-LIYRDFMO.mjs";import{c as Bt,d as br,e as ta,f as Fi,g as hl,h as na,i as Pl,j as vl,k as sd,m as ld}from"./chunk-AZRGKPW7.mjs";import{a as El}from"./chunk-YSFYLEHB.mjs";import{a as aa,b as za,c as Ni,d as Oi,e as Li,f as wl,g as Il,h as kl,i as _l,j as Rl,k as Tl}from"./chunk-UFFPBTKU.mjs";import{a as Oa,b as Cl,c as Ur,d as ra,e as La,f as bl,g as Di,h as zr,i as oa,j as Sl,k as Ua}from"./chunk-M7R46EDF.mjs";import{dropThirdPartyOnlyError as ef}from"@flopay/shared";import{PaymentAPI as Fs}from"@flopay/js";import{FloPayError as ka,resolveBillingApiUrl as bp,resolveButtonsLayoutTheme as Sp,resolveTheme as wp}from"@flopay/shared";import{useCallback as Or,useEffect as Uo,useMemo as Ia,useRef as zo,useState as qo}from"react";import{Fragment as So,jsx as Jn,jsxs as Ml}from"react/jsx-runtime";function cd(){return Ml(So,{children:[Ml("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:[Jn("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),Jn("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",Jn("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:Jn("path",{d:"M9 18l6-6-6-6"})})]})}function dd(){return Jn(So,{children:"Go back"})}function ud(){return Jn(So,{children:"Secure card checkout"})}function vo(e){return e!==void 0&&(e===""||e===null||e===!1)}function Co({content:e}){return Jn(So,{children:e===void 0?Jn(cd,{}):e})}function bo({content:e}){return Jn(So,{children:e===void 0?Jn(dd,{}):e})}function ia({content:e}){return Jn(So,{children:e===void 0?Jn(ud,{}):e})}import{CHECKOUT_PROCESSING_TIMEOUT_MESSAGE as pd,classifyTelemetryFailure as md,FloPayError as In,isCardHolderNamePlaceholder as xl,isMoneySettledOutcome as yd,isSetupIntentClientSecret as fd,isValidEmail as gd,resolveSetupFutureUsage as hd}from"@flopay/shared";var Pd="Checkout is temporarily unavailable. Please try again later.";function Ui(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof In&&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 Bl(){return new In(Pd,"api_error",{code:"CheckoutInitializationFailed"})}function zi(e){return!!e?.gateways?.worldpayCorporateGateway}function qr(e){return e?.status==="open"&&zi(e)}function Fl(e,t,n){let r=e?.data.session,o=r?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(n&&(r?.vault?.html||r?.gateways?.pcivault||o?.includes("card")||qr(r))||t&&e?.data.paypal?.publishableKey)}function Dl(e,t){if(t&&(!(e instanceof In)||e.type==="authentication_error"))return Ui(e);if(!(e instanceof In&&vd(e))){if(!t&&!(e instanceof In)&&(e instanceof TypeError||e instanceof SyntaxError))return{...md(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof In)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof In))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function wo(e,t,n,r={}){let o;return(i={})=>{if(o)return o;let s={...r,...i,email:i.email?.trim()||r.email?.trim()},l=xl(s.firstName,s.lastName);if(!gd(s.email))return Promise.reject(new In("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let f={};for(let[u,S]of Object.entries(s)){if(l&&u.endsWith("Name")||typeof S!="string")continue;let v=S.trim();v&&(f[u]=v)}return o=e.claimCheckoutSession(t,n,{accountData:f}),o.catch(()=>{}),o}}function Nl(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 qi(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 Ol(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}))],r=n.reduce((i,s)=>i+(s.overrideAmount??s.totalAmount??0),0),o=e.currency??n.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(r*100),currency:o,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??o,metadata:i.metadata??null}))}}function ro(e){if(xl(e))return{};let[t,...n]=e?.trim().split(/\s+/)??[];return t?{firstName:t,lastName:n.join(" ")||void 0}:{}}function ji(e,t){return t?{...e,...t}:e}function dn(e,t,n){let r=typeof t=="string"?t:t.message,o=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:r,...o?{code:o}:{},...i?{declineCode:i}:{},...s?{sessionId:s}:{}}}function jr(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}var Cd=[{match:/^paypal authorization required\.?$/i,replacement:"For your additional security, please re-authenticate this payment via PayPal."}];function $r(e){if(typeof e!="string")return e??void 0;let t=e.trim();if(!t)return e;for(let{match:n,replacement:r}of Cd)if(n.test(t))return r;return e}function Fr(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Dr(e){return e?.status==="authorized"||e?.status==="complete"}function Kr(e,t){if(e.data.session)return e.data.session;let n=e.raw,r=n?.latestTransactionAttempt?.result,o=n?.status==="authorized"||r==="AUTHORIZED";return o||n?.status==="completed"||r==="SUCCESS"?{...t,status:o?"authorized":"complete"}:n?.status==="expired"?{...t,status:"expired"}:void 0}function Ll(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function qa(e){let t=Ll(e);return new In(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function ja(e){return e instanceof In||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function Io(e){return Ll(e)?new In("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new In("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new In(pd,"api_error",{code:"checkout_processing_timeout"})}function sa(e,t){return e==="processing"||yd(e,t)}function Ul(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function zl(e,t){let n=e;if(fd(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:i,error:s}=await n.retrieveSetupIntent(t);if(s)throw new In(s.message??"Failed to retrieve setup intent.","api_error",{...s.code?{code:s.code}:{}});return i??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:r,error:o}=await n.retrievePaymentIntent(t);if(o)throw new In(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return r??null}var bd=["apple_pay","google_pay"];function ql(e,t="automatic",n){let r=hd(n,bd,"wallet");return{...typeof e=="number"&&Number.isFinite(e)&&e>0?{mode:"payment",amount:e,captureMethod:t==="manual"?"manual":"automatic_async"}:{mode:"setup"},paymentMethodTypes:["card"],...r?{setupFutureUsage:r}:{}}}var Sd=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function $i(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:Sd.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function la(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}import{FloPay as ap,PaymentAPI as ui,SESSION_CREATE_TELEMETRY as ip}from"@flopay/js";import{buildCheckoutDisplayData as sp,classifyTelemetryFailure as Uc,FloPayError as Pn,isDetachedSessionEligible as lp,resolveBillingApiUrl as cp,resolveButtonsLayoutTheme as dp,resolveIdempotencyKey as xc,resolveTheme as zc,SDK_VERSION as qc,telemetryStatusClass as up}from"@flopay/shared";import ks,{useCallback as hn,useEffect as pr,useMemo as Zn,useRef as Ft,useState as Ht}from"react";import{createContext as jl}from"react";var Xn=jl({flopay:null,paypalFlopay:null,billingApiUrl:""}),cr=jl({session:null,loading:!1,error:null});import{PaymentAPI as Hi}from"@flopay/js";import{classifyTelemetryFailure as Od,FloPayError as Vi,generateIdempotencyKey as Ld,isValidEmail as pa,normalizeGatewayEnvironment as Ud,PAYPAL_VAULTED_PAYMENT_METHOD_TYPE as Gi,SDK_VERSION as zd}from"@flopay/shared";import{loadScript as qd}from"@paypal/paypal-js";import{useCallback as Sr,useContext as jd,useEffect as Ut,useMemo as ma,useRef as rt,useState as Vr}from"react";import{isValidEmail as wd}from"@flopay/shared";import{useCallback as $l,useEffect as Id,useRef as Kl,useState as Hl}from"react";import{jsx as Wl,jsxs as ca}from"react/jsx-runtime";function Dn(e,t=!1){let{firstName:n,lastName:r,...o}=e,i=n?.trim(),s=r?.trim();return{...o,...i||t?{firstName:i??""}:{},...s||t?{lastName:s??""}:{}}}function ko(){let[e,t]=Hl(null),n=Kl(null),r=Kl(0),o=$l((s,l)=>(n.current?.(null),r.current+=1,t({id:r.current,methodLabel:s,identity:l}),new Promise(f=>{n.current=f})),[]),i=$l(s=>{let l=n.current;n.current=null,t(null),l?.(s)},[]);return Id(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:o,finish:i}}function _o({identity:e,methodLabel:t,onComplete:n,onCancel:r,submitting:o=!1,testId:i="flopay-buyer-identity-pane"}){let[s,l]=Hl(e.email?.trim()??""),f=wd(s.trim());return ca("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:[ca("div",{style:{fontWeight:700},children:["Continue with ",t]}),ca("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",Wl("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:s,onChange:u=>l(u.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),ca("div",{style:{display:"flex",gap:"0.5rem"},children:[r&&Wl("button",{type:"button",onClick:r,style:{flex:1,minHeight:42},children:"Cancel"}),ca("button",{type:"button",disabled:!f||o,onClick:()=>{n(Dn({...e,email:s.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}import{resolveBillingApiUrl as kd}from"@flopay/shared";import{useContext as $a}from"react";function Wr(){return $a(Xn).flopay}function Ki(){return $a(Xn).paypalFlopay??null}function _d(){return $a(cr)}function Vl(){return $a(Xn).billingApiUrl||kd()}import{FLO_INSTRUMENT_SCHEMA_VERSION as Rd}from"@flopay/shared";import{useCallback as Ed,useRef as Ka}from"react";var Td={"checkout.mount":"checkout_mount","sdk.initialize.ready":"sdk_loaded","provider.ready":"sdk_loaded","checkout.rendered":"form_rendered","vault.widget.ready":"form_rendered","vault.submission.started":"tokenize","payment.tokenization.started":"tokenize","payment.processing.started":"process_attempt","payment.intent.started":"process_attempt","vault.action.required":"3ds_challenge","payment.three_ds.handoff":"3ds_challenge"};function Ad(e){return e==="stripe"||e==="paypal"?e:void 0}function Md(e){let t=Ad(e.provider),n={schemaVersion:Rd,...t?{gateway:t}:{}};if(e.class==="lifecycle"){let r=Td[e.name];return r?{...n,name:r}:null}return e.class==="card_surface"?{...n,name:"card_expanded"}:e.errorCode==="CHECKOUT_SESSION_CREATE_FAILED"?{...n,name:"checkout_error",phase:"session_create"}:e.errorCode==="SDK_INITIALIZATION_FAILED"||e.errorCode==="PROVIDER_LOAD_FAILED"?{...n,name:"checkout_error",phase:"sdk_load"}:e.errorCode==="PAYMENT_PROCESSING_FAILED"?{...n,name:"checkout_error",phase:e.requestCategory==="intent_create"?"wallets":"process"}:null}var Wi=new Set(["checkout_mount","sdk_loaded","form_rendered","card_expanded"]);function Ro(e,t){let n=Ka(e);n.current=e;let r=Ka(new Set),o=Ka(t),i=Ka(t);return ta(()=>{i.current=t,o.current!==t&&(o.current=t,r.current.clear())},[t]),Ed(s=>{if(i.current!==t)return;let l=Md(s);if(l){if(Wi.has(l.name)){if(r.current.has(l.name))return;r.current.add(l.name)}Bt(()=>n.current?.(l))}},[t])}import{createContext as xd}from"react";var da=xd(null);function Wa(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Bd=Symbol.for("@flopay/js.telemetry.bridge.v1"),Fd=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function Dd(){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 Nd(e){let t=Dd(),n=(o,i)=>o?o.bind(e):i,r=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:r,elapsed:e.elapsed?e.elapsed.bind(e):o=>Math.max(0,r()-o),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 Ha(e){let t=globalThis[Fd];return Nd(t?.(e)??{})}function un(e){if(e)return e[Bd]}import{useCallback as Hr,useEffect as Gl,useRef as oo}from"react";function ua(e,t){let n=oo(0),r=oo(null),o=oo(null),i=oo(e),s=oo(t?.onHandoffObserved),l=oo(t?.defersMissingTerminal),f=oo(t?.onMissingTerminalDeferred);Gl(()=>{i.current=e,s.current=t?.onHandoffObserved,l.current=t?.defersMissingTerminal,f.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let u=Hr((h=o.current)=>{h?.timer&&(clearTimeout(h.timer),h.timer=null)},[]),S=Hr(h=>{u();let C=n.current+1;return n.current=C,r.current=null,o.current={generation:C,method:h,timer:null,yieldedControl:!1},C},[u]),v=Hr(h=>{let C=o.current;return h!==void 0&&C?.generation!==h?!1:(u(C),o.current=null,(h===void 0||r.current===h)&&(r.current=null),!0)},[u]),W=Hr(h=>{let C=o.current,se=h??C?.generation??n.current;(h===void 0||C?.generation===h)&&(u(C),o.current=null),r.current=se},[u]),$=Hr(h=>r.current===(h??n.current),[]),k=Hr(h=>o.current?.generation===h&&r.current!==h,[]),q=Hr(()=>{let h=o.current;h&&(u(h),!h.yieldedControl&&(h.yieldedControl=!0,s.current?.(h.method)))},[u]),K=Hr(()=>{let h=o.current;!h?.yieldedControl||document.visibilityState!=="visible"||(u(h),h.timer=setTimeout(()=>{if(h.timer=null,o.current?.generation===h.generation){if(l.current?.(h.method)){f.current?.(h.method,h.generation);return}o.current=null,r.current=h.generation,i.current(h.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},600))},[u]);return Gl(()=>{let h=()=>{document.visibilityState==="visible"?K():q()};return document.addEventListener("visibilitychange",h),window.addEventListener("blur",q),window.addEventListener("focus",K),()=>{document.removeEventListener("visibilitychange",h),window.removeEventListener("blur",q),window.removeEventListener("focus",K),u()}},[u,q,K]),{startAttempt:S,finishAttempt:v,invalidateAttempt:W,isAttemptInvalidated:$,isAttemptCurrent:k,generationRef:n}}import{jsx as ao,jsxs as Yi}from"react/jsx-runtime";var Va=45,$d=1e3,Kd=11e3,Wd={width:"100%",minHeight:Va,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"},Hd={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 Vd(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:Hd[e.kind]??null}}function Yl(e,t){return e==="watchdog_expired"?"paypal_render_timeout":bl(t)?"paypal_init_timeout":"paypal_init_failure"}function Gd(e){let t=e,n=t?.payer??t?.payment_source?.paypal;return{email:n?.email_address?.trim()||void 0,firstName:n?.name?.given_name?.trim()||void 0,lastName:n?.name?.surname?.trim()||void 0}}function Yd(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function Jl({sessionId:e,nonce:t,billingApiUrl:n,email:r,billingName:o,onBuyerIdentityReady:i,clientId:s,environment:l,currency:f,isSubscription:u,providerObjectType:S,approvalPresentation:v,onTokenizedBody:W,onComplete:$,onErrorChange:k,onDecline:q,onTechnicalFailure:K,isProcessing:h=!1,onLoadStateChange:C,onInitializationStateChange:se,allowAutomaticRetry:z=!0,onButtonClick:Ce,runBeforeButtonClick:J,session:ke,existingOrderId:je,telemetry:_e,telemetryContext:it,onInstrument:zt,debug:ye=!1}){let Me=Wr(),Pt=Ro(zt,e),Te=ma(()=>{if(Me)return null;let m=Ha({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:zd,enabled:_e!==!1});return m.setCheckoutContext(it??{}),m.beginCheckout(it??{}),m},[n,Me,_e,it?.checkoutMode,it?.layout]),Ve=ma(()=>un(Me),[Me]);Ut(()=>()=>{Te&&Te.flush().catch(()=>{}).finally(()=>Te.destroy())},[Te]);let Re=ma(()=>({error:m=>{Ve?Ve.error(m):Te?.error(m),Pt({class:"technical_error",errorCode:m.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":m.errorCode,requestCategory:m.requestCategory,provider:m.provider})},log:m=>{Ve?Ve.log(m):Te?.log(m),Pt({class:"lifecycle",name:m.name,provider:m.provider})},performance:m=>{Ve?Ve.performance(m):Te?.performance(m)},terminal:m=>{Ve?Ve.terminal(m):Te?.terminal(m)},startTiming:()=>Ve?.now()??Te?.now()??0,elapsed:m=>Ve?.elapsed(m)??Math.max(0,(Te?.now()??m)-m)}),[Pt,Ve,Te]),ne=rt(null),$e=rt(0),Ke=rt(null),yt=rt(null),be=rt(null),fe=jd(da),le=rt(null);le.current||(le.current=Wa());let F=fe??le.current,Se=rt(null),ze=rt(!1),[xe,V]=Vr(!1),[vt,qe]=Vr(!1),[Ae,Xe]=Vr(0),Be=rt(0),[Qe,Ne]=Vr(!1),Ct=rt(!1),Vt=rt(!1),[ft,Tt]=Vr(!1),[T,re]=Vr(!1),{request:Oe,collect:L,finish:we}=ko(),gt=rt({sessionId:e,required:!pa(r?.trim()||ke?.customer?.email?.trim())});gt.current.sessionId!==e&&(gt.current={sessionId:e,required:!pa(r?.trim()||ke?.customer?.email?.trim())});let Le=gt.current.required,It=ma(()=>n.replace(/\/+$/,""),[n]),p=ke?.gateways?.paypal?.providerObjectType??S,g=p??(u?"subscription":"order"),[D]=Vr(oa),x=ke?.gateways?.paypal?.approvalPresentation??v,ee=Ua(D,x==="app_switch"?"app_switch":void 0,g),ut=p==="order"||p==="setup_token",ge=ma(()=>JSON.stringify([It,s,f,l??"",g,ut,ee,e,je??""]),[It,s,f,l,je,g,ut,ee,e]),We=rt(ge),X=We.current!==ge,qt=rt(ye),bt=rt(null),[At,st]=Vr([]),ce=Sr(m=>{qt.current&&st(Fe=>[...Fe,`${new Date().toISOString().slice(11,23)} ${m}`])},[]);Ut(()=>{qt.current=ye,ye&&ce("debug:enabled"),bt.current?.setEnabled(ye)},[ce,ye]);let kn=rt(W),Nn=rt($),pn=rt(k),jt=rt(q),On=rt(K),Ln=rt(Ce),fn=rt(C),Mt=rt(se),Ge=rt(i),Ue=rt(J),_n=rt(ke),kt=rt(r),Un=rt(o),mn=rt(t),$t=rt(null),Zt=rt(new Map),Qn=rt(new Map),Wn=rt(!1);Ut(()=>(Wn.current=!0,()=>{Wn.current=!1}),[]),Ut(()=>{kn.current=W},[W]),Ut(()=>{Ge.current=i},[i]),Ut(()=>{Nn.current=$},[$]),Ut(()=>{pn.current=k},[k]),Ut(()=>{jt.current=q},[q]),Ut(()=>{On.current=K},[K]),Ut(()=>{Ln.current=Ce},[Ce]),Ut(()=>{fn.current=C},[C]),Ut(()=>{Mt.current=se},[se]),Ut(()=>{Ue.current=J},[J]),Ut(()=>{_n.current=ke},[ke]),Ut(()=>{kt.current=r},[r]),Ut(()=>{Un.current=o},[o]),Ut(()=>{mn.current=t},[t]),Ut(()=>{Be.current=Ae},[Ae]),Ut(()=>{Qe&&Se.current?.focus()},[Qe,Ae]);let Qt=Sr(()=>{window.setTimeout(()=>{Se.current?.focus()},0)},[]),_t=Sr(()=>{V(!1),Xe(m=>m+1)},[]),en=Sr(()=>{Ne(!1),(ne.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??ne.current)?.focus?.()},[]);Ut(()=>{!xe||!ze.current||(ze.current=!1,en())},[en,xe,Ae]);let nn=Sr((m,Fe)=>{let H=Fe?.popupBlocked??zr(m);H&&F.markBlocked();let gn=Oa("PayPal",H,D.inAppBrowser),zn=On.current;if(zn){let Gt=H&&D.inAppBrowser?new Vi(gn,"api_error",{code:Fe?.code??"paypal_popup_blocked"}):m;zn("paypal",Gt,Fe);return}pn.current?.(gn)},[F,D.inAppBrowser]),Dt=Sr(m=>{let Fe=Ke.current,H=yt.current;Fe===null||!H||(Re.log({...H,popupCapability:F.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:m}),Re.performance({...H,popupCapability:F.current(),stage:"overlay_return",durationMs:Re.elapsed(Fe),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:m}),Ke.current=null)},[F,Re]),an=Sr((m,Fe,H)=>{let gn=yt.current;Dt("overlay_timeout"),gn&&Re.error({...gn,popupCapability:F.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),nn(Fe,{...H,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:ee,terminalReason:"overlay_timeout"}),Ne(!0),_t(),Qt()},[Dt,Qt,nn,F,ee,_t,Re]),Ot=Sr(()=>{F.markAvailable();let m=yt.current;m&&(be.current=m.attempt,Re.log({...m,popupCapability:F.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[F,Re]),{finishAttempt:rn,generationRef:Nt,invalidateAttempt:G,isAttemptCurrent:er,isAttemptInvalidated:tr,startAttempt:nr}=ua(an,{onHandoffObserved:Ot}),tn=Sr(()=>(Ne(!1),nr("paypal")),[nr]),Rn=Sr(m=>{G(m?.generation),m?.showRetry&&Ne(!0),m?.remount&&_t(),m?.focus!==!1&&Qt()},[Qt,G,_t]),vn=m=>{let Fe=$t.current;return Fe&&Qn.current.set(m,Fe),m};Ut(()=>{We.current!==ge&&(We.current=ge,Ct.current=!1,Vt.current=!1,V(!1),qe(!1),Tt(!1),Mt.current?.("loading"))},[ge]),Ut(()=>{Bt(()=>fn.current?.(xe&&!ft))},[xe,ft]);let pe=Ud(l);Ut(()=>{let m={attempt:Nt.current+1,inAppBrowser:D.inAppBrowser,appFamily:D.appFamily,popupCapability:F.current(),presentationMode:ee},Fe=()=>({...yt.current??m,popupCapability:F.current()}),H={error:d=>Re.error({...d,...Fe()}),log:d=>Re.log({...d,...Fe()}),performance:d=>Re.performance({...d,...Fe()}),terminal:d=>Re.terminal({...d,...Fe()}),startTiming:Re.startTiming,elapsed:Re.elapsed},gn=s?`${s.slice(0,6)}\u2026(len ${s.length})`:"(empty)",zn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(ce(`mount clientId=${gn} env=${l??"(unset)"}\u2192${pe??"live"} ccy=${f} sub=${u}`),ce(`ua=${zn.slice(0,80)}${zn.length>80?"\u2026":""}`),!s){ce("FAIL: clientId empty \u2014 gateway misconfigured"),Tt(!0),H.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(!ne.current){ce("FAIL: containerRef not attached");return}$e.current=H.startTiming(),H.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Gt=!1,En=!1,tt=()=>Gt||En,rr,Zr=!1,Rt=()=>{rr=Ld(),rr||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Zr=!0},Tn=null,mr=!1,Hn=null,Yt=!1,or=()=>{!Hn||Yt||(Yt=!0,Hn.close().catch(()=>{}))},An=!1,_r=!1,Mn=ne.current,yr=null,fr=null,Rr=[],qn=null,Vn=!1,Er=!1,xt=null,Cn=d=>{if(!d||typeof d.getBoundingClientRect!="function")return"(no rect)";let c=d.getBoundingClientRect();return`${Math.round(c.width)}\xD7${Math.round(c.height)}`},Gn=d=>{if(!d)return"(empty)";try{let c=new URL(d,typeof window>"u"?"https://localhost":window.location.href),I=c.pathname.toLowerCase();return I.includes("checkcaptcha")||I.includes("captcha")?`CAPTCHA(${c.host}${I})`:I.includes("risk")||I.includes("challenge")?`RISK(${c.host}${I})`:I.includes("smart/buttons")?`smart-buttons(${c.host})`:`${c.host}${I}`.slice(0,100)}catch{return d.slice(0,80)}},Tr=d=>{let c=d.getAttribute("src"),I=d.getAttribute("srcdoc"),E=d.getAttribute("name"),Q=d.getAttribute("sandbox"),ae=[];return c&&ae.push(`src=${Gn(c)}`),I&&ae.push(`srcdoc[${I.length}ch]`),!c&&!I&&ae.push("src=(empty) srcdoc=(empty)"),E&&ae.push(`name=${E.slice(0,40)}`),Q!==null&&ae.push(`sandbox="${Q.slice(0,40)}"`),ae.join(" ")},Ar=d=>{if(!(d instanceof HTMLIFrameElement))return"";try{let c=d.contentDocument;if(!c)return"cd=null";let I=c.body?.children.length??0,E=c.body?.innerHTML.length??0,Q=c.head?.innerHTML.length??0;return`cd=same-origin readyState=${c.readyState} body[${I}children,${E}ch] head[${Q}ch]`}catch(c){return`cd=cross-origin(${c.message.slice(0,30)})`}},He=[],sn=d=>{if(tt())return;let c=d.message??String(d.error??"(no message)");c&&(c.toLowerCase().includes("paypal")||c.toLowerCase().includes("zoid")||c.toLowerCase().includes("postrobot")||c.toLowerCase().includes("storage"))&&(ce(`window:error ${c.slice(0,140)}`),He.push(c))},ln=d=>{if(tt())return;let c=d.reason instanceof Error?d.reason.message:String(d.reason??"(no reason)");c&&(c.toLowerCase().includes("paypal")||c.toLowerCase().includes("zoid")||c.toLowerCase().includes("postrobot")||c.toLowerCase().includes("storage"))&&(ce(`window:rejection ${c.slice(0,140)}`),He.push(c))},bn={value:0},Qr=()=>{yr?.disconnect(),yr=null,fr?.disconnect(),fr=null;for(let d of Rr.splice(0))clearTimeout(d);Er=!1,Vn&&typeof window<"u"&&(window.removeEventListener("error",sn),window.removeEventListener("unhandledrejection",ln)),Vn=!1},gr=()=>{if(!(Vn||tt()||An)){if(Vn=!0,He.length=0,bn.value=0,typeof window<"u"&&(window.addEventListener("error",sn),window.addEventListener("unhandledrejection",ln)),typeof PerformanceObserver<"u")try{fr=new PerformanceObserver(d=>{if(!tt())for(let c of d.getEntries()){if(!c.name.toLowerCase().includes("paypal"))continue;bn.value+=1;let I=Math.round(c.duration);ce(`net ${I}ms ${c.name.slice(0,90)}`)}}),fr.observe({type:"resource",buffered:!0})}catch{}xt?.()}},Lr=()=>{qn&&(clearTimeout(qn),qn=null)},Sn=()=>{Qr(),Lr()},cn={setEnabled:d=>{d?gr():Qr()}};bt.current=cn,qt.current&&gr();let Mr=d=>{if(!d)return!1;let c=d.toLowerCase();return c.includes("zoid destroyed")||c.includes("destroyed all components")||c.includes("window closed")||c.includes("detected container element removed")},xn=d=>{if(tt()||Mr(d))return;let c=$r(d)??d;Bt(()=>pn.current?.(c))},w=(d,c)=>{if(Gt||mr)return;mr=!0,En=!0,Sn(),or();let I=Vd({kind:d,generationActive:!0,automaticRetryAllowed:z,automaticRetryUsed:Ct.current});if(I.action==="retry"){Ct.current=!0,V(!1),re(!1),qe(!0),Mt.current?.("retrying"),Tn=setTimeout(()=>{Gt||Xe(E=>E+1)},$d);return}if(V(!1),re(!1),qe(!1),Tt(!0),I.action!=="ignore"){if(Mt.current?.("exhausted"),I.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",c);return}if(I.report){let E=Di({code:Yl(d,c),message:c},{inAppBrowser:D.inAppBrowser,handoffObserved:!1});E.popupBlocked&&F.markBlocked(),H.error({errorCode:E.popupBlocked?E.errorCode:I.report.errorCode,stage:I.report.stage,operationOutcome:I.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:E.terminalReason})}Vt.current||(Vt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Yl(d,c)))}};Tt(!1);let _=async(d,c=$t.current)=>{if(tt())return;let I=c?.sessionId??e;if(kn.current){await kn.current(d,{sessionId:I,accountPatch:c?.accountPatch,nonce:c?.nonce});return}let E=H.startTiming();H.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let Q=()=>{H.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),H.performance({stage:"processing",durationMs:H.elapsed(E),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let ae=_n.current,De=c?.accountPatch?.email??kt.current,at=c?.accountPatch?.userId??ae?.customer?.id??ae?.accountData?.userId??"",me=c?.accountPatch?.firstName??ae?.customer?.firstName??ae?.accountData?.firstName,b=c?.accountPatch?.lastName??ae?.customer?.lastName??ae?.accountData?.lastName,ie=await new Hi(It,{telemetry:!1}).processPayment(at,{sessionId:I,nonce:c?.nonce??mn.current,paymentMethodCategory:"paypal",tokenizedData:d,accountData:{userId:at,email:De??ae?.customer?.email??"",...me?{firstName:me}:{},...b?{lastName:b}:{},country:c?.accountPatch?.country??ae?.customer?.country??ae?.accountData?.country??void 0,zip:c?.accountPatch?.zip??ae?.customer?.zip??ae?.accountData?.zip??void 0}});if(ie.ok){if(En||Gt&&Wn.current)return;Q(),H.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),Bt(()=>Nn.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(tt())return;let te=await ie.json().catch(()=>null),A=te?.message??"PayPal payment failed.",Y=$r(A)??A;Q(),ie.status===400&&(typeof te?.declineCode=="string"||!Array.isArray(te?.fields))?H.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):ie.status===400||ie.status===422?H.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):H.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:Yd(ie.status),failureCategory:ie.status>=500?"server_error":void 0}),xn(Y),Bt(()=>jt.current?.(dn("paypal",Y,{code:te?.code,declineCode:te?.declineCode})));return}catch(ae){if(tt())return;Q(),H.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let De=ae instanceof Error?ae.message:"PayPal payment failed.",at=$r(De)??De;xn(at),Bt(()=>jt.current?.(dn("paypal",at)));return}},O=()=>new Vi("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),R=d=>tt()?Promise.reject(O()):Promise.resolve(d),nt=async d=>{if(tt())throw O();Zr||Rt();let c=$t.current,I=c?.sessionId??e,E=c?.nonce??mn.current;H.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let Q;try{Q=await new Hi(It,{telemetry:!1}).createSessionIntent(I,E??"",ut?{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:Gi,paymentMethodId:null,intentKind:g==="setup_token"?"setup":"payment"}:{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:null,intentKind:"payment"},{idempotencyKey:rr})}catch(ae){throw H.error({...Od(ae,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),ae}if(tt())throw O();if(Q.provider!=="paypal"||Q.providerObjectType!==g)throw new Error(d);return H.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),Q.providerObjectId},pt=(d,c)=>{let I=c?.nonce??mn.current;if(!I)return;let E=c?.sessionId??e,Q=ra(d)??Ur(d)??"provider_declined";new Hi(It,{telemetry:!1}).reportSessionIntentDecline(E,I,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Q}).catch(()=>{})},j=Ae;ce("loadScript:scheduled (deferred 1 tick)");let Ee=null,B=setTimeout(()=>{if(Gt){ce("loadScript:skipped (cancelled before defer ran)");return}ce("loadScript:start");let d=pe==="live"?"production":pe,c={};g==="subscription"?c={intent:"subscription",vault:!0}:g==="order"&&(c={intent:"capture"}),Ee=qd({clientId:s,currency:f,...c,...d?{environment:d}:{},...d==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let I=!1;Ee.then(E=>{if(I=!0,ce(`loadScript:resolved inactive=${tt()} ns=${!!E} buttons=${!!E?.Buttons}`),tt())return;if(!E?.Buttons){ce("FAIL: namespace missing Buttons factory"),w("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}H.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),H.performance({stage:"provider_ready",durationMs:H.elapsed($e.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),H.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let Q=async(ie,te)=>{if(tt()||Be.current!==j)return;let A=ie.vaultSetupToken??ie.subscriptionID??ie.orderID??"",Y=A?Qn.current.get(A):Zt.current.get(j);if(!(!Y||!er(Y.generation))&&rn(Y.generation)){Qn.current.delete(A),Zt.current.delete(Y.surfaceKey),Dt("approved");try{if(re(!0),Bt(()=>pn.current?.(null)),!A)throw new Vi("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let N=_n.current,ct=ro(Un.current??[N?.customer?.firstName,N?.customer?.lastName].filter(Boolean).join(" ")),Ie=Dn({email:Y.accountPatch?.email?.trim()||kt.current?.trim()||N?.customer?.email?.trim(),firstName:Y.accountPatch?.firstName?.trim()||ct.firstName,lastName:Y.accountPatch?.lastName?.trim()||ct.lastName});if(!pa(Ie.email)||!(Ie.firstName||Ie.lastName))try{let wn=Gd(await te?.order?.get?.());Ie=Dn({email:wn.email||Ie.email,firstName:wn.firstName||Ie.firstName,lastName:wn.lastName||Ie.lastName})}catch{}if((Ge.current||Le)&&!pa(Ie.email)){let wn=await L("PayPal",Ie);if(!wn)return;Ie=wn}pa(Ie.email)&&(Y.accountPatch=Dn({...Y.accountPatch,...Ie}),await Ge.current?.(Ie));let ar;g==="setup_token"?ar={id:A,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:Gi}:ut?ar={id:A,isPaypal:!0,gateway:"paypal",paymentMethodType:Gi}:ar={id:A,isPaypal:!0},await _(ar,Y)}catch(N){xn(N instanceof Error?N.message:"PayPal capture failed.")}finally{tt()||re(!1)}}},ae=ie=>{let te=je?()=>R(je):()=>nt(ie);return async()=>vn(await te())},De=E.Buttons({style:{layout:"horizontal",height:Va,tagline:!1},...ee==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(ie,te)=>{if(tt()){await te.reject();return}Rt();let A=Ue.current,Y={};if(A)try{let Ie=await A("paypal");if(tt()){await te.reject();return}if(!Ie.proceed){$t.current=null,Zt.current.delete(j),await te.reject();return}Y={sessionId:Ie.sessionId,accountPatch:Ie.accountPatch,nonce:Ie.nonce}}catch(Ie){ce(`onClick:runBeforeButtonClick rejected msg=${(Ie instanceof Error?Ie.message:String(Ie)).slice(0,120)}`),$t.current=null,Zt.current.delete(j),await te.reject();return}Bt(()=>Ln.current?.("paypal"));let N=tn(),ct={generation:N,surfaceKey:j,...Y};$t.current=ct,Zt.current.set(j,ct),yt.current={...m,attempt:N},await te.resolve(),H.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),H.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),Ke.current=H.startTiming()},createOrder:g==="order"?ae("Failed to create PayPal order."):void 0,createSubscription:g==="subscription"?ae("Failed to create PayPal subscription."):void 0,createVaultSetupToken:g==="setup_token"?async()=>vn(await nt("Failed to create PayPal setup token.")):void 0,onApprove:Q,onCancel:()=>{if(tt())return;let ie=Zt.current.get(j)??$t.current;ie&&Zt.current.delete(ie.surfaceKey),$t.current=null,Dt("cancelled"),H.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),ze.current=!0,Rn({generation:ie?.generation,remount:!0,focus:!1})},onError:ie=>{if(tt()||Be.current!==j)return;let te=ie instanceof Error?ie.message:"PayPal failed to render.";if(ce(`onError rendered=${An} msg=${te.slice(0,120)}`),An){let A=Zt.current.get(j)??$t.current;if(A&&!er(A.generation)||!A&&tr())return;if(Mr(te)){rn(A?.generation);return}let{errorCode:Y,popupBlocked:N,providerDeclined:ct,terminalReason:Ie}=Di(ie,{inAppBrowser:D.inAppBrowser,handoffObserved:A!=null&&be.current===A.generation});if(N&&F.markBlocked(),Dt(Ie),ct){H.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Ie}),pt(ie,A),Bt(()=>jt.current?.(dn("paypal",te))),A&&Zt.current.delete(A.surfaceKey),$t.current=null,rn(A?.generation);return}H.error({errorCode:Y,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:Ie}),A&&Zt.current.delete(A.surfaceKey),$t.current=null,Rn({generation:A?.generation,remount:!0,showRetry:!0,focus:!0}),nn(ie,{code:"paypal_runtime_failed",popupBlocked:N,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:ee,terminalReason:Ie});return}w(Mr(te)?"teardown":"pre_ready_callback",te)}}),at=De.isEligible();if(ce(`isEligible=${at}`),H.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!at){V(!1),w("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}_r=!0,Hn=De,xt=()=>{if(!Vn||Er||tt()||An)return;Er=!0,ce(`container:dims ${Cn(Mn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(yr=new MutationObserver(te=>{if(!tt()){for(let A of te)if(A.type==="childList")A.addedNodes.forEach(Y=>{if(!(Y instanceof Element))return;let N=Y.tagName.toLowerCase(),ct=(Y.getAttribute("title")??"").slice(0,40),Ie=N==="iframe"?` ${Tr(Y)}`:"";ce(`child+ ${N}${ct?` title="${ct}"`:""}${Ie} dims=${Cn(Y)}`)});else if(A.type==="attributes"&&A.target instanceof Element){let Y=A.target;if(Y.tagName.toLowerCase()!=="iframe")continue;let N=A.attributeName;(N==="src"||N==="srcdoc")&&ce(`attr~ iframe ${N}=${N==="srcdoc"?`[${(Y.getAttribute("srcdoc")??"").length}ch]`:Gn(Y.getAttribute("src"))} dims=${Cn(Y)}`)}}}),yr.observe(Mn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let ie=te=>{if(tt()||An)return;let A=Mn.querySelectorAll("iframe"),Y=typeof document<"u"&&"hasStorageAccess"in document;ce(`watchdog:${te} container=${Cn(Mn)} children=${Mn.childElementCount} iframes=${A.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${Y} paypalNetRequests=${bn.value}`),A.forEach((N,ct)=>{let Ie=(N.getAttribute("title")??"").slice(0,40);ce(` iframe[${ct}] ${Cn(N)}${Ie?` title="${Ie}"`:""} ${Tr(N)}`);let ar=Ar(N);ar&&ce(` ${ar}`)}),He.length===0&&ce(" (no PayPal/zoid window errors captured)")};Rr.push(setTimeout(()=>ie("3s"),3e3)),Rr.push(setTimeout(()=>ie("8s"),8e3)),Rr.push(setTimeout(()=>ie("15s"),15e3))},xt(),ce("render:start");let b=H.startTiming();qn=setTimeout(()=>{tt()||An||(ce("watchdog:11s retryable render timeout"),w("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},Kd);let lt=De.render(Mn);(async()=>{try{if(await lt,ce(`render:resolved inactive=${tt()}`),Sn(),tt()){or();return}An=!0,V(!0),qe(!1),Mt.current?.("ready"),H.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),H.performance({stage:"checkout_render",durationMs:H.elapsed(b),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(ie){let te=ie instanceof Error?ie.message:"PayPal failed to render.";ce(`render:rejected msg=${te.slice(0,120)}`),Sn(),w(Mr(te)?"teardown":"render_rejected",te)}})()}).catch(E=>{let Q=E instanceof Error?E.message:"PayPal operation failed.";ce(`provider:failed msg=${Q.slice(0,120)}`);let ae="script_rejected";I&&Mr(Q)?ae="teardown":I&&_r&&(ae="render_rejected"),w(ae,Q)})},0);return()=>{Gt=!0,clearTimeout(B),Tn&&clearTimeout(Tn),Sn(),bt.current===cn&&(bt.current=null),or(),Ke.current=null,yt.current=null}},[z,It,s,f,l,g,ee,ut,e,je,Ae,Re,L,Le,ce,Dt]);let et=ye?Yi("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:ft?"#fef2f2":"#f3f4f6",border:`1px solid ${ft?"#fca5a5":"#d1d5db"}`,borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflowY:"auto"},children:[`FloPay/DirectPayPal-debug (ready=${xe} failed=${ft})`,At.length===0?`
|
|
1
|
+
import{a as Dl}from"./chunk-52RFSQJ7.mjs";import{c as Bt,d as Ir,e as ra,f as Oi,g as Sl,h as oa,i as wl,j as Il,k as pd,m as md}from"./chunk-AW5LOT2K.mjs";import{a as Bl}from"./chunk-YSFYLEHB.mjs";import{a as sa,b as ja,c as Ui,d as zi,e as qi,f as El,g as Tl,h as Al,i as Ml,j as xl,k as Fl}from"./chunk-UFFPBTKU.mjs";import{a as Ua,b as kl,c as Ur,d as aa,e as za,f as Rl,g as Li,h as zr,i as ia,j as _l,k as qa}from"./chunk-M7R46EDF.mjs";import{dropThirdPartyOnlyError as df}from"@flopay/shared";import{PaymentAPI as Os}from"@flopay/js";import{FloPayError as _a,resolveBillingApiUrl as Ap,resolveButtonsLayoutTheme as Mp,resolveTheme as xp}from"@flopay/shared";import{useCallback as Nr,useEffect as qo,useMemo as Ra,useRef as jo,useState as $o}from"react";import{Fragment as Io,jsx as Xn,jsxs as Nl}from"react/jsx-runtime";function yd(){return Nl(Io,{children:[Nl("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:[Xn("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),Xn("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",Xn("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:Xn("path",{d:"M9 18l6-6-6-6"})})]})}function fd(){return Xn(Io,{children:"Go back"})}function gd(){return Xn(Io,{children:"Secure card checkout"})}function Co(e){return e!==void 0&&(e===""||e===null||e===!1)}function So({content:e}){return Xn(Io,{children:e===void 0?Xn(yd,{}):e})}function wo({content:e}){return Xn(Io,{children:e===void 0?Xn(fd,{}):e})}function la({content:e}){return Xn(Io,{children:e===void 0?Xn(gd,{}):e})}import{CHECKOUT_PROCESSING_TIMEOUT_MESSAGE as hd,classifyTelemetryFailure as Pd,FloPayError as Rn,isCardHolderNamePlaceholder as Ol,isMoneySettledOutcome as vd,isMountableVaultBlock as bd,isSetupIntentClientSecret as Cd,isValidEmail as Sd,resolveSetupFutureUsage as wd}from"@flopay/shared";var Id="Checkout is temporarily unavailable. Please try again later.";function ji(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof Rn&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function kd(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 Ll(){return new Rn(Id,"api_error",{code:"CheckoutInitializationFailed"})}function $i(e){return!!e?.gateways?.worldpayCorporateGateway}function qr(e){return e?.status==="open"&&$i(e)}function Ul(e,t,n){let r=e?.data.session,o=r?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(n&&(bd(r?.vault)||r?.gateways?.pcivault||o?.includes("card")||qr(r))||t&&e?.data.paypal?.publishableKey)}function zl(e,t){if(t&&(!(e instanceof Rn)||e.type==="authentication_error"))return ji(e);if(!(e instanceof Rn&&kd(e))){if(!t&&!(e instanceof Rn)&&(e instanceof TypeError||e instanceof SyntaxError))return{...Pd(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof Rn)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof Rn))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function ko(e,t,n,r={}){let o;return(i={})=>{if(o!==void 0)return o;let s={...r,...i,email:i.email?.trim()||r.email?.trim()},d=Ol(s.firstName,s.lastName);if(!Sd(s.email))return Promise.reject(new Rn("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let f={};for(let[u,w]of Object.entries(s)){if(d&&u.endsWith("Name")||typeof w!="string")continue;let b=w.trim();b&&(f[u]=b)}return o=e.claimCheckoutSession(t,n,{accountData:f}),o.catch(()=>{}),o}}function ql(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 Ki(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 jl(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}))],r=n.reduce((i,s)=>i+(s.overrideAmount??s.totalAmount??0),0),o=e.currency??n.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(r*100),currency:o,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??o,metadata:i.metadata??null}))}}function oo(e){if(Ol(e))return{};let[t,...n]=e?.trim().split(/\s+/)??[];return t?{firstName:t,lastName:n.join(" ")||void 0}:{}}function Vi(e,t){return t?{...e,...t}:e}function un(e,t,n){let r=typeof t=="string"?t:t.message,o=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:r,...o?{code:o}:{},...i?{declineCode:i}:{},...s?{sessionId:s}:{}}}function jr(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}var Rd=[{match:/^paypal authorization required\.?$/i,replacement:"For your additional security, please re-authenticate this payment via PayPal."}];function $r(e){if(typeof e!="string")return e??void 0;let t=e.trim();if(!t)return e;for(let{match:n,replacement:r}of Rd)if(n.test(t))return r;return e}function Br(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Fr(e){return e?.status==="authorized"||e?.status==="complete"}function Kr(e,t){if(e.data.session)return e.data.session;let n=e.raw,r=n?.latestTransactionAttempt?.result,o=n?.status==="authorized"||r==="AUTHORIZED";return o||n?.status==="completed"||r==="SUCCESS"?{...t,status:o?"authorized":"complete"}:n?.status==="expired"?{...t,status:"expired"}:void 0}function $l(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function $a(e){let t=$l(e);return new Rn(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function Ka(e){return e instanceof Rn||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function Ro(e){return $l(e)?new Rn("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new Rn("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new Rn(hd,"api_error",{code:"checkout_processing_timeout"})}function ca(e,t){return e==="processing"||vd(e,t)}function Kl(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function Vl(e,t){let n=e;if(Cd(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:i,error:s}=await n.retrieveSetupIntent(t);if(s)throw new Rn(s.message??"Failed to retrieve setup intent.","api_error",{...s.code?{code:s.code}:{}});return i??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:r,error:o}=await n.retrievePaymentIntent(t);if(o)throw new Rn(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return r??null}var _d=["apple_pay","google_pay"];function Wl(e,t="automatic",n){let r=wd(n,_d,"wallet");return{...typeof e=="number"&&Number.isFinite(e)&&e>0?{mode:"payment",amount:e,captureMethod:t==="manual"?"manual":"automatic_async"}:{mode:"setup"},paymentMethodTypes:["card"],...r?{setupFutureUsage:r}:{}}}var Ed=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Wi(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:Ed.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function da(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}import{FloPay as mp,PaymentAPI as mi,SESSION_CREATE_TELEMETRY as yp}from"@flopay/js";import{buildCheckoutDisplayData as fp,classifyTelemetryFailure as Kc,FloPayError as Cn,isDetachedSessionEligible as gp,isMountableVaultBlock as hp,resolveBillingApiUrl as Pp,resolveButtonsLayoutTheme as vp,resolveIdempotencyKey as Oc,resolveTheme as Vc,SDK_VERSION as Wc,telemetryStatusClass as bp}from"@flopay/shared";import Es,{useCallback as bn,useEffect as yr,useMemo as Qn,useRef as Ft,useState as Ht}from"react";import{createContext as Hl}from"react";var Zn=Hl({flopay:null,paypalFlopay:null,billingApiUrl:""}),ur=Hl({session:null,loading:!1,error:null});import{PaymentAPI as Yi}from"@flopay/js";import{classifyTelemetryFailure as $d,FloPayError as Ji,generateIdempotencyKey as Kd,isValidEmail as ya,normalizeGatewayEnvironment as Vd,PAYPAL_VAULTED_PAYMENT_METHOD_TYPE as Xi,SDK_VERSION as Wd}from"@flopay/shared";import{loadScript as Hd}from"@paypal/paypal-js";import{useCallback as kr,useContext as Gd,useEffect as zt,useMemo as fa,useRef as rt,useState as Hr}from"react";import{isValidEmail as Td}from"@flopay/shared";import{useCallback as Gl,useEffect as Ad,useRef as Yl,useState as Xl}from"react";import{jsx as Jl,jsxs as ua}from"react/jsx-runtime";function Nn(e,t=!1){let{firstName:n,lastName:r,...o}=e,i=n?.trim(),s=r?.trim();return{...o,...i||t?{firstName:i??""}:{},...s||t?{lastName:s??""}:{}}}function _o(){let[e,t]=Xl(null),n=Yl(null),r=Yl(0),o=Gl((s,d)=>(n.current?.(null),r.current+=1,t({id:r.current,methodLabel:s,identity:d}),new Promise(f=>{n.current=f})),[]),i=Gl(s=>{let d=n.current;n.current=null,t(null),d?.(s)},[]);return Ad(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:o,finish:i}}function Eo({identity:e,methodLabel:t,onComplete:n,onCancel:r,submitting:o=!1,testId:i="flopay-buyer-identity-pane"}){let[s,d]=Xl(e.email?.trim()??""),f=Td(s.trim());return ua("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:[ua("div",{style:{fontWeight:700},children:["Continue with ",t]}),ua("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",Jl("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:s,onChange:u=>d(u.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),ua("div",{style:{display:"flex",gap:"0.5rem"},children:[r&&Jl("button",{type:"button",onClick:r,style:{flex:1,minHeight:42},children:"Cancel"}),ua("button",{type:"button",disabled:!f||o,onClick:()=>{n(Nn({...e,email:s.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}import{resolveBillingApiUrl as Md}from"@flopay/shared";import{useContext as Va}from"react";function Vr(){return Va(Zn).flopay}function Hi(){return Va(Zn).paypalFlopay??null}function xd(){return Va(ur)}function Zl(){return Va(Zn).billingApiUrl||Md()}import{FLO_INSTRUMENT_SCHEMA_VERSION as Bd}from"@flopay/shared";import{useCallback as Fd,useRef as Wa}from"react";var Dd={"checkout.mount":"checkout_mount","sdk.initialize.ready":"sdk_loaded","provider.ready":"sdk_loaded","checkout.rendered":"form_rendered","vault.widget.ready":"form_rendered","vault.submission.started":"tokenize","payment.tokenization.started":"tokenize","payment.processing.started":"process_attempt","payment.intent.started":"process_attempt","vault.action.required":"3ds_challenge","payment.three_ds.handoff":"3ds_challenge"};function Nd(e){return e==="stripe"||e==="paypal"?e:void 0}function Od(e){let t=Nd(e.provider),n={schemaVersion:Bd,...t?{gateway:t}:{}};if(e.class==="lifecycle"){let r=Dd[e.name];return r?{...n,name:r}:null}return e.class==="card_surface"?{...n,name:"card_expanded"}:e.errorCode==="CHECKOUT_SESSION_CREATE_FAILED"?{...n,name:"checkout_error",phase:"session_create"}:e.errorCode==="SDK_INITIALIZATION_FAILED"||e.errorCode==="PROVIDER_LOAD_FAILED"?{...n,name:"checkout_error",phase:"sdk_load"}:e.errorCode==="PAYMENT_PROCESSING_FAILED"?{...n,name:"checkout_error",phase:e.requestCategory==="intent_create"?"wallets":"process"}:null}var Gi=new Set(["checkout_mount","sdk_loaded","form_rendered","card_expanded"]);function To(e,t){let n=Wa(e);n.current=e;let r=Wa(new Set),o=Wa(t),i=Wa(t);return ra(()=>{i.current=t,o.current!==t&&(o.current=t,r.current.clear())},[t]),Fd(s=>{if(i.current!==t)return;let d=Od(s);if(d){if(Gi.has(d.name)){if(r.current.has(d.name))return;r.current.add(d.name)}Bt(()=>n.current?.(d))}},[t])}import{createContext as Ld}from"react";var pa=Ld(null);function Ha(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Ud=Symbol.for("@flopay/js.telemetry.bridge.v1"),zd=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function qd(){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 jd(e){let t=qd(),n=(o,i)=>o?o.bind(e):i,r=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:r,elapsed:e.elapsed?e.elapsed.bind(e):o=>Math.max(0,r()-o),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 Ga(e){let t=globalThis[zd];return jd(t?.(e)??{})}function pn(e){if(e)return e[Ud]}import{useCallback as Wr,useEffect as Ql,useRef as ao}from"react";function ma(e,t){let n=ao(0),r=ao(null),o=ao(null),i=ao(e),s=ao(t?.onHandoffObserved),d=ao(t?.defersMissingTerminal),f=ao(t?.onMissingTerminalDeferred);Ql(()=>{i.current=e,s.current=t?.onHandoffObserved,d.current=t?.defersMissingTerminal,f.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let u=Wr((h=o.current)=>{h?.timer&&(clearTimeout(h.timer),h.timer=null)},[]),w=Wr(h=>{u();let C=n.current+1;return n.current=C,r.current=null,o.current={generation:C,method:h,timer:null,yieldedControl:!1},C},[u]),b=Wr(h=>{let C=o.current;return h!==void 0&&C?.generation!==h?!1:(u(C),o.current=null,(h===void 0||r.current===h)&&(r.current=null),!0)},[u]),j=Wr(h=>{let C=o.current,le=h??C?.generation??n.current;(h===void 0||C?.generation===h)&&(u(C),o.current=null),r.current=le},[u]),L=Wr(h=>r.current===(h??n.current),[]),I=Wr(h=>o.current?.generation===h&&r.current!==h,[]),N=Wr(()=>{let h=o.current;h&&(u(h),!h.yieldedControl&&(h.yieldedControl=!0,s.current?.(h.method)))},[u]),U=Wr(()=>{let h=o.current;!h?.yieldedControl||document.visibilityState!=="visible"||(u(h),h.timer=setTimeout(()=>{if(h.timer=null,o.current?.generation===h.generation){if(d.current?.(h.method)){f.current?.(h.method,h.generation);return}o.current=null,r.current=h.generation,i.current(h.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},600))},[u]);return Ql(()=>{let h=()=>{document.visibilityState==="visible"?U():N()};return document.addEventListener("visibilitychange",h),window.addEventListener("blur",N),window.addEventListener("focus",U),()=>{document.removeEventListener("visibilitychange",h),window.removeEventListener("blur",N),window.removeEventListener("focus",U),u()}},[u,N,U]),{startAttempt:w,finishAttempt:b,invalidateAttempt:j,isAttemptInvalidated:L,isAttemptCurrent:I,generationRef:n}}import{jsx as io,jsxs as Zi}from"react/jsx-runtime";var Ya=45,Yd=1e3,Jd=11e3,Xd={width:"100%",minHeight:Ya,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"},Zd={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 Qd(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:Zd[e.kind]??null}}function ec(e,t){return e==="watchdog_expired"?"paypal_render_timeout":Rl(t)?"paypal_init_timeout":"paypal_init_failure"}function eu(e){let t=e,n=t?.payer??t?.payment_source?.paypal;return{email:n?.email_address?.trim()||void 0,firstName:n?.name?.given_name?.trim()||void 0,lastName:n?.name?.surname?.trim()||void 0}}function tu(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function tc({sessionId:e,nonce:t,billingApiUrl:n,email:r,billingName:o,onBuyerIdentityReady:i,clientId:s,environment:d,currency:f,isSubscription:u,providerObjectType:w,approvalPresentation:b,onTokenizedBody:j,onComplete:L,onErrorChange:I,onDecline:N,onTechnicalFailure:U,isProcessing:h=!1,onLoadStateChange:C,onInitializationStateChange:le,allowAutomaticRetry:D=!0,onButtonClick:ve,runBeforeButtonClick:J,session:ke,existingOrderId:qe,telemetry:Re,telemetryContext:st,onInstrument:qt,debug:fe=!1}){let Ae=Vr(),ht=To(qt,e),Ee=fa(()=>{if(Ae)return null;let m=Ga({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:Wd,enabled:Re!==!1});return m.setCheckoutContext(st??{}),m.beginCheckout(st??{}),m},[n,Ae,Re,st?.checkoutMode,st?.layout]),He=fa(()=>pn(Ae),[Ae]);zt(()=>()=>{Ee&&Ee.flush().catch(()=>{}).finally(()=>Ee.destroy())},[Ee]);let _e=fa(()=>({error:m=>{He?He.error(m):Ee?.error(m),ht({class:"technical_error",errorCode:m.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":m.errorCode,requestCategory:m.requestCategory,provider:m.provider})},log:m=>{He?He.log(m):Ee?.log(m),ht({class:"lifecycle",name:m.name,provider:m.provider})},performance:m=>{He?He.performance(m):Ee?.performance(m)},terminal:m=>{He?He.terminal(m):Ee?.terminal(m)},startTiming:()=>He?.now()??Ee?.now()??0,elapsed:m=>He?.elapsed(m)??Math.max(0,(Ee?.now()??m)-m)}),[ht,He,Ee]),ie=rt(null),je=rt(0),$e=rt(null),pt=rt(null),Ce=rt(null),ge=Gd(pa),ce=rt(null);ce.current||(ce.current=Ha());let M=ge??ce.current,Se=rt(null),Ue=rt(!1),[Me,V]=Hr(!1),[Pt,ze]=Hr(!1),[Te,Ze]=Hr(0),xe=rt(0),[et,Fe]=Hr(!1),vt=rt(!1),Gt=rt(!1),[mt,Tt]=Hr(!1),[E,se]=Hr(!1),{request:De,collect:F,finish:we}=_o(),yt=rt({sessionId:e,required:!ya(r?.trim()||ke?.customer?.email?.trim())});yt.current.sessionId!==e&&(yt.current={sessionId:e,required:!ya(r?.trim()||ke?.customer?.email?.trim())});let Ne=yt.current.required,St=fa(()=>n.replace(/\/+$/,""),[n]),p=ke?.gateways?.paypal?.providerObjectType??w,g=p??(u?"subscription":"order"),[x]=Hr(ia),A=ke?.gateways?.paypal?.approvalPresentation??b,re=qa(x,A==="app_switch"?"app_switch":void 0,g),ct=p==="order"||p==="setup_token",he=fa(()=>JSON.stringify([St,s,f,d??"",g,ct,re,e,qe??""]),[St,s,f,d,qe,g,ct,re,e]),Ke=rt(he),X=Ke.current!==he,jt=rt(fe),bt=rt(null),[At,at]=Hr([]),de=kr(m=>{jt.current&&at(Be=>[...Be,`${new Date().toISOString().slice(11,23)} ${m}`])},[]);zt(()=>{jt.current=fe,fe&&de("debug:enabled"),bt.current?.setEnabled(fe)},[de,fe]);let _n=rt(j),On=rt(L),mn=rt(I),$t=rt(N),Ln=rt(U),Un=rt(ve),hn=rt(C),Mt=rt(le),Ge=rt(i),Oe=rt(J),En=rt(ke),wt=rt(r),zn=rt(o),yn=rt(t),Kt=rt(null),Qt=rt(new Map),er=rt(new Map),Wn=rt(!1);zt(()=>(Wn.current=!0,()=>{Wn.current=!1}),[]),zt(()=>{_n.current=j},[j]),zt(()=>{Ge.current=i},[i]),zt(()=>{On.current=L},[L]),zt(()=>{mn.current=I},[I]),zt(()=>{$t.current=N},[N]),zt(()=>{Ln.current=U},[U]),zt(()=>{Un.current=ve},[ve]),zt(()=>{hn.current=C},[C]),zt(()=>{Mt.current=le},[le]),zt(()=>{Oe.current=J},[J]),zt(()=>{En.current=ke},[ke]),zt(()=>{wt.current=r},[r]),zt(()=>{zn.current=o},[o]),zt(()=>{yn.current=t},[t]),zt(()=>{xe.current=Te},[Te]),zt(()=>{et&&Se.current?.focus()},[et,Te]);let en=kr(()=>{window.setTimeout(()=>{Se.current?.focus()},0)},[]),It=kr(()=>{V(!1),Ze(m=>m+1)},[]),tn=kr(()=>{Fe(!1),(ie.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??ie.current)?.focus?.()},[]);zt(()=>{!Me||!Ue.current||(Ue.current=!1,tn())},[tn,Me,Te]);let rn=kr((m,Be)=>{let $=Be?.popupBlocked??zr(m);$&&M.markBlocked();let Pn=Ua("PayPal",$,x.inAppBrowser),qn=Ln.current;if(qn){let Yt=$&&x.inAppBrowser?new Ji(Pn,"api_error",{code:Be?.code??"paypal_popup_blocked"}):m;qn("paypal",Yt,Be);return}mn.current?.(Pn)},[M,x.inAppBrowser]),Dt=kr(m=>{let Be=$e.current,$=pt.current;Be===null||!$||(_e.log({...$,popupCapability:M.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:m}),_e.performance({...$,popupCapability:M.current(),stage:"overlay_return",durationMs:_e.elapsed(Be),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:m}),$e.current=null)},[M,_e]),sn=kr((m,Be,$)=>{let Pn=pt.current;Dt("overlay_timeout"),Pn&&_e.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"}),rn(Be,{...$,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:re,terminalReason:"overlay_timeout"}),Fe(!0),It(),en()},[Dt,en,rn,M,re,It,_e]),Ot=kr(()=>{M.markAvailable();let m=pt.current;m&&(Ce.current=m.attempt,_e.log({...m,popupCapability:M.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[M,_e]),{finishAttempt:on,generationRef:Nt,invalidateAttempt:W,isAttemptCurrent:tr,isAttemptInvalidated:nr,startAttempt:rr}=ma(sn,{onHandoffObserved:Ot}),nn=kr(()=>(Fe(!1),rr("paypal")),[rr]),Tn=kr(m=>{W(m?.generation),m?.showRetry&&Fe(!0),m?.remount&&It(),m?.focus!==!1&&en()},[en,W,It]),Sn=m=>{let Be=Kt.current;return Be&&er.current.set(m,Be),m};zt(()=>{Ke.current!==he&&(Ke.current=he,vt.current=!1,Gt.current=!1,V(!1),ze(!1),Tt(!1),Mt.current?.("loading"))},[he]),zt(()=>{Bt(()=>hn.current?.(Me&&!mt))},[Me,mt]);let me=Vd(d);zt(()=>{let m={attempt:Nt.current+1,inAppBrowser:x.inAppBrowser,appFamily:x.appFamily,popupCapability:M.current(),presentationMode:re},Be=()=>({...pt.current??m,popupCapability:M.current()}),$={error:l=>_e.error({...l,...Be()}),log:l=>_e.log({...l,...Be()}),performance:l=>_e.performance({...l,...Be()}),terminal:l=>_e.terminal({...l,...Be()}),startTiming:_e.startTiming,elapsed:_e.elapsed},Pn=s?`${s.slice(0,6)}\u2026(len ${s.length})`:"(empty)",qn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(de(`mount clientId=${Pn} env=${d??"(unset)"}\u2192${me??"live"} ccy=${f} sub=${u}`),de(`ua=${qn.slice(0,80)}${qn.length>80?"\u2026":""}`),!s){de("FAIL: clientId empty \u2014 gateway misconfigured"),Tt(!0),$.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(!ie.current){de("FAIL: containerRef not attached");return}je.current=$.startTiming(),$.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Yt=!1,An=!1,nt=()=>Yt||An,or,Zr=!1,kt=()=>{or=Kd(),or||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Zr=!0},Mn=null,fr=!1,Hn=null,Jt=!1,ar=()=>{!Hn||Jt||(Jt=!0,Hn.close().catch(()=>{}))},xn=!1,Tr=!1,Bn=ie.current,gr=null,hr=null,Ar=[],jn=null,Gn=!1,Mr=!1,xt=null,wn=l=>{if(!l||typeof l.getBoundingClientRect!="function")return"(no rect)";let c=l.getBoundingClientRect();return`${Math.round(c.width)}\xD7${Math.round(c.height)}`},Yn=l=>{if(!l)return"(empty)";try{let c=new URL(l,typeof window>"u"?"https://localhost":window.location.href),S=c.pathname.toLowerCase();return S.includes("checkcaptcha")||S.includes("captcha")?`CAPTCHA(${c.host}${S})`:S.includes("risk")||S.includes("challenge")?`RISK(${c.host}${S})`:S.includes("smart/buttons")?`smart-buttons(${c.host})`:`${c.host}${S}`.slice(0,100)}catch{return l.slice(0,80)}},ir=l=>{let c=l.getAttribute("src"),S=l.getAttribute("srcdoc"),R=l.getAttribute("name"),te=l.getAttribute("sandbox"),Z=[];return c&&Z.push(`src=${Yn(c)}`),S&&Z.push(`srcdoc[${S.length}ch]`),!c&&!S&&Z.push("src=(empty) srcdoc=(empty)"),R&&Z.push(`name=${R.slice(0,40)}`),te!==null&&Z.push(`sandbox="${te.slice(0,40)}"`),Z.join(" ")},Pr=l=>{if(!(l instanceof HTMLIFrameElement))return"";try{let c=l.contentDocument;if(!c)return"cd=null";let S=c.body?.children.length??0,R=c.body?.innerHTML.length??0,te=c.head?.innerHTML.length??0;return`cd=same-origin readyState=${c.readyState} body[${S}children,${R}ch] head[${te}ch]`}catch(c){return`cd=cross-origin(${c.message.slice(0,30)})`}},Ve=[],ln=l=>{if(nt())return;let c=l.message??String(l.error??"(no message)");c&&(c.toLowerCase().includes("paypal")||c.toLowerCase().includes("zoid")||c.toLowerCase().includes("postrobot")||c.toLowerCase().includes("storage"))&&(de(`window:error ${c.slice(0,140)}`),Ve.push(c))},cn=l=>{if(nt())return;let c=l.reason instanceof Error?l.reason.message:String(l.reason??"(no reason)");c&&(c.toLowerCase().includes("paypal")||c.toLowerCase().includes("zoid")||c.toLowerCase().includes("postrobot")||c.toLowerCase().includes("storage"))&&(de(`window:rejection ${c.slice(0,140)}`),Ve.push(c))},In={value:0},Qr=()=>{gr?.disconnect(),gr=null,hr?.disconnect(),hr=null;for(let l of Ar.splice(0))clearTimeout(l);Mr=!1,Gn&&typeof window<"u"&&(window.removeEventListener("error",ln),window.removeEventListener("unhandledrejection",cn)),Gn=!1},vr=()=>{if(!(Gn||nt()||xn)){if(Gn=!0,Ve.length=0,In.value=0,typeof window<"u"&&(window.addEventListener("error",ln),window.addEventListener("unhandledrejection",cn)),typeof PerformanceObserver<"u")try{hr=new PerformanceObserver(l=>{if(!nt())for(let c of l.getEntries()){if(!c.name.toLowerCase().includes("paypal"))continue;In.value+=1;let S=Math.round(c.duration);de(`net ${S}ms ${c.name.slice(0,90)}`)}}),hr.observe({type:"resource",buffered:!0})}catch{}xt?.()}},Or=()=>{jn&&(clearTimeout(jn),jn=null)},kn=()=>{Qr(),Or()},dn={setEnabled:l=>{l?vr():Qr()}};bt.current=dn,jt.current&&vr();let sr=l=>{if(!l)return!1;let c=l.toLowerCase();return c.includes("zoid destroyed")||c.includes("destroyed all components")||c.includes("window closed")||c.includes("detected container element removed")},fn=l=>{if(nt()||sr(l))return;let c=$r(l)??l;Bt(()=>mn.current?.(c))},k=(l,c)=>{if(Yt||fr)return;fr=!0,An=!0,kn(),ar();let S=Qd({kind:l,generationActive:!0,automaticRetryAllowed:D,automaticRetryUsed:vt.current});if(S.action==="retry"){vt.current=!0,V(!1),se(!1),ze(!0),Mt.current?.("retrying"),Mn=setTimeout(()=>{Yt||Ze(R=>R+1)},Yd);return}if(V(!1),se(!1),ze(!1),Tt(!0),S.action!=="ignore"){if(Mt.current?.("exhausted"),S.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",c);return}if(S.report){let R=Li({code:ec(l,c),message:c},{inAppBrowser:x.inAppBrowser,handoffObserved:!1});R.popupBlocked&&M.markBlocked(),$.error({errorCode:R.popupBlocked?R.errorCode:S.report.errorCode,stage:S.report.stage,operationOutcome:S.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:R.terminalReason})}Gt.current||(Gt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",ec(l,c)))}};Tt(!1);let _=async(l,c=Kt.current)=>{if(nt())return;let S=c?.sessionId??e;if(_n.current){await _n.current(l,{sessionId:S,accountPatch:c?.accountPatch,nonce:c?.nonce});return}let R=$.startTiming();$.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let te=()=>{$.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),$.performance({stage:"processing",durationMs:$.elapsed(R),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let Z=En.current,dt=c?.accountPatch?.email??wt.current,Lt=c?.accountPatch?.userId??Z?.customer?.id??Z?.accountData?.userId??"",be=c?.accountPatch?.firstName??Z?.customer?.firstName??Z?.accountData?.firstName,Ie=c?.accountPatch?.lastName??Z?.customer?.lastName??Z?.accountData?.lastName,G=await new Yi(St,{telemetry:!1}).processPayment(Lt,{sessionId:S,nonce:c?.nonce??yn.current,paymentMethodCategory:"paypal",tokenizedData:l,accountData:{userId:Lt,email:dt??Z?.customer?.email??"",...be?{firstName:be}:{},...Ie?{lastName:Ie}:{},country:c?.accountPatch?.country??Z?.customer?.country??Z?.accountData?.country??void 0,zip:c?.accountPatch?.zip??Z?.customer?.zip??Z?.accountData?.zip??void 0}});if(G.ok){if(An||Yt&&Wn.current)return;te(),$.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),Bt(()=>On.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(nt())return;let Q=await G.json().catch(()=>null),P=Q?.message??"PayPal payment failed.",Y=$r(P)??P;te(),G.status===400&&(typeof Q?.declineCode=="string"||!Array.isArray(Q?.fields))?$.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):G.status===400||G.status===422?$.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):$.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:tu(G.status),failureCategory:G.status>=500?"server_error":void 0}),fn(Y),Bt(()=>$t.current?.(un("paypal",Y,{code:Q?.code,declineCode:Q?.declineCode})));return}catch(Z){if(nt())return;te(),$.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let dt=Z instanceof Error?Z.message:"PayPal payment failed.",Lt=$r(dt)??dt;fn(Lt),Bt(()=>$t.current?.(un("paypal",Lt)));return}},K=()=>new Ji("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),oe=l=>nt()?Promise.reject(K()):Promise.resolve(l),it=async l=>{if(nt())throw K();Zr||kt();let c=Kt.current,S=c?.sessionId??e,R=c?.nonce??yn.current;$.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let te;try{te=await new Yi(St,{telemetry:!1}).createSessionIntent(S,R??"",ct?{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:Xi,paymentMethodId:null,intentKind:g==="setup_token"?"setup":"payment"}:{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:null,intentKind:"payment"},{idempotencyKey:or})}catch(Z){throw $.error({...$d(Z,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),Z}if(nt())throw K();if(te.provider!=="paypal"||te.providerObjectType!==g)throw new Error(l);return $.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),te.providerObjectId},Xt=(l,c)=>{let S=c?.nonce??yn.current;if(!S)return;let R=c?.sessionId??e,te=aa(l)??Ur(l)??"provider_declined";new Yi(St,{telemetry:!1}).reportSessionIntentDecline(R,S,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:te}).catch(()=>{})},ee=Te;de("loadScript:scheduled (deferred 1 tick)");let H=null,B=setTimeout(()=>{if(Yt){de("loadScript:skipped (cancelled before defer ran)");return}de("loadScript:start");let l=me==="live"?"production":me,c={};g==="subscription"?c={intent:"subscription",vault:!0}:g==="order"&&(c={intent:"capture"}),H=Hd({clientId:s,currency:f,...c,...l?{environment:l}:{},...l==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let S=!1;H.then(R=>{if(S=!0,de(`loadScript:resolved inactive=${nt()} ns=${!!R} buttons=${!!R?.Buttons}`),nt())return;if(!R?.Buttons){de("FAIL: namespace missing Buttons factory"),k("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}$.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),$.performance({stage:"provider_ready",durationMs:$.elapsed(je.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),$.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let te=async(G,Q)=>{if(nt()||xe.current!==ee)return;let P=G.vaultSetupToken??G.subscriptionID??G.orderID??"",Y=P?er.current.get(P):Qt.current.get(ee);if(!(!Y||!tr(Y.generation))&&on(Y.generation)){er.current.delete(P),Qt.current.delete(Y.surfaceKey),Dt("approved");try{if(se(!0),Bt(()=>mn.current?.(null)),!P)throw new Ji("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let Ye=En.current,Rt=oo(zn.current??[Ye?.customer?.firstName,Ye?.customer?.lastName].filter(Boolean).join(" ")),z=Nn({email:Y.accountPatch?.email?.trim()||wt.current?.trim()||Ye?.customer?.email?.trim(),firstName:Y.accountPatch?.firstName?.trim()||Rt.firstName,lastName:Y.accountPatch?.lastName?.trim()||Rt.lastName});if(!ya(z.email)||!(z.firstName||z.lastName))try{let Le=eu(await Q?.order?.get?.());z=Nn({email:Le.email||z.email,firstName:Le.firstName||z.firstName,lastName:Le.lastName||z.lastName})}catch{}if((Ge.current||Ne)&&!ya(z.email)){let Le=await F("PayPal",z);if(!Le)return;z=Le}ya(z.email)&&(Y.accountPatch=Nn({...Y.accountPatch,...z}),await Ge.current?.(z));let vn;g==="setup_token"?vn={id:P,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:Xi}:ct?vn={id:P,isPaypal:!0,gateway:"paypal",paymentMethodType:Xi}:vn={id:P,isPaypal:!0},await _(vn,Y)}catch(Ye){fn(Ye instanceof Error?Ye.message:"PayPal capture failed.")}finally{nt()||se(!1)}}},Z=G=>{let Q=qe?()=>oe(qe):()=>it(G);return async()=>Sn(await Q())},dt=R.Buttons({style:{layout:"horizontal",height:Ya,tagline:!1},...re==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(G,Q)=>{if(nt()){await Q.reject();return}kt();let P=Oe.current,Y={};if(P)try{let z=await P("paypal");if(nt()){await Q.reject();return}if(!z.proceed){Kt.current=null,Qt.current.delete(ee),await Q.reject();return}Y={sessionId:z.sessionId,accountPatch:z.accountPatch,nonce:z.nonce}}catch(z){de(`onClick:runBeforeButtonClick rejected msg=${(z instanceof Error?z.message:String(z)).slice(0,120)}`),Kt.current=null,Qt.current.delete(ee),await Q.reject();return}Bt(()=>Un.current?.("paypal"));let Ye=nn(),Rt={generation:Ye,surfaceKey:ee,...Y};Kt.current=Rt,Qt.current.set(ee,Rt),pt.current={...m,attempt:Ye},await Q.resolve(),$.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),$.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),$e.current=$.startTiming()},createOrder:g==="order"?Z("Failed to create PayPal order."):void 0,createSubscription:g==="subscription"?Z("Failed to create PayPal subscription."):void 0,createVaultSetupToken:g==="setup_token"?async()=>Sn(await it("Failed to create PayPal setup token.")):void 0,onApprove:te,onCancel:()=>{if(nt())return;let G=Qt.current.get(ee)??Kt.current;G&&Qt.current.delete(G.surfaceKey),Kt.current=null,Dt("cancelled"),$.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),Ue.current=!0,Tn({generation:G?.generation,remount:!0,focus:!1})},onError:G=>{if(nt()||xe.current!==ee)return;let Q=G instanceof Error?G.message:"PayPal failed to render.";if(de(`onError rendered=${xn} msg=${Q.slice(0,120)}`),xn){let P=Qt.current.get(ee)??Kt.current;if(P&&!tr(P.generation)||!P&&nr())return;if(sr(Q)){on(P?.generation);return}let{errorCode:Y,popupBlocked:Ye,providerDeclined:Rt,terminalReason:z}=Li(G,{inAppBrowser:x.inAppBrowser,handoffObserved:P!=null&&Ce.current===P.generation});if(Ye&&M.markBlocked(),Dt(z),Rt){$.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:z}),Xt(G,P),Bt(()=>$t.current?.(un("paypal",Q))),P&&Qt.current.delete(P.surfaceKey),Kt.current=null,on(P?.generation);return}$.error({errorCode:Y,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:z}),P&&Qt.current.delete(P.surfaceKey),Kt.current=null,Tn({generation:P?.generation,remount:!0,showRetry:!0,focus:!0}),rn(G,{code:"paypal_runtime_failed",popupBlocked:Ye,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:re,terminalReason:z});return}k(sr(Q)?"teardown":"pre_ready_callback",Q)}}),Lt=dt.isEligible();if(de(`isEligible=${Lt}`),$.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!Lt){V(!1),k("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}Tr=!0,Hn=dt,xt=()=>{if(!Gn||Mr||nt()||xn)return;Mr=!0,de(`container:dims ${wn(Bn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(gr=new MutationObserver(Q=>{if(!nt()){for(let P of Q)if(P.type==="childList")P.addedNodes.forEach(Y=>{if(!(Y instanceof Element))return;let Ye=Y.tagName.toLowerCase(),Rt=(Y.getAttribute("title")??"").slice(0,40),z=Ye==="iframe"?` ${ir(Y)}`:"";de(`child+ ${Ye}${Rt?` title="${Rt}"`:""}${z} dims=${wn(Y)}`)});else if(P.type==="attributes"&&P.target instanceof Element){let Y=P.target;if(Y.tagName.toLowerCase()!=="iframe")continue;let Ye=P.attributeName;(Ye==="src"||Ye==="srcdoc")&&de(`attr~ iframe ${Ye}=${Ye==="srcdoc"?`[${(Y.getAttribute("srcdoc")??"").length}ch]`:Yn(Y.getAttribute("src"))} dims=${wn(Y)}`)}}}),gr.observe(Bn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let G=Q=>{if(nt()||xn)return;let P=Bn.querySelectorAll("iframe"),Y=typeof document<"u"&&"hasStorageAccess"in document;de(`watchdog:${Q} container=${wn(Bn)} children=${Bn.childElementCount} iframes=${P.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${Y} paypalNetRequests=${In.value}`),P.forEach((Ye,Rt)=>{let z=(Ye.getAttribute("title")??"").slice(0,40);de(` iframe[${Rt}] ${wn(Ye)}${z?` title="${z}"`:""} ${ir(Ye)}`);let vn=Pr(Ye);vn&&de(` ${vn}`)}),Ve.length===0&&de(" (no PayPal/zoid window errors captured)")};Ar.push(setTimeout(()=>G("3s"),3e3)),Ar.push(setTimeout(()=>G("8s"),8e3)),Ar.push(setTimeout(()=>G("15s"),15e3))},xt(),de("render:start");let Ie=$.startTiming();jn=setTimeout(()=>{nt()||xn||(de("watchdog:11s retryable render timeout"),k("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},Jd);let We=dt.render(Bn);(async()=>{try{if(await We,de(`render:resolved inactive=${nt()}`),kn(),nt()){ar();return}xn=!0,V(!0),ze(!1),Mt.current?.("ready"),$.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),$.performance({stage:"checkout_render",durationMs:$.elapsed(Ie),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(G){let Q=G instanceof Error?G.message:"PayPal failed to render.";de(`render:rejected msg=${Q.slice(0,120)}`),kn(),k(sr(Q)?"teardown":"render_rejected",Q)}})()}).catch(R=>{let te=R instanceof Error?R.message:"PayPal operation failed.";de(`provider:failed msg=${te.slice(0,120)}`);let Z="script_rejected";S&&sr(te)?Z="teardown":S&&Tr&&(Z="render_rejected"),k(Z,te)})},0);return()=>{Yt=!0,clearTimeout(B),Mn&&clearTimeout(Mn),kn(),bt.current===dn&&(bt.current=null),ar(),$e.current=null,pt.current=null}},[D,St,s,f,d,g,re,ct,e,qe,Te,_e,F,Ne,de,Dt]);let tt=fe?Zi("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:mt?"#fef2f2":"#f3f4f6",border:`1px solid ${mt?"#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=${mt})`,At.length===0?`
|
|
2
2
|
(waiting for first lifecycle event\u2026)`:`
|
|
3
3
|
${At.join(`
|
|
4
|
-
`)}`]}):null;return ft&&!X?ye?ao("div",{children:et}):null:Yi("div",{children:[et,Oe&&ao(_o,{identity:Oe.identity,methodLabel:Oe.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:we,onCancel:()=>we(null)}),Yi("div",{"aria-hidden":vt||Oe?!0:void 0,style:vt||Oe?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:Va},children:[!xe&&!vt&&ao("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"}}),ao("div",{ref:ne,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:Va,display:"flex",opacity:xe?1:0},"aria-busy":T||h},Ae)]},Ae),Qe&&ao("button",{ref:Se,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:en,style:Wd,children:"Try PayPal again"})]})}function Ga(e){return ao(Jl,{...e})}function Xl(e){return ao(Jl,{...e})}import{jsx as Zl,jsxs as Jd}from"react/jsx-runtime";function Eo({children:e,margin:t,icon:n=!0,styleOverride:r}){return Jd("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"}:{},...r??{}},children:[n&&Zl("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:Zl("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{foldIntoProducts as Xd,resolveSessionCurrency as Zd}from"@flopay/shared";function To(){return typeof window<"u"&&typeof window.sessionStorage<"u"}var Xi=":idempotency-key";function Zi(e,t){if(!To())return null;let n=window.sessionStorage.getItem(e);if(!n)return null;try{let r=JSON.parse(n);return!r||typeof r.sid!="string"||!r.sid||"canonicalIdentity"in r&&r.canonicalIdentity!==t?null:{..."canonicalIdentity"in r?{canonicalIdentity:t}:{},sid:r.sid,nonce:typeof r.nonce=="string"?r.nonce:void 0}}catch{return{sid:n}}}function Qi(e,t){if(!To())return null;try{let n=window.sessionStorage.getItem(e+Xi);if(!n)return null;try{let r=JSON.parse(n);return typeof r=="string"?r?{idempotencyKey:r}:null:!r||typeof r.idempotencyKey!="string"||!r.idempotencyKey||"canonicalIdentity"in r&&r.canonicalIdentity!==t?null:{..."canonicalIdentity"in r?{canonicalIdentity:t}:{},idempotencyKey:r.idempotencyKey}}catch{return{idempotencyKey:n}}}catch{return null}}function Ya(e,t){if(To())try{Zi(e,t)&&window.sessionStorage.removeItem(e)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout session cache.",n)}}function Ja(e,t){if(Ya(e,t),!!To())try{Qi(e,t)&&window.sessionStorage.removeItem(e+Xi)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout idempotency key.",n)}}function Xa(e,t,n,r){if(To())try{window.sessionStorage.setItem(e,JSON.stringify(r?{canonicalIdentity:t,sid:n,nonce:r}:{canonicalIdentity:t,sid:n}))}catch(o){console.warn("[FloPayCheckout] Failed to persist checkout session cache.",o)}}function Za(e,t,n){if(To())try{window.sessionStorage.setItem(e+Xi,JSON.stringify({canonicalIdentity:t,idempotencyKey:n}))}catch(r){console.warn("[FloPayCheckout] Failed to persist checkout idempotency key.",r)}}function Ji(e,t){return`${e}:${t.totalAmount??""}:${t.overrideAmount??""}:${t.quantity??1}:${t.currency??""}`}function Qd(e){if(e==null)return e;let t=JSON.stringify(Object.entries(e).sort(([s],[l])=>s<l?-1:s>l?1:0)),n=1779033703,r=3144134277,o=1013904242,i=2773480762;for(let s=0;s<t.length;s++){let l=t.charCodeAt(s);n=r^Math.imul(n^l,597399067),r=o^Math.imul(r^l,2869860233),o=i^Math.imul(o^l,951274213),i=n^Math.imul(i^l,2716044179)}return n=Math.imul(o^n>>>18,597399067),r=Math.imul(i^r>>>22,2869860233),o=Math.imul(n^o>>>17,951274213),i=Math.imul(r^i>>>19,2716044179),n^=r^o^i,r^=n,o^=n,i^=n,[n,r,o,i].map(s=>(s>>>0).toString(16).padStart(8,"0")).join("")}function Ao(e,t=!1){let n=e?.account?.email?.trim().toLowerCase()??"",r={c:e?.clientId,cur:e?.currency??"",captureMethod:e?.captureMethod??"",a:{e:n,u:n?"":e?.account?.userId??"",country:e?.account?.country??""},successUrl:e?.successUrl,cancelUrl:e?.cancelUrl,p:e?.products?.map(o=>Ji(`${o.type??""}:${o.code??o.providerItemId??o.providerPlanId??""}`,o)).sort(),i:e?.items?.map(o=>Ji(o.code??o.providerItemId??"",o)).sort(),s:e?.subscriptions?.map(o=>Ji(o.code??o.providerPlanId??"",o)).sort(),couponCodes:e?.couponCodes?[...e.couponCodes].sort():void 0,checkoutMetadata:Qd(e?.checkoutMetadata),...t?{tagsData:e?.tagsData,utmMetadata:e?.utmMetadata,tokenizedData:e?.tokenizedData,checkoutMode:e?.checkoutMode??"full"}:{}};return JSON.stringify(r)}function Ql(e,t=!1){let n=Ao(e,t),r=0;for(let o=0;o<n.length;o++)r=(r<<5)-r+n.charCodeAt(o)|0;return`flopay_session_${Math.abs(r).toString(36)}`}function ec(e,t){if(!e?.customer||!e.products||t.checkoutMetadata!==void 0)return!1;let n=t.account.email?.trim().toLowerCase()??"",r=e.customer.email?.trim().toLowerCase()??"";if((n?r!==n:e.customer.id!==t.account.userId)||(t.account.country??"").trim().toUpperCase()!==(e.customer.country??"").trim().toUpperCase()||e.successUrl!==t.successUrl||e.cancelUrl!==t.cancelUrl||(e.captureMethod??"automatic")!==(t.captureMethod??"automatic"))return!1;let o=Zd(t.currency,t.items,t.subscriptions,t.products);if(!o||e.currency.toUpperCase()!==o.toUpperCase())return!1;let i=(t.products??Xd(t.items,t.subscriptions)).map(u=>({type:u.type,code:u.code??u.providerItemId??u.providerPlanId??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??o).toUpperCase()})).sort((u,S)=>`${u.code}:${u.type??""}`.localeCompare(`${S.code}:${S.type??""}`)),s=e.products.map(u=>({type:u.type,code:u.code??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??e.currency).toUpperCase()})).sort((u,S)=>`${u.code}:${u.type??""}`.localeCompare(`${S.code}:${S.type??""}`));if(i.length!==s.length)return!1;for(let[u,S]of i.entries()){let v=s[u];if(v===void 0||S.code!==v.code||S.type!==void 0&&S.type!==v.type||S.quantity!==v.quantity||S.totalAmount!==v.totalAmount||S.overrideAmount!==v.overrideAmount||S.currency!==v.currency)return!1}let l=[...t.couponCodes??[]].sort(),f=[...e.coupons??[]].sort();return l.length===f.length&&l.every((u,S)=>u===f[S])}import{resolveBillingApiUrl as eu}from"@flopay/shared";import{useEffect as Gr,useMemo as tu,useRef as tc,useState as nc}from"react";import{jsx as nu}from"react/jsx-runtime";function Qa({flopay:e,paypalFlopay:t,options:n,onInstrument:r,children:o}){let[i,s]=nc(e instanceof Promise?null:e),[l,f]=nc(t instanceof Promise||!t?null:t),u=tc(null),S=tc(null),v=Ro(r);Gr(()=>{v({class:"lifecycle",name:"checkout.mount"})},[v]),Gr(()=>{i&&v({class:"lifecycle",name:"sdk.initialize.ready"})},[v,i]),Gr(()=>{if(i)return un(i)?.subscribe?.(v)},[v,i]),Gr(()=>{if(!(!l||l===i))return un(l)?.subscribe?.(v)},[v,i,l]),Gr(()=>{if(!i)return;let k=un(i);return u.current=k?.beginCheckout()??k?.now()??0,k?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{k?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),Gr(()=>{let k=!1;return e instanceof Promise?e.then(q=>{k||s(q)},()=>{k||v({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):s(e),()=>{k=!0}},[v,e]),Gr(()=>{let k=!1;if(!t){f(null);return}return t instanceof Promise?t.then(q=>{k||f(q)},()=>{k||v({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):f(t),()=>{k=!0}},[v,t]),Gr(()=>{if(!i||S.current===i)return;S.current=i;let k=un(i);k?.log({name:"checkout.rendered",stage:"checkout_render"}),v({class:"lifecycle",name:"checkout.rendered"}),k?.performance({stage:"checkout_render",durationMs:k.elapsed(u.current??0),durationMode:"machine"})},[v,i]);let W=eu(n?.billingApiUrl),$=tu(()=>({flopay:i,paypalFlopay:l,billingApiUrl:W,emitInstrument:v}),[i,l,W,v]);return nu(Xn.Provider,{value:$,children:o})}var ei="flopay_recent_completion_";function Mo(e){if(!(!e||typeof window>"u"))try{let t={expiresAt:Date.now()+6e4};window.sessionStorage.setItem(ei+e,JSON.stringify(t))}catch{}}function es(e){if(!e||typeof window>"u")return!1;try{let t=window.sessionStorage.getItem(ei+e);if(!t)return!1;let n=JSON.parse(t);return typeof n?.expiresAt!="number"||n.expiresAt<=Date.now()?(window.sessionStorage.removeItem(ei+e),!1):!0}catch{return!1}}async function ti(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{loadFloPay as rc,PaymentAPI as ri}from"@flopay/js";import{classifyPaymentRejection as ru,FloPayError as wt,isAuthorizationOnlySession as ou,isSetupIntentClientSecret as au,normalizeCheckoutFailureOutcome as oc,THREE_DS_CHALLENGE_WINDOW_MS as ic}from"@flopay/shared";var fa="card",iu=1e3;async function su(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:r,error:o}=await e.retrievePaymentIntent(t);return{error:o,intent:r??null}}async function lu(e,t,n,r){if(r){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:s,error:l}=await e.confirmCardSetup(t,n);return{error:l,intent:s??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:o,error:i}=await e.confirmCardPayment(t,n);return{error:i,intent:o??null}}function Yr(e){return new wt("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function ts(){return new wt("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function rs(e,t){return Object.assign(e,{checkoutMethod:t})}function Nr(e,t){let n=e instanceof wt?e:new wt(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 ya(e,t){try{return await e()}catch(n){throw Nr(n,t)}}function sc(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 cu(e){return e.status==="succeeded"||e.status==="authorized"||e.status==="declined"}async function os(e){if(typeof document>"u"||typeof window>"u")throw new wt("3DS challenge requires a browser environment.","api_error",{code:"three_ds_no_window"});if(e.signal?.aborted)throw Yr();let t=1e3,n=15e3,r=`${e.billingApiUrl.replace(/\/$/,"")}/v1/checkouts/sessions/${encodeURIComponent(e.sessionId)}/3ds/complete`,o=async()=>{let v=new AbortController,W=()=>v.abort();e.signal?.aborted?v.abort():e.signal?.addEventListener("abort",W);let $=window.setTimeout(()=>v.abort(),n);try{let k=await fetch(r,{method:"POST",headers:{"x-checkout-session-token":e.nonce,"content-type":"application/json"},body:"{}",signal:v.signal});if(!k.ok)return{status:"unknown"};let q=await k.json().catch(()=>null);return du(q)}catch{return{status:"unknown"}}finally{window.clearTimeout($),e.signal?.removeEventListener("abort",W)}},i,s=()=>e.pollCompletionEndpoint!==!1?o():(i??(i=o()),i),l=document.activeElement instanceof HTMLElement?document.activeElement:null,f=document.createElement("div");f.setAttribute("data-flopay-auto-3ds-overlay","1"),f.setAttribute("role","dialog"),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label","Card authentication"),f.style.cssText=["position:fixed","inset:0","z-index:2147483647","background:rgba(15,23,42,0.6)","display:flex","align-items:center","justify-content:center","padding:16px"].join(";");let u=document.createElement("iframe");u.setAttribute("title","Card authentication"),u.setAttribute("allow","payment"),u.tabIndex=0,u.style.cssText=["width:min(100%,460px)","height:min(100%,640px)","border:0","border-radius:12px","background:#fff","box-shadow:0 12px 30px rgba(0,0,0,0.35)"].join(";");let S=null;try{S=new URL(e.billingApiUrl,window.location.href).origin}catch{S=null}try{let v=await new Promise((W,$)=>{let k=!1,q=0,K=0,h=0,C=!1,se=()=>{window.clearTimeout(q),window.clearInterval(K),window.clearTimeout(h),window.removeEventListener("message",ke),u.removeEventListener("load",Ce),e.signal?.removeEventListener("abort",J)},z=async()=>{if(!(k||C)){C=!0;try{let je=await s();if(k||!cu(je))return;k=!0,se(),W(je)}finally{C=!1}}},Ce=()=>{e.pollCompletionEndpoint!==!1&&(window.clearTimeout(h),h=window.setTimeout(()=>{z()},250))},J=()=>{k||(k=!0,se(),$(Yr()))},ke=je=>{if(je.source!==u.contentWindow||S&&je.origin!==S)return;let _e=je.data;!_e||typeof _e!="object"||_e.source!=="flopay-vault-3ds-return"||k||(k=!0,se(),W(null))};q=window.setTimeout(()=>{k||(k=!0,se(),$(ts()))},ic),e.pollCompletionEndpoint!==!1&&(K=window.setInterval(()=>{z()},t)),u.addEventListener("load",Ce),window.addEventListener("message",ke),e.signal?.addEventListener("abort",J),u.src=e.nextActionRedirectUrl,f.appendChild(u),document.body.appendChild(f),u.focus(),e.signal?.aborted&&J()});return v||await s()}finally{f.parentNode?.removeChild(f),l?.isConnected&&l.focus()}}async function xo(e,t){let{billingApiUrl:n,sessionId:r,signal:o}=t,i=t.nonce??t.session.clientSecret,s=new ri(n,{telemetry:!1}),l=`${n.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(r)}/status`,f=new AbortController,u=new AbortController,S=()=>{f.abort(o.reason),u.abort(o.reason)};o.aborted?S():o.addEventListener("abort",S,{once:!0});let v=os({billingApiUrl:n,sessionId:r,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:f.signal,pollCompletionEndpoint:!1}),W=s.waitForCheckoutSessionCompletion(r,{initialDelayMs:iu,nonce:i,statusUrl:l,continueAfterActionRequired:!0,timeoutMs:ic+15e3,signal:u.signal}),$;try{let q=await Promise.race([v,W]);if("data"in q)$=q;else{if(q.status==="declined")throw wr({type:q.declineReason??"authorization_declined",gatewayErrorCode:q.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"});if(q.status==="timeout")throw ts();$=await W}}catch(q){if(o.aborted||q instanceof Error&&q.name==="AbortError")throw Yr(q);if(!(q instanceof wt)||q.code!=="three_ds_timeout"&&q.code!=="checkout_processing_timeout")throw q;try{$=await s.waitForCheckoutSessionCompletion(r,{initialDelayMs:0,nonce:i,statusUrl:l,timeoutMs:5e3,signal:o})}catch(h){if(o.aborted)throw Yr(h);if(!(h instanceof wt)||h.code!=="checkout_processing_timeout")throw h}let K=$&&Kr($,t.session);if(!Dr(K)&&K?.status!=="expired"){if(t.telemetry){let h=new ri(n);try{h.reportThreeDsAbandoned(r)}finally{h.destroy()}}throw ts()}}finally{o.removeEventListener("abort",S),f.abort(),u.abort()}let k=$&&Kr($,t.session);if(!Dr(k))throw Io(k);return{...Fr(k,r),checkoutMethod:"card"}}function du(e){if(!e||typeof e!="object")return{status:"unknown"};let t=typeof e.status=="string"?e.status:"unknown",n=typeof e.providerIntentId=="string"?e.providerIntentId:null;switch(t){case"succeeded":case"authorized":case"pending":case"timeout":return{status:t,providerIntentId:n};case"declined":return{status:"declined",providerIntentId:n,declineReason:typeof e.declineReason=="string"?e.declineReason:null,gatewayDeclineReason:typeof e.gatewayDeclineReason=="string"?e.gatewayDeclineReason:null};case"requires_action":return{status:"requires_action",providerIntentId:n,nextActionRedirectUrl:typeof e.nextActionRedirectUrl=="string"?e.nextActionRedirectUrl:null};case"no_attempt":return{status:"no_attempt"};default:return{status:"unknown"}}}function wr(e,t="Payment failed. Please try again.",n){let r=n?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),o=e?.message??t,i=$r(o)??o,s=rs(new wt(i,"api_error",{code:e?.code??oc(e?.outcome)??oc(e?.type)??e?.gatewayErrorCode}),r);return e?.orderId&&(s.orderId=e.orderId),s}function ns(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function ni(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function lc(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of n)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||ni(o)))return o;let r=e?.data;if(r&&typeof r=="object"){let o=r,i=[o.threeDSecureToken,o.clientSecret,o.stripeClientSecret,o.id];for(let l of i)if(typeof l=="string"&&l.length>0&&(!t?.requirePaymentIntentClientSecret||ni(l)))return l;let s=o.gateways;if(s&&typeof s=="object"){let l=s.stripe;if(l&&typeof l=="object"){let f=l,u=[f.stripeClientSecret,f.clientSecret];for(let S of u)if(typeof S=="string"&&S.length>0&&(!t?.requirePaymentIntentClientSecret||ni(S)))return S}}}}async function uu({billingApiUrl:e,sessionId:t,nonce:n,responseJson:r}){let o=lc(r,{requirePaymentIntentClientSecret:!0});if(typeof o=="string"&&o.length>0)return{type:"3ds_required",threeDSecureToken:o};if(!t)return null;try{let l=(await new ri(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(ni(l))return{type:"3ds_required",threeDSecureToken:l}}catch{}return null}async function Bo({billingApiUrl:e,sessionId:t,session:n,nonce:r,tokenizedData:o,returnUrl:i,telemetry:s}){let l=e.replace(/\/+$/,""),f=t??n.id,u=r??n.clientSecret,S=n.customer?.id??n.accountData?.userId??"",v=n.customer?.email??n.accountData?.email??"",W=n.customer?.firstName??n.accountData?.firstName??"",$=n.customer?.lastName??n.accountData?.lastName??"",k=n.customer?.country??n.accountData?.country??void 0,q=n.customer?.zip??n.accountData?.zip??void 0,h=await new ri(l,s===!1?{telemetry:!1}:void 0).processPayment(S,{sessionId:f,nonce:u,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:S,email:v,firstName:W,lastName:$,country:k,zip:q},returnUrl:i??ns(n)});if(h.ok){let z=typeof h.json=="function"?await h.json().catch(()=>null):null;if(ou(n)||z?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof z?.paymentId=="string"?z.paymentId:n.paymentId,sessionId:typeof z?.sessionId=="string"?z.sessionId:f,authorizationExpiresAt:typeof z?.authorizationExpiresAt=="string"?z.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:la(o),checkoutMethod:ac(o,n)}};let Ce=o?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...Ce?{paymentIntentId:Ce}:{},paymentMethodId:la(o),checkoutMethod:ac(o,n)}}}let C;try{C=await h.json()}catch(z){throw new wt("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status,cause:z})}if(C?.type==="3ds_required"&&typeof C.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:C.nextActionRedirectUrl};if(C?.type==="paypal_redirect_required"||C?.type==="3ds_required"){let z=lc(C);if(!z)throw new wt("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status});return{type:C.type,threeDSecureToken:z,paymentMethodId:C.paymentMethodId}}if(C?.gatewayErrorCode==="authentication_required"){let z=await uu({billingApiUrl:l,sessionId:f,nonce:u,responseJson:C});if(z)return z;throw rs(new wt("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let se=new wt(C?.message??"Payment failed. Please try again.","api_error",{code:C?.code??C?.gatewayErrorCode,declineCode:C?.declineCode??C?.gatewayDeclineReason,statusCode:h.status});throw Object.assign(se,{telemetryOutcome:ru(h.status,C)})}async function oi(e,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:i,session:s,returnUrl:l,telemetry:f,signal:u}){let S=t?.getRawProvider();if(!S)throw Nr(new wt("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!r||!e.threeDSecureToken)throw rs(new wt("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let v=au(e.threeDSecureToken),W=null,$=e.paymentMethodId,k=await ya(()=>su(S,e.threeDSecureToken,v),"card");if(k){if(k.error)throw Nr(new wt(k.error.message??`Failed to retrieve 3DS ${v?"setup":"payment"} status.`,"api_error",{code:k.error.code}),"card");let K=k.intent;!$&&K?.payment_method&&(typeof K.payment_method=="string"?$=K.payment_method:"id"in K.payment_method&&($=K.payment_method.id??void 0))}let q=$?await ya(()=>lu(S,e.threeDSecureToken,{payment_method:$,return_url:l??ns(s)??window.location.href},v),"card"):null;if(q){if(q.error)throw Nr(new wt(q.error.message??"3DS authentication failed.","api_error",{code:q.error.code}),"card");W=q.intent}else{let K=await ya(()=>S.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(K.error)throw Nr(new wt(K.error.message??"3DS authentication failed.","api_error",{code:K.error.code}),"card");W=(v?K.setupIntent:K.paymentIntent)??null}if(W&&(W.status==="requires_capture"||W.status==="succeeded"||W.status==="processing")){let K=await Bo({billingApiUrl:o,sessionId:i,session:s,telemetry:f,tokenizedData:{id:W.id,type:"card",threeDSecureActionResultTokenId:W.id},returnUrl:l});return K.type==="success"?{...K.result,paymentIntentId:K.result.paymentIntentId??W.id,paymentMethodId:K.result.paymentMethodId??$}:K.type==="next_action_required"?xo(K,{billingApiUrl:o,sessionId:i??s.id,session:s,signal:u}):oi(K,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:i,session:s,returnUrl:l,telemetry:f,signal:u})}throw Nr(new wt("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let v=(n??t)?.getRawProvider();if(!v)throw Nr(new wt("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:$}=await ya(()=>v.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if($)throw Nr(new wt($.message??"PayPal authorization failed.","api_error",{code:$.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:W}=await ya(()=>v.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:l??ns(s)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(W)throw Nr(new wt(W.message??"PayPal authorization failed.","api_error",{code:W.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new wt("Unsupported payment redirect state.","api_error")}function ga(e){if(e instanceof wt){let r=$r(e.message);return r&&r!==e.message?Object.assign(new wt(r,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=$r(t)??t;return new wt(n,"api_error")}function as(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,r=!!e.data.session?.vault?.html||qr(e.data.session);if(!t&&!n&&!r)throw new wt("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 ac(e,t){return e?e.isPaypal?"paypal":"card":t&&qr(t)?"card":void 0}async function is({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:r,telemetry:o}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[s,l]=await Promise.all([rc(e,{billingApiUrl:n,locale:r,telemetry:o}),i?rc(i,{billingApiUrl:n,locale:r,telemetry:o}).catch(u=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",u),null)):Promise.resolve(null)]);if(!s)throw new wt("The payment provider did not initialize.","authentication_error");let f=null;return i?f=l:t&&(f=s),{flopay:s,paypalFlopay:f}}import{PaymentAPI as Do,PciVaultCardCapture as pu,toStripeAppearance as mu}from"@flopay/js";import{COUNTRY_OPTIONS as yu,classifyPaymentRejection as fu,FloPayError as ur,filterStripeMethodsByCountry as gu,getPostalCodeExample as hu,getPostalCodeLabel as ms,getStateFromPostalCode as cc,getStateLabel as ss,getStateOptions as Pu,getStripeMethodDisplayName as Ca,isAuthorizationOnlySession as ls,isAVSFieldVisible as ot,isPostalCodeSupported as vu,isSetupIntentClientSecret as cs,isValidEmail as yn,isValidPostalCode as Cu,needsStripeMethodExplicitConfirm as dc,normalizeCheckoutFailureOutcome as bu,partitionStripeMethods as Su,randomUuidV4 as wu,resolveAVSConfig as Iu,resolveButtonsLayoutTheme as ku,resolveSetupFutureUsage as wc,resolveTheme as _u,stripeExpressMethodToOptionKey as Ru}from"@flopay/shared";import{ExpressCheckoutElement as Ic,PaymentElement as Eu,Elements as io,useElements as hs,useStripe as Ps}from"@stripe/react-stripe-js";import Tu,{useCallback as Je,useContext as Oo,useEffect as St,useMemo as ht,useRef as oe,useState as ue}from"react";function Fo(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function ai(e,t){if(e)return{error:n=>e.error(Fo(t,n)),log:n=>e.log(Fo(t,n)),performance:n=>e.performance(Fo(t,n)),terminal:n=>e.terminal(Fo(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 No,jsx as y,jsxs as Ze}from"react/jsx-runtime";var Ir="flopay_stripe_resume",uc="flopay_wallet_resume",kc="fw1",Au="fw2",_c=300*1e3,Mu=900,xu=25e3,Bu=25e3,Fu=1e4,Rc=["payment_intent","payment_intent_client_secret","redirect_status"],dr={provider:"paypal",paymentMethodCategory:"paypal"},Du="x-flopay-process-result-source",Nu="status";async function Ou(e,t,n){try{let r=(await e.getUnifiedCheckoutSession(t,n)).data.session;if(r?.status==="complete")return null;if(r?.status==="authorized")return{status:"authorized",paymentId:r.paymentId,sessionId:r.id||t,authorizationExpiresAt:r.authorizationExpiresAt}}catch{}}var ii={},Pa=class{constructor(t){this.reason=t}};function Lu(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function Wt(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 vs(e){return`${Au}:${e}`}function si(e){return Wt(vs(e))}function li(e,t){if(typeof window>"u")return null;let n=vs(e);try{let r=localStorage.getItem(n);if(!r)return null;let o=JSON.parse(r);return typeof o.createdAt!="number"||Date.now()-o.createdAt<0||Date.now()-o.createdAt>_c||o.sessionId!==e||o.nonce!==t||typeof o.clientSecret!="string"||typeof o.providerObjectId!="string"||typeof o.paymentMethodType!="string"?(si(e),null):o}catch{return si(e),null}}function Uu(e){return Wt(vs(e.sessionId),e)}function pc(e,t,n){let r=li(e,t);return!r||r.clientSecret!==n?!1:si(e)}function ds(e,t,n){if(typeof window>"u")return;li(e,t)?.clientSecret===n&&si(e)}function zu(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function us(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 r=n?e.status==="succeeded":sa(e.status),o=zu(e);return!r||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function mc(e,t,n){let r=null;try{return await Promise.race([zl(e,t),new Promise(o=>{r=window.setTimeout(()=>{r!==null&&n?.delete(r),o(null)},Fu),n?.add(r)})])}finally{r!==null&&(window.clearTimeout(r),n?.delete(r))}}function qu(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Ec(e){return e instanceof ur&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function ci(e,t,...n){let r=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:r});try{return await new Do(e,{telemetry:!1}).createSessionIntent(...n)}catch(o){throw Ec(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:r}),o}}var va="flopay_paypal_resume",ha=new Map;function Tc(e){if(!e||typeof window>"u")return null;try{let t=window.localStorage.getItem(va);if(!t)return null;let n=JSON.parse(t);return n?.clientSecret===e?n:null}catch{return null}}function ju(){if(typeof window>"u")return!1;let[e,t]=Cs();return e?Tc(t)!==null:!1}function Cs(){let e=new URLSearchParams(window.location.search);return Rc.map(t=>e.get(t))}function bs(){let e=new URL(window.location.href);for(let t of Rc)e.searchParams.delete(t);return e.toString()}function $u(){Wt(va),window.history.replaceState({},"",bs())}var Ku=250,yc="Just a moment \u2014 we are finalizing your order. Please press pay again.",Wu="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function Ss(e,t,n,r){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk",...r?{terminalReason:r}:{}})}async function di({billingApiUrl:e,sessionId:t,nonce:n,request:r}){if(!(!t||!n))try{await new Do(e,{telemetry:!1}).reportSessionIntentDecline(t,n,r)}catch{}}function Hu(e){return e instanceof ur&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function ps(e){return e?.html?{html:e.html,...e.messageToken?{messageToken:e.messageToken}:{},...e.expectedOrigin?{expectedOrigin:e.expectedOrigin}:{}}:null}function Ac({event:e,fallbackEmail:t,fallbackName:n}){let r=e.billingDetails,o=t?.trim(),i=ro(n),s=i.firstName?i:ro(r?.name);return Dn({email:yn(o)?o:r?.email?.trim(),firstName:s.firstName,lastName:s.lastName})}async function Vu({event:e,prepared:t,email:n,billingName:r,methodLabel:o,collect:i}){let s=Ac({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||r});return yn(s.email)?s:i(o,s)}var ba=180,fc=`flopay-card-enter ${ba}ms cubic-bezier(0, 0, 0.2, 1) both`,gc=`flopay-card-exit ${ba}ms cubic-bezier(0.4, 0, 0.2, 1) both`,Gu=`flopay-buttons-enter ${ba}ms cubic-bezier(0, 0, 0.2, 1) both`,Yu=`flopay-buttons-exit ${ba}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function Ju(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function ws(e){if(!e.themeBundle&&!e.explicitPrimaryColor)return{backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:e.resolvedBorderRadius,boxShadow:"0 1px 2px rgba(0,0,0,0.04)"};let t=e.themeBundle?e.submitButtonStyle??{}:{};return{backgroundColor:e.resolvedPrimaryColor,color:t.color??"white",border:t.border??"none",borderRadius:t.borderRadius??e.resolvedBorderRadius,boxShadow:t.boxShadow}}var Xu={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Zu(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 ys={width:"100%",minHeight:aa,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 Qu(e){switch(e){case"paypal":return"PayPal";case"apple_pay":return"Apple Pay";case"google_pay":return"Google Pay";default:return"Card"}}function hc(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function fs(e){return e==="paypal"?"PayPal":Ca(e)}function ep(e){let t=hu(e);return`Enter a valid ${ms(e)}${t?` (e.g. ${t})`:""}`}function tp(e,t,n){let r=vu(e),o=t.trim(),i=n&&r,s=i&&!o,l=i&&!!o&&!Cu(e,o);return{visible:n,supported:r,required:i,empty:s,malformed:l}}function np(e,t){let n=e.trim(),r=t&&!n,o=t&&!!n&&!yn(n);return{required:t,empty:r,malformed:o,value:n}}function Pc(e,t){return t instanceof ur?t:new ur(t instanceof Error?t.message:`${Qu(e)} before-click hook failed.`,"validation_error")}function rp(e){return typeof e=="number"?`${e}px`:e}function Is(e){return y(op,{...e})}function vc({sessionId:e,nonce:t,email:n,billingApiUrl:r,onTokenizedBody:o,onErrorChange:i,isProcessing:s=!1,onButtonClick:l,onDecline:f,onTechnicalFailure:u,runBeforeButtonClick:S,billingName:v,onBuyerIdentityReady:W,onLoadStateChange:$,placeholderBorderRadius:k,popupCapabilityOwner:q,externalTelemetryContext:K,presentationMode:h}){let C=Wr(),{emitInstrument:se}=Oo(Xn),z=Ps(),Ce=hs(),J=ht(()=>ai(un(C),K),[K,C]),[ke,je]=ue("loading");St(()=>{$?.(ke)},[ke,$]);let[_e,it]=ue(!1),zt=oe(!1),ye=!yn(n?.trim())||!v?.trim(),{request:Me,collect:Pt,finish:Te}=ko(),Ve=oe(!1),Re=oe(null),ne=oe(null),[$e,Ke]=ue(0),[yt,be]=ue(!1),fe=oe(!1),le=oe(new Map),{startAttempt:F,finishAttempt:Se,invalidateAttempt:ze,isAttemptInvalidated:xe,isAttemptCurrent:V,generationRef:vt}=ua((T,re,Oe)=>{u?.(T,re,{...Oe,popupBlocked:Oe?.popupBlocked??zr(re),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h,terminalReason:"overlay_timeout"}),be(!0),Ke(L=>L+1)},{onHandoffObserved:()=>{q.markAvailable(),J?.log({name:"provider.popup.opened",stage:"overlay_open",...dr,attempt:vt.current})}});St(()=>{yt&&ne.current?.focus()},[yt,$e]);let qe=Je(()=>{Ke(T=>T+1)},[]),Ae=Je((T,re,Oe)=>{ze(Oe),u?.("paypal",T,{code:re,popupBlocked:zr(T),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h}),be(!0),qe()},[ze,u,h,qe]),Xe=Je(()=>{window.setTimeout(()=>{(Re.current?.querySelector("iframe")??Re.current)?.focus()},0)},[]);St(()=>{fe.current&&(fe.current=!1,Xe())},[Xe,$e]);let Be=Je(()=>{be(!1),i?.(null),Xe()},[Xe,i]);St(()=>{if(!z||Ve.current)return;let[T,re,Oe]=Cs();if(!T||!re)return;let L=Tc(re);if(!L)return;Ve.current=!0;let we=!0,gt=ha.get(re);gt||(gt=Oe==="failed"?Promise.resolve(null):Promise.resolve().then(()=>z.retrievePaymentIntent(re)),ha.set(re,gt));let Le={accountPatch:L.accountPatch,sessionId:L.sessionId,nonce:L.nonce},It=()=>{J?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...dr,requestCategory:"provider_sdk"})};return J?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...dr}),(async()=>{try{it(!0);let p=await gt;if(!we)return;if(p?.error){ha.delete(re),It(),i?.(p.error.message??"Failed to retrieve PayPal payment status.");return}if($u(),ha.delete(re),Oe==="failed"){let D="PayPal payment was declined. Please try again.";J?.terminal({outcome:"payment_declined",...dr,terminalReason:"provider_declined"}),i?.(D),f?.(dn("paypal",D));return}let g=p?.paymentIntent;if(g&&g.id!==T){It(),i?.("Failed to match the returned PayPal payment.");return}if(g&&(g.status==="requires_capture"||g.status==="succeeded")){let D=typeof g.payment_method=="string"?g.payment_method:g.payment_method?.id;o({id:D??g.id,type:"card",threeDSecureActionResultTokenId:g.id,isPaypal:!0},{...Le,presentationMode:"redirect"})}else{let D="PayPal payment was not completed. Please try again.";J?.terminal({outcome:g?.status==="canceled"?"payment_cancelled":"payment_declined",...dr,terminalReason:g?.status==="canceled"?"cancelled":"provider_declined"}),i?.(D),f?.(dn("paypal",D))}}catch(p){if(!we)return;ha.delete(re),It(),i?.(p instanceof Error?p.message:"Failed to complete PayPal payment.")}finally{we&&it(!1)}})(),()=>{we=!1,Ve.current=!1}},[z,o,i,f,J]);let Qe=Je(async(T=!1)=>{let re=S?await S("paypal"):{proceed:!0};if(!re.proceed)return le.current.delete($e),!1;let Oe=F("paypal");return le.current.set($e,{generation:Oe,accountPatch:re.accountPatch,sessionId:re.sessionId,nonce:re.nonce}),be(!1),J?.log({name:`provider.${T?"redirect.started":"handoff.requested"}`,stage:T?"redirect":"overlay_open",...dr,attempt:Oe}),l?.("paypal"),!0},[l,J,S,F,$e]),Ne=Je(async T=>{if(s||_e||!await Qe()){T.reject();return}T.resolve()},[s,Qe,_e]),Ct=Je(async T=>{if(!z||!Ce)return;let re=le.current.get($e);if(re&&!V(re.generation)){le.current.delete($e);return}if(!re&&xe()||re&&!Se(re.generation))return;re||Se();let Oe=re??null;if(le.current.delete($e),!Oe&&S){let M=await S("paypal");if(!M.proceed){T.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}Oe={accountPatch:M.accountPatch,sessionId:M.sessionId,nonce:M.nonce}}let L=Oe?.sessionId??e,we=Oe?.nonce??t,gt=await Vu({event:T,prepared:Oe,email:n,billingName:v,methodLabel:"PayPal",collect:Pt});if(!gt){T.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Le=gt.email,It={...Oe?.accountPatch,...Dn(gt,!0)};try{if(it(!0),i?.(null),!L||!yn(Le))throw new Error("Missing sessionId or email for PayPal payment");await W?.(gt);let M=z.createPaymentMethod,{error:p,paymentMethod:g}=await M({type:"paypal"});if(p){Ae(p,"stripe_paypal_create_payment_method_failed",re?.generation),T.paymentFailed({reason:"fail"});return}let D=await ci(r,se,L,we??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:g?.id??null,intentKind:"payment"});if(D.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let x=D.clientSecret,ee={return_url:bs()};if(g?.id&&(ee.payment_method=g.id),!Wt(va,{clientSecret:x,sessionId:L,nonce:we,accountPatch:It})&&h==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:ge,paymentIntent:We}=await z.confirmPayment({clientSecret:x,confirmParams:ee,redirect:"if_required"});if(ge){if(Wt(va),La(ge)){let qt=ge.message??"Your payment was declined.";J?.terminal({outcome:"payment_declined",...dr,terminalReason:"provider_declined"}),i?.(qt),f?.(dn("paypal",qt,{code:Ur(ge),declineCode:ra(ge)})),await di({billingApiUrl:r,sessionId:L,nonce:we,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Ur(ge)??"provider_declined"}})}else Ae(ge,"stripe_paypal_confirm_failed",re?.generation);return}Wt(va);let X=typeof We?.payment_method=="string"?We.payment_method:We?.payment_method?.id;o({id:X??We?.id,type:"card",threeDSecureActionResultTokenId:We?.id,isPaypal:!0},{accountPatch:It,paymentMethodCategory:"paypal",presentationMode:h,sessionId:L,nonce:we});return}catch(M){Ae(M,"stripe_paypal_failed",re?.generation)}finally{it(!1)}},[z,Ce,e,t,n,v,Pt,W,r,se,o,i,f,S,Ae,Se,V,xe,J,h,$e]),Vt=Je(async()=>{if(!(zt.current||s||_e||!z||!Ce)){zt.current=!0,it(!0);try{if(!await Qe(!0))return;await Ct({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{zt.current=!1,it(!1)}}},[Ce,Ct,s,Qe,z,_e]),ft=h==="redirect"?y("button",{type:"button",disabled:s||_e,onClick:()=>{Vt()},style:{width:"100%",minHeight:aa,border:"1px solid #d1d5db",borderRadius:k??8,background:"#ffc439",color:"#111827",cursor:s||_e?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):y(Ic,{onReady:T=>je(Ni(T,["paypal"])),onLoadError:()=>{je("load_error"),Ss(J,"paypal","paypal","provider_error")},onClick:Ne,onConfirm:Ct,onCancel:()=>{let T=le.current.get($e);le.current.delete($e),J?.terminal({outcome:"payment_cancelled",...dr,terminalReason:"cancelled",...T?{attempt:T.generation}:{}}),ze(T?.generation),be(!1),fe.current=!0,qe()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:ye,emailRequired:ye,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},$e),Tt=Ze(No,{children:[Ze("div",{ref:Re,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[yt&&y("button",{ref:ne,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Be,style:ys,children:"Try PayPal again"}),Me&&y(_o,{identity:Me.identity,methodLabel:Me.methodLabel,onComplete:Te,onCancel:()=>Te(null)},Me.id),y("div",{style:{display:Me?"none":void 0},children:ft})]}),_e&&!Me&&y(br,{status:"processing"})]});return h==="redirect"?Tt:y(Oi,{state:ke,placeholderTestId:"flopay-paypal-placeholder",borderRadius:k,children:Tt})}function Cc(e){return e==="apple_pay"||e==="google_pay"}function bc({sessionId:e,nonce:t,email:n,billingApiUrl:r,intentKind:o,expressMethods:i,onTokenizedBody:s,onErrorChange:l,onButtonClick:f,onDecline:u,onTechnicalFailure:S,runBeforeButtonClick:v,billingName:W,onBuyerIdentityReady:$,onLoadStateChange:k,placeholderBorderRadius:q,popupCapabilityOwner:K,externalTelemetryContext:h}){let C=Wr(),{emitInstrument:se}=Oo(Xn),z=Ps(),Ce=hs(),J=ht(()=>ai(un(C),h),[h,C]),[ke,je]=ue("loading");St(()=>{k?.(ke)},[ke,k]);let[_e,it]=ue(!1),zt=oe(!yn(n?.trim())||!W?.trim()).current,{request:ye,collect:Me,finish:Pt}=ko(),Te=oe(null),Ve=oe(null),[Re,ne]=ue(0),[$e,Ke]=ue(!1),[yt,be]=ue(()=>li(e,t)?"blocked":"idle"),[fe,le]=ue("google_pay"),F=oe(null),Se=oe(!0),ze=oe(!1),xe=oe("google_pay"),V=oe("google_pay"),vt=oe(null),qe=oe(null),Ae=oe(new Set),Xe=oe(null);St(()=>(Se.current=!0,()=>{Se.current=!1;for(let M of Ae.current)window.clearTimeout(M);Ae.current.clear()}),[]);let Be=oe(new Map),{startAttempt:Qe,finishAttempt:Ne,invalidateAttempt:Ct,isAttemptInvalidated:Vt,isAttemptCurrent:ft,generationRef:Tt}=ua((M,p,g)=>{S?.(M,p,{...g,popupBlocked:g?.popupBlocked??zr(p),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),le(M),Ke(!0),ne(D=>D+1)},{onHandoffObserved:M=>{K.markAvailable(),J?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Tt.current,...M==="apple_pay"||M==="google_pay"?{walletType:M}:{}})},defersMissingTerminal:Cc,onMissingTerminalDeferred:(M,p)=>{let g=J?.now()??globalThis.performance?.now()??Date.now(),D=Xe.current,x=D?.generation===p?D.startedAt:g;J?.performance({stage:"overlay_return",durationMs:Math.max(0,g-x),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:p,...Cc(M)?{walletType:M}:{}}),J?.flush?.().catch(()=>{})}});St(()=>{$e&&Ve.current?.focus()},[$e,Re]);let T=Je(()=>{ne(M=>M+1)},[]),re=Je((M,p,g,D,x=!1)=>{Ct(D),S?.(M,p,{code:g,popupBlocked:zr(p),telemetryReported:x,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),le(M),Ke(!0),T()},[Ct,S,T]),Oe=Je(()=>{window.setTimeout(()=>{(Te.current?.querySelector("iframe")??Te.current)?.focus()},0)},[]);St(()=>{ze.current&&(ze.current=!1,Oe())},[Oe,Re]);let L=Je(()=>{Ke(!1),l?.(null),Oe()},[Oe,l]),we=Je(()=>{F.current?.()},[]);St(()=>{let M=li(e,t);if(!M)return;let p=!1,g=!1,D=async()=>{if(!g){g=!0,p||be("checking");try{let x=await mc(z,M.clientSecret,Ae.current);if(p)return;let ee=us(x,M.providerObjectId,cs(M.clientSecret));if(ee.kind==="confirmed"){if(!pc(e,t,M.clientSecret))return;F.current=null,be("idle"),s({id:ee.paymentMethodId,type:"card",threeDSecureActionResultTokenId:ee.intentId},{...M.accountPatch?{accountPatch:M.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(ee.kind==="terminal"){ds(e,t,M.clientSecret),F.current=null,be("idle"),le(M.paymentMethodType),Ke(!0),T();return}be("blocked")}catch{p||be("blocked")}finally{g=!1}}};return F.current=D,be("blocked"),()=>{p=!0,F.current===D&&(F.current=null)}},[t,s,T,e,z]);let gt=Je(async M=>{let p=!1,g=Ge=>{p||(p=!0,M.paymentFailed({reason:"fail",...Ge?{message:Ge}:{}}))};if(!z||!Ce){g();return}let D=Be.current.get(Re);if(D&&!ft(D.generation)){Be.current.delete(Re),g();return}if(!D&&Vt()){g();return}if(D&&!Ne(D.generation)){g();return}D||Ne();let x=M.expressPaymentType??D?.method??xe.current,ee=D??null,ut=hc(x),ge;x==="apple_pay"?ge="apple_pay":x==="google_pay"&&(ge="google_pay");let We=D?.generation??Tt.current,X=J,qt=X?.now()??globalThis.performance?.now()??Date.now(),bt=new AbortController,At=!1,st=!1,ce=null,kn=e,Nn="processing",pn="other",jt="provider_runtime",On,Ln=new Promise((Ge,Ue)=>{On=Ue}),fn=window.setTimeout(()=>{At=!0,bt.abort(),On(ii)},xu),Mt=async(Ge,Ue,_n)=>{Nn=Ge,pn=Ue,jt=Ue==="intent_create"||Ue==="session_claim"?"transport_error":"provider_runtime";let kt=X?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([_n,Ln])}finally{let Un=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:Ge,durationMs:Math.max(0,Un-kt),durationMode:"machine",requestCategory:Ue,paymentMethodCategory:"wallet",provider:"stripe",...At?{statusClass:"timeout"}:{}})}};try{if(it(!0),l?.(null),!ee&&v){let pe=await Mt("processing","other",v(ut));if(!pe.proceed){g();return}ee={accountPatch:pe.accountPatch,sessionId:pe.sessionId,nonce:pe.nonce}}let Ge=ee?.sessionId??e;kn=Ge;let Ue=ee?.nonce??t,_n=vt.current??ee?.accountPatch,kt=Ac({event:M,fallbackEmail:_n?.email??n,fallbackName:[_n?.firstName,_n?.lastName].join(" ").trim()||W});if(!yn(kt.email)){g("Buyer details are required."),Me(fs(x),kt).then(pe=>{pe&&(vt.current=pe)});return}vt.current=null;let Un={...ee?.accountPatch,...Dn(kt,!0)};await Mt("processing","session_claim",Promise.resolve($?.(kt)));let{error:mn}=await Mt("tokenization","provider_sdk",Ce.submit());if(mn){g(),re(x,mn,"stripe_wallet_submit_failed",D?.generation);return}if(!Ge)throw new Error("Missing sessionId or email for payment.");let $t={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:x,paymentMethodId:null,intentKind:o},Zt=JSON.stringify({sessionId:Ge,nonce:Ue??"",request:$t}),Qn=qe.current,Wn=Qn?.retryIdentity===Zt?Qn.authorizationAttemptId:wu();qe.current={authorizationAttemptId:Wn,retryIdentity:Zt};let Qt=await Mt("processing","intent_create",ci(r,se,Ge,Ue??"",{...$t,authorizationAttemptId:Wn},{signal:bt.signal}));if(Qt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let _t=Qt.clientSecret,en=Uu({createdAt:Date.now(),sessionId:Ge,...Ue?{nonce:Ue}:{},clientSecret:_t,providerObjectId:Qt.providerObjectId,paymentMethodType:x,accountPatch:Un});window.clearTimeout(fn),st=!0,X?.performance({stage:"callback",durationMs:Math.max(0,(X?.now()??globalThis.performance?.now()??Date.now())-qt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let nn=X?.now()??globalThis.performance?.now()??Date.now(),Dt={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...ge?{walletType:ge}:{},attempt:We},an=!1,Ot=null;X?.log({name:"payment.provider_confirmation.started",...Dt}),ce=window.setTimeout(()=>{ce!==null&&Ae.current.delete(ce),an=!0;let pe=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Dt,operationOutcome:"watchdog_expired",durationMs:Math.max(0,pe-nn),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),X?.flush?.().catch(()=>{}),Ot?.()},Bu),Ae.current.add(ce);let rn=(pe,et)=>{ce!==null&&(window.clearTimeout(ce),Ae.current.delete(ce),ce=null);let m=X?.now()??globalThis.performance?.now()??Date.now(),Fe=Math.max(0,m-nn),H=pe;an&&(pe==="resolved"?H="resolved_late":pe==="returned_error"?H="returned_error_late":H="rejected_late");let gn=et??(pe==="resolved"?"approved":"provider_error");return X?.log({name:"payment.provider_confirmation.returned",...Dt,operationOutcome:H,terminalReason:gn}),X?.performance({...Dt,durationMs:Fe,durationMode:"buyer",operationOutcome:H,terminalReason:gn}),{durationMs:Fe,operationOutcome:H,terminalReason:gn}},Nt=!1,G=!1,er=pe=>{if(!pe||typeof pe!="object")return null;let et=pe;if(et.error)return null;let m=et.setupIntent??et.paymentIntent,Fe=us(m??null,void 0,!!et.setupIntent);return Fe.kind==="confirmed"?Fe:null},tr=pe=>{if(Nt||D&&Tt.current!==D.generation)return;let et=er(pe);if(!et)return;if(en&&!pc(Ge,Ue,_t)){Nt=!0;return}let{intentId:m,paymentMethodId:Fe}=et;Nt=!0,G=!0,qe.current=null,F.current=null,Se.current&&(be("idle"),it(!1));let H=`${kc}:${Ge}`;Wt(H,{createdAt:Date.now(),sessionId:Ge,nonce:Ue,accountPatch:Un,paymentMethodId:Fe,providerIntentId:m,paymentMethodType:x});try{s({id:Fe,type:"card",threeDSecureActionResultTokenId:m},{accountPatch:Un,paymentMethodCategory:"wallet",sessionId:Ge,nonce:Ue})}finally{Wt(H)}},nr=!1;Ot=async()=>{if(!(nr||Nt||G)){nr=!0,Se.current&&be("checking");try{let pe=await mc(z,_t,Ae.current);if(Nt||G)return;let et=cs(_t),m=us(pe,Qt.providerObjectId,et);if(m.kind==="confirmed"){tr(et?{setupIntent:pe}:{paymentIntent:pe});return}if(m.kind==="terminal"){if(G=!0,ds(Ge,Ue,_t),qe.current=null,F.current=null,!Se.current)return;be("idle"),g(),re(x,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",D?.generation,!0);return}Se.current&&!G&&(be("blocked"),it(!1))}catch{Se.current&&!G&&(be("blocked"),it(!1))}finally{nr=!1}}},F.current=Ot;let tn,Rn;try{let pe=await(cs(_t)?z.confirmSetup({elements:Ce,clientSecret:_t,redirect:"if_required"}):z.confirmPayment({elements:Ce,clientSecret:_t,redirect:"if_required"}));if(!pe||typeof pe!="object")throw new Pa(Lu(pe));if(tn=pe,!tn.error&&!er(tn))throw new Pa("confirmation_result_unconfirmed");Rn=rn(tn.error?"returned_error":"resolved",tn.error&&La(tn.error)?"provider_declined":void 0)}catch(pe){let et=pe instanceof Pa?pe.reason:void 0,m=et!==void 0,Fe=rn(m?"returned_error":"rejected");if(X?.error({...m?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:et}:$i(pe),...Dt,operationOutcome:Fe.operationOutcome,durationMs:Fe.durationMs,statusClass:"unknown",terminalReason:Fe.terminalReason}),!Se.current||Nt)return;await Ot?.();return}let vn=tn.error;if(vn){if(!Se.current||Nt)return;if(La(vn)){G=!0,ds(Ge,Ue,_t),qe.current=null,F.current=null,be("idle");let pe=vn.message??"Your payment was declined.";g(pe),l?.(pe),u?.(dn(ut,pe,{code:Ur(vn),declineCode:ra(vn)})),di({billingApiUrl:r,sessionId:Ge,nonce:Ue,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:x,providerDeclineReason:Ur(vn)??"provider_declined",...Qt.intentKind==="payment"&&Qt.providerObjectId.startsWith("pi_")?{providerIntentId:Qt.providerObjectId}:{}}})}else X?.error({...$i(vn),...Dt,operationOutcome:Rn.operationOutcome,durationMs:Rn.durationMs,statusClass:"unknown",terminalReason:Rn.terminalReason}),await Ot?.();return}if(tr(tn),!Nt)throw new Error("Invalid provider returned for APM intent")}catch(Ge){if(Ge===ii){let Ue=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:qu(pn),stage:Nn,requestCategory:pn,paymentMethodCategory:"wallet",provider:"stripe",...ge?{walletType:ge}:{},operationOutcome:"watchdog_expired",checkoutSessionId:kn,durationMs:Math.max(0,Ue-qt),statusClass:"timeout",failureCategory:jt,attempt:We,terminalReason:"provider_error"}),X?.flush?.().catch(()=>{})}g(),re(x,Ge,Ge===ii?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",D?.generation,Ge===ii)}finally{if(window.clearTimeout(fn),ce!==null&&(window.clearTimeout(ce),Ae.current.delete(ce)),!st){let Ge=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:"callback",durationMs:Math.max(0,Ge-qt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...At?{statusClass:"timeout"}:{}})}Se.current&&it(!1)}},[z,Ce,e,t,n,W,Me,$,r,se,o,s,l,u,v,re,Ne,ft,Vt,Tt,J,Re]),Le=ht(()=>Il(i),[i]),It=ht(()=>i.map(Ru),[i]);return Ze(No,{children:[y(Oi,{state:ke,placeholderTestId:"flopay-wallet-placeholder",borderRadius:q,children:Ze("div",{ref:Te,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[$e&&Ze("button",{ref:Ve,type:"button","data-testid":"flopay-wallet-retry-button",onClick:L,style:ys,children:["Try ",fs(fe)," again"]}),yt!=="idle"&&Ze("div",{role:"status","aria-live":"polite",children:[y("p",{children:"We are still confirming your payment. Check its status before trying again."}),y("button",{type:"button",onClick:we,disabled:yt==="checking",style:ys,children:yt==="checking"?"Checking payment status\u2026":"Check payment status"})]}),ye&&y(_o,{identity:ye.identity,methodLabel:ye.methodLabel,onComplete:Pt,onCancel:()=>Pt(null)},ye.id),yt==="idle"&&y("div",{style:{display:ye?"none":void 0},children:y(Ic,{onReady:M=>{je(Ni(M,It))},onLoadError:M=>{je("load_error"),Ss(J,"stripe","wallet","provider_error")},onClick:async M=>{let p=J?.now()??globalThis.performance?.now()??Date.now();xe.current=M.expressPaymentType,V.current=hc(M.expressPaymentType);let g=!0,D=window.setTimeout(()=>{g=!1,M.reject()},Mu),x=v?await v(V.current):{proceed:!0};if(window.clearTimeout(D),!g)return;if(!x.proceed){Be.current.delete(Re),M.reject();return}let ee=Qe(M.expressPaymentType);Xe.current={generation:ee,startedAt:p},Be.current.set(Re,{generation:ee,method:M.expressPaymentType,accountPatch:x.accountPatch,sessionId:x.sessionId,nonce:x.nonce}),Ke(!1),J?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:ee,...M.expressPaymentType==="apple_pay"||M.expressPaymentType==="google_pay"?{walletType:M.expressPaymentType}:{}}),f?.(V.current),M.resolve()},onConfirm:gt,onCancel:()=>{let M=Be.current.get(Re);Be.current.delete(Re),J?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...M?{attempt:M.generation}:{}}),Ct(M?.generation),qe.current=null,Ke(!1),ze.current=!0,T()},options:{...kl,paymentMethods:Le,emailRequired:zt,billingAddressRequired:zt}},Re)})]})}),_e&&y(br,{status:"processing"})]})}function Mc(e,t,n){let r=wc(n,t,"inline_apm");return{...e,paymentMethodTypes:[t],...r?{setupFutureUsage:r}:null}}function gs({method:e,sessionId:t,nonce:n,email:r,billingName:o,onBuyerIdentityReady:i,billingApiUrl:s,onTokenizedBody:l,onErrorChange:f,onDecline:u,onCancel:S,runBeforeButtonClick:v,onButtonClick:W,isProcessing:$,submitButtonColor:k,submitButtonBorderRadius:q,submitButtonStyle:K,errorText:h}){let C=Wr(),{emitInstrument:se}=Oo(Xn),z=Ps(),Ce=hs(),[J,ke]=ue(!1),je=oe(!1),[_e,it]=ue(!1),[zt,ye]=ue("loading"),[Me,Pt]=ue(""),Te=!yn(r?.trim()),Ve=!Te||yn(Me.trim()),Re=Je(async()=>{if(!z||!Ce||$||je.current||!_e)return;je.current=!0,ke(!0);let ne=v?await v("card"):{proceed:!0};if(!ne.proceed){je.current=!1,ke(!1);return}W?.("card");let $e=ne.sessionId??t,Ke=ne.nonce??n,yt=ro(o?.trim()),be=Dn({email:ne.accountPatch?.email?.trim()||r?.trim()||Me.trim(),firstName:ne.accountPatch?.firstName?.trim()||yt.firstName,lastName:ne.accountPatch?.lastName?.trim()||yt.lastName}),fe=be.email,le=Dn({...ne.accountPatch,...be});try{if(f?.(null),!yn(fe))throw new Error("A valid email address is required for payment.");await i?.(be);let F=await Ce.submit();if(F.error){f?.(F.error.message??"Payment failed.");return}let Se=[be.firstName,be.lastName].filter(Boolean).join(" "),ze=await z.createPaymentMethod({elements:Ce,params:{billing_details:{email:fe,...Se?{name:Se}:{}}}});if(ze.error||!ze.paymentMethod){f?.(ze.error?.message??"Failed to create payment method.");return}let xe=ze.paymentMethod;if(!$e||!fe)throw new Error("Missing sessionId or email for payment.");let V=xe.type||e,vt=await ci(s,se,$e,Ke??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:V,paymentMethodId:null,intentKind:"payment"});if(vt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let qe=vt.clientSecret;Wt(Ir,{clientSecret:qe,sessionId:$e,nonce:Ke,accountPatch:le,paymentMethodId:xe.id,paymentMethodType:xe.type??e,gateway:"stripe"});let{error:Ae,paymentIntent:Xe}=await z.confirmPayment({clientSecret:qe,confirmParams:{return_url:window.location.href,payment_method:xe.id},redirect:"if_required"});if(Ae){Wt(Ir);let Ne=Ae.message??"Payment failed.";f?.(Ne),u?.(dn("card",Ne,{code:Ae.code})),await di({billingApiUrl:s,sessionId:$e,nonce:Ke,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:Ae.code??"provider_declined"}});return}let Be=Xe?.status;if(!sa(Be)){Wt(Ir);let Ne=Be==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";f?.(Ne),u?.(dn("card",Ne,{code:Be??"missing_payment_intent"}));return}Wt(Ir);let Qe=typeof Xe?.payment_method=="string"?Xe.payment_method:Xe?.payment_method?.id;l({id:Qe??xe.id,type:"card",threeDSecureActionResultTokenId:Xe?.id,gateway:"stripe",paymentMethodType:xe.type??e},{accountPatch:le,paymentMethodCategory:"apm",sessionId:$e,nonce:Ke})}catch(F){f?.(F instanceof Error?F.message:"Payment failed. Please try again.")}finally{je.current=!1,ke(!1)}},[z,Ce,$,_e,v,W,t,n,r,o,Me,i,s,se,e,l,f,u]);return Ze("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Te&&y("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Te&&Ze("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",y("input",{type:"email",autoComplete:"email",required:!0,value:Me,onChange:ne=>Pt(ne.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),y(Eu,{onReady:()=>ye("ready"),onLoadError:()=>{ye("load_error"),Ss(un(C),"stripe","apm")},onChange:ne=>{it(!!ne.complete)},options:{layout:_l,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...yn(r?.trim())?{email:r?.trim()}:{}}}}}),y(Rl,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{Re()},disabled:!_e||!Ve||J||$||zt!=="ready",color:k,borderRadius:q,style:K,children:J?"Processing\u2026":`Pay with ${Ca(e)}`}),h&&y(Eo,{margin:"0.75rem 0 0",children:h})]})}function Sc({sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:i,paymentElementMethods:s,stripeInstance:l,paymentElementBaseOptions:f,futureUseSession:u,onTokenizedBody:S,onErrorChange:v,onButtonClick:W,onDecline:$,runBeforeButtonClick:k,onLoadStateChange:q,isProcessing:K=!1,submitButtonColor:h="#4A49FF",submitButtonBorderRadius:C=8,submitButtonStyle:se,buttonAppearance:z,themeId:Ce,onExpandApm:J,expandedApmMethod:ke}){let{emitInstrument:je}=Oo(Xn),[_e,it]=ue(null),[zt,ye]=ue(null),Me=oe(!1),{request:Pt,collect:Te,finish:Ve}=ko();St(()=>{s.length>0&&l?q?.("ready"):l||q?.("loading")},[s.length,l,q]);let Re=Je(async fe=>{if(!l||Me.current||K)return;Me.current=!0,ye(fe);let le=k?await k("card"):{proceed:!0};if(!le.proceed){Me.current=!1,ye(null);return}W?.("card");let F=le.sessionId??e,Se=le.nonce??t,ze=ro([le.accountPatch?.firstName,le.accountPatch?.lastName].filter(Boolean).join(" ")||r),xe=Dn({email:le.accountPatch?.email?.trim()||n?.trim(),firstName:le.accountPatch?.firstName?.trim()||ze.firstName,lastName:le.accountPatch?.lastName?.trim()||ze.lastName});if(!yn(xe.email)){ye(null);let qe=await Te(Ca(fe),xe);if(!qe){Me.current=!1;return}xe=qe,ye(fe)}let V=xe.email,vt=Dn({...le.accountPatch,...xe});try{if(v?.(null),!F||!yn(V))throw new Error("Missing sessionId or email for payment.");await o?.(xe);let qe=await ci(i,je,F,Se??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:fe,paymentMethodId:null,intentKind:"payment"});if(qe.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ae=qe.clientSecret;Wt(Ir,{clientSecret:Ae,sessionId:F,nonce:Se,accountPatch:vt,paymentMethodType:fe,gateway:"stripe"});let{error:Xe,paymentIntent:Be}=await l.confirmPayment({clientSecret:Ae,confirmParams:{return_url:window.location.href,payment_method_data:{type:fe,billing_details:{name:[xe.firstName,xe.lastName].filter(Boolean).join(" "),...V?{email:V}:{}}}},redirect:"if_required"});if(Xe){Wt(Ir);let Ct=Xe.message??"Payment failed.";v?.(Ct),$?.(dn("card",Ct,{code:Xe.code})),await di({billingApiUrl:i,sessionId:F,nonce:Se,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:fe,providerDeclineReason:Xe.code??"provider_declined"}});return}let Qe=Be?.status;if(!sa(Qe)){Wt(Ir);let Ct=Qe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";v?.(Ct),$?.(dn("card",Ct,{code:Qe??"missing_payment_intent"}));return}Wt(Ir);let Ne=typeof Be?.payment_method=="string"?Be.payment_method:Be?.payment_method?.id;S({id:Ne??Be?.id,type:"card",threeDSecureActionResultTokenId:Be?.id,gateway:"stripe",paymentMethodType:fe},{accountPatch:vt,paymentMethodCategory:"apm",sessionId:F,nonce:Se})}catch(qe){v?.(qe instanceof Error?qe.message:"Payment failed. Please try again.")}finally{Me.current=!1,ye(null)}},[l,K,k,W,e,t,n,Te,i,je,r,o,S,v,$]),[ne,$e]=ue(null),Ke=J?ke??null:ne,yt=Je(fe=>{Me.current||K||Ke&&Ke!==fe||(dc(fe)?J?J(fe):$e(fe):Re(fe))},[Ke,K,Re,J]),be=ht(()=>ne?Mc(f,ne,u):null,[ne,f,u]);return y("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Pt?y(_o,{identity:Pt.identity,methodLabel:Pt.methodLabel,onComplete:Ve,onCancel:()=>Ve(null)},Pt.id):s.map(fe=>{let le=ke===fe,F=zt===fe,Se=zt!==null&&zt!==fe||ke!=null&&ke!==fe;return Ze(Tu.Fragment,{children:[y(wl,{method:fe,themeId:Ce,submitting:F,disabled:Se,highlighted:le,hasNextStep:dc(fe),onClick:()=>yt(fe),backgroundColor:z?.backgroundColor,borderColor:z?.borderColor,textColor:z?.textColor,borderRadius:z?.borderRadius,fontFamily:z?.fontFamily}),!J&&ne===fe&&be&&l&&y(io,{stripe:l,options:be,children:y(gs,{method:fe,sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:i,onTokenizedBody:S,onErrorChange:v,onDecline:$,onCancel:()=>$e(null),runBeforeButtonClick:k,onButtonClick:W,isProcessing:K,submitButtonColor:h,submitButtonBorderRadius:C,submitButtonStyle:se})},fe)]},fe)})})}function op({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,email:o,userId:i,onComplete:s,onError:l,onDecline:f,onTokenizedBody:u,firstName:S,lastName:v,chv:W,className:$,submitLabel:k,isProcessing:q,error:K,onErrorChange:h,showPayPal:C=!0,showStripe:se=!0,walletPresentation:z="auto",enabledPaymentMethods:Ce,enabledPaymentMethodCountries:J,showApplePay:ke=!0,showGooglePay:je=!0,layout:_e="default",theme:it,buttonsTheme:zt,buttonsStyles:ye,appearance:Me,cardButtonContent:Pt,cardBackButtonContent:Te,cardTitleContent:Ve,showSecurityFooter:Re,onButtonClick:ne,onBeforeButtonClick:$e,onBuyerIdentityReady:Ke,enableAVS:yt,cardFieldOrder:be,cardPreFormSlot:fe,avsLayout:le="row",country:F,zip:Se,addressLine1:ze,addressLine2:xe,city:V,state:vt,onCountryChange:qe,onZipChange:Ae,avsCheck:Xe,checkoutType:Be,checkoutLayout:Qe,totalAmount:Ne=0,currency:Ct="usd",initialCardOpen:Vt=!1,directPaypal:ft,isSubscription:Tt=!1,session:T,dataAttachmentPending:re=!1,dataAttachmentRequiresIdentity:Oe=!1,debug:L=!1}){let we=Wr(),gt=Ki(),Le=Oo(cr),{emitInstrument:It}=Oo(Xn),M=oe(null);M.current||(M.current=Wa());let p=M.current,[,g]=ue(0),D=oe(null);D.current||(D.current=oa());let x=D.current,ee=ht(()=>({browser:x,capability:p,presentationMode:"popup"}),[x,p]),ut=T??Le.session,ge=ht(()=>({futureUse:ut?.futureUse,futureUseUnsupported:ut?.futureUseUnsupported}),[ut?.futureUse,ut?.futureUseUnsupported]),We=ut?.gateways?.paypal?.providerObjectType??ft?.providerObjectType,X=re||Le.claimPending===!0,qt=Oe||Le.claimRequiresIdentity===!0,bt=X&&!qt,At=Vl(),st=n||At,[ce,kn]=ue(!1),[Nn,pn]=ue(null),[jt,On]=ue(F??""),[Ln,fn]=ue(Se??""),[Mt,Ge]=ue(ze??""),[Ue,_n]=ue(xe??""),[kt,Un]=ue(V??""),[mn,$t]=ue(vt??""),[Zt,Qn]=ue(""),[Wn,Qt]=ue({}),_t=oe(Se??""),en=oe(F??""),nn=oe(ze??""),Dt=oe(xe??""),an=oe(V??""),Ot=oe(vt??""),rn=oe(""),Nt=oe({});St(()=>{let a=(P,U,ve,Z,he)=>{if(Nt.current[P])return;let Xt=U?.trim();!Xt||Xt===ve.current||(ve.current=Xt,Z(Xt),he?.(Xt))};a("country",F,en,On,qe),a("zip",Se,_t,fn,Ae),a("addressLine1",ze,nn,Ge),a("addressLine2",xe,Dt,_n),a("city",V,an,Un),a("state",vt,Ot,$t)},[F,Se,ze,xe,V,vt,qe,Ae]);let G=ht(()=>Iu(yt),[yt]),er=G!==null,tr=ht(()=>ls(T),[T]),nr=!!T?.vault?.html,tn=!!T?.gateways?.pcivault,Rn=zi(T),pe=!!(T?.gateways?.stripe?.enabledPaymentMethods??Ce)?.includes("card")||qr(T),et=nr||pe||tn,m=!!(se&&et&&e),[Fe,H]=ue(()=>_e!=="buttons"||Vt?e??null:null),[gn,zn]=ue(0),Gt=_e!=="buttons"||Vt||!!e&&Fe===e,En=T?.captureMethod,tt=oe(we);St(()=>{tt.current=we},[we]);let[rr,Zr]=ue(null);St(()=>{if(!m||!e||!Gt){Zr(null);return}let a=tt.current?tt.current.cardCapture({sessionId:e,captureMethod:En}):new pu({sessionId:e,captureMethod:En,billingApiUrl:st,telemetry:r});return Zr({sessionId:e,captureMethod:En,billingApiUrl:st,telemetry:r,capture:a}),()=>{a.unmount()}},[m,e,Gt,En,st,r]);let Rt=m&&e&&Gt&&rr?.sessionId===e&&rr.captureMethod===En&&rr.billingApiUrl===st&&rr.telemetry===r?rr.capture:null,Tn=ht(()=>{let a=jt,P=G?ot(G.postal_code,a):!1;return tp(a,Ln,P)},[G,jt,Ln]),{avsInvalid:mr,invalidAvsFields:Hn}=ht(()=>{let a={line1:!1,city:!1,state:!1,zip:!1};if(!m||!G)return{avsInvalid:!1,invalidAvsFields:a};let P=jt,U=(he,Xt)=>ot(he,P)&&!Xt.trim(),ve={line1:U(G.address_line_1,Mt),city:U(G.city,kt),state:U(G.state,mn),zip:Tn.empty||Tn.malformed};return{avsInvalid:ve.line1||ve.city||ve.state||ve.zip,invalidAvsFields:ve}},[m,G,jt,Mt,kt,mn,Tn]),[Yt,or]=ue(!1),[An,_r]=ue(!1),[Mn,yr]=ue(!1),[fr,Rr]=ue({line1:!1,city:!1,state:!1}),qn=oe(!1),Vn=oe({email:!1,line1:!1,city:!1,state:!1,zip:!1}),Er=oe(!1),xt=Je(a=>{Vn.current[a]=!0,Er.current=!0},[]),Cn=Je(a=>!qn.current&&Vn.current[a],[]),Gn=Je(a=>{Cn(a)&&Rr(P=>P[a]?P:{...P,[a]:!0})},[Cn]),[Tr,Ar]=ue(()=>ps(T?.vault)),[He,sn]=ue(Vt&&et?"card":"buttons"),[ln,bn]=ue(null),Qr=He==="expanding"||He==="card",gr=T?.gateways?.stripe&&!Rn?"stripe":void 0,Lr=Je(()=>{It?.({class:"card_surface",provider:gr})},[gr,It]),Sn=oe(null),cn=Je(a=>{Sn.current&&clearTimeout(Sn.current),Sn.current=setTimeout(()=>{Sn.current=null,a()},ba)},[]);St(()=>()=>{Sn.current&&clearTimeout(Sn.current)},[]);let Mr=Je(()=>{Lr(),H(e??null),zn(a=>a+1),sn("expanding"),cn(()=>sn("card"))},[cn,Lr,e]),xn=Je(()=>{sn("collapsing"),cn(()=>sn("buttons"))},[cn]),w=Je(a=>{bn(a),sn("apm-expanding"),cn(()=>sn("apm-form"))},[cn]),_=Je(()=>{sn("apm-collapsing"),cn(()=>{sn("buttons"),bn(null)})},[cn]);St(()=>{_e==="buttons"&&Vt&&et&&(H(e??null),sn("card"))},[_e,Vt,et,e]);let[O,R]=ue(null),nt=oe(!1),pt=oe(null),j=oe("idle"),[Ee,B]=ue(!1),d=oe(Ee);d.current=Ee;let[c,I]=ue(()=>ft?.existingOrderId?{orderId:ft.existingOrderId,attempts:1}:null),E=oe(c);St(()=>{E.current=c},[c]);let Q=oe(null),ae=ht(()=>{if(Ke||Le.claimBuyerIdentity||T?.buyerIdentified!==!1||!e||!t)return;let a=`${st}|${e}|${t}`;Q.current?.key!==a&&(Q.current={key:a,claim:wo(new Do(st,{telemetry:!1}),e,t,{...i?{userId:i}:{},...S?{firstName:S}:{},...v?{lastName:v}:{}})});let P=Q.current.claim;return async U=>{await P(U)}},[Ke,Le.claimBuyerIdentity,T?.buyerIdentified,e,t,st,i,S,v]),De=Ke??Le.claimBuyerIdentity??ae,at=K??Nn,me=ht(()=>_u(it),[it]),b=ht(()=>{let a=me?.buttonsLayout??ku(zt);return ye?{...a,...ye,cardButton:{...a.cardButton,...ye.cardButton},cardFormContainer:{...a.cardFormContainer,...ye.cardFormContainer},backButton:{...a.backButton,...ye.backButton},backButtonIcon:{...a.backButtonIcon,...ye.backButtonIcon},submitButton:{...a.submitButton,...ye.submitButton},title:{...a.title,...ye.title}}:a},[me,zt,ye]),lt=Me??me?.appearance,ie=ht(()=>vl({appearance:lt,buttonsStyles:b,layout:_e}),[lt,b,_e]),te=Le.inlineSessionPatchProcessing??!1,A=(q??ce)||te,Y=st.replace(/\/+$/,""),N=ht(()=>ji({userId:i,email:o,firstName:S,lastName:v,country:F,zip:Se},Wn),[i,o,S,v,F,Se,Wn]),ct=[N.firstName,N.lastName].filter(a=>!!a?.trim()).join(" "),Ie=!yn(N.email?.trim()),ar=oe(null);m&&ar.current===null&&(ar.current=Ie);let wn=m&&(ar.current??Ie),fi=ht(()=>np(Zt,wn),[Zt,wn]),lo=fi.empty||fi.malformed,jn=ht(()=>we?we.getRawProvider():null,[we]),Ds=ht(()=>gt?gt.getRawProvider():null,[gt]),jo=Ne||100,co=Ct.toLowerCase(),gi=ht(()=>lt?mu(lt):null,[lt]),uo=gi,Ns=ht(()=>{let a=gi??{},P=a.rules??{};return{...a,rules:{...P,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...P[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...P[".AccordionItemContents"]??{}}}}},[gi]),Os=ht(()=>({...ql(Ne,ut?.captureMethod,ge),currency:co,...uo?{appearance:uo}:null}),[Ne,co,ut?.captureMethod,ge,uo]),hi=wc(ge,"paypal","paypal"),Ls=ht(()=>({mode:"payment",amount:jo,currency:co,captureMethod:"manual",...hi?{setupFutureUsage:hi}:null,...uo?{appearance:uo}:null}),[jo,co,hi,uo]),Pe=Je(a=>{pn(a),h?.(a)},[h]),Pi=oe(""),[Us,Kc]=ue(!1),vi=Je(()=>{Kc(!0)},[]);St(()=>{if(!m||!wn||!De||!Us||lo||Pi.current)return;let a=Dn({email:yn(N.email?.trim())?N.email?.trim():rn.current.trim(),firstName:N.firstName?.trim(),lastName:N.lastName?.trim()});Pi.current=JSON.stringify(a),Qt(P=>({...P,...a})),Promise.resolve(De(a)).catch(P=>{Pi.current="",Pe(P instanceof Error?P.message:"Failed to attach buyer details.")})},[m,wn,De,Us,lo,N.email,N.firstName,N.lastName,Pe]),St(()=>{!m||!Rt||Rt.setCardFieldOrder?.(be??null,G==null&&!wn)},[m,Rt,be,G,wn]),St(()=>{(He==="expanding"||He==="collapsing"||He==="apm-expanding"||He==="apm-collapsing")&&Pe(null)},[He,Pe]);let hr=Je((a,P,U)=>{f?.(dn(a,P,U))},[f]),po=Je((a,P,U)=>{let ve=U?.popupBlocked??zr(P);ve&&p.markBlocked()&&g(Ye=>Ye+1);let Z=Oa(fs(a),ve,x.inAppBrowser),he=Ur(P),Xt=(he?.toLowerCase()==="error"?void 0:he)??Cl(U?.code)??"external_payment_method_failed",lr=new ur(Z,"api_error",{code:"external_payment_method_failed",param:a,details:{providerCode:Xt,popupBlocked:ve,inAppBrowser:x.inAppBrowser,appFamily:x.appFamily,popupCapability:p.current(),presentationMode:U?.presentationMode??"popup"}});U?.telemetryReported||un(we)?.error(Fo({...ee,presentationMode:U?.presentationMode??"popup"},{errorCode:ve?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:U?.provider??(a==="paypal"?"paypal":"stripe"),paymentMethodCategory:U?.paymentMethodCategory??(a==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:U?.terminalReason??(ve?"popup_blocked":"provider_error")})),R(null),_e==="buttons"&&(sn("buttons"),bn(null)),Pe(Z),l?.(lr),console.error("[FloPay] External payment method failed:",{method:a,code:Xt,popupBlocked:ve})},[x,ee,we,_e,l,p,Pe]);St(()=>{if(!m||!e){Ar(null);return}let a=ps(T?.vault);if(a){Ar(a);return}if(!Gt){Ar(null);return}Ar(null);let P=!0;return new Do(Y).getVaultCapture(e,t).then(U=>{if(!P)return;let ve=ps(U);ve?Ar(ve):Pe("Failed to load the secure card form.")}).catch(U=>{P&&Pe(U instanceof Error?U.message:"Failed to load the secure card form.")}),()=>{P=!1}},[m,Gt,gn,e,T?.vault,Y,t,Pe]);let ir=oe({onComplete:s,onError:l,updateError:Pe,emitDecline:hr,resolvedAccount:N,avsConfig:G,avsCheckProp:Xe,sessionId:e,nonce:t,baseUrl:Y,captureMethod:T?.captureMethod,paymentId:T?.paymentId,authorizationExpiresAt:T?.authorizationExpiresAt,serverSideCardGateway:Rn});ir.current={onComplete:s,onError:l,updateError:Pe,emitDecline:hr,resolvedAccount:N,avsConfig:G,avsCheckProp:Xe,sessionId:e,nonce:t,baseUrl:Y,captureMethod:T?.captureMethod,paymentId:T?.paymentId,authorizationExpiresAt:T?.authorizationExpiresAt,serverSideCardGateway:Rn};let Ci=oe(!1),zs=Je(()=>{let a=ir.current,P=a.resolvedAccount.email?.trim(),U=yn(P)?P:rn.current.trim();if(!yn(U))return null;let ve=a.resolvedAccount.firstName?.trim(),Z=a.resolvedAccount.lastName?.trim(),he=en.current.trim()||a.resolvedAccount.country?.trim()||"",Xt=a.avsConfig?ot(a.avsConfig.state,he):!1,lr=a.avsConfig?ot(a.avsConfig.address_line_1,he):!1,Ye=a.avsConfig?ot(a.avsConfig.postal_code,he):!1,dt=a.avsConfig?ot(a.avsConfig.city,he):!1,mt=a.avsConfig?ot(a.avsConfig.address_line_2,he):!1,Lt=lr&&!Xt&&Ye?cc(he,(_t.current??"").trim()):null,xr=Xt?Ot.current:Lt;return{accountData:{userId:a.resolvedAccount.userId??"",email:U,...ve?{firstName:ve}:{},...Z?{lastName:Z}:{},...Ye&&_t.current?{zip:_t.current}:{},...dt&&an.current?{city:an.current}:{},...xr?{state:xr}:{},...lr&&nn.current?{addressLine1:nn.current}:{},...mt&&Dt.current?{addressLine2:Dt.current}:{},...he?{country:he}:{}},...a.avsCheckProp===void 0?{}:{avsCheck:a.avsCheckProp},...a.avsConfig?{avsConfig:{country:ot(a.avsConfig.country,he),postal_code:Ye,address_line_1:lr,address_line_2:mt,city:dt,state:Xt}}:{}}},[]),qs=oe(X);qs.current=X,St(()=>{X||at!==yc||ir.current.updateError(null)},[X,at]),St(()=>{!m||!Rt||Rt.setSubmitGate?.(mr||X||lo||Ee)},[m,Rt,mr,X,lo,Ee]),St(()=>{if(!m||!Rt)return;Ci.current=!1;let a=null,P=()=>{a&&clearTimeout(a),a=setTimeout(()=>{a=null,j.current="idle",R(null)},400)},U=Rt.on("submitting",()=>{or(!0),pt.current&&clearTimeout(pt.current),j.current="validation-window",pt.current=setTimeout(()=>{pt.current=null,j.current==="validation-window"&&(j.current="processing")},Ku),R("processing");let Ye=ir.current;if(!Ye.sessionId||!Ye.nonce)return;let dt=zs();if(!dt){Ye.updateError("Enter a valid email address."),j.current="idle",R(null);return}new Do(Ye.baseUrl).patchAccountSnapshot(Ye.sessionId,Ye.nonce,dt,{telemetryMode:"best_effort"}).catch(mt=>{if(!Hu(mt))return;let Lt=mt instanceof Error?mt.message:"Please check your billing address and try again.";Ye.updateError(Lt),j.current="idle",R(null),Ye.onError?.(mt instanceof ur?mt:new ur(Lt,"api_error"))})}),ve=Rt.on("complete",async Ye=>{if(Mo(Ye.sessionId??ir.current.sessionId),j.current="terminal",B(!1),R("success"),await new Promise(xr=>setTimeout(xr,600)),Ci.current)return;Ci.current=!0;let dt=ir.current,mt=ls(dt)||Ye.outcome==="authorized",Lt=dt.serverSideCardGateway?{}:{paymentIntentId:Ye.intentId};ir.current.onComplete?.(mt?{status:"authorized",...Lt,paymentId:Ye.paymentId??dt.paymentId,sessionId:Ye.sessionId??dt.sessionId,authorizationExpiresAt:Ye.authorizationExpiresAt??dt.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Lt,checkoutMethod:"card"})}),Z=Rt.on("decline",Ye=>{let dt=ir.current,mt=Ye.message??"Your payment was declined. Please try another card or contact your bank.";j.current="terminal",B(!1),dt.updateError(mt),R("error");let Lt=Ye.failureOutcome??bu(Ye.declineReason)??"authorization_declined";dt.emitDecline("card",mt,{code:Lt,declineCode:Lt}),P()}),he=Rt.on("error",Ye=>{let dt=ir.current,mt=Ye.message??"There was a problem processing your payment. Please try again.";j.current="terminal",B(!1),dt.updateError(mt),R("error"),dt.onError?.(new ur(mt,"api_error",{code:Ye.failureOutcome??"capture_failed"})),P()}),Xt=Rt.on("challenge_dismissed",()=>{pt.current&&(clearTimeout(pt.current),pt.current=null),j.current="processing",B(!0),R(null)}),lr=Rt.on("blocked",()=>{if(d.current){ir.current.updateError(Wu);return}if(!qs.current){or(!0);return}vi(),ir.current.updateError(yc)});return()=>{a&&(clearTimeout(a),a=null),pt.current&&(clearTimeout(pt.current),pt.current=null),j.current="idle",B(!1),R(null),U(),ve(),Z(),he(),Xt(),lr()}},[m,Rt,vi,zs]);let Pr=!!ft?.clientId,$o=Array.isArray(Ce),_a=$o&&Ce.length>0,js=$o&&Ce.includes("paypal"),Ra=oe(null);Ra.current===null&&(Ra.current=ju());let mo=Ra.current?"redirect":Sl(x,z,p.current()),{expressMethods:Ea,paymentElementMethods:Ko}=ht(()=>Su(Ce,{excludePaypal:Pr}),[Ce,Pr]),$s=Pr||!!gt||js&&mo==="redirect",Wc=ht(()=>$s?Ea.filter(a=>a!=="paypal"):Ea,[Ea,$s]),Hc=ht(()=>{let a=[];return ke&&a.push("apple_pay"),je&&a.push("google_pay"),a},[ke,je]),yo=$o?Wc:Hc,Vc=se&&yo.length>0,bi=er?jt:F,Ta=ht(()=>{let a=bi?.trim().toUpperCase();return a?J?Ko.filter(P=>{let U=J[P];return!U||U.length===0||U.includes(a)}):gu(Ko,bi):Ko},[Ko,bi,J]),Si=ht(()=>({mode:"payment",amount:jo,currency:co,paymentMethodCreation:"manual",appearance:Ns}),[jo,co,Ns]),[Ks,Ws]=ue("loading"),[Hs,Vs]=ue("loading"),[Gs,Ys]=ue("loading"),[Gc,wi]=ue(!1),[Js,Ii]=ue("loading"),[ki,Yc]=ue();St(()=>{Yc(oa())},[]);let Aa=ki?.inAppBrowser,Ma=ki?Ua(ki,ft?.approvalPresentation,We??(Tt?"subscription":"order")):"popup",Xs=C&&(Pr||($o?js:Aa===!1)),Zs=se&&Vc,Wo=(!bt||!!Le.waitForDataAttachment)&&Xs&&Pr,Qs=Js==="retrying"||Js==="exhausted",Ho=null;se&&(gt?Ho=Ds:mo==="redirect"&&(Ho=jn));let el=ht(()=>({...ee,presentationMode:mo}),[ee,mo]),Vo=!bt&&Xs&&!!Ho&&(!Pr||Qs),fo=!bt&&Zs&&!!jn,Go=!bt&&se&&_a&&Ta.length>0&&!!jn,Jc=Wo&&!Qs?Gc:Vo&&Li(Ks),Xc=fo&&Li(Hs),Zc=Go&&Gs!=="load_error",tl=a=>a==="loading"||a==="ready",nl=Wo||Vo&&tl(Ks)||fo&&tl(Hs)||Go&&Gs!=="load_error",xa=oe(!1);St(()=>{if(!xa.current){if(!se&&!C){xa.current=!0;let a=new ur("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");l?.(a),Pe(a.message)}else if(!se&&C&&!Pr){xa.current=!0;let a=new ur("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");l?.(a),Pe(a.message)}else if(Aa!==void 0&&!bt&&!et&&!nl){xa.current=!0;let a=new ur("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"});l?.(a),Pe(a.message)}}},[se,C,Pr,Aa,bt,et,nl,l,Pe]);let rl=oe(!1);St(()=>{if(rl.current||!_a)return;let a=[];ke!==!0&&a.push("showApplePay"),je!==!0&&a.push("showGooglePay"),a.length!==0&&(rl.current=!0,console.warn(`[FloPay] ${a.join(" / ")} ${a.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.`))},[_a,ke,je]);let ol=Je((a,P)=>Le.applyInlineSessionPatch?Le.applyInlineSessionPatch(a).then(U=>({error:null,sessionId:U.sessionId||e,nonce:U.session?.clientSecret||t})).catch(U=>{let ve=Pc(P,U);return Pe(ve.message),l?.(ve),{error:ve,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Le.applyInlineSessionPatch,t,l,e,Pe]),sr=Je(async a=>{if(a!=="card"&&bt&&await Le.waitForDataAttachment?.(),!$e)return{proceed:!0};try{let P=await $e({method:a,sessionId:e||void 0,createSession:Le.inlineSessionDraft});if(P===!1)return{proceed:!1};if(P&&typeof P=="object"){P.account&&Qt(ve=>({...ve??{},...P.account}));let U=await ol(P,a);return U.error?{proceed:!1,accountPatch:P.account}:{proceed:!0,accountPatch:P.account,sessionId:U.sessionId,nonce:U.nonce}}return{proceed:!0}}catch(P){let U=Pc(a,P);return Pe(U.message),l?.(U),{proceed:!1}}},[ol,Le.inlineSessionDraft,Le.waitForDataAttachment,bt,$e,l,e,Pe]),al=Je(async(a,P)=>{if(nt.current)return;nt.current=!0,kn(!0),R("processing"),Pe(null);let U=P?.sessionId??e,ve=P?.nonce??t,Z=ji(N,P?.accountPatch),he=P?.completionPaymentMethodId??la(a),Xt=a.originalPaymentMethodId?{...a,originalPaymentMethodId:void 0}:a,lr=Ju(a),Ye=P?.presentationMode?ai(un(we),{...ee,presentationMode:P.presentationMode}):void 0,dt=()=>{It?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:lr}),Ye?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...dr,requestCategory:"process_payment"})};try{let mt=new Do(Y),Lt=await mt.processPayment(Z.userId??"",{sessionId:U,nonce:ve,paymentMethodCategory:P?.paymentMethodCategory??Zu(a),tokenizedData:Xt,accountData:{...P?.accountPatch,userId:Z.userId??"",email:Z.email??"",firstName:Z.firstName||void 0,lastName:Z.lastName||void 0,...G?(()=>{let Et=en.current,vr=ot(G.state,Et),Kn=ot(G.address_line_1,Et),Cr=ot(G.postal_code,Et),no=Kn&&!vr&&Cr?cc(Et,(_t.current??"").trim()):null,ea=vr?Ot.current:no;return{country:Et,...Cr&&_t.current?{zip:_t.current}:{},...ot(G.city,Et)&&an.current?{city:an.current}:{},...ea?{state:ea}:{},...Kn&&nn.current?{addressLine1:nn.current}:{},...ot(G.address_line_2,Et)&&Dt.current?{addressLine2:Dt.current}:{}}})():{}},chv:W,avsCheck:Xe??!1,checkoutType:Be,checkoutLayout:Qe,avsConfig:G?{country:ot(G.country,en.current),postal_code:ot(G.postal_code,en.current),address_line_1:ot(G.address_line_1,en.current),address_line_2:ot(G.address_line_2,en.current),city:ot(G.city,en.current),state:ot(G.state,en.current)}:void 0}),xr=async Et=>{let vr=ls(T)||Et?.status==="authorized";Mo(U),Ye?.terminal({outcome:"payment_succeeded",...dr}),R("success"),I(null),await new Promise(no=>setTimeout(no,600));let Kn;typeof Et?.paymentId=="string"?Kn=Et.paymentId:T?.paymentId&&(Kn=T.paymentId);let Cr;typeof Et?.authorizationExpiresAt=="string"?Cr=Et.authorizationExpiresAt:T?.authorizationExpiresAt&&(Cr=T.authorizationExpiresAt),s?.(vr?{status:"authorized",...Kn===void 0?{}:{paymentId:Kn},sessionId:typeof Et?.sessionId=="string"?Et.sessionId:U,...Cr===void 0?{}:{authorizationExpiresAt:Cr},paymentIntentId:a.threeDSecureActionResultTokenId,paymentMethodId:he,checkoutMethod:a.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:a.threeDSecureActionResultTokenId,paymentMethodId:he,checkoutMethod:a.isPaypal?"paypal":"card"})};if(Lt.ok){await xr(Lt.status===204?null:await Lt.json().catch(()=>null));return}let $n=await Lt.json().catch(()=>null);if($n?.type==="paypal_redirect_required"){let Et=$n.threeDSecureToken,vr=$n.paymentMethodId||a.id||"";if(!we||!Et){R("error"),Pe("PayPal authorization required but no token provided.");return}try{let Kn=gt?.getRawProvider();if(!Kn){Pe("PayPal is not available.");return}let Cr={return_url:window.location.href};vr&&(Cr.payment_method=vr);let{error:no}=await Kn.confirmPayment({clientSecret:Et,confirmParams:Cr,redirect:"if_required"});if(no){R("error");let ea=no.message??"PayPal payment failed.";Pe(ea),hr("paypal",ea,{code:no.code})}}catch(Kn){R("error"),Pe(Kn instanceof Error?Kn.message:"PayPal authorization failed.")}return}if($n?.type==="paypal_direct_required"){let Et=$n.orderId;if(!Et){R("error"),Pe("PayPal retry required but no order id provided.");return}let vr=E.current?.attempts??0;if(vr>=2){R("error"),Pe("PayPal payment could not be completed after multiple attempts."),hr("paypal","paypal_direct_required retry limit exceeded");return}wi(!1),Ii("loading"),I({orderId:Et,attempts:vr+1}),R(null);return}if(Lt.headers.get(Du)===Nu){let Et=await Ou(mt,U,ve);if(Et!==void 0){await xr(Et);return}}fu(Lt.status,$n)?Ye?.terminal({outcome:"payment_declined",...dr,terminalReason:"provider_declined"}):dt(),R("error");let gl=$n?.message??"Payment failed. Please try again.";Pe(gl),hr(a.isPaypal?"paypal":"card",gl,{code:$n?.code??$n?.gatewayErrorCode,declineCode:$n?.declineCode??$n?.gatewayDeclineReason}),await new Promise(Et=>setTimeout(Et,400))}catch(mt){Ec(mt)||dt(),R("error"),Pe(mt instanceof Error?mt.message:"An unexpected error occurred"),await new Promise(Lt=>setTimeout(Lt,400))}finally{kn(!1),R(null),nt.current=!1}},[Y,e,t,N,G,Xe,Be,Qe,W,we,gt,T,s,Pe,hr,It,ee]),Bn=Je((a,P)=>{u?u(a):al(a,P)},[u,al]),Yo=`${kc}:${e}`;St(()=>{if(typeof window>"u")return;let a=localStorage.getItem(Yo);if(!a)return;let P;try{P=JSON.parse(a)}catch{Wt(Yo);return}if(!P||typeof P.createdAt!="number"||Date.now()-P.createdAt<0||Date.now()-P.createdAt>_c||typeof P.paymentMethodId!="string"||typeof P.providerIntentId!="string"||typeof P.paymentMethodType!="string"||P.sessionId!==e||!t||P.nonce!==t||!yo.includes(P.paymentMethodType)){Wt(Yo);return}Wt(Yo),Bn({id:P.paymentMethodId,type:"card",threeDSecureActionResultTokenId:P.providerIntentId,gateway:"stripe",paymentMethodType:P.paymentMethodType},{...P.accountPatch?{accountPatch:P.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Bn,t,e,Yo,yo]);let il=oe(!1);St(()=>{if(typeof window>"u"||il.current)return;let[a,P,U]=Cs();if(!a||!P||Ra.current||!we)return;let ve=we.getRawProvider();if(!ve)return;let Z=dt=>{let mt=localStorage.getItem(dt);if(!mt)return null;try{return JSON.parse(mt)}catch{return Wt(dt),null}},he=Z(Ir)??Z(uc),Xt;if(he?.clientSecret){if(he.clientSecret!==P)return;Xt={...he.accountPatch?{accountPatch:he.accountPatch}:{},...he.sessionId?{sessionId:he.sessionId}:{},...he.nonce?{nonce:he.nonce}:{}}}else if(he?.sessionId&&he.sessionId!==e)return;il.current=!0,Wt(Ir),Wt(uc),window.history.replaceState({},"",bs());let lr=he?.paymentMethodType??he?.tokenType??"card",Ye="card";(async()=>{if(U==="failed"){let Br="Payment was declined. Please try again.";Pe(Br),hr(Ye,Br);return}let{paymentIntent:dt,error:mt}=await ve.retrievePaymentIntent(P);if(mt){let Br=mt.message??"Failed to retrieve payment status.";Pe(Br),hr(Ye,Br,{code:mt.code});return}let Lt=dt?.status,xr=sa(Lt);if(!dt||!xr){let Br=Lt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Pe(Br),hr(Ye,Br,{code:Lt??"missing_payment_intent"});return}let $n=typeof dt.payment_method=="string"?dt.payment_method:dt.payment_method?.id;Bn({id:$n??he?.paymentMethodId??he?.tokenId??dt.id,type:"card",threeDSecureActionResultTokenId:dt.id,gateway:he?.gateway??"stripe",paymentMethodType:lr},Xt)})()},[e,Bn,we,Pe,hr]);let _i=Je(a=>{a.preventDefault()},[]);if(!(m||we!==null))return y("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let Jo=_e==="buttons",Fn=lt?.variables,Qc=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Ri=Fn?.colorBackground,ed=Ri&&!Qc.has(Ri)?Ri:void 0,Xo=b.cardInputBorder??(Jo?"#e5e7eb":"#A4A4FF"),sl=Fn?.colorDanger??"#dc2626",Kt=a=>Hn[a]&&(fr[a]||Yt),Ba=lo&&(Mn||Yt),Yn=a=>a?sl:Xo,Fa=(Tn.malformed||Tn.empty)&&(An||Yt),td=Yn(Fa),Ei=b.cardFormContainer?.backgroundColor??ed??(Jo?"white":"#EDEDFF"),go=b.cardInputBackground??Fn?.colorBackground??"white",Ti=vo(Te),ll=vo(Ve),ho=b.nameInput,cl=b.cardInputFontSize??rp(ho?.fontSize)??Fn?.fontSizeBase??"16px",dl=typeof ho?.fontFamily=="string"?ho.fontFamily:Fn?.fontFamily??"Poppins, sans-serif",ul=Pl(ho?.fontWeight)??400,nd=b.cardInputColor??(typeof ho?.color=="string"?ho.color:void 0)??Fn?.colorText??"#262833",rd=b.cardInputPlaceholderColor??"#9ca3af",Jt=Fn?.borderRadius??"8px",eo=Fn?.borderRadius??b.cardButton?.borderRadius??Jt,to=Fn?.colorPrimary??"#4A49FF",od=Fn?.colorPrimaryHover??na(to,.12),Ai=Fn?.colorText??"#262833",Mi={fontSize:cl,fontFamily:dl,fontWeight:ul,color:nd,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},Zo={marginTop:"0.375rem",...Mi,fontSize:"0.75rem",lineHeight:1.4,color:sl},ad={"--flopay-input-placeholder-color":rd,"--flopay-input-font-size":cl,"--flopay-input-font-family":dl,"--flopay-input-font-weight":String(ul)},Qo=b.cardFormContainer??{},xi=Qo.padding??(Jo?"0":"1rem"),Bi=Qo.borderRadius??Jt,id=Rt&&Tr?y(Fi,{capture:Rt,html:Tr.html,messageToken:Tr.messageToken,expectedOrigin:Tr.expectedOrigin,theme:ie,submitLabel:k,onReady:()=>{if(!wn&&!G||typeof document>"u")return;let a=()=>{let U=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(U){qn.current=!0;try{U.focus()}finally{qn.current=!1}}};Er.current||a()},onError:a=>Pe(a),onValidation:a=>{let P=j.current;(P==="idle"||P==="validation-window")&&(Pe(a),a&&j.current==="validation-window"&&(pt.current&&(clearTimeout(pt.current),pt.current=null),j.current="idle",R(null)))}}):y("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"}),pl=Ze("div",{onFocusCapture:a=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(a.target.tagName)&&Lr()},style:{backgroundColor:Ei,borderRadius:Bi,...Qo,padding:xi,...ad,display:"flex",flexDirection:"column"},children:[y("style",{children:`
|
|
4
|
+
`)}`]}):null;return mt&&!X?fe?io("div",{children:tt}):null:Zi("div",{children:[tt,De&&io(Eo,{identity:De.identity,methodLabel:De.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:we,onCancel:()=>we(null)}),Zi("div",{"aria-hidden":Pt||De?!0:void 0,style:Pt||De?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:Ya},children:[!Me&&!Pt&&io("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"}}),io("div",{ref:ie,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:Ya,display:"flex",opacity:Me?1:0},"aria-busy":E||h},Te)]},Te),et&&io("button",{ref:Se,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:tn,style:Xd,children:"Try PayPal again"})]})}function Ja(e){return io(tc,{...e})}function nc(e){return io(tc,{...e})}import{jsx as rc,jsxs as nu}from"react/jsx-runtime";function Ao({children:e,margin:t,icon:n=!0,styleOverride:r}){return nu("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"}:{},...r??{}},children:[n&&rc("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:rc("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{foldIntoProducts as ru,resolveSessionCurrency as ou}from"@flopay/shared";function Mo(){return typeof window<"u"&&typeof window.sessionStorage<"u"}var es=":idempotency-key";function ts(e,t){if(!Mo())return null;let n=window.sessionStorage.getItem(e);if(!n)return null;try{let r=JSON.parse(n);return!r||typeof r.sid!="string"||!r.sid||"canonicalIdentity"in r&&r.canonicalIdentity!==t?null:{..."canonicalIdentity"in r?{canonicalIdentity:t}:{},sid:r.sid,nonce:typeof r.nonce=="string"?r.nonce:void 0}}catch{return{sid:n}}}function ns(e,t){if(!Mo())return null;try{let n=window.sessionStorage.getItem(e+es);if(!n)return null;try{let r=JSON.parse(n);return typeof r=="string"?r?{idempotencyKey:r}:null:!r||typeof r.idempotencyKey!="string"||!r.idempotencyKey||"canonicalIdentity"in r&&r.canonicalIdentity!==t?null:{..."canonicalIdentity"in r?{canonicalIdentity:t}:{},idempotencyKey:r.idempotencyKey}}catch{return{idempotencyKey:n}}}catch{return null}}function Xa(e,t){if(Mo())try{ts(e,t)&&window.sessionStorage.removeItem(e)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout session cache.",n)}}function Za(e,t){if(Xa(e,t),!!Mo())try{ns(e,t)&&window.sessionStorage.removeItem(e+es)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout idempotency key.",n)}}function Qa(e,t,n,r){if(Mo())try{window.sessionStorage.setItem(e,JSON.stringify(r?{canonicalIdentity:t,sid:n,nonce:r}:{canonicalIdentity:t,sid:n}))}catch(o){console.warn("[FloPayCheckout] Failed to persist checkout session cache.",o)}}function ei(e,t,n){if(Mo())try{window.sessionStorage.setItem(e+es,JSON.stringify({canonicalIdentity:t,idempotencyKey:n}))}catch(r){console.warn("[FloPayCheckout] Failed to persist checkout idempotency key.",r)}}function Qi(e,t){return`${e}:${t.totalAmount??""}:${t.overrideAmount??""}:${t.quantity??1}:${t.currency??""}`}function au(e){if(e==null)return e;let t=JSON.stringify(Object.entries(e).sort(([s],[d])=>s<d?-1:s>d?1:0)),n=1779033703,r=3144134277,o=1013904242,i=2773480762;for(let s=0;s<t.length;s++){let d=t.charCodeAt(s);n=r^Math.imul(n^d,597399067),r=o^Math.imul(r^d,2869860233),o=i^Math.imul(o^d,951274213),i=n^Math.imul(i^d,2716044179)}return n=Math.imul(o^n>>>18,597399067),r=Math.imul(i^r>>>22,2869860233),o=Math.imul(n^o>>>17,951274213),i=Math.imul(r^i>>>19,2716044179),n^=r^o^i,r^=n,o^=n,i^=n,[n,r,o,i].map(s=>(s>>>0).toString(16).padStart(8,"0")).join("")}function xo(e,t=!1){let n=e?.account?.email?.trim().toLowerCase()??"",r={c:e?.clientId,cur:e?.currency??"",captureMethod:e?.captureMethod??"",a:{e:n,u:n?"":e?.account?.userId??"",country:e?.account?.country??""},successUrl:e?.successUrl,cancelUrl:e?.cancelUrl,p:e?.products?.map(o=>Qi(`${o.type??""}:${o.code??o.providerItemId??o.providerPlanId??""}`,o)).sort(),i:e?.items?.map(o=>Qi(o.code??o.providerItemId??"",o)).sort(),s:e?.subscriptions?.map(o=>Qi(o.code??o.providerPlanId??"",o)).sort(),couponCodes:e?.couponCodes?[...e.couponCodes].sort():void 0,checkoutMetadata:au(e?.checkoutMetadata),...t?{tagsData:e?.tagsData,utmMetadata:e?.utmMetadata,tokenizedData:e?.tokenizedData,checkoutMode:e?.checkoutMode??"full"}:{}};return JSON.stringify(r)}function oc(e,t=!1){let n=xo(e,t),r=0;for(let o=0;o<n.length;o++)r=(r<<5)-r+n.charCodeAt(o)|0;return`flopay_session_${Math.abs(r).toString(36)}`}function ac(e,t){if(!e?.customer||!e.products||t.checkoutMetadata!==void 0)return!1;let n=t.account.email?.trim().toLowerCase()??"",r=e.customer.email?.trim().toLowerCase()??"";if((n?r!==n:e.customer.id!==t.account.userId)||(t.account.country??"").trim().toUpperCase()!==(e.customer.country??"").trim().toUpperCase()||e.successUrl!==t.successUrl||e.cancelUrl!==t.cancelUrl||(e.captureMethod??"automatic")!==(t.captureMethod??"automatic"))return!1;let o=ou(t.currency,t.items,t.subscriptions,t.products);if(!o||e.currency.toUpperCase()!==o.toUpperCase())return!1;let i=(t.products??ru(t.items,t.subscriptions)).map(u=>({type:u.type,code:u.code??u.providerItemId??u.providerPlanId??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??o).toUpperCase()})).sort((u,w)=>`${u.code}:${u.type??""}`.localeCompare(`${w.code}:${w.type??""}`)),s=e.products.map(u=>({type:u.type,code:u.code??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??e.currency).toUpperCase()})).sort((u,w)=>`${u.code}:${u.type??""}`.localeCompare(`${w.code}:${w.type??""}`));if(i.length!==s.length)return!1;for(let[u,w]of i.entries()){let b=s[u];if(b===void 0||w.code!==b.code||w.type!==void 0&&w.type!==b.type||w.quantity!==b.quantity||w.totalAmount!==b.totalAmount||w.overrideAmount!==b.overrideAmount||w.currency!==b.currency)return!1}let d=[...t.couponCodes??[]].sort(),f=[...e.coupons??[]].sort();return d.length===f.length&&d.every((u,w)=>u===f[w])}import{resolveBillingApiUrl as iu}from"@flopay/shared";import{useEffect as Gr,useMemo as su,useRef as ic,useState as sc}from"react";import{jsx as lu}from"react/jsx-runtime";function ti({flopay:e,paypalFlopay:t,options:n,onInstrument:r,children:o}){let[i,s]=sc(e instanceof Promise?null:e),[d,f]=sc(t instanceof Promise||!t?null:t),u=ic(null),w=ic(null),b=To(r);Gr(()=>{b({class:"lifecycle",name:"checkout.mount"})},[b]),Gr(()=>{i&&b({class:"lifecycle",name:"sdk.initialize.ready"})},[b,i]),Gr(()=>{if(i)return pn(i)?.subscribe?.(b)},[b,i]),Gr(()=>{if(!(!d||d===i))return pn(d)?.subscribe?.(b)},[b,i,d]),Gr(()=>{if(!i)return;let I=pn(i);return u.current=I?.beginCheckout()??I?.now()??0,I?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{I?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),Gr(()=>{let I=!1;return e instanceof Promise?e.then(N=>{I||s(N)},()=>{I||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):s(e),()=>{I=!0}},[b,e]),Gr(()=>{let I=!1;if(!t){f(null);return}return t instanceof Promise?t.then(N=>{I||f(N)},()=>{I||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):f(t),()=>{I=!0}},[b,t]),Gr(()=>{if(!i||w.current===i)return;w.current=i;let I=pn(i);I?.log({name:"checkout.rendered",stage:"checkout_render"}),b({class:"lifecycle",name:"checkout.rendered"}),I?.performance({stage:"checkout_render",durationMs:I.elapsed(u.current??0),durationMode:"machine"})},[b,i]);let j=iu(n?.billingApiUrl),L=su(()=>({flopay:i,paypalFlopay:d,billingApiUrl:j,emitInstrument:b}),[i,d,j,b]);return lu(Zn.Provider,{value:L,children:o})}var ni="flopay_recent_completion_";function Bo(e){if(!(!e||typeof window>"u"))try{let t={expiresAt:Date.now()+6e4};window.sessionStorage.setItem(ni+e,JSON.stringify(t))}catch{}}function rs(e){if(!e||typeof window>"u")return!1;try{let t=window.sessionStorage.getItem(ni+e);if(!t)return!1;let n=JSON.parse(t);return typeof n?.expiresAt!="number"||n.expiresAt<=Date.now()?(window.sessionStorage.removeItem(ni+e),!1):!0}catch{return!1}}async function ri(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{loadFloPay as lc,PaymentAPI as ai}from"@flopay/js";import{classifyPaymentRejection as cu,FloPayError as Ct,isAuthorizationOnlySession as du,isMountableVaultBlock as uu,isSetupIntentClientSecret as pu,normalizeCheckoutFailureOutcome as cc,THREE_DS_CHALLENGE_WINDOW_MS as uc}from"@flopay/shared";var ha="card",mu=1e3;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:r,error:o}=await e.retrievePaymentIntent(t);return{error:o,intent:r??null}}async function fu(e,t,n,r){if(r){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:s,error:d}=await e.confirmCardSetup(t,n);return{error:d,intent:s??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:o,error:i}=await e.confirmCardPayment(t,n);return{error:i,intent:o??null}}function Yr(e){return new Ct("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function os(){return new Ct("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function is(e,t){return Object.assign(e,{checkoutMethod:t})}function Dr(e,t){let n=e instanceof Ct?e:new Ct(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 ga(e,t){try{return await e()}catch(n){throw Dr(n,t)}}function pc(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 gu(e){return e.status==="succeeded"||e.status==="authorized"||e.status==="declined"}async function ss(e){if(typeof document>"u"||typeof window>"u")throw new Ct("3DS challenge requires a browser environment.","api_error",{code:"three_ds_no_window"});if(e.signal?.aborted)throw Yr();let t=1e3,n=15e3,r=`${e.billingApiUrl.replace(/\/$/,"")}/v1/checkouts/sessions/${encodeURIComponent(e.sessionId)}/3ds/complete`,o=async()=>{let b=new AbortController,j=()=>b.abort();e.signal?.aborted?b.abort():e.signal?.addEventListener("abort",j);let L=window.setTimeout(()=>b.abort(),n);try{let I=await fetch(r,{method:"POST",headers:{"x-checkout-session-token":e.nonce,"content-type":"application/json"},body:"{}",signal:b.signal});if(!I.ok)return{status:"unknown"};let N=await I.json().catch(()=>null);return hu(N)}catch{return{status:"unknown"}}finally{window.clearTimeout(L),e.signal?.removeEventListener("abort",j)}},i,s=()=>e.pollCompletionEndpoint!==!1?o():(i??(i=o()),i),d=document.activeElement instanceof HTMLElement?document.activeElement:null,f=document.createElement("div");f.setAttribute("data-flopay-auto-3ds-overlay","1"),f.setAttribute("role","dialog"),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label","Card authentication"),f.style.cssText=["position:fixed","inset:0","z-index:2147483647","background:rgba(15,23,42,0.6)","display:flex","align-items:center","justify-content:center","padding:16px"].join(";");let u=document.createElement("iframe");u.setAttribute("title","Card authentication"),u.setAttribute("allow","payment"),u.tabIndex=0,u.style.cssText=["width:min(100%,460px)","height:min(100%,640px)","border:0","border-radius:12px","background:#fff","box-shadow:0 12px 30px rgba(0,0,0,0.35)"].join(";");let w=null;try{w=new URL(e.billingApiUrl,window.location.href).origin}catch{w=null}try{let b=await new Promise((j,L)=>{let I=!1,N=0,U=0,h=0,C=!1,le=()=>{window.clearTimeout(N),window.clearInterval(U),window.clearTimeout(h),window.removeEventListener("message",ke),u.removeEventListener("load",ve),e.signal?.removeEventListener("abort",J)},D=async()=>{if(!(I||C)){C=!0;try{let qe=await s();if(I||!gu(qe))return;I=!0,le(),j(qe)}finally{C=!1}}},ve=()=>{e.pollCompletionEndpoint!==!1&&(window.clearTimeout(h),h=window.setTimeout(()=>{D()},250))},J=()=>{I||(I=!0,le(),L(Yr()))},ke=qe=>{if(qe.source!==u.contentWindow||w&&qe.origin!==w)return;let Re=qe.data;!Re||typeof Re!="object"||Re.source!=="flopay-vault-3ds-return"||I||(I=!0,le(),j(null))};N=window.setTimeout(()=>{I||(I=!0,le(),L(os()))},uc),e.pollCompletionEndpoint!==!1&&(U=window.setInterval(()=>{D()},t)),u.addEventListener("load",ve),window.addEventListener("message",ke),e.signal?.addEventListener("abort",J),u.src=e.nextActionRedirectUrl,f.appendChild(u),document.body.appendChild(f),u.focus(),e.signal?.aborted&&J()});return b||await s()}finally{f.parentNode?.removeChild(f),d?.isConnected&&d.focus()}}async function Fo(e,t){let{billingApiUrl:n,sessionId:r,signal:o}=t,i=t.nonce??t.session.clientSecret,s=new ai(n,{telemetry:!1}),d=`${n.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(r)}/status`,f=new AbortController,u=new AbortController,w=()=>{f.abort(o.reason),u.abort(o.reason)};o.aborted?w():o.addEventListener("abort",w,{once:!0});let b=ss({billingApiUrl:n,sessionId:r,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:f.signal,pollCompletionEndpoint:!1}),j=s.waitForCheckoutSessionCompletion(r,{initialDelayMs:mu,nonce:i,statusUrl:d,continueAfterActionRequired:!0,timeoutMs:uc+15e3,signal:u.signal}),L;try{let N=await Promise.race([b,j]);if("data"in N)L=N;else{if(N.status==="declined")throw Rr({type:N.declineReason??"authorization_declined",gatewayErrorCode:N.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"});if(N.status==="timeout")throw os();L=await j}}catch(N){if(o.aborted||N instanceof Error&&N.name==="AbortError")throw Yr(N);if(!(N instanceof Ct)||N.code!=="three_ds_timeout"&&N.code!=="checkout_processing_timeout")throw N;try{L=await s.waitForCheckoutSessionCompletion(r,{initialDelayMs:0,nonce:i,statusUrl:d,timeoutMs:5e3,signal:o})}catch(h){if(o.aborted)throw Yr(h);if(!(h instanceof Ct)||h.code!=="checkout_processing_timeout")throw h}let U=L&&Kr(L,t.session);if(!Fr(U)&&U?.status!=="expired"){if(t.telemetry){let h=new ai(n);try{h.reportThreeDsAbandoned(r)}finally{h.destroy()}}throw os()}}finally{o.removeEventListener("abort",w),f.abort(),u.abort()}let I=L&&Kr(L,t.session);if(!Fr(I))throw Ro(I);return{...Br(I,r),checkoutMethod:"card"}}function hu(e){if(!e||typeof e!="object")return{status:"unknown"};let t=typeof e.status=="string"?e.status:"unknown",n=typeof e.providerIntentId=="string"?e.providerIntentId:null;switch(t){case"succeeded":case"authorized":case"pending":case"timeout":return{status:t,providerIntentId:n};case"declined":return{status:"declined",providerIntentId:n,declineReason:typeof e.declineReason=="string"?e.declineReason:null,gatewayDeclineReason:typeof e.gatewayDeclineReason=="string"?e.gatewayDeclineReason:null};case"requires_action":return{status:"requires_action",providerIntentId:n,nextActionRedirectUrl:typeof e.nextActionRedirectUrl=="string"?e.nextActionRedirectUrl:null};case"no_attempt":return{status:"no_attempt"};default:return{status:"unknown"}}}function Rr(e,t="Payment failed. Please try again.",n){let r=n?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),o=e?.message??t,i=$r(o)??o,s=is(new Ct(i,"api_error",{code:e?.code??cc(e?.outcome)??cc(e?.type)??e?.gatewayErrorCode}),r);return e?.orderId&&(s.orderId=e.orderId),s}function as(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function oi(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function mc(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of n)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||oi(o)))return o;let r=e?.data;if(r&&typeof r=="object"){let o=r,i=[o.threeDSecureToken,o.clientSecret,o.stripeClientSecret,o.id];for(let d of i)if(typeof d=="string"&&d.length>0&&(!t?.requirePaymentIntentClientSecret||oi(d)))return d;let s=o.gateways;if(s&&typeof s=="object"){let d=s.stripe;if(d&&typeof d=="object"){let f=d,u=[f.stripeClientSecret,f.clientSecret];for(let w of u)if(typeof w=="string"&&w.length>0&&(!t?.requirePaymentIntentClientSecret||oi(w)))return w}}}}async function Pu({billingApiUrl:e,sessionId:t,nonce:n,responseJson:r}){let o=mc(r,{requirePaymentIntentClientSecret:!0});if(typeof o=="string"&&o.length>0)return{type:"3ds_required",threeDSecureToken:o};if(!t)return null;try{let d=(await new ai(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(oi(d))return{type:"3ds_required",threeDSecureToken:d}}catch{}return null}async function Do({billingApiUrl:e,sessionId:t,session:n,nonce:r,tokenizedData:o,returnUrl:i,telemetry:s}){let d=e.replace(/\/+$/,""),f=t??n.id,u=r??n.clientSecret,w=n.customer?.id??n.accountData?.userId??"",b=n.customer?.email??n.accountData?.email??"",j=n.customer?.firstName??n.accountData?.firstName??"",L=n.customer?.lastName??n.accountData?.lastName??"",I=n.customer?.country??n.accountData?.country??void 0,N=n.customer?.zip??n.accountData?.zip??void 0,h=await new ai(d,s===!1?{telemetry:!1}:void 0).processPayment(w,{sessionId:f,nonce:u,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:w,email:b,firstName:j,lastName:L,country:I,zip:N},returnUrl:i??as(n)});if(h.ok){let D=typeof h.json=="function"?await h.json().catch(()=>null):null;if(du(n)||D?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof D?.paymentId=="string"?D.paymentId:n.paymentId,sessionId:typeof D?.sessionId=="string"?D.sessionId:f,authorizationExpiresAt:typeof D?.authorizationExpiresAt=="string"?D.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:da(o),checkoutMethod:dc(o,n)}};let ve=o?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...ve?{paymentIntentId:ve}:{},paymentMethodId:da(o),checkoutMethod:dc(o,n)}}}let C;try{C=await h.json()}catch(D){throw new Ct("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status,cause:D})}if(C?.type==="3ds_required"&&typeof C.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:C.nextActionRedirectUrl};if(C?.type==="paypal_redirect_required"||C?.type==="3ds_required"){let D=mc(C);if(!D)throw new Ct("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status});return{type:C.type,threeDSecureToken:D,paymentMethodId:C.paymentMethodId}}if(C?.gatewayErrorCode==="authentication_required"){let D=await Pu({billingApiUrl:d,sessionId:f,nonce:u,responseJson:C});if(D)return D;throw is(new Ct("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let le=new Ct(C?.message??"Payment failed. Please try again.","api_error",{code:C?.code??C?.gatewayErrorCode,declineCode:C?.declineCode??C?.gatewayDeclineReason,statusCode:h.status});throw Object.assign(le,{telemetryOutcome:cu(h.status,C)})}async function ii(e,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:i,session:s,returnUrl:d,telemetry:f,signal:u}){let w=t?.getRawProvider();if(!w)throw Dr(new Ct("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!r||!e.threeDSecureToken)throw is(new Ct("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let b=pu(e.threeDSecureToken),j=null,L=e.paymentMethodId,I=await ga(()=>yu(w,e.threeDSecureToken,b),"card");if(I){if(I.error)throw Dr(new Ct(I.error.message??`Failed to retrieve 3DS ${b?"setup":"payment"} status.`,"api_error",{code:I.error.code}),"card");let U=I.intent;!L&&U?.payment_method&&(typeof U.payment_method=="string"?L=U.payment_method:"id"in U.payment_method&&(L=U.payment_method.id??void 0))}let N=L?await ga(()=>fu(w,e.threeDSecureToken,{payment_method:L,return_url:d??as(s)??window.location.href},b),"card"):null;if(N){if(N.error)throw Dr(new Ct(N.error.message??"3DS authentication failed.","api_error",{code:N.error.code}),"card");j=N.intent}else{let U=await ga(()=>w.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(U.error)throw Dr(new Ct(U.error.message??"3DS authentication failed.","api_error",{code:U.error.code}),"card");j=(b?U.setupIntent:U.paymentIntent)??null}if(j&&(j.status==="requires_capture"||j.status==="succeeded"||j.status==="processing")){let U=await Do({billingApiUrl:o,sessionId:i,session:s,telemetry:f,tokenizedData:{id:j.id,type:"card",threeDSecureActionResultTokenId:j.id},returnUrl:d});return U.type==="success"?{...U.result,paymentIntentId:U.result.paymentIntentId??j.id,paymentMethodId:U.result.paymentMethodId??L}:U.type==="next_action_required"?Fo(U,{billingApiUrl:o,sessionId:i??s.id,session:s,signal:u}):ii(U,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:i,session:s,returnUrl:d,telemetry:f,signal:u})}throw Dr(new Ct("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let b=(n??t)?.getRawProvider();if(!b)throw Dr(new Ct("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:L}=await ga(()=>b.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(L)throw Dr(new Ct(L.message??"PayPal authorization failed.","api_error",{code:L.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:j}=await ga(()=>b.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:d??as(s)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(j)throw Dr(new Ct(j.message??"PayPal authorization failed.","api_error",{code:j.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new Ct("Unsupported payment redirect state.","api_error")}function Pa(e){if(e instanceof Ct){let r=$r(e.message);return r&&r!==e.message?Object.assign(new Ct(r,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=$r(t)??t;return new Ct(n,"api_error")}function ls(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,r=uu(e.data.session?.vault)||qr(e.data.session);if(!t&&!n&&!r)throw new Ct("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 dc(e,t){return e?e.isPaypal?"paypal":"card":t&&qr(t)?"card":void 0}async function cs({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:r,telemetry:o}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[s,d]=await Promise.all([lc(e,{billingApiUrl:n,locale:r,telemetry:o}),i?lc(i,{billingApiUrl:n,locale:r,telemetry:o}).catch(u=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",u),null)):Promise.resolve(null)]);if(!s)throw new Ct("The payment provider did not initialize.","authentication_error");let f=null;return i?f=d:t&&(f=s),{flopay:s,paypalFlopay:f}}import{PaymentAPI as Oo,PciVaultCardCapture as vu,toStripeAppearance as bu}from"@flopay/js";import{COUNTRY_OPTIONS as Cu,classifyPaymentRejection as Su,FloPayError as mr,filterStripeMethodsByCountry as wu,getPostalCodeExample as Iu,getPostalCodeLabel as gs,getStateFromPostalCode as yc,getStateLabel as ds,getStateOptions as ku,getStripeMethodDisplayName as Sa,isAuthorizationOnlySession as us,isAVSFieldVisible as ot,isMountableVaultBlock as Ru,isPostalCodeSupported as _u,isSetupIntentClientSecret as ps,isValidEmail as gn,isValidPostalCode as Eu,needsStripeMethodExplicitConfirm as fc,normalizeCheckoutFailureOutcome as Tu,partitionStripeMethods as Au,randomUuidV4 as Mu,resolveAVSConfig as xu,resolveButtonsLayoutTheme as Bu,resolveSetupFutureUsage as Ec,resolveTheme as Fu,resolveVaultMountOptions as ms,stripeExpressMethodToOptionKey as Du}from"@flopay/shared";import{ExpressCheckoutElement as Tc,PaymentElement as Nu,Elements as so,useElements as bs,useStripe as Cs}from"@stripe/react-stripe-js";import Ou,{useCallback as Xe,useContext as Uo,useEffect as gt,useMemo as ft,useRef as ne,useState as ue}from"react";function No(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function si(e,t){if(e)return{error:n=>e.error(No(t,n)),log:n=>e.log(No(t,n)),performance:n=>e.performance(No(t,n)),terminal:n=>e.terminal(No(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 Lo,jsx as y,jsxs as Qe}from"react/jsx-runtime";var _r="flopay_stripe_resume",gc="flopay_wallet_resume",Ac="fw1",Lu="fw2",Mc=300*1e3,Uu=900,zu=25e3,qu=25e3,ju=1e4,xc=["payment_intent","payment_intent_client_secret","redirect_status"],pr={provider:"paypal",paymentMethodCategory:"paypal"},$u="x-flopay-process-result-source",Ku="status";async function Vu(e,t,n){try{let r=(await e.getUnifiedCheckoutSession(t,n)).data.session;if(r?.status==="complete")return null;if(r?.status==="authorized")return{status:"authorized",paymentId:r.paymentId,sessionId:r.id||t,authorizationExpiresAt:r.authorizationExpiresAt}}catch{}}var li={},ba=class{constructor(t){this.reason=t}};function Wu(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function Wt(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`${Lu}:${e}`}function ci(e){return Wt(Ss(e))}function di(e,t){if(typeof window>"u")return null;let n=Ss(e);try{let r=localStorage.getItem(n);if(!r)return null;let o=JSON.parse(r);return typeof o.createdAt!="number"||Date.now()-o.createdAt<0||Date.now()-o.createdAt>Mc||o.sessionId!==e||o.nonce!==t||typeof o.clientSecret!="string"||typeof o.providerObjectId!="string"||typeof o.paymentMethodType!="string"?(ci(e),null):o}catch{return ci(e),null}}function Hu(e){return Wt(Ss(e.sessionId),e)}function hc(e,t,n){let r=di(e,t);return!r||r.clientSecret!==n?!1:ci(e)}function ys(e,t,n){if(typeof window>"u")return;di(e,t)?.clientSecret===n&&ci(e)}function Gu(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function fs(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 r=n?e.status==="succeeded":ca(e.status),o=Gu(e);return!r||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function Pc(e,t,n){let r=null;try{return await Promise.race([Vl(e,t),new Promise(o=>{r=window.setTimeout(()=>{r!==null&&n?.delete(r),o(null)},ju),n?.add(r)})])}finally{r!==null&&(window.clearTimeout(r),n?.delete(r))}}function Yu(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Bc(e){return e instanceof mr&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function ui(e,t,...n){let r=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:r});try{return await new Oo(e,{telemetry:!1}).createSessionIntent(...n)}catch(o){throw Bc(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:r}),o}}var Ca="flopay_paypal_resume",va=new Map;function Fc(e){if(!e||typeof window>"u")return null;try{let t=window.localStorage.getItem(Ca);if(!t)return null;let n=JSON.parse(t);return n?.clientSecret===e?n:null}catch{return null}}function Ju(){if(typeof window>"u")return!1;let[e,t]=ws();return e?Fc(t)!==null:!1}function ws(){let e=new URLSearchParams(window.location.search);return xc.map(t=>e.get(t))}function Is(){let e=new URL(window.location.href);for(let t of xc)e.searchParams.delete(t);return e.toString()}function Xu(){Wt(Ca),window.history.replaceState({},"",Is())}var Zu=250,vc="Just a moment \u2014 we are finalizing your order. Please press pay again.",Qu="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function ks(e,t,n,r){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk",...r?{terminalReason:r}:{}})}async function pi({billingApiUrl:e,sessionId:t,nonce:n,request:r}){if(!(!t||!n))try{await new Oo(e,{telemetry:!1}).reportSessionIntentDecline(t,n,r)}catch{}}function ep(e){return e instanceof mr&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Dc({event:e,fallbackEmail:t,fallbackName:n}){let r=e.billingDetails,o=t?.trim(),i=oo(n),s=i.firstName?i:oo(r?.name);return Nn({email:gn(o)?o:r?.email?.trim(),firstName:s.firstName,lastName:s.lastName})}async function tp({event:e,prepared:t,email:n,billingName:r,methodLabel:o,collect:i}){let s=Dc({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||r});return gn(s.email)?s:i(o,s)}var wa=180,bc=`flopay-card-enter ${wa}ms cubic-bezier(0, 0, 0.2, 1) both`,Cc=`flopay-card-exit ${wa}ms cubic-bezier(0.4, 0, 0.2, 1) both`,np=`flopay-buttons-enter ${wa}ms cubic-bezier(0, 0, 0.2, 1) both`,rp=`flopay-buttons-exit ${wa}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function op(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function Rs(e){if(!e.themeBundle&&!e.explicitPrimaryColor)return{backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:e.resolvedBorderRadius,boxShadow:"0 1px 2px rgba(0,0,0,0.04)"};let t=e.themeBundle?e.submitButtonStyle??{}:{};return{backgroundColor:e.resolvedPrimaryColor,color:t.color??"white",border:t.border??"none",borderRadius:t.borderRadius??e.resolvedBorderRadius,boxShadow:t.boxShadow}}var ap={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function ip(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 hs={width:"100%",minHeight:sa,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 sp(e){switch(e){case"paypal":return"PayPal";case"apple_pay":return"Apple Pay";case"google_pay":return"Google Pay";default:return"Card"}}function Sc(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function Ps(e){return e==="paypal"?"PayPal":Sa(e)}function lp(e){let t=Iu(e);return`Enter a valid ${gs(e)}${t?` (e.g. ${t})`:""}`}function cp(e,t,n){let r=_u(e),o=t.trim(),i=n&&r,s=i&&!o,d=i&&!!o&&!Eu(e,o);return{visible:n,supported:r,required:i,empty:s,malformed:d}}function dp(e,t){let n=e.trim(),r=t&&!n,o=t&&!!n&&!gn(n);return{required:t,empty:r,malformed:o,value:n}}function wc(e,t){return t instanceof mr?t:new mr(t instanceof Error?t.message:`${sp(e)} before-click hook failed.`,"validation_error")}function up(e){return typeof e=="number"?`${e}px`:e}function _s(e){return y(pp,{...e})}function Ic({sessionId:e,nonce:t,email:n,billingApiUrl:r,onTokenizedBody:o,onErrorChange:i,isProcessing:s=!1,onButtonClick:d,onDecline:f,onTechnicalFailure:u,runBeforeButtonClick:w,billingName:b,onBuyerIdentityReady:j,onLoadStateChange:L,placeholderBorderRadius:I,popupCapabilityOwner:N,externalTelemetryContext:U,presentationMode:h}){let C=Vr(),{emitInstrument:le}=Uo(Zn),D=Cs(),ve=bs(),J=ft(()=>si(pn(C),U),[U,C]),[ke,qe]=ue("loading");gt(()=>{L?.(ke)},[ke,L]);let[Re,st]=ue(!1),qt=ne(!1),fe=!gn(n?.trim())||!b?.trim(),{request:Ae,collect:ht,finish:Ee}=_o(),He=ne(!1),_e=ne(null),ie=ne(null),[je,$e]=ue(0),[pt,Ce]=ue(!1),ge=ne(!1),ce=ne(new Map),{startAttempt:M,finishAttempt:Se,invalidateAttempt:Ue,isAttemptInvalidated:Me,isAttemptCurrent:V,generationRef:Pt}=ma((E,se,De)=>{u?.(E,se,{...De,popupBlocked:De?.popupBlocked??zr(se),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h,terminalReason:"overlay_timeout"}),Ce(!0),$e(F=>F+1)},{onHandoffObserved:()=>{N.markAvailable(),J?.log({name:"provider.popup.opened",stage:"overlay_open",...pr,attempt:Pt.current})}});gt(()=>{pt&&ie.current?.focus()},[pt,je]);let ze=Xe(()=>{$e(E=>E+1)},[]),Te=Xe((E,se,De)=>{Ue(De),u?.("paypal",E,{code:se,popupBlocked:zr(E),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h}),Ce(!0),ze()},[Ue,u,h,ze]),Ze=Xe(()=>{window.setTimeout(()=>{(_e.current?.querySelector("iframe")??_e.current)?.focus()},0)},[]);gt(()=>{ge.current&&(ge.current=!1,Ze())},[Ze,je]);let xe=Xe(()=>{Ce(!1),i?.(null),Ze()},[Ze,i]);gt(()=>{if(!D||He.current)return;let[E,se,De]=ws();if(!E||!se)return;let F=Fc(se);if(!F)return;He.current=!0;let we=!0,yt=va.get(se);yt||(yt=De==="failed"?Promise.resolve(null):Promise.resolve().then(()=>D.retrievePaymentIntent(se)),va.set(se,yt));let Ne={accountPatch:F.accountPatch,sessionId:F.sessionId,nonce:F.nonce},St=()=>{J?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...pr,requestCategory:"provider_sdk"})};return J?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...pr}),(async()=>{try{st(!0);let p=await yt;if(!we)return;if(p?.error){va.delete(se),St(),i?.(p.error.message??"Failed to retrieve PayPal payment status.");return}if(Xu(),va.delete(se),De==="failed"){let x="PayPal payment was declined. Please try again.";J?.terminal({outcome:"payment_declined",...pr,terminalReason:"provider_declined"}),i?.(x),f?.(un("paypal",x));return}let g=p?.paymentIntent;if(g&&g.id!==E){St(),i?.("Failed to match the returned PayPal payment.");return}if(g&&(g.status==="requires_capture"||g.status==="succeeded")){let x=typeof g.payment_method=="string"?g.payment_method:g.payment_method?.id;o({id:x??g.id,type:"card",threeDSecureActionResultTokenId:g.id,isPaypal:!0},{...Ne,presentationMode:"redirect"})}else{let x="PayPal payment was not completed. Please try again.";J?.terminal({outcome:g?.status==="canceled"?"payment_cancelled":"payment_declined",...pr,terminalReason:g?.status==="canceled"?"cancelled":"provider_declined"}),i?.(x),f?.(un("paypal",x))}}catch(p){if(!we)return;va.delete(se),St(),i?.(p instanceof Error?p.message:"Failed to complete PayPal payment.")}finally{we&&st(!1)}})(),()=>{we=!1,He.current=!1}},[D,o,i,f,J]);let et=Xe(async(E=!1)=>{let se=w?await w("paypal"):{proceed:!0};if(!se.proceed)return ce.current.delete(je),!1;let De=M("paypal");return ce.current.set(je,{generation:De,accountPatch:se.accountPatch,sessionId:se.sessionId,nonce:se.nonce}),Ce(!1),J?.log({name:`provider.${E?"redirect.started":"handoff.requested"}`,stage:E?"redirect":"overlay_open",...pr,attempt:De}),d?.("paypal"),!0},[d,J,w,M,je]),Fe=Xe(async E=>{if(s||Re||!await et()){E.reject();return}E.resolve()},[s,et,Re]),vt=Xe(async E=>{if(!D||!ve)return;let se=ce.current.get(je);if(se&&!V(se.generation)){ce.current.delete(je);return}if(!se&&Me()||se&&!Se(se.generation))return;se||Se();let De=se??null;if(ce.current.delete(je),!De&&w){let T=await w("paypal");if(!T.proceed){E.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}De={accountPatch:T.accountPatch,sessionId:T.sessionId,nonce:T.nonce}}let F=De?.sessionId??e,we=De?.nonce??t,yt=await tp({event:E,prepared:De,email:n,billingName:b,methodLabel:"PayPal",collect:ht});if(!yt){E.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Ne=yt.email,St={...De?.accountPatch,...Nn(yt,!0)};try{if(st(!0),i?.(null),!F||!gn(Ne))throw new Error("Missing sessionId or email for PayPal payment");await j?.(yt);let T=D.createPaymentMethod,{error:p,paymentMethod:g}=await T({type:"paypal"});if(p){Te(p,"stripe_paypal_create_payment_method_failed",se?.generation),E.paymentFailed({reason:"fail"});return}let x=await ui(r,le,F,we??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:g?.id??null,intentKind:"payment"});if(x.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let A=x.clientSecret,re={return_url:Is()};if(g?.id&&(re.payment_method=g.id),!Wt(Ca,{clientSecret:A,sessionId:F,nonce:we,accountPatch:St})&&h==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:he,paymentIntent:Ke}=await D.confirmPayment({clientSecret:A,confirmParams:re,redirect:"if_required"});if(he){if(Wt(Ca),za(he)){let jt=he.message??"Your payment was declined.";J?.terminal({outcome:"payment_declined",...pr,terminalReason:"provider_declined"}),i?.(jt),f?.(un("paypal",jt,{code:Ur(he),declineCode:aa(he)})),await pi({billingApiUrl:r,sessionId:F,nonce:we,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Ur(he)??"provider_declined"}})}else Te(he,"stripe_paypal_confirm_failed",se?.generation);return}Wt(Ca);let X=typeof Ke?.payment_method=="string"?Ke.payment_method:Ke?.payment_method?.id;o({id:X??Ke?.id,type:"card",threeDSecureActionResultTokenId:Ke?.id,isPaypal:!0},{accountPatch:St,paymentMethodCategory:"paypal",presentationMode:h,sessionId:F,nonce:we});return}catch(T){Te(T,"stripe_paypal_failed",se?.generation)}finally{st(!1)}},[D,ve,e,t,n,b,ht,j,r,le,o,i,f,w,Te,Se,V,Me,J,h,je]),Gt=Xe(async()=>{if(!(qt.current||s||Re||!D||!ve)){qt.current=!0,st(!0);try{if(!await et(!0))return;await vt({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{qt.current=!1,st(!1)}}},[ve,vt,s,et,D,Re]),mt=h==="redirect"?y("button",{type:"button",disabled:s||Re,onClick:()=>{Gt()},style:{width:"100%",minHeight:sa,border:"1px solid #d1d5db",borderRadius:I??8,background:"#ffc439",color:"#111827",cursor:s||Re?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):y(Tc,{onReady:E=>qe(Ui(E,["paypal"])),onLoadError:()=>{qe("load_error"),ks(J,"paypal","paypal","provider_error")},onClick:Fe,onConfirm:vt,onCancel:()=>{let E=ce.current.get(je);ce.current.delete(je),J?.terminal({outcome:"payment_cancelled",...pr,terminalReason:"cancelled",...E?{attempt:E.generation}:{}}),Ue(E?.generation),Ce(!1),ge.current=!0,ze()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:fe,emailRequired:fe,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},je),Tt=Qe(Lo,{children:[Qe("div",{ref:_e,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[pt&&y("button",{ref:ie,type:"button","data-testid":"flopay-paypal-retry-button",onClick:xe,style:hs,children:"Try PayPal again"}),Ae&&y(Eo,{identity:Ae.identity,methodLabel:Ae.methodLabel,onComplete:Ee,onCancel:()=>Ee(null)},Ae.id),y("div",{style:{display:Ae?"none":void 0},children:mt})]}),Re&&!Ae&&y(Ir,{status:"processing"})]});return h==="redirect"?Tt:y(zi,{state:ke,placeholderTestId:"flopay-paypal-placeholder",borderRadius:I,children:Tt})}function kc(e){return e==="apple_pay"||e==="google_pay"}function Rc({sessionId:e,nonce:t,email:n,billingApiUrl:r,intentKind:o,expressMethods:i,onTokenizedBody:s,onErrorChange:d,onButtonClick:f,onDecline:u,onTechnicalFailure:w,runBeforeButtonClick:b,billingName:j,onBuyerIdentityReady:L,onLoadStateChange:I,placeholderBorderRadius:N,popupCapabilityOwner:U,externalTelemetryContext:h}){let C=Vr(),{emitInstrument:le}=Uo(Zn),D=Cs(),ve=bs(),J=ft(()=>si(pn(C),h),[h,C]),[ke,qe]=ue("loading");gt(()=>{I?.(ke)},[ke,I]);let[Re,st]=ue(!1),qt=ne(!gn(n?.trim())||!j?.trim()).current,{request:fe,collect:Ae,finish:ht}=_o(),Ee=ne(null),He=ne(null),[_e,ie]=ue(0),[je,$e]=ue(!1),[pt,Ce]=ue(()=>di(e,t)?"blocked":"idle"),[ge,ce]=ue("google_pay"),M=ne(null),Se=ne(!0),Ue=ne(!1),Me=ne("google_pay"),V=ne("google_pay"),Pt=ne(null),ze=ne(null),Te=ne(new Set),Ze=ne(null);gt(()=>(Se.current=!0,()=>{Se.current=!1;for(let T of Te.current)window.clearTimeout(T);Te.current.clear()}),[]);let xe=ne(new Map),{startAttempt:et,finishAttempt:Fe,invalidateAttempt:vt,isAttemptInvalidated:Gt,isAttemptCurrent:mt,generationRef:Tt}=ma((T,p,g)=>{w?.(T,p,{...g,popupBlocked:g?.popupBlocked??zr(p),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),ce(T),$e(!0),ie(x=>x+1)},{onHandoffObserved:T=>{U.markAvailable(),J?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Tt.current,...T==="apple_pay"||T==="google_pay"?{walletType:T}:{}})},defersMissingTerminal:kc,onMissingTerminalDeferred:(T,p)=>{let g=J?.now()??globalThis.performance?.now()??Date.now(),x=Ze.current,A=x?.generation===p?x.startedAt:g;J?.performance({stage:"overlay_return",durationMs:Math.max(0,g-A),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:p,...kc(T)?{walletType:T}:{}}),J?.flush?.().catch(()=>{})}});gt(()=>{je&&He.current?.focus()},[je,_e]);let E=Xe(()=>{ie(T=>T+1)},[]),se=Xe((T,p,g,x,A=!1)=>{vt(x),w?.(T,p,{code:g,popupBlocked:zr(p),telemetryReported:A,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),ce(T),$e(!0),E()},[vt,w,E]),De=Xe(()=>{window.setTimeout(()=>{(Ee.current?.querySelector("iframe")??Ee.current)?.focus()},0)},[]);gt(()=>{Ue.current&&(Ue.current=!1,De())},[De,_e]);let F=Xe(()=>{$e(!1),d?.(null),De()},[De,d]),we=Xe(()=>{M.current?.()},[]);gt(()=>{let T=di(e,t);if(!T)return;let p=!1,g=!1,x=async()=>{if(!g){g=!0,p||Ce("checking");try{let A=await Pc(D,T.clientSecret,Te.current);if(p)return;let re=fs(A,T.providerObjectId,ps(T.clientSecret));if(re.kind==="confirmed"){if(!hc(e,t,T.clientSecret))return;M.current=null,Ce("idle"),s({id:re.paymentMethodId,type:"card",threeDSecureActionResultTokenId:re.intentId},{...T.accountPatch?{accountPatch:T.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(re.kind==="terminal"){ys(e,t,T.clientSecret),M.current=null,Ce("idle"),ce(T.paymentMethodType),$e(!0),E();return}Ce("blocked")}catch{p||Ce("blocked")}finally{g=!1}}};return M.current=x,Ce("blocked"),()=>{p=!0,M.current===x&&(M.current=null)}},[t,s,E,e,D]);let yt=Xe(async T=>{let p=!1,g=Ge=>{p||(p=!0,T.paymentFailed({reason:"fail",...Ge?{message:Ge}:{}}))};if(!D||!ve){g();return}let x=xe.current.get(_e);if(x&&!mt(x.generation)){xe.current.delete(_e),g();return}if(!x&&Gt()){g();return}if(x&&!Fe(x.generation)){g();return}x||Fe();let A=T.expressPaymentType??x?.method??Me.current,re=x??null,ct=Sc(A),he;A==="apple_pay"?he="apple_pay":A==="google_pay"&&(he="google_pay");let Ke=x?.generation??Tt.current,X=J,jt=X?.now()??globalThis.performance?.now()??Date.now(),bt=new AbortController,At=!1,at=!1,de=null,_n=e,On="processing",mn="other",$t="provider_runtime",Ln,Un=new Promise((Ge,Oe)=>{Ln=Oe}),hn=window.setTimeout(()=>{At=!0,bt.abort(),Ln(li)},zu),Mt=async(Ge,Oe,En)=>{On=Ge,mn=Oe,$t=Oe==="intent_create"||Oe==="session_claim"?"transport_error":"provider_runtime";let wt=X?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([En,Un])}finally{let zn=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:Ge,durationMs:Math.max(0,zn-wt),durationMode:"machine",requestCategory:Oe,paymentMethodCategory:"wallet",provider:"stripe",...At?{statusClass:"timeout"}:{}})}};try{if(st(!0),d?.(null),!re&&b){let me=await Mt("processing","other",b(ct));if(!me.proceed){g();return}re={accountPatch:me.accountPatch,sessionId:me.sessionId,nonce:me.nonce}}let Ge=re?.sessionId??e;_n=Ge;let Oe=re?.nonce??t,En=Pt.current??re?.accountPatch,wt=Dc({event:T,fallbackEmail:En?.email??n,fallbackName:[En?.firstName,En?.lastName].join(" ").trim()||j});if(!gn(wt.email)){g("Buyer details are required."),Ae(Ps(A),wt).then(me=>{me&&(Pt.current=me)});return}Pt.current=null;let zn={...re?.accountPatch,...Nn(wt,!0)};await Mt("processing","session_claim",Promise.resolve(L?.(wt)));let{error:yn}=await Mt("tokenization","provider_sdk",ve.submit());if(yn){g(),se(A,yn,"stripe_wallet_submit_failed",x?.generation);return}if(!Ge)throw new Error("Missing sessionId or email for payment.");let Kt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:A,paymentMethodId:null,intentKind:o},Qt=JSON.stringify({sessionId:Ge,nonce:Oe??"",request:Kt}),er=ze.current,Wn=er?.retryIdentity===Qt?er.authorizationAttemptId:Mu();ze.current={authorizationAttemptId:Wn,retryIdentity:Qt};let en=await Mt("processing","intent_create",ui(r,le,Ge,Oe??"",{...Kt,authorizationAttemptId:Wn},{signal:bt.signal}));if(en.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let It=en.clientSecret,tn=Hu({createdAt:Date.now(),sessionId:Ge,...Oe?{nonce:Oe}:{},clientSecret:It,providerObjectId:en.providerObjectId,paymentMethodType:A,accountPatch:zn});window.clearTimeout(hn),at=!0,X?.performance({stage:"callback",durationMs:Math.max(0,(X?.now()??globalThis.performance?.now()??Date.now())-jt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let rn=X?.now()??globalThis.performance?.now()??Date.now(),Dt={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...he?{walletType:he}:{},attempt:Ke},sn=!1,Ot=null;X?.log({name:"payment.provider_confirmation.started",...Dt}),de=window.setTimeout(()=>{de!==null&&Te.current.delete(de),sn=!0;let me=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Dt,operationOutcome:"watchdog_expired",durationMs:Math.max(0,me-rn),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),X?.flush?.().catch(()=>{}),Ot?.()},qu),Te.current.add(de);let on=(me,tt)=>{de!==null&&(window.clearTimeout(de),Te.current.delete(de),de=null);let m=X?.now()??globalThis.performance?.now()??Date.now(),Be=Math.max(0,m-rn),$=me;sn&&(me==="resolved"?$="resolved_late":me==="returned_error"?$="returned_error_late":$="rejected_late");let Pn=tt??(me==="resolved"?"approved":"provider_error");return X?.log({name:"payment.provider_confirmation.returned",...Dt,operationOutcome:$,terminalReason:Pn}),X?.performance({...Dt,durationMs:Be,durationMode:"buyer",operationOutcome:$,terminalReason:Pn}),{durationMs:Be,operationOutcome:$,terminalReason:Pn}},Nt=!1,W=!1,tr=me=>{if(!me||typeof me!="object")return null;let tt=me;if(tt.error)return null;let m=tt.setupIntent??tt.paymentIntent,Be=fs(m??null,void 0,!!tt.setupIntent);return Be.kind==="confirmed"?Be:null},nr=me=>{if(Nt||x&&Tt.current!==x.generation)return;let tt=tr(me);if(!tt)return;if(tn&&!hc(Ge,Oe,It)){Nt=!0;return}let{intentId:m,paymentMethodId:Be}=tt;Nt=!0,W=!0,ze.current=null,M.current=null,Se.current&&(Ce("idle"),st(!1));let $=`${Ac}:${Ge}`;Wt($,{createdAt:Date.now(),sessionId:Ge,nonce:Oe,accountPatch:zn,paymentMethodId:Be,providerIntentId:m,paymentMethodType:A});try{s({id:Be,type:"card",threeDSecureActionResultTokenId:m},{accountPatch:zn,paymentMethodCategory:"wallet",sessionId:Ge,nonce:Oe})}finally{Wt($)}},rr=!1;Ot=async()=>{if(!(rr||Nt||W)){rr=!0,Se.current&&Ce("checking");try{let me=await Pc(D,It,Te.current);if(Nt||W)return;let tt=ps(It),m=fs(me,en.providerObjectId,tt);if(m.kind==="confirmed"){nr(tt?{setupIntent:me}:{paymentIntent:me});return}if(m.kind==="terminal"){if(W=!0,ys(Ge,Oe,It),ze.current=null,M.current=null,!Se.current)return;Ce("idle"),g(),se(A,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",x?.generation,!0);return}Se.current&&!W&&(Ce("blocked"),st(!1))}catch{Se.current&&!W&&(Ce("blocked"),st(!1))}finally{rr=!1}}},M.current=Ot;let nn,Tn;try{let me=await(ps(It)?D.confirmSetup({elements:ve,clientSecret:It,redirect:"if_required"}):D.confirmPayment({elements:ve,clientSecret:It,redirect:"if_required"}));if(!me||typeof me!="object")throw new ba(Wu(me));if(nn=me,!nn.error&&!tr(nn))throw new ba("confirmation_result_unconfirmed");Tn=on(nn.error?"returned_error":"resolved",nn.error&&za(nn.error)?"provider_declined":void 0)}catch(me){let tt=me instanceof ba?me.reason:void 0,m=tt!==void 0,Be=on(m?"returned_error":"rejected");if(X?.error({...m?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:tt}:Wi(me),...Dt,operationOutcome:Be.operationOutcome,durationMs:Be.durationMs,statusClass:"unknown",terminalReason:Be.terminalReason}),!Se.current||Nt)return;await Ot?.();return}let Sn=nn.error;if(Sn){if(!Se.current||Nt)return;if(za(Sn)){W=!0,ys(Ge,Oe,It),ze.current=null,M.current=null,Ce("idle");let me=Sn.message??"Your payment was declined.";g(me),d?.(me),u?.(un(ct,me,{code:Ur(Sn),declineCode:aa(Sn)})),pi({billingApiUrl:r,sessionId:Ge,nonce:Oe,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:A,providerDeclineReason:Ur(Sn)??"provider_declined",...en.intentKind==="payment"&&en.providerObjectId.startsWith("pi_")?{providerIntentId:en.providerObjectId}:{}}})}else X?.error({...Wi(Sn),...Dt,operationOutcome:Tn.operationOutcome,durationMs:Tn.durationMs,statusClass:"unknown",terminalReason:Tn.terminalReason}),await Ot?.();return}if(nr(nn),!Nt)throw new Error("Invalid provider returned for APM intent")}catch(Ge){if(Ge===li){let Oe=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:Yu(mn),stage:On,requestCategory:mn,paymentMethodCategory:"wallet",provider:"stripe",...he?{walletType:he}:{},operationOutcome:"watchdog_expired",checkoutSessionId:_n,durationMs:Math.max(0,Oe-jt),statusClass:"timeout",failureCategory:$t,attempt:Ke,terminalReason:"provider_error"}),X?.flush?.().catch(()=>{})}g(),se(A,Ge,Ge===li?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",x?.generation,Ge===li)}finally{if(window.clearTimeout(hn),de!==null&&(window.clearTimeout(de),Te.current.delete(de)),!at){let Ge=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:"callback",durationMs:Math.max(0,Ge-jt),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...At?{statusClass:"timeout"}:{}})}Se.current&&st(!1)}},[D,ve,e,t,n,j,Ae,L,r,le,o,s,d,u,b,se,Fe,mt,Gt,Tt,J,_e]),Ne=ft(()=>Tl(i),[i]),St=ft(()=>i.map(Du),[i]);return Qe(Lo,{children:[y(zi,{state:ke,placeholderTestId:"flopay-wallet-placeholder",borderRadius:N,children:Qe("div",{ref:Ee,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[je&&Qe("button",{ref:He,type:"button","data-testid":"flopay-wallet-retry-button",onClick:F,style:hs,children:["Try ",Ps(ge)," again"]}),pt!=="idle"&&Qe("div",{role:"status","aria-live":"polite",children:[y("p",{children:"We are still confirming your payment. Check its status before trying again."}),y("button",{type:"button",onClick:we,disabled:pt==="checking",style:hs,children:pt==="checking"?"Checking payment status\u2026":"Check payment status"})]}),fe&&y(Eo,{identity:fe.identity,methodLabel:fe.methodLabel,onComplete:ht,onCancel:()=>ht(null)},fe.id),pt==="idle"&&y("div",{style:{display:fe?"none":void 0},children:y(Tc,{onReady:T=>{qe(Ui(T,St))},onLoadError:T=>{qe("load_error"),ks(J,"stripe","wallet","provider_error")},onClick:async T=>{let p=J?.now()??globalThis.performance?.now()??Date.now();Me.current=T.expressPaymentType,V.current=Sc(T.expressPaymentType);let g=!0,x=window.setTimeout(()=>{g=!1,T.reject()},Uu),A=b?await b(V.current):{proceed:!0};if(window.clearTimeout(x),!g)return;if(!A.proceed){xe.current.delete(_e),T.reject();return}let re=et(T.expressPaymentType);Ze.current={generation:re,startedAt:p},xe.current.set(_e,{generation:re,method:T.expressPaymentType,accountPatch:A.accountPatch,sessionId:A.sessionId,nonce:A.nonce}),$e(!1),J?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:re,...T.expressPaymentType==="apple_pay"||T.expressPaymentType==="google_pay"?{walletType:T.expressPaymentType}:{}}),f?.(V.current),T.resolve()},onConfirm:yt,onCancel:()=>{let T=xe.current.get(_e);xe.current.delete(_e),J?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...T?{attempt:T.generation}:{}}),vt(T?.generation),ze.current=null,$e(!1),Ue.current=!0,E()},options:{...Al,paymentMethods:Ne,emailRequired:qt,billingAddressRequired:qt}},_e)})]})}),Re&&y(Ir,{status:"processing"})]})}function Nc(e,t,n){let r=Ec(n,t,"inline_apm");return{...e,paymentMethodTypes:[t],...r?{setupFutureUsage:r}:null}}function vs({method:e,sessionId:t,nonce:n,email:r,billingName:o,onBuyerIdentityReady:i,billingApiUrl:s,onTokenizedBody:d,onErrorChange:f,onDecline:u,onCancel:w,runBeforeButtonClick:b,onButtonClick:j,isProcessing:L,submitButtonColor:I,submitButtonBorderRadius:N,submitButtonStyle:U,errorText:h}){let C=Vr(),{emitInstrument:le}=Uo(Zn),D=Cs(),ve=bs(),[J,ke]=ue(!1),qe=ne(!1),[Re,st]=ue(!1),[qt,fe]=ue("loading"),[Ae,ht]=ue(""),Ee=!gn(r?.trim()),He=!Ee||gn(Ae.trim()),_e=Xe(async()=>{if(!D||!ve||L||qe.current||!Re)return;qe.current=!0,ke(!0);let ie=b?await b("card"):{proceed:!0};if(!ie.proceed){qe.current=!1,ke(!1);return}j?.("card");let je=ie.sessionId??t,$e=ie.nonce??n,pt=oo(o?.trim()),Ce=Nn({email:ie.accountPatch?.email?.trim()||r?.trim()||Ae.trim(),firstName:ie.accountPatch?.firstName?.trim()||pt.firstName,lastName:ie.accountPatch?.lastName?.trim()||pt.lastName}),ge=Ce.email,ce=Nn({...ie.accountPatch,...Ce});try{if(f?.(null),!gn(ge))throw new Error("A valid email address is required for payment.");await i?.(Ce);let M=await ve.submit();if(M.error){f?.(M.error.message??"Payment failed.");return}let Se=[Ce.firstName,Ce.lastName].filter(Boolean).join(" "),Ue=await D.createPaymentMethod({elements:ve,params:{billing_details:{email:ge,...Se?{name:Se}:{}}}});if(Ue.error||!Ue.paymentMethod){f?.(Ue.error?.message??"Failed to create payment method.");return}let Me=Ue.paymentMethod;if(!je||!ge)throw new Error("Missing sessionId or email for payment.");let V=Me.type||e,Pt=await ui(s,le,je,$e??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:V,paymentMethodId:null,intentKind:"payment"});if(Pt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let ze=Pt.clientSecret;Wt(_r,{clientSecret:ze,sessionId:je,nonce:$e,accountPatch:ce,paymentMethodId:Me.id,paymentMethodType:Me.type??e,gateway:"stripe"});let{error:Te,paymentIntent:Ze}=await D.confirmPayment({clientSecret:ze,confirmParams:{return_url:window.location.href,payment_method:Me.id},redirect:"if_required"});if(Te){Wt(_r);let Fe=Te.message??"Payment failed.";f?.(Fe),u?.(un("card",Fe,{code:Te.code})),await pi({billingApiUrl:s,sessionId:je,nonce:$e,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:Te.code??"provider_declined"}});return}let xe=Ze?.status;if(!ca(xe)){Wt(_r);let Fe=xe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";f?.(Fe),u?.(un("card",Fe,{code:xe??"missing_payment_intent"}));return}Wt(_r);let et=typeof Ze?.payment_method=="string"?Ze.payment_method:Ze?.payment_method?.id;d({id:et??Me.id,type:"card",threeDSecureActionResultTokenId:Ze?.id,gateway:"stripe",paymentMethodType:Me.type??e},{accountPatch:ce,paymentMethodCategory:"apm",sessionId:je,nonce:$e})}catch(M){f?.(M instanceof Error?M.message:"Payment failed. Please try again.")}finally{qe.current=!1,ke(!1)}},[D,ve,L,Re,b,j,t,n,r,o,Ae,i,s,le,e,d,f,u]);return Qe("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Ee&&y("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Ee&&Qe("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",y("input",{type:"email",autoComplete:"email",required:!0,value:Ae,onChange:ie=>ht(ie.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),y(Nu,{onReady:()=>fe("ready"),onLoadError:()=>{fe("load_error"),ks(pn(C),"stripe","apm")},onChange:ie=>{st(!!ie.complete)},options:{layout:Ml,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...gn(r?.trim())?{email:r?.trim()}:{}}}}}),y(xl,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{_e()},disabled:!Re||!He||J||L||qt!=="ready",color:I,borderRadius:N,style:U,children:J?"Processing\u2026":`Pay with ${Sa(e)}`}),h&&y(Ao,{margin:"0.75rem 0 0",children:h})]})}function _c({sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:i,paymentElementMethods:s,stripeInstance:d,paymentElementBaseOptions:f,futureUseSession:u,onTokenizedBody:w,onErrorChange:b,onButtonClick:j,onDecline:L,runBeforeButtonClick:I,onLoadStateChange:N,isProcessing:U=!1,submitButtonColor:h="#4A49FF",submitButtonBorderRadius:C=8,submitButtonStyle:le,buttonAppearance:D,themeId:ve,onExpandApm:J,expandedApmMethod:ke}){let{emitInstrument:qe}=Uo(Zn),[Re,st]=ue(null),[qt,fe]=ue(null),Ae=ne(!1),{request:ht,collect:Ee,finish:He}=_o();gt(()=>{s.length>0&&d?N?.("ready"):d||N?.("loading")},[s.length,d,N]);let _e=Xe(async ge=>{if(!d||Ae.current||U)return;Ae.current=!0,fe(ge);let ce=I?await I("card"):{proceed:!0};if(!ce.proceed){Ae.current=!1,fe(null);return}j?.("card");let M=ce.sessionId??e,Se=ce.nonce??t,Ue=oo([ce.accountPatch?.firstName,ce.accountPatch?.lastName].filter(Boolean).join(" ")||r),Me=Nn({email:ce.accountPatch?.email?.trim()||n?.trim(),firstName:ce.accountPatch?.firstName?.trim()||Ue.firstName,lastName:ce.accountPatch?.lastName?.trim()||Ue.lastName});if(!gn(Me.email)){fe(null);let ze=await Ee(Sa(ge),Me);if(!ze){Ae.current=!1;return}Me=ze,fe(ge)}let V=Me.email,Pt=Nn({...ce.accountPatch,...Me});try{if(b?.(null),!M||!gn(V))throw new Error("Missing sessionId or email for payment.");await o?.(Me);let ze=await ui(i,qe,M,Se??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ge,paymentMethodId:null,intentKind:"payment"});if(ze.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Te=ze.clientSecret;Wt(_r,{clientSecret:Te,sessionId:M,nonce:Se,accountPatch:Pt,paymentMethodType:ge,gateway:"stripe"});let{error:Ze,paymentIntent:xe}=await d.confirmPayment({clientSecret:Te,confirmParams:{return_url:window.location.href,payment_method_data:{type:ge,billing_details:{name:[Me.firstName,Me.lastName].filter(Boolean).join(" "),...V?{email:V}:{}}}},redirect:"if_required"});if(Ze){Wt(_r);let vt=Ze.message??"Payment failed.";b?.(vt),L?.(un("card",vt,{code:Ze.code})),await pi({billingApiUrl:i,sessionId:M,nonce:Se,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ge,providerDeclineReason:Ze.code??"provider_declined"}});return}let et=xe?.status;if(!ca(et)){Wt(_r);let vt=et==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";b?.(vt),L?.(un("card",vt,{code:et??"missing_payment_intent"}));return}Wt(_r);let Fe=typeof xe?.payment_method=="string"?xe.payment_method:xe?.payment_method?.id;w({id:Fe??xe?.id,type:"card",threeDSecureActionResultTokenId:xe?.id,gateway:"stripe",paymentMethodType:ge},{accountPatch:Pt,paymentMethodCategory:"apm",sessionId:M,nonce:Se})}catch(ze){b?.(ze instanceof Error?ze.message:"Payment failed. Please try again.")}finally{Ae.current=!1,fe(null)}},[d,U,I,j,e,t,n,Ee,i,qe,r,o,w,b,L]),[ie,je]=ue(null),$e=J?ke??null:ie,pt=Xe(ge=>{Ae.current||U||$e&&$e!==ge||(fc(ge)?J?J(ge):je(ge):_e(ge))},[$e,U,_e,J]),Ce=ft(()=>ie?Nc(f,ie,u):null,[ie,f,u]);return y("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:ht?y(Eo,{identity:ht.identity,methodLabel:ht.methodLabel,onComplete:He,onCancel:()=>He(null)},ht.id):s.map(ge=>{let ce=ke===ge,M=qt===ge,Se=qt!==null&&qt!==ge||ke!=null&&ke!==ge;return Qe(Ou.Fragment,{children:[y(El,{method:ge,themeId:ve,submitting:M,disabled:Se,highlighted:ce,hasNextStep:fc(ge),onClick:()=>pt(ge),backgroundColor:D?.backgroundColor,borderColor:D?.borderColor,textColor:D?.textColor,borderRadius:D?.borderRadius,fontFamily:D?.fontFamily}),!J&&ie===ge&&Ce&&d&&y(so,{stripe:d,options:Ce,children:y(vs,{method:ge,sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:i,onTokenizedBody:w,onErrorChange:b,onDecline:L,onCancel:()=>je(null),runBeforeButtonClick:I,onButtonClick:j,isProcessing:U,submitButtonColor:h,submitButtonBorderRadius:C,submitButtonStyle:le})},ge)]},ge)})})}function pp({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,email:o,userId:i,onComplete:s,onError:d,onDecline:f,onTokenizedBody:u,firstName:w,lastName:b,chv:j,className:L,submitLabel:I,isProcessing:N,error:U,onErrorChange:h,showPayPal:C=!0,showStripe:le=!0,walletPresentation:D="auto",enabledPaymentMethods:ve,enabledPaymentMethodCountries:J,showApplePay:ke=!0,showGooglePay:qe=!0,layout:Re="default",theme:st,buttonsTheme:qt,buttonsStyles:fe,appearance:Ae,cardButtonContent:ht,cardBackButtonContent:Ee,cardTitleContent:He,showSecurityFooter:_e,onButtonClick:ie,onBeforeButtonClick:je,onBuyerIdentityReady:$e,enableAVS:pt,cardFieldOrder:Ce,cardPreFormSlot:ge,avsLayout:ce="row",country:M,zip:Se,addressLine1:Ue,addressLine2:Me,city:V,state:Pt,onCountryChange:ze,onZipChange:Te,avsCheck:Ze,checkoutType:xe,checkoutLayout:et,totalAmount:Fe=0,currency:vt="usd",initialCardOpen:Gt=!1,directPaypal:mt,isSubscription:Tt=!1,session:E,dataAttachmentPending:se=!1,dataAttachmentRequiresIdentity:De=!1,debug:F=!1}){let we=Vr(),yt=Hi(),Ne=Uo(ur),{emitInstrument:St}=Uo(Zn),T=ne(null);T.current||(T.current=Ha());let p=T.current,[,g]=ue(0),x=ne(null);x.current||(x.current=ia());let A=x.current,re=ft(()=>({browser:A,capability:p,presentationMode:"popup"}),[A,p]),ct=E??Ne.session,he=ft(()=>({futureUse:ct?.futureUse,futureUseUnsupported:ct?.futureUseUnsupported}),[ct?.futureUse,ct?.futureUseUnsupported]),Ke=ct?.gateways?.paypal?.providerObjectType??mt?.providerObjectType,X=se||Ne.claimPending===!0,jt=De||Ne.claimRequiresIdentity===!0,bt=X&&!jt,At=Zl(),at=n||At,[de,_n]=ue(!1),[On,mn]=ue(null),[$t,Ln]=ue(M??""),[Un,hn]=ue(Se??""),[Mt,Ge]=ue(Ue??""),[Oe,En]=ue(Me??""),[wt,zn]=ue(V??""),[yn,Kt]=ue(Pt??""),[Qt,er]=ue(""),[Wn,en]=ue({}),It=ne(Se??""),tn=ne(M??""),rn=ne(Ue??""),Dt=ne(Me??""),sn=ne(V??""),Ot=ne(Pt??""),on=ne(""),Nt=ne({});gt(()=>{let a=(v,O,Pe,q,ae)=>{if(Nt.current[v])return;let _t=O?.trim();!_t||_t===Pe.current||(Pe.current=_t,q(_t),ae?.(_t))};a("country",M,tn,Ln,ze),a("zip",Se,It,hn,Te),a("addressLine1",Ue,rn,Ge),a("addressLine2",Me,Dt,En),a("city",V,sn,zn),a("state",Pt,Ot,Kt)},[M,Se,Ue,Me,V,Pt,ze,Te]);let W=ft(()=>xu(pt),[pt]),tr=W!==null,nr=ft(()=>us(E),[E]),rr=Ru(E?.vault),nn=!!E?.gateways?.pcivault,Tn=$i(E),me=!!(E?.gateways?.stripe?.enabledPaymentMethods??ve)?.includes("card")||qr(E),tt=rr||me||nn,m=!!(le&&tt&&e),[Be,$]=ue(()=>Re!=="buttons"||Gt?e??null:null),[Pn,qn]=ue(0),Yt=Re!=="buttons"||Gt||!!e&&Be===e,An=E?.captureMethod,nt=ne(we);gt(()=>{nt.current=we},[we]);let[or,Zr]=ue(null);gt(()=>{if(!m||!e||!Yt){Zr(null);return}let a=nt.current?nt.current.cardCapture({sessionId:e,captureMethod:An}):new vu({sessionId:e,captureMethod:An,billingApiUrl:at,telemetry:r});return Zr({sessionId:e,captureMethod:An,billingApiUrl:at,telemetry:r,capture:a}),()=>{a.unmount()}},[m,e,Yt,An,at,r]);let kt=m&&e&&Yt&&or?.sessionId===e&&or.captureMethod===An&&or.billingApiUrl===at&&or.telemetry===r?or.capture:null,Mn=ft(()=>{let a=$t,v=W?ot(W.postal_code,a):!1;return cp(a,Un,v)},[W,$t,Un]),{avsInvalid:fr,invalidAvsFields:Hn}=ft(()=>{let a={line1:!1,city:!1,state:!1,zip:!1};if(!m||!W)return{avsInvalid:!1,invalidAvsFields:a};let v=$t,O=(ae,_t)=>ot(ae,v)&&!_t.trim(),Pe={line1:O(W.address_line_1,Mt),city:O(W.city,wt),state:O(W.state,yn),zip:Mn.empty||Mn.malformed};return{avsInvalid:Pe.line1||Pe.city||Pe.state||Pe.zip,invalidAvsFields:Pe}},[m,W,$t,Mt,wt,yn,Mn]),[Jt,ar]=ue(!1),[xn,Tr]=ue(!1),[Bn,gr]=ue(!1),[hr,Ar]=ue({line1:!1,city:!1,state:!1}),jn=ne(!1),Gn=ne({email:!1,line1:!1,city:!1,state:!1,zip:!1}),Mr=ne(!1),xt=Xe(a=>{Gn.current[a]=!0,Mr.current=!0},[]),wn=Xe(a=>!jn.current&&Gn.current[a],[]),Yn=Xe(a=>{wn(a)&&Ar(v=>v[a]?v:{...v,[a]:!0})},[wn]),[ir,Pr]=ue(()=>ms(E?.vault,{billingApiUrl:at,sessionId:e,nonce:t})),[Ve,ln]=ue(Gt&&tt?"card":"buttons"),[cn,In]=ue(null),Qr=Ve==="expanding"||Ve==="card",vr=E?.gateways?.stripe&&!Tn?"stripe":void 0,Or=Xe(()=>{St?.({class:"card_surface",provider:vr})},[vr,St]),kn=ne(null),dn=Xe(a=>{kn.current&&clearTimeout(kn.current),kn.current=setTimeout(()=>{kn.current=null,a()},wa)},[]);gt(()=>()=>{kn.current&&clearTimeout(kn.current)},[]);let sr=ne(!1),[fn,k]=ue(0),_=ne(null),K=Xe(()=>{Or(),$(e??null),sr.current&&(sr.current=!1,k(a=>a+1)),qn(a=>a+1),ln("expanding"),dn(()=>ln("card"))},[dn,Or,e]),oe=Xe(()=>{ln("collapsing"),dn(()=>ln("buttons"))},[dn]),it=Xe(a=>{In(a),ln("apm-expanding"),dn(()=>ln("apm-form"))},[dn]),Xt=Xe(()=>{ln("apm-collapsing"),dn(()=>{ln("buttons"),In(null)})},[dn]);gt(()=>{Re==="buttons"&&Gt&&tt&&($(e??null),ln("card"))},[Re,Gt,tt,e]);let[ee,H]=ue(null),B=ne(!1),l=ne(null),c=ne("idle"),[S,R]=ue(!1),te=ne(S);te.current=S;let[Z,dt]=ue(()=>mt?.existingOrderId?{orderId:mt.existingOrderId,attempts:1}:null),Lt=ne(Z);gt(()=>{Lt.current=Z},[Z]);let be=ne(null),Ie=ft(()=>{if($e||Ne.claimBuyerIdentity||E?.buyerIdentified!==!1||!e||!t)return;let a=`${at}|${e}|${t}`;be.current?.key!==a&&(be.current={key:a,claim:ko(new Oo(at,{telemetry:!1}),e,t,{...i?{userId:i}:{},...w?{firstName:w}:{},...b?{lastName:b}:{}})});let v=be.current.claim;return async O=>{await v(O)}},[$e,Ne.claimBuyerIdentity,E?.buyerIdentified,e,t,at,i,w,b]),We=$e??Ne.claimBuyerIdentity??Ie,G=U??On,Q=ft(()=>Fu(st),[st]),P=ft(()=>{let a=Q?.buttonsLayout??Bu(qt);return fe?{...a,...fe,cardButton:{...a.cardButton,...fe.cardButton},cardFormContainer:{...a.cardFormContainer,...fe.cardFormContainer},backButton:{...a.backButton,...fe.backButton},backButtonIcon:{...a.backButtonIcon,...fe.backButtonIcon},submitButton:{...a.submitButton,...fe.submitButton},title:{...a.title,...fe.title}}:a},[Q,qt,fe]),Y=Ae??Q?.appearance,Ye=ft(()=>Il({appearance:Y,buttonsStyles:P,layout:Re}),[Y,P,Re]),Rt=Ne.inlineSessionPatchProcessing??!1,z=(N??de)||Rt,vn=at.replace(/\/+$/,""),Le=ft(()=>Vi({userId:i,email:o,firstName:w,lastName:b,country:M,zip:Se},Wn),[i,o,w,b,M,Se,Wn]),co=[Le.firstName,Le.lastName].filter(a=>!!a?.trim()).join(" "),Ls=!gn(Le.email?.trim()),hi=ne(null);m&&hi.current===null&&(hi.current=Ls);let Lr=m&&(hi.current??Ls),Pi=ft(()=>dp(Qt,Lr),[Qt,Lr]),uo=Pi.empty||Pi.malformed,$n=ft(()=>we?we.getRawProvider():null,[we]),Us=ft(()=>yt?yt.getRawProvider():null,[yt]),Ko=Fe||100,po=vt.toLowerCase(),vi=ft(()=>Y?bu(Y):null,[Y]),mo=vi,zs=ft(()=>{let a=vi??{},v=a.rules??{};return{...a,rules:{...v,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...v[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...v[".AccordionItemContents"]??{}}}}},[vi]),qs=ft(()=>({...Wl(Fe,ct?.captureMethod,he),currency:po,...mo?{appearance:mo}:null}),[Fe,po,ct?.captureMethod,he,mo]),bi=Ec(he,"paypal","paypal"),js=ft(()=>({mode:"payment",amount:Ko,currency:po,captureMethod:"manual",...bi?{setupFutureUsage:bi}:null,...mo?{appearance:mo}:null}),[Ko,po,bi,mo]),ye=Xe(a=>{mn(a),h?.(a)},[h]),$s=ne(0);gt(()=>{fn!==$s.current&&($s.current=fn,ye(null))},[fn,ye]);let Ci=ne(""),[Ks,Yc]=ue(!1),Si=Xe(()=>{Yc(!0)},[]);gt(()=>{if(!m||!Lr||!We||!Ks||uo||Ci.current)return;let a=Nn({email:gn(Le.email?.trim())?Le.email?.trim():on.current.trim(),firstName:Le.firstName?.trim(),lastName:Le.lastName?.trim()});Ci.current=JSON.stringify(a),en(v=>({...v,...a})),Promise.resolve(We(a)).catch(v=>{Ci.current="",ye(v instanceof Error?v.message:"Failed to attach buyer details.")})},[m,Lr,We,Ks,uo,Le.email,Le.firstName,Le.lastName,ye]),gt(()=>{!m||!kt||kt.setCardFieldOrder?.(Ce??null,W==null&&!Lr)},[m,kt,Ce,W,Lr]),gt(()=>{(Ve==="expanding"||Ve==="collapsing"||Ve==="apm-expanding"||Ve==="apm-collapsing")&&ye(null)},[Ve,ye]);let br=Xe((a,v,O)=>{f?.(un(a,v,O))},[f]),yo=Xe((a,v,O)=>{let Pe=O?.popupBlocked??zr(v);Pe&&p.markBlocked()&&g(Je=>Je+1);let q=Ua(Ps(a),Pe,A.inAppBrowser),ae=Ur(v),_t=(ae?.toLowerCase()==="error"?void 0:ae)??kl(O?.code)??"external_payment_method_failed",dr=new mr(q,"api_error",{code:"external_payment_method_failed",param:a,details:{providerCode:_t,popupBlocked:Pe,inAppBrowser:A.inAppBrowser,appFamily:A.appFamily,popupCapability:p.current(),presentationMode:O?.presentationMode??"popup"}});O?.telemetryReported||pn(we)?.error(No({...re,presentationMode:O?.presentationMode??"popup"},{errorCode:Pe?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:O?.provider??(a==="paypal"?"paypal":"stripe"),paymentMethodCategory:O?.paymentMethodCategory??(a==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:O?.terminalReason??(Pe?"popup_blocked":"provider_error")})),H(null),Re==="buttons"&&(ln("buttons"),In(null)),ye(q),d?.(dr),console.error("[FloPay] External payment method failed:",{method:a,code:_t,popupBlocked:Pe})},[A,re,we,Re,d,p,ye]);gt(()=>{if(!m||!e){Pr(null);return}let a={billingApiUrl:vn,sessionId:e,nonce:t},v=ms(E?.vault,a);if(v){Pr(v);return}if(!Yt){Pr(null);return}let O=`${vn}\0${e}\0${t??""}`,Pe=_.current;if(Pe&&Pe.key===O){Pr(Pe.mount);return}Pr(null);let q=!0;return new Oo(vn).getVaultCapture(e,t).then(ae=>{if(!q)return;let _t=ms(ae,a);_t?.verificationRequired&&!ae.html&&(_.current={key:O,mount:_t}),_t?Pr(_t):ye("Failed to load the secure card form.")}).catch(ae=>{q&&ye(ae instanceof Error?ae.message:"Failed to load the secure card form.")}),()=>{q=!1}},[m,Yt,Pn,e,E?.vault,vn,t,ye]);let lr=ne({onComplete:s,onError:d,updateError:ye,emitDecline:br,resolvedAccount:Le,avsConfig:W,avsCheckProp:Ze,sessionId:e,nonce:t,baseUrl:vn,captureMethod:E?.captureMethod,paymentId:E?.paymentId,authorizationExpiresAt:E?.authorizationExpiresAt,serverSideCardGateway:Tn});lr.current={onComplete:s,onError:d,updateError:ye,emitDecline:br,resolvedAccount:Le,avsConfig:W,avsCheckProp:Ze,sessionId:e,nonce:t,baseUrl:vn,captureMethod:E?.captureMethod,paymentId:E?.paymentId,authorizationExpiresAt:E?.authorizationExpiresAt,serverSideCardGateway:Tn};let wi=ne(!1),Vs=Xe(()=>{let a=lr.current,v=a.resolvedAccount.email?.trim(),O=gn(v)?v:on.current.trim();if(!gn(O))return null;let Pe=a.resolvedAccount.firstName?.trim(),q=a.resolvedAccount.lastName?.trim(),ae=tn.current.trim()||a.resolvedAccount.country?.trim()||"",_t=a.avsConfig?ot(a.avsConfig.state,ae):!1,dr=a.avsConfig?ot(a.avsConfig.address_line_1,ae):!1,Je=a.avsConfig?ot(a.avsConfig.postal_code,ae):!1,lt=a.avsConfig?ot(a.avsConfig.city,ae):!1,ut=a.avsConfig?ot(a.avsConfig.address_line_2,ae):!1,Ut=dr&&!_t&&Je?yc(ae,(It.current??"").trim()):null,no=_t?Ot.current:Ut;return{accountData:{userId:a.resolvedAccount.userId??"",email:O,...Pe?{firstName:Pe}:{},...q?{lastName:q}:{},...Je&&It.current?{zip:It.current}:{},...lt&&sn.current?{city:sn.current}:{},...no?{state:no}:{},...dr&&rn.current?{addressLine1:rn.current}:{},...ut&&Dt.current?{addressLine2:Dt.current}:{},...ae?{country:ae}:{}},...a.avsCheckProp===void 0?{}:{avsCheck:a.avsCheckProp},...a.avsConfig?{avsConfig:{country:ot(a.avsConfig.country,ae),postal_code:Je,address_line_1:dr,address_line_2:ut,city:lt,state:_t}}:{}}},[]),Ws=ne(X);Ws.current=X,gt(()=>{X||G!==vc||lr.current.updateError(null)},[X,G]),gt(()=>{!m||!kt||kt.setSubmitGate?.(fr||X||uo||S)},[m,kt,fr,X,uo,S]),gt(()=>{if(!m||!kt)return;wi.current=!1;let a=null,v=()=>{a&&clearTimeout(a),a=setTimeout(()=>{a=null,c.current="idle",H(null)},400)},O=kt.on("submitting",()=>{ar(!0),l.current&&clearTimeout(l.current),c.current="validation-window",l.current=setTimeout(()=>{l.current=null,c.current==="validation-window"&&(c.current="processing")},Zu),H("processing");let Je=lr.current;if(!Je.sessionId||!Je.nonce)return;let lt=Vs();if(!lt){Je.updateError("Enter a valid email address."),c.current="idle",H(null);return}new Oo(Je.baseUrl).patchAccountSnapshot(Je.sessionId,Je.nonce,lt,{telemetryMode:"best_effort"}).catch(ut=>{if(!ep(ut))return;let Ut=ut instanceof Error?ut.message:"Please check your billing address and try again.";Je.updateError(Ut),c.current="idle",H(null),Je.onError?.(ut instanceof mr?ut:new mr(Ut,"api_error"))})}),Pe=kt.on("complete",Je=>{Bo(Je.sessionId??lr.current.sessionId),c.current="terminal",R(!1),H("success"),setTimeout(()=>{if(wi.current)return;wi.current=!0;let lt=lr.current,ut=us(lt)||Je.outcome==="authorized",Ut=lt.serverSideCardGateway?{}:{paymentIntentId:Je.intentId};lr.current.onComplete?.(ut?{status:"authorized",...Ut,paymentId:Je.paymentId??lt.paymentId,sessionId:Je.sessionId??lt.sessionId,authorizationExpiresAt:Je.authorizationExpiresAt??lt.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Ut,checkoutMethod:"card"})},600)}),q=kt.on("decline",Je=>{let lt=lr.current,ut=Je.message??"Your payment was declined. Please try another card or contact your bank.";c.current="terminal",R(!1),lt.updateError(ut),H("error");let Ut=Je.failureOutcome??Tu(Je.declineReason)??"authorization_declined";lt.emitDecline("card",ut,{code:Ut,declineCode:Ut}),v()}),ae=kt.on("error",Je=>{let lt=lr.current,ut=Je.message??"There was a problem processing your payment. Please try again.";c.current="terminal",R(!1),lt.updateError(ut),H("error"),lt.onError?.(new mr(ut,"api_error",{code:Je.failureOutcome??"capture_failed"})),v()}),_t=kt.on("challenge_dismissed",()=>{l.current&&(clearTimeout(l.current),l.current=null),c.current="processing",R(!0),H(null)}),dr=kt.on("blocked",()=>{if(te.current){lr.current.updateError(Qu);return}if(!Ws.current){ar(!0);return}Si(),lr.current.updateError(vc)});return()=>{a&&(clearTimeout(a),a=null),l.current&&(clearTimeout(l.current),l.current=null),c.current="idle",R(!1),H(null),O(),Pe(),q(),ae(),_t(),dr()}},[m,kt,Si,Vs]);let Cr=!!mt?.clientId,Vo=Array.isArray(ve),Ea=Vo&&ve.length>0,Hs=Vo&&ve.includes("paypal"),Ta=ne(null);Ta.current===null&&(Ta.current=Ju());let fo=Ta.current?"redirect":_l(A,D,p.current()),{expressMethods:Aa,paymentElementMethods:Wo}=ft(()=>Au(ve,{excludePaypal:Cr}),[ve,Cr]),Gs=Cr||!!yt||Hs&&fo==="redirect",Jc=ft(()=>Gs?Aa.filter(a=>a!=="paypal"):Aa,[Aa,Gs]),Xc=ft(()=>{let a=[];return ke&&a.push("apple_pay"),qe&&a.push("google_pay"),a},[ke,qe]),go=Vo?Jc:Xc,Zc=le&&go.length>0,Ii=tr?$t:M,Ma=ft(()=>{let a=Ii?.trim().toUpperCase();return a?J?Wo.filter(v=>{let O=J[v];return!O||O.length===0||O.includes(a)}):wu(Wo,Ii):Wo},[Wo,Ii,J]),ki=ft(()=>({mode:"payment",amount:Ko,currency:po,paymentMethodCreation:"manual",appearance:zs}),[Ko,po,zs]),[Ys,Js]=ue("loading"),[Xs,Zs]=ue("loading"),[Qs,el]=ue("loading"),[Qc,Ri]=ue(!1),[tl,_i]=ue("loading"),[Ei,ed]=ue();gt(()=>{ed(ia())},[]);let xa=Ei?.inAppBrowser,Ba=Ei?qa(Ei,mt?.approvalPresentation,Ke??(Tt?"subscription":"order")):"popup",nl=C&&(Cr||(Vo?Hs:xa===!1)),rl=le&&Zc,Ho=(!bt||!!Ne.waitForDataAttachment)&&nl&&Cr,ol=tl==="retrying"||tl==="exhausted",Go=null;le&&(yt?Go=Us:fo==="redirect"&&(Go=$n));let al=ft(()=>({...re,presentationMode:fo}),[re,fo]),Yo=!bt&&nl&&!!Go&&(!Cr||ol),ho=!bt&&rl&&!!$n,Jo=!bt&&le&&Ea&&Ma.length>0&&!!$n,td=Ho&&!ol?Qc:Yo&&qi(Ys),nd=ho&&qi(Xs),rd=Jo&&Qs!=="load_error",il=a=>a==="loading"||a==="ready",sl=Ho||Yo&&il(Ys)||ho&&il(Xs)||Jo&&Qs!=="load_error",Fa=ne(!1);gt(()=>{if(!Fa.current){if(!le&&!C){Fa.current=!0;let a=new mr("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");d?.(a),ye(a.message)}else if(!le&&C&&!Cr){Fa.current=!0;let a=new mr("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");d?.(a),ye(a.message)}else if(xa!==void 0&&!bt&&!tt&&!sl){Fa.current=!0;let a=new mr("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"});d?.(a),ye(a.message)}}},[le,C,Cr,xa,bt,tt,sl,d,ye]);let ll=ne(!1);gt(()=>{if(ll.current||!Ea)return;let a=[];ke!==!0&&a.push("showApplePay"),qe!==!0&&a.push("showGooglePay"),a.length!==0&&(ll.current=!0,console.warn(`[FloPay] ${a.join(" / ")} ${a.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.`))},[Ea,ke,qe]);let cl=Xe((a,v)=>Ne.applyInlineSessionPatch?Ne.applyInlineSessionPatch(a).then(O=>({error:null,sessionId:O.sessionId||e,nonce:O.session?.clientSecret||t})).catch(O=>{let Pe=wc(v,O);return ye(Pe.message),d?.(Pe),{error:Pe,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ne.applyInlineSessionPatch,t,d,e,ye]),cr=Xe(async a=>{if(a!=="card"&&bt&&await Ne.waitForDataAttachment?.(),!je)return{proceed:!0};try{let v=await je({method:a,sessionId:e||void 0,createSession:Ne.inlineSessionDraft});if(v===!1)return{proceed:!1};if(v&&typeof v=="object"){v.account&&en(Pe=>({...Pe??{},...v.account}));let O=await cl(v,a);return O.error?{proceed:!1,accountPatch:v.account}:{proceed:!0,accountPatch:v.account,sessionId:O.sessionId,nonce:O.nonce}}return{proceed:!0}}catch(v){let O=wc(a,v);return ye(O.message),d?.(O),{proceed:!1}}},[cl,Ne.inlineSessionDraft,Ne.waitForDataAttachment,bt,je,d,e,ye]),dl=Xe(async(a,v)=>{if(B.current)return;B.current=!0,_n(!0),H("processing"),ye(null);let O=v?.sessionId??e,Pe=v?.nonce??t,q=Vi(Le,v?.accountPatch),ae=v?.completionPaymentMethodId??da(a),_t=a.originalPaymentMethodId?{...a,originalPaymentMethodId:void 0}:a,dr=op(a),Je=v?.presentationMode?si(pn(we),{...re,presentationMode:v.presentationMode}):void 0,lt=()=>{St?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:dr}),Je?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...pr,requestCategory:"process_payment"})};try{let ut=new Oo(vn),Ut=await ut.processPayment(q.userId??"",{sessionId:O,nonce:Pe,paymentMethodCategory:v?.paymentMethodCategory??ip(a),tokenizedData:_t,accountData:{...v?.accountPatch,userId:q.userId??"",email:q.email??"",firstName:q.firstName||void 0,lastName:q.lastName||void 0,...W?(()=>{let Et=tn.current,Sr=ot(W.state,Et),Vn=ot(W.address_line_1,Et),wr=ot(W.postal_code,Et),ro=Vn&&!Sr&&wr?yc(Et,(It.current??"").trim()):null,na=Sr?Ot.current:ro;return{country:Et,...wr&&It.current?{zip:It.current}:{},...ot(W.city,Et)&&sn.current?{city:sn.current}:{},...na?{state:na}:{},...Vn&&rn.current?{addressLine1:rn.current}:{},...ot(W.address_line_2,Et)&&Dt.current?{addressLine2:Dt.current}:{}}})():{}},chv:j,avsCheck:Ze??!1,checkoutType:xe,checkoutLayout:et,avsConfig:W?{country:ot(W.country,tn.current),postal_code:ot(W.postal_code,tn.current),address_line_1:ot(W.address_line_1,tn.current),address_line_2:ot(W.address_line_2,tn.current),city:ot(W.city,tn.current),state:ot(W.state,tn.current)}:void 0}),no=async Et=>{let Sr=us(E)||Et?.status==="authorized";Bo(O),Je?.terminal({outcome:"payment_succeeded",...pr}),H("success"),dt(null),await new Promise(ro=>setTimeout(ro,600));let Vn;typeof Et?.paymentId=="string"?Vn=Et.paymentId:E?.paymentId&&(Vn=E.paymentId);let wr;typeof Et?.authorizationExpiresAt=="string"?wr=Et.authorizationExpiresAt:E?.authorizationExpiresAt&&(wr=E.authorizationExpiresAt),s?.(Sr?{status:"authorized",...Vn===void 0?{}:{paymentId:Vn},sessionId:typeof Et?.sessionId=="string"?Et.sessionId:O,...wr===void 0?{}:{authorizationExpiresAt:wr},paymentIntentId:a.threeDSecureActionResultTokenId,paymentMethodId:ae,checkoutMethod:a.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:a.threeDSecureActionResultTokenId,paymentMethodId:ae,checkoutMethod:a.isPaypal?"paypal":"card"})};if(Ut.ok){await no(Ut.status===204?null:await Ut.json().catch(()=>null));return}let Kn=await Ut.json().catch(()=>null);if(Kn?.type==="paypal_redirect_required"){let Et=Kn.threeDSecureToken,Sr=Kn.paymentMethodId||a.id||"";if(!we||!Et){H("error"),ye("PayPal authorization required but no token provided.");return}try{let Vn=yt?.getRawProvider();if(!Vn){ye("PayPal is not available.");return}let wr={return_url:window.location.href};Sr&&(wr.payment_method=Sr);let{error:ro}=await Vn.confirmPayment({clientSecret:Et,confirmParams:wr,redirect:"if_required"});if(ro){H("error");let na=ro.message??"PayPal payment failed.";ye(na),br("paypal",na,{code:ro.code})}}catch(Vn){H("error"),ye(Vn instanceof Error?Vn.message:"PayPal authorization failed.")}return}if(Kn?.type==="paypal_direct_required"){let Et=Kn.orderId;if(!Et){H("error"),ye("PayPal retry required but no order id provided.");return}let Sr=Lt.current?.attempts??0;if(Sr>=2){H("error"),ye("PayPal payment could not be completed after multiple attempts."),br("paypal","paypal_direct_required retry limit exceeded");return}Ri(!1),_i("loading"),dt({orderId:Et,attempts:Sr+1}),H(null);return}if(Ut.headers.get($u)===Ku){let Et=await Vu(ut,O,Pe);if(Et!==void 0){await no(Et);return}}Su(Ut.status,Kn)?Je?.terminal({outcome:"payment_declined",...pr,terminalReason:"provider_declined"}):lt(),H("error");let Cl=Kn?.message??"Payment failed. Please try again.";ye(Cl),br(a.isPaypal?"paypal":"card",Cl,{code:Kn?.code??Kn?.gatewayErrorCode,declineCode:Kn?.declineCode??Kn?.gatewayDeclineReason}),await new Promise(Et=>setTimeout(Et,400))}catch(ut){Bc(ut)||lt(),H("error"),ye(ut instanceof Error?ut.message:"An unexpected error occurred"),await new Promise(Ut=>setTimeout(Ut,400))}finally{_n(!1),H(null),B.current=!1}},[vn,e,t,Le,W,Ze,xe,et,j,we,yt,E,s,ye,br,St,re]),Fn=Xe((a,v)=>{u?u(a):dl(a,v)},[u,dl]),Xo=`${Ac}:${e}`;gt(()=>{if(typeof window>"u")return;let a=localStorage.getItem(Xo);if(!a)return;let v;try{v=JSON.parse(a)}catch{Wt(Xo);return}if(!v||typeof v.createdAt!="number"||Date.now()-v.createdAt<0||Date.now()-v.createdAt>Mc||typeof v.paymentMethodId!="string"||typeof v.providerIntentId!="string"||typeof v.paymentMethodType!="string"||v.sessionId!==e||!t||v.nonce!==t||!go.includes(v.paymentMethodType)){Wt(Xo);return}Wt(Xo),Fn({id:v.paymentMethodId,type:"card",threeDSecureActionResultTokenId:v.providerIntentId,gateway:"stripe",paymentMethodType:v.paymentMethodType},{...v.accountPatch?{accountPatch:v.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Fn,t,e,Xo,go]);let ul=ne(!1);gt(()=>{if(typeof window>"u"||ul.current)return;let[a,v,O]=ws();if(!a||!v||Ta.current||!we)return;let Pe=we.getRawProvider();if(!Pe)return;let q=lt=>{let ut=localStorage.getItem(lt);if(!ut)return null;try{return JSON.parse(ut)}catch{return Wt(lt),null}},ae=q(_r)??q(gc),_t;if(ae?.clientSecret){if(ae.clientSecret!==v)return;_t={...ae.accountPatch?{accountPatch:ae.accountPatch}:{},...ae.sessionId?{sessionId:ae.sessionId}:{},...ae.nonce?{nonce:ae.nonce}:{}}}else if(ae?.sessionId&&ae.sessionId!==e)return;ul.current=!0,Wt(_r),Wt(gc),window.history.replaceState({},"",Is());let dr=ae?.paymentMethodType??ae?.tokenType??"card",Je="card";(async()=>{if(O==="failed"){let xr="Payment was declined. Please try again.";ye(xr),br(Je,xr);return}let{paymentIntent:lt,error:ut}=await Pe.retrievePaymentIntent(v);if(ut){let xr=ut.message??"Failed to retrieve payment status.";ye(xr),br(Je,xr,{code:ut.code});return}let Ut=lt?.status,no=ca(Ut);if(!lt||!no){let xr=Ut==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";ye(xr),br(Je,xr,{code:Ut??"missing_payment_intent"});return}let Kn=typeof lt.payment_method=="string"?lt.payment_method:lt.payment_method?.id;Fn({id:Kn??ae?.paymentMethodId??ae?.tokenId??lt.id,type:"card",threeDSecureActionResultTokenId:lt.id,gateway:ae?.gateway??"stripe",paymentMethodType:dr},_t)})()},[e,Fn,we,ye,br]);let Ti=Xe(a=>{a.preventDefault()},[]);if(!(m||we!==null))return y("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let Zo=Re==="buttons",Dn=Y?.variables,od=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Ai=Dn?.colorBackground,ad=Ai&&!od.has(Ai)?Ai:void 0,Qo=P.cardInputBorder??(Zo?"#e5e7eb":"#A4A4FF"),pl=Dn?.colorDanger??"#dc2626",Vt=a=>Hn[a]&&(hr[a]||Jt),Da=uo&&(Bn||Jt),Jn=a=>a?pl:Qo,Na=(Mn.malformed||Mn.empty)&&(xn||Jt),id=Jn(Na),Mi=P.cardFormContainer?.backgroundColor??ad??(Zo?"white":"#EDEDFF"),Po=P.cardInputBackground??Dn?.colorBackground??"white",xi=Co(Ee),ml=Co(He),vo=P.nameInput,yl=P.cardInputFontSize??up(vo?.fontSize)??Dn?.fontSizeBase??"16px",fl=typeof vo?.fontFamily=="string"?vo.fontFamily:Dn?.fontFamily??"Poppins, sans-serif",gl=wl(vo?.fontWeight)??400,sd=P.cardInputColor??(typeof vo?.color=="string"?vo.color:void 0)??Dn?.colorText??"#262833",ld=P.cardInputPlaceholderColor??"#9ca3af",Zt=Dn?.borderRadius??"8px",eo=Dn?.borderRadius??P.cardButton?.borderRadius??Zt,to=Dn?.colorPrimary??"#4A49FF",cd=Dn?.colorPrimaryHover??oa(to,.12),Bi=Dn?.colorText??"#262833",Fi={fontSize:yl,fontFamily:fl,fontWeight:gl,color:sd,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},ea={marginTop:"0.375rem",...Fi,fontSize:"0.75rem",lineHeight:1.4,color:pl},dd={"--flopay-input-placeholder-color":ld,"--flopay-input-font-size":yl,"--flopay-input-font-family":fl,"--flopay-input-font-weight":String(gl)},ta=P.cardFormContainer??{},Di=ta.padding??(Zo?"0":"1rem"),Ni=ta.borderRadius??Zt,ud=kt&&ir?y(Oi,{capture:kt,html:ir.html,messageToken:ir.messageToken,expectedOrigin:ir.expectedOrigin,verificationRequired:ir.verificationRequired,theme:Ye,submitLabel:I,onReady:()=>{if(!Lr&&!W||typeof document>"u")return;let a=()=>{let O=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(O){jn.current=!0;try{O.focus()}finally{jn.current=!1}}};Mr.current||a()},onError:a=>{a&&ir.verificationRequired&&c.current==="idle"&&(sr.current=!0),ye(a)},onValidation:a=>{let v=c.current;(v==="idle"||v==="validation-window")&&(ye(a),a&&c.current==="validation-window"&&(l.current&&(clearTimeout(l.current),l.current=null),c.current="idle",H(null)))}},fn):y("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"}),hl=Qe("div",{onFocusCapture:a=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(a.target.tagName)&&Or()},style:{backgroundColor:Mi,borderRadius:Ni,...ta,padding:Di,...dd,display:"flex",flexDirection:"column"},children:[y("style",{children:`
|
|
5
5
|
.flopay-shared-input::placeholder {
|
|
6
6
|
color: var(--flopay-input-placeholder-color);
|
|
7
7
|
opacity: 1;
|
|
@@ -9,13 +9,13 @@ ${At.join(`
|
|
|
9
9
|
font-family: var(--flopay-input-font-family);
|
|
10
10
|
font-weight: var(--flopay-input-font-weight);
|
|
11
11
|
}
|
|
12
|
-
`}),
|
|
13
|
-
`)}):null,
|
|
14
|
-
`)}):null,fl=He==="apm-expanding"||He==="apm-form"||He==="apm-collapsing",Po;He==="apm-expanding"?Po=fc:He==="apm-collapsing"&&(Po=gc);let Na=ln?Mc(Si,ln,ge):null;if(_e==="buttons"){let a=He==="buttons"||He==="expanding"||He==="apm-expanding",P=He==="expanding"||He==="card"||He==="collapsing",U=Pt===void 0?{boxSizing:"border-box",height:aa,padding:"0 1rem"}:{padding:"0.9rem 1rem"},ve;He==="expanding"||He==="apm-expanding"?ve=Yu:(He==="collapsing"||He==="apm-collapsing")&&(ve=Gu);let Z;return He==="expanding"?Z=fc:He==="collapsing"&&(Z=gc),Ze("form",{onSubmit:_i,className:$,noValidate:!0,style:{position:"relative"},children:[y(za,{}),O&&y(br,{status:O,errorMessage:at,authorized:tr}),Ze("div",{style:{display:"grid"},children:[Ze("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!a&&!ve?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!a&&!ve?Xu:{},...ve?{animation:ve,pointerEvents:"none"}:{}},children:[ml("flopay-direct-paypal-gate-debug"),yl("flopay-stripe-gate-debug"),Wo&&ft&&Ze(No,{children:[c&&y("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."}),y(da.Provider,{value:p,children:y(Ga,{sessionId:e,nonce:t,billingApiUrl:st,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,clientId:ft.clientId,environment:ft.environment,currency:Ct.toUpperCase(),isSubscription:Tt,providerObjectType:We,approvalPresentation:Ma==="popup"?void 0:Ma,onTokenizedBody:Bn,onComplete:s,onErrorChange:Pe,onDecline:f,onTechnicalFailure:po,onButtonClick:ne,runBeforeButtonClick:sr,isProcessing:A,onLoadStateChange:wi,onInitializationStateChange:Ii,session:ut,existingOrderId:c?.orderId,debug:L},c?.orderId??"fresh")})]}),Vo&&y(io,{stripe:Ho,options:Ls,children:y(vc,{sessionId:e,nonce:t,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,billingApiUrl:st,onTokenizedBody:Bn,onErrorChange:Pe,isProcessing:A,onButtonClick:ne,onDecline:f,onTechnicalFailure:po,runBeforeButtonClick:sr,onLoadStateChange:Ws,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:el,presentationMode:mo})}),fo?y(io,{stripe:jn,options:Os,children:y(bc,{sessionId:e,nonce:t,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,billingApiUrl:st,intentKind:Ne>0?"payment":"setup",expressMethods:yo,onTokenizedBody:Bn,onErrorChange:Pe,onButtonClick:ne,onDecline:f,onTechnicalFailure:po,runBeforeButtonClick:sr,onLoadStateChange:Vs,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:ee})}):null,!fo&&Zs?y("div",{style:{height:aa,borderRadius:eo,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,Go&&y(Sc,{sessionId:e,nonce:t,email:N.email,billingName:[N.firstName,N.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:De,billingApiUrl:st,paymentElementMethods:Ta,stripeInstance:jn,paymentElementBaseOptions:Si,futureUseSession:ge,onTokenizedBody:Bn,onErrorChange:Pe,onButtonClick:ne,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:Ys,isProcessing:A,submitButtonColor:to,submitButtonBorderRadius:Jt,submitButtonStyle:b.submitButton,onExpandApm:w,expandedApmMethod:ln,themeId:it,buttonAppearance:{backgroundColor:b.cardButton?.backgroundColor,borderColor:b.cardInputBorder,textColor:b.cardButton?.color,borderRadius:eo}}),m&&y("button",{type:"button",onClick:async()=>{A||!(await sr("card")).proceed||(ne?.("card"),Mr())},disabled:A,style:{width:"100%",...U,...b.cardButton,...ws({themeBundle:me,resolvedPrimaryColor:to,resolvedBorderRadius:Jt,submitButtonStyle:b.submitButton,explicitPrimaryColor:Fn?.colorPrimary}),fontSize:b.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:A?"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:A?.6:1},onMouseEnter:he=>{!A&&(me||Fn?.colorPrimary)&&(he.currentTarget.style.backgroundColor=od)},onMouseLeave:he=>{(me||Fn?.colorPrimary)&&(he.currentTarget.style.backgroundColor=to)},onMouseDown:he=>{he.currentTarget.style.transform="scale(0.985)"},onMouseUp:he=>{he.currentTarget.style.transform="scale(1)"},children:y(Co,{content:Pt})}),at&&He==="buttons"&&y(Eo,{margin:"0.25rem 0",styleOverride:b.errorBanner,children:at})]}),m&&P&&y("div",{style:{gridArea:"1 / 1",...Z?{animation:Z}:{},...He==="collapsing"?{pointerEvents:"none"}:{}},children:pl}),se&&fl&&ln&&Na&&jn&&y("div",{style:{gridArea:"1 / 1",...Po?{animation:Po}:{},...He==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Ze("div",{style:{backgroundColor:Ei,borderRadius:Bi,...Qo,padding:xi},children:[Ze("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Ze("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:_,style:{display:"inline-flex",alignItems:"center",gap:Ti?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:b.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...b.backButton},"aria-label":"Back to payment methods",children:[y("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...b.backButtonIcon},children:y("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:y("path",{d:"M15 18l-6-6 6-6"})})}),y(bo,{content:Te})]}),y("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:b.titleFontSize??"1.05rem",color:Ai,paddingRight:80,...b.title},children:`Pay with ${Ca(ln)}`})]}),y(io,{stripe:jn,options:Na,children:y(gs,{method:ln,sessionId:e,nonce:t,email:N.email,billingName:[N.firstName,N.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:De,billingApiUrl:st,onTokenizedBody:Bn,onErrorChange:Pe,onDecline:f,onCancel:_,runBeforeButtonClick:sr,onButtonClick:ne,isProcessing:A,submitButtonColor:to,submitButtonBorderRadius:Jt,submitButtonStyle:b.submitButton,errorText:at})},ln)]})})]})]})}return fl&&ln&&Na&&jn&&se?Ze("form",{onSubmit:_i,className:$,noValidate:!0,style:{position:"relative"},children:[y(za,{}),O&&y(br,{status:O,errorMessage:at,authorized:tr}),y("div",{style:{...Po?{animation:Po}:{},...He==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Ze("div",{style:{backgroundColor:Ei,borderRadius:Bi,...Qo,padding:xi},children:[Ze("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Ze("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:_,style:{display:"inline-flex",alignItems:"center",gap:Ti?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:b.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...b.backButton},"aria-label":"Back to payment methods",children:[y("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...b.backButtonIcon},children:y("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:y("path",{d:"M15 18l-6-6 6-6"})})}),y(bo,{content:Te})]}),y("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:b.titleFontSize??"1.05rem",color:Ai,paddingRight:80,...b.title},children:`Pay with ${Ca(ln)}`})]}),y(io,{stripe:jn,options:Na,children:y(gs,{method:ln,sessionId:e,nonce:t,email:N.email,billingName:[N.firstName,N.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:De,billingApiUrl:st,onTokenizedBody:Bn,onErrorChange:Pe,onDecline:f,onCancel:_,runBeforeButtonClick:sr,onButtonClick:ne,isProcessing:A,submitButtonColor:to,submitButtonBorderRadius:Jt,submitButtonStyle:b.submitButton,errorText:at})},ln)]})})]}):Ze("form",{onSubmit:_i,className:$,noValidate:!0,style:{position:"relative"},children:[y(za,{}),O&&y(br,{status:O,errorMessage:at,authorized:tr}),Ze("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[ml("flopay-direct-paypal-gate-debug-default"),yl("flopay-stripe-gate-debug-default"),Wo&&ft&&Ze(No,{children:[c&&y("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."}),y(da.Provider,{value:p,children:y(Ga,{sessionId:e,nonce:t,billingApiUrl:st,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,clientId:ft.clientId,environment:ft.environment,currency:Ct.toUpperCase(),isSubscription:Tt,providerObjectType:We,approvalPresentation:Ma==="popup"?void 0:Ma,onTokenizedBody:Bn,onComplete:s,onErrorChange:Pe,onDecline:f,onTechnicalFailure:po,onButtonClick:ne,runBeforeButtonClick:sr,isProcessing:A,onLoadStateChange:wi,onInitializationStateChange:Ii,session:ut,existingOrderId:c?.orderId,debug:L},c?.orderId??"fresh")})]}),Vo&&y(io,{stripe:Ho,options:Ls,children:y(vc,{sessionId:e,nonce:t,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,billingApiUrl:st,onTokenizedBody:Bn,onErrorChange:Pe,isProcessing:A,onButtonClick:ne,onDecline:f,onTechnicalFailure:po,runBeforeButtonClick:sr,onLoadStateChange:Ws,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:el,presentationMode:mo})}),fo&&y(io,{stripe:jn,options:Os,children:y(bc,{sessionId:e,nonce:t,email:N.email,billingName:ct||void 0,onBuyerIdentityReady:De,billingApiUrl:st,intentKind:Ne>0?"payment":"setup",expressMethods:yo,onTokenizedBody:Bn,onErrorChange:Pe,onButtonClick:ne,onDecline:f,onTechnicalFailure:po,runBeforeButtonClick:sr,onLoadStateChange:Vs,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:ee})}),Go&&y(Sc,{sessionId:e,nonce:t,email:N.email,billingName:[N.firstName,N.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:st,paymentElementMethods:Ta,stripeInstance:jn,paymentElementBaseOptions:Si,futureUseSession:ge,onTokenizedBody:Bn,onErrorChange:Pe,onButtonClick:ne,onDecline:f,runBeforeButtonClick:sr,onLoadStateChange:Ys,isProcessing:A,submitButtonColor:to,submitButtonBorderRadius:Jt,submitButtonStyle:b.submitButton,themeId:it,onExpandApm:w,expandedApmMethod:ln,buttonAppearance:{backgroundColor:b.cardButton?.backgroundColor,borderColor:b.cardInputBorder,textColor:b.cardButton?.color,borderRadius:eo}})]}),m&&(Xc||Jc||Zc)&&y(hl,{label:"or pay with card"}),m&&pl]})}import{Fragment as kr,jsx as de,jsxs as on}from"react/jsx-runtime";var Lo=44,Ms="flopay_checkout_saved_payment_resume",yi=new Map,pi=new Map;function Bc(e,t){t.settled&&t.consumers===0&&yi.get(e)===t&&yi.delete(e)}function pp(e,t,n){let r=pi.get(e);if(r&&(!r.sdkGeneratedIdempotencyKey||!t||r.sdkGeneratedIdempotencyKey===t))return r.attempt;let o=n(),i={attempt:o,sdkGeneratedIdempotencyKey:t};pi.set(e,i);let s=()=>{pi.get(e)===i&&pi.delete(e)};return o.then(s,s),o}function Sa(e){return new Promise(t=>setTimeout(t,e))}function mi(e,t,n){let r=Ha({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:qc,enabled:t!==!1});return r.beginCheckout(n),r}function wa(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function _s(e,t,n,r,o,i){let s=mi(e,t,n);s.error({errorCode:r,stage:o,paymentMethodCategory:"unknown",...i,...o==="session_read"?{requestCategory:"session_read"}:{}}),wa(s)}function Fc(e,t,n,r){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,...r===void 0?{}:{attempt:r},statusClass:"2xx"})}function Dc(e,t,n,r,o){let i=Uc(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:n,durationMs:Math.max(0,e.now()-r),durationMode:"machine",requestCategory:n,attempt:o,statusClass:i.statusClass}),t instanceof Pn&&t.code==="session_auto_completed"?!1:t instanceof Pn&&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 jc(e,t){let n=e?.data.paypal?.publishableKey;if(n)return{clientId:n,environment:e?.data.paypal?.environment,providerObjectType:e?.data.paypal?.providerObjectType,approvalPresentation:e?.data.paypal?.approvalPresentation,...t?{existingOrderId:t}:{}}}function Rs(e){return!e||e.data.stripe?.publishableKey?!1:!!jc(e)?.clientId}var mp={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function yp(e){return new ap(mp,{publishableKey:"provider_unavailable",...e})}async function Es(e,t){let{publishableKey:n,paypalPublishableKey:r}=as(e);return{...await is({publishableKey:n,paypalPublishableKey:r,...t}),publishableKey:n,paypalPublishableKey:r}}function xs(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function fp(){if(!xs())return null;try{let e=window.sessionStorage.getItem(Ms);return e?JSON.parse(e):null}catch{return null}}function Nc(e){if(xs())try{window.sessionStorage.setItem(Ms,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function Ts(){if(xs())try{window.sessionStorage.removeItem(Ms)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function gp(){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 r of t)e.searchParams.has(r)&&(e.searchParams.delete(r),n=!0);n&&window.history.replaceState(window.history.state,"",e.toString())}function Oc(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 As(e,t){return e?"custom_layout":t==="buttons"?"buttons_layout":"default_layout"}function hp(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function Lc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Pp(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:r,telemetry:o,appearance:i,locale:s,loading:l,error:f,onComplete:u,onError:S,onInstrument:v,onDecline:W,onCountryChange:$,onZipChange:k,showPayPal:q=!0,showStripe:K=!0,walletPresentation:h="auto",enabledPaymentMethods:C,showApplePay:se=!0,showGooglePay:z=!0,debug:Ce=!1,layout:J,theme:ke,buttonsTheme:je,buttonsStyles:_e,cardButtonContent:it,cardBackButtonContent:zt,cardTitleContent:ye,showSecurityFooter:Me,onButtonClick:Pt,onBeforeButtonClick:Te,enableAVS:Ve,cardFieldOrder:Re,cardPreFormSlot:ne,avsLayout:$e,submitLabel:Ke,className:yt,initialErrorMessage:be=null,initialPayPalOrderId:fe,children:le,checkoutMode:F,confirmLabel:Se,renderConfirmButton:ze,onSessionCompleted:xe}){let V=cp(r),vt=Zn(()=>zc(ke),[ke]),qe=i??vt?.appearance,Ae=n?"embedded_checkout":"standard_checkout",Xe=As(le,J),[Be,Qe]=Ht(null),[Ne,Ct]=Ht(null),Vt=Ft(null),ft=Ft(null),Tt=Ft(0),[T,re]=Ht(null),Oe=Ft(null),[L,we]=Ht(null),gt=Zn(()=>n?Ao(n):"",[n]),Le=n?`create:${gt}`:`session:${e??""}`,It=Lc(L),M=Ft(new Set),p=Ft(Le),g=Ft(Le);ta(()=>{g.current=Le,p.current!==Le&&(p.current=Le,M.current.clear())},[Le]);let D=hn(w=>{if(g.current===Le){if(Wi.has(w.name)){if(M.current.has(w.name))return;M.current.add(w.name)}Bt(()=>v?.(w))}},[Le,v]),x=Ro(D,Le),ee=Ft(!1),ut=hn(w=>{if(ee.current)return;let _=w.gateway||!It?w:{...w,gateway:It};D(_)},[D,It]);pr(()=>{x({class:"lifecycle",name:"checkout.mount"})},[x]);let[ge,We]=Ht(e??""),X=e??ge,qt=n?"":X,[bt,At]=Ht(!0),[st,ce]=Ht(null),[kn,Nn]=Ht(0),[pn,jt]=Ht("full"),[On,Ln]=Ht(!1),[fn,Mt]=Ht(be),[Ge,Ue]=Ht(null),[_n,kt]=Ht(null),[Un,mn]=Ht(!1),[$t,Zt]=Ht(void 0),[Qn,Wn]=Ht(""),[Qt,_t]=Ht(!1),[en,nn]=Ht(!1),[Dt,an]=Ht(!1),Ot=Ft(null),rn=Ft(0),Nt=Ft(void 0),[G,er]=Ht("loading"),[tr,nr]=Ht(0),tn=Ft(!1),Rn=Ft(!1),vn=Ft(!1),pe=Ft(null),et=Ft(null),m=Zn(()=>({checkoutMode:F??pn,layout:hp(le,J)}),[F,le,pn,J]),Fe=Ft(u);Fe.current=u;let H=Ft(S);H.current=S;let gn=Ft(W);gn.current=W;let zn=hn(w=>ti(pe,async _=>{try{return await w(_)}catch(O){throw _.aborted?Yr(O):O}}),[]);pr(()=>()=>{pe.current?.abort(),pe.current=null},[]);let Gt=hn((w,_)=>{Vt.current=w,Ct(w),Oe.current=_,re(_)},[]),En=hn(()=>{let w=ft.current;w&&(ft.current=null,w.destroy())},[]);pr(()=>{un(Ne)?.setCheckoutContext(m),T&&T!==Ne&&un(T)?.setCheckoutContext(m)},[Ne,T,m]);let tt=Ft(xe);tt.current=xe;let rr=hn(w=>{er(w),!(w!=="exhausted"||vn.current)&&(vn.current=!0,H.current?.(new Pn("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Zr=hn(()=>{er("retrying"),nr(w=>w+1)},[]);pr(()=>{er("loading"),nr(0),vn.current=!1},[X]),pr(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:qc,checkout_type:Ae,checkout_layout:Xe,billing_api_url:V})},[Xe,Ae,V]);let Rt=Zn(()=>n?Ao(n,!0):"",[n]),Tn=Zn(()=>Qn===Rt?$t:void 0,[$t,Qn,Rt]),mr=Zn(()=>n?qi(n,Tn):void 0,[n,Tn]),Hn=F??mr?.checkoutMode??"full",Yt=Zn(()=>mr?{...mr,checkoutMode:Hn}:void 0,[mr,Hn]);pr(()=>{Zt(void 0),Wn(Rt),Nt.current=void 0,Ot.current=null,an(!1)},[Rt]),pr(()=>{Mt(be)},[be]);let or=hn((w,_,O)=>{Bt(()=>{gn.current?.(dn(w,_,O))})},[]),An=hn(async(w,_)=>{Mt(null),kt(null),mn(!1),Ue("processing");let O=_?.sessionId??w.id,R=w.clientSecret||t,nt=Lc(w),pt=Vt.current??Oe.current,j=un(pt),Ee=pt?null:mi(V,o,m),B={log:me=>{j?j.log(me):Ee?.log(me)},error:me=>{j?j.error(me):Ee?.error(me)},terminal:me=>{j?j.terminal(me):Ee?.terminal(me)},performance:me=>{j?j.performance(me):Ee?.performance(me)},now:()=>j?.now()??Ee?.now()??0,elapsed:me=>j?.elapsed(me)??Math.max(0,(Ee?.now()??me)-me)},d=B.now(),c=!!(_?.initialAutoProcessingError||_?.initialAutoProcessingPending),I=!1,E,Q=()=>{I||(I=!0,c=!0,E=B.now(),B.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},ae=!1,De=()=>{ae||(ae=!0,B.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),B.performance({stage:"processing",durationMs:B.elapsed(d),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),E!==void 0&&B.performance({stage:"recovery",durationMs:B.elapsed(E),durationMode:"machine",paymentMethodCategory:"saved"}))};B.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),ee.current=!0;try{B.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{ee.current=!1}x({class:"lifecycle",name:"payment.processing.started",provider:nt}),c&&Q();let at;try{let me=sc(_?.initialAutoProcessingError),b=_?.initialAutoProcessingError?.type==="3ds_required"&&!_.initialAutoProcessingError.threeDSecureToken&&_.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:_.initialAutoProcessingError.nextActionRedirectUrl}:null,lt,ie=te=>(Q(),zn(A=>xo(te,{billingApiUrl:V,sessionId:O,nonce:R,session:w,signal:A})));if(b)lt=await ie(b);else if(me)Q(),me.type==="paypal_redirect_required"&&et.current?.publishableKey&&Nc({sessionId:O,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),lt=await zn(te=>oi(me,{flopay:Vt.current,paypalFlopay:Oe.current,attempt3DS:_?.attempt3DS,billingApiUrl:V,sessionId:O,session:w,telemetry:!1,signal:te})),me.type==="paypal_redirect_required"&&Ts();else if(_?.initialAutoProcessingPending){let te=_.initialAutoProcessingPending,A=new ui(V,{telemetry:!1}),Y=await zn(Ie=>A.waitForCheckoutSessionCompletion(te.sessionId,{initialDelayMs:te.retryAfterMs,nonce:R,statusUrl:te.statusUrl,signal:Ie})),N=Kr(Y,w),ct=Y.autoProcessingError?.type==="3ds_required"&&Y.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:Y.autoProcessingError.nextActionRedirectUrl}:null;if(ct)lt=await ie(ct);else{if(!Dr(N))throw Io(N);lt=Fr(N,O)}}else{if(_?.initialAutoProcessingError)throw wr(_.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:_.initialAutoProcessingError.checkoutMethod});if(_?.fromCreateSession)return _?.fallbackToFull&&(jt("full"),Oc("full")),!1;{let te=await Bo({billingApiUrl:V,sessionId:O,session:w,nonce:R,telemetry:!1});te.type==="success"?lt=te.result:te.type==="next_action_required"?lt=await ie(te):(Q(),te.type==="paypal_redirect_required"&&et.current?.publishableKey&&Nc({sessionId:O,publishableKey:et.current.publishableKey,paypalPublishableKey:et.current.paypalPublishableKey}),lt=await zn(A=>oi(te,{flopay:Vt.current,paypalFlopay:Oe.current,attempt3DS:_?.attempt3DS,billingApiUrl:V,sessionId:O,session:w,telemetry:!1,signal:A})),te.type==="paypal_redirect_required"&&Ts())}}O&&Mo(O),De(),c&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),B.terminal({outcome:lt.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),mn(lt.status==="authorized"),Ue("success"),await Sa(600),at=()=>Fe.current?.(lt)}catch(me){let b=jr(ga(me),O);if(b.code==="three_ds_aborted")return!1;let lt=b.checkoutMethod??fa;Mt(b.message),kt(b.message),mn(!1),_?.fallbackToFull&&(B.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),jt("full"),Oc("full")),De();let ie=b.statusCode===void 0?void 0:up(b.statusCode,"unknown"),te=ie==="4xx"?{requestCategory:"process_payment",statusClass:ie}:{},A=ie===void 0||ie==="4xx";if(A&&(b.telemetryOutcome==="payment_declined"||!!(b.declineCode||b.code?.toLowerCase().includes("declin"))))B.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...te});else if(A&&(b.telemetryOutcome==="validation_rejected"||b.type==="validation_error"))B.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...te});else{let ct=Uc(me,c?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),Ie=b.telemetryRequestCategory??"process_payment";ee.current=!0;try{B.error({...ct,...b.telemetryFailureCategory?{failureCategory:b.telemetryFailureCategory}:{},stage:c?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:Ie})}finally{ee.current=!1}x({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:Ie,provider:nt})}return Bt(()=>H.current?.(b)),or(lt,b,{code:b.code,declineCode:b.declineCode}),Ue("error"),await Promise.allSettled([Sa(400),_?.ensureProvidersReady?_.ensureProvidersReady():Promise.resolve()]),c&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{De(),Ee&&wa(Ee),Ue(null),kt(null)}return Bt(at),!0},[or,x,t,V,zn,o,m]);pr(()=>{if(typeof window>"u"||Rn.current)return;let w=new URLSearchParams(window.location.search),_=w.get("payment_intent_client_secret");if(!_)return;let O=fp();O&&(Rn.current=!0,(async()=>{let R,nt=0;Mt(null),kt(null),Ue("processing"),Ln(!0);try{if(w.get("redirect_status")==="failed")throw Object.assign(new Pn("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:pt,paypalFlopay:j}=await is({publishableKey:O.publishableKey,paypalPublishableKey:O.paypalPublishableKey,billingApiUrl:V,locale:s,telemetry:o});R=un(j??pt),R?.setCheckoutContext(m),nt=R?.now()??0,R?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),R?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let Ee=(j??pt)?.getRawProvider();if(!Ee)throw Object.assign(new Pn("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:B,error:d}=await Ee.retrievePaymentIntent(_);if(d)throw Object.assign(new Pn(d.message??"Failed to retrieve PayPal payment status.","api_error",{code:d.code}),{checkoutMethod:"paypal"});let c=Ul(B?.status);if(!B||c==="failed")throw Object.assign(new Pn("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let I=typeof B.payment_method=="string"?B.payment_method:B.payment_method?.id,E=c;if(O.sessionId){let De=(await new ui(V,{telemetry:!1}).getUnifiedCheckoutSession(O.sessionId)).data.session;if(De&&De.status!=="complete"){let at=await Bo({billingApiUrl:V,sessionId:O.sessionId,session:De,telemetry:!1,tokenizedData:{id:I??B.id,type:"card",threeDSecureActionResultTokenId:B.id,isPaypal:!0}});if(at.type!=="success")throw Object.assign(new Pn("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});E=at.result.status}}O.sessionId&&Mo(O.sessionId),R?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),R?.performance({stage:"redirect_resume",durationMs:R.elapsed(nt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),R?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Ue("success"),await Sa(600),Bt(()=>Fe.current?.({status:E,paymentIntentId:B.id,paymentMethodId:I,checkoutMethod:"paypal"}))}catch(pt){let j=jr(ga(pt),O.sessionId),Ee=j.checkoutMethod??"paypal",B=!!(j.declineCode||j.code?.toLowerCase().includes("declin"));if(R)R.performance({stage:"redirect_resume",durationMs:R.elapsed(nt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),B?R.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):R.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(B){let d=mi(V,o,m);d.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),wa(d)}else _s(V,o,m,"REDIRECT_RESUME_FAILED","redirect_resume");Mt(j.message),kt(j.message),Bt(()=>H.current?.(j)),or(Ee,j,{code:j.code,declineCode:j.declineCode}),Ue("error"),await Sa(400)}finally{Ts(),gp(),Ue(null),kt(null),Ln(!1)}})())},[or,s,V,o,m]);let _r=Ft(null),Mn=Zn(()=>Yt?Ao(Yt):"",[Yt]),yr=Ft(Yt);yr.current=Yt,pr(()=>{We(e??"")},[e]),pr(()=>{tn.current=!1,Mt(be),kt(null),mn(!1),Ue(null)},[Mn,be,e]);async function fr(w,_,O){let R=mi(V,o,m),nt=new ui(V,{telemetry:!1}),pt=!1;try{let j=w.idempotencyKey===void 0?void 0:xc(w.idempotencyKey),Ee=Zi(_,O),B=Qi(_,O);Ee?.canonicalIdentity===O&&B&&B.canonicalIdentity===void 0&&(Za(_,O,B.idempotencyKey),B={...B,canonicalIdentity:O});let d=j??(B?.canonicalIdentity===O?B.idempotencyKey:void 0),c,I=!1;R.log({name:Ee?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let E=Ee?.sid??null,Q=null,ae,De,at=!1;if(E)try{Q=await nt.getUnifiedCheckoutSession(E,Ee?.nonce),Ee&&Ee.canonicalIdentity===void 0&&(ec(Q.data.session,w)?(Xa(_,O,E,Ee.nonce??Q.data.session?.clientSecret),B&&B.canonicalIdentity===void 0&&(Za(_,O,B.idempotencyKey),d??(d=B.idempotencyKey))):(Ja(_,O),B=null,d=j,E=null,Q=null));let b=Q?.data.session?.status,lt=Q?.data.session,ie=lt?.clientSecret||Ee?.nonce;if(E&<?.buyerIdentified===!1&&ie&&(De=wo(nt,E,ie,w.account)),E&&Q&&b==="complete"){if(es(E))return{sid:E,result:Q};Ja(_,O),E=null,Q=null,I=!0}}catch{R.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),Ee?.canonicalIdentity===void 0?(Ja(_,O),d=j):Ya(_,O),E=null}if(!E){!j&&(I||!d)&&(d=xc(),c=d),d&&Za(_,O,d);let b=R.now(),lt=0;R.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let ie={...w,idempotencyKey:d,avsCheck:!!Ve,avsConfig:typeof Ve=="object"?Ve:void 0,checkoutType:"embedded_checkout",checkoutLayout:As(le,J)};Object.defineProperty(ie,ip,{configurable:!1,enumerable:!1,value:{onAttempt:Y=>{lt=Math.max(lt,Y)}}});let te=()=>{Fc(R,"session_create",b,lt)},A=Y=>{Dc(R,Y,"session_create",b,lt)&&x({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if(lp(ie)){let Y=await nt.createDetachedSession(ie);Y.claimed.catch(()=>{}),Q=Y.shell,E=Y.sessionId,De=Y.claim;let N=R.now();R.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),ae=Y.claimed.then(ct=>{let Ie=ct.data.session?.id??Y.sessionId;return Ie&&Xa(_,O,Ie,ct.data.session?.clientSecret??Y.nonce),Fc(R,"session_claim",N),te(),ct},ct=>{throw Ya(_,O),Dc(R,ct,"session_claim",N,0)&&x({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),ct}).finally(()=>wa(R)),ae.catch(()=>{}),pt=!0,R.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),R.performance({stage:"session_shell",durationMs:R.now()-b,durationMode:"machine",requestCategory:"session_create",attempt:lt,statusClass:"2xx",paymentMethodCategory:"card"})}else Q=await nt.createAndFetchSession(ie),te()}catch(Y){throw A(Y),Y}E=Q.data.session?.id??E??"",E&&!ae&&Xa(_,O,E,Q.data.session?.clientSecret)}let me=Q?.data.session;return!De&&E&&me?.buyerIdentified===!1&&me.clientSecret&&(De=wo(nt,E,me.clientSecret,w.account)),{sid:E??"",result:Q,sdkGeneratedIdempotencyKey:c,...ae?{claimed:ae}:{},...De?{claim:De}:{},...at?{claimRequiresIdentity:!0}:{}}}finally{pt||wa(R)}}let Rr=Ft(fr);ta(()=>{Rr.current=fr},[fr]);let qn=hn(async(w,_)=>{let O=yr.current;if(!O)throw new Pn("createSession is required to bootstrap checkout.","validation_error");let R=qi(O,w),nt=Ao(R),pt=Ql(R),j=yi.get(nt);if(!j){let d={canonicalIdentity:nt,promise:Rr.current(R,pt,nt),consumers:0,settled:!1};j=d,yi.set(nt,d);let c=()=>{d.settled=!0,Bc(nt,d)};d.promise.then(c,c)}j.consumers+=1;let Ee=!1,B=()=>{Ee||(Ee=!0,j.consumers-=1,Bc(nt,j))};_?.(B);try{let d=await j.promise;_r.current=nt,w&&(Wn(Rt),Zt(me=>Nl(me,w)));let{sid:c,result:I,claimed:E,claim:Q,claimRequiresIdentity:ae}=d;if(Nt.current=Q,an(ae===!0),Qe(I),I.data.session&&we(I.data.session),c&&We(c),E){rn.current+=1;let me=rn.current;Ot.current=E,nn(!0),E.then(b=>{rn.current===me&&(Ot.current===E&&(Ot.current=null),Qe(b),b.data.session&&we(b.data.session),nn(!1),an(!1))},b=>{rn.current===me&&(Ot.current===E&&(Ot.current=null),nn(!1),an(!1),ce(b instanceof Pn?b:new Pn(b instanceof Error?b.message:"Failed to create session","api_error")))})}else rn.current+=1,Ot.current=null,nn(!1),an(!1);let{flopay:De,paypalFlopay:at}=await Es(I,{billingApiUrl:V,locale:s,telemetry:o});return Gt(De,at),At(!1),d}catch(d){throw _r.current===nt&&(_r.current=null),d}finally{_||B()}},[Rt,Gt,s,V,o]),Vn=Ft(An);Vn.current=An;let Er=Ft(qn);Er.current=qn;let xt=hn(async w=>{if(!Pp(w)||Qt)return{sessionId:ge,session:L};_t(!0);try{let _=await qn(w);return{sessionId:_.sid,session:_.result.data.session??null}}finally{_t(!1)}},[qn,Qt,ge,L]),Cn=hn(async w=>{let _=Nt.current;if(!_)return;let O=rn.current,R=await _(w);rn.current===O&&(Qe(R),R.data.session&&we(R.data.session))},[]),Gn=hn(async()=>{await Ot.current},[]),Tr=hn(async()=>(await Gn(),{proceed:!0}),[Gn]);pr(()=>{let w=!1,_,O=++Tt.current;En(),ce(null),Nn(0);let R=()=>{w=!0,Tt.current===O&&(Tt.current+=1,En())},nt=yr.current;if(Mn&&nt)return jt(Hn),At(!1),_r.current===Mn?R:(we(Ol(nt,F)),(async()=>{let Ee=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),B=Hn==="auto"&&!tn.current&&!Ee;B&&(Mt(null),kt(null),Ue("processing"));try{let d=await Er.current(void 0,Q=>{_=Q}),c=d.result.data.session??null;et.current=as(d.result);let I=Rs(d.result),E=es(d.sid||c?.id);if(!w&&B&&c&&!I&&!E){tn.current=!0,await pp(Mn,d.sdkGeneratedIdempotencyKey,()=>Vn.current(c,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:d.result.autoProcessingError,initialAutoProcessingPending:d.result.autoProcessingPending,autoProcessingAttempted:d.result.autoProcessingAttempted,sessionId:d.sid||c.id}));return}!w&&B&&((I||E)&&(tn.current=!0),Ue(null),kt(null))}catch(d){if(w)return;let c=ja(d);if(B&&c==="session_auto_completed"){tn.current=!0,Ue("success"),await Sa(600),w||(Bt(()=>{Fe.current?.({status:"succeeded"})}),Ue(null),kt(null));return}B&&(Ue(null),kt(null));let I=d instanceof Pn?d:new Pn(d instanceof Error?d.message:"Failed to create session","api_error");ce(I)}finally{_?.(),_=void 0}})(),()=>{R(),_?.()});At(!0);async function pt(){let Ee=!1,B=null;try{let d=new ui(V,{telemetry:!1}),c=await d.getUnifiedCheckoutSession(X,t);if(B=c,w)return;Qe(c);let I=c.data.session??null;if(we(I),!I)throw new Pn("No session data returned","api_error");let E=I.checkoutMode;if(E==="setup")throw new Pn("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(I.status==="authorized"){At(!1),Bt(()=>{Fe.current?.(Fr(I,X)),tt.current?.(I.successUrl??"")});return}if(I.status==="complete"){At(!1),Bt(()=>{tt.current?.(I.successUrl??"")});return}if(I.status==="expired")throw qa(I);Ee=!0;let Q=F??E??"full";jt(Q),rn.current+=1;let ae=I.clientSecret||t;Nt.current=I.buyerIdentified===!1&&ae?wo(d,X,ae,{...I.customer?.id?{userId:I.customer.id}:{}}):void 0,nn(!1),an(!1);let De=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),at=Rs(c);if(Q==="auto"&&!tn.current&&!De&&!at){tn.current=!0;let me=j(c);try{if(await Vn.current(I,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>me,sessionId:X||I.id}),w)return;await me,w||At(!1);return}catch{if(w)return;await me,w||At(!1);return}}await j(c),w||At(!1)}catch(d){if(w)return;let c=Dl(d,Ee);if(Ee&&x({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),c){let{errorCode:E,stage:Q,...ae}=c;_s(V,o,m,E,Q,ae)}if(c?.stage==="provider_load"&&(F??B?.data.session?.checkoutMode??"full")==="full"&&Fl(B,q,K)){let E=yp({billingApiUrl:V,locale:s,telemetry:o});ft.current=E,Gt(E,null),Nn(1),At(!1);return}let I=d instanceof Pn&&c?.stage!=="provider_load"?d:Bl();I!==d&&Bt(()=>H.current?.(I)),ce(I),At(!1)}}async function j(Ee){let{flopay:B,paypalFlopay:d,...c}=await Es(Ee,{billingApiUrl:V,locale:s,telemetry:o});et.current={publishableKey:c.publishableKey,paypalPublishableKey:c.paypalPublishableKey},Gt(B,d),Nn(0)}return pt(),R},[F,Mn,Hn,qt,t,q,K]);let Ar=hn(async()=>{if(!Be||kn!==1)return;let w=Tt.current;Nn(2);try{let{flopay:_,paypalFlopay:O}=await Es(Be,{billingApiUrl:V,locale:s,telemetry:o});if(Tt.current!==w)return;En(),Gt(_,O),Nn(0)}catch(_){if(Tt.current!==w)return;let{errorCode:O,stage:R,...nt}=Ui(_);_s(V,o,m,O,R,nt)}},[En,Gt,s,kn,V,o,m,Be]),He=!!(X&&(L?.clientSecret||t)),sn=On||!He,ln=hn(async()=>{if(!(On||!He||!L)){Ln(!0),Mt(null);try{await An(L,{attempt3DS:!0,fallbackToFull:!0,sessionId:X||L.id})}finally{Ln(!1)}}},[X,On,He,An,L]),bn=jc(Be,fe),Qr=Rs(Be),gr=Zn(()=>{if(!(!Be||!L||!Be.data.stripe?.publishableKey))return{billingApiUrl:V}},[Be,L,V]),Lr=!!(n&&!le&&J==="buttons"&&Te&&Hn==="full"),Sn=!!(X&&(L?.vault?.html||qr(L))),cn=Zn(()=>({session:L,loading:bt,error:st,checkoutMode:pn,inlineSessionDraft:Yt,applyInlineSessionPatch:Lr?xt:void 0,inlineSessionPatchProcessing:Qt,claimPending:en,claimRequiresIdentity:Dt,claimBuyerIdentity:Cn,waitForDataAttachment:Gn}),[L,bt,st,pn,Yt,Lr,xt,Qt,en,Dt,Cn,Gn]),Mr=!!n&&J==="buttons"&&!Qr&&!Sn&&(!Ne||!gr),xn=Ge?de(br,{status:Ge,errorMessage:_n,authorized:Un}):null;if(bt&&!Sn){if(l)return on(kr,{children:[l,xn]});if(J==="buttons"){let w=vt?.buttonsLayout?.cardButton?.borderRadius??vt?.appearance.variables?.borderRadius??8,_=O=>de("div",{style:{height:O,borderRadius:w,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return on(kr,{children:[on("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[q&&_(Lo),K&&(se||z)&&_(Lo),K&&_(Lo),de("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),xn]})}return on(kr,{children:[on("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[de("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),de("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),xn]})}return st?f?de(cr.Provider,{value:cn,children:f(st)}):de(cr.Provider,{value:cn,children:de("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:st.message})}):Mr?on(kr,{children:[de(cr.Provider,{value:cn,children:de(Cp,{onButtonClick:Pt,showPayPal:q,showStripe:K,showApplePay:se,showGooglePay:z,theme:ke,buttonsTheme:je,buttonsStyles:_e,cardButtonContent:it,cardBackButtonContent:zt,cardTitleContent:ye})}),xn]}):Qr&&L&&bn?on(kr,{children:[de(cr.Provider,{value:cn,children:on("div",{className:yt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[fn&&de(Eo,{icon:!1,children:fn}),G==="retrying"&&de("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),G==="exhausted"&&on("div",{role:"alert",children:[de("div",{children:"PayPal is temporarily unavailable. Please try again."}),de("button",{type:"button",onClick:Zr,children:"Retry PayPal"})]}),G!=="exhausted"&&de("div",{"aria-hidden":G==="retrying"?!0:void 0,style:G==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:de(Xl,{sessionId:X,nonce:L.clientSecret||void 0,billingApiUrl:V,email:L.customer?.email||Yt?.account?.email,billingName:[L.customer?.firstName,L.customer?.lastName].filter(Boolean).join(" ")||[Yt?.account?.firstName,Yt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Cn,clientId:bn.clientId,environment:bn.environment,currency:(L.currency??"usd").toUpperCase(),isSubscription:L.mode==="subscription",providerObjectType:bn.providerObjectType,approvalPresentation:bn.approvalPresentation,existingOrderId:bn.existingOrderId,onComplete:u,onErrorChange:Mt,onDecline:W,onButtonClick:Pt,runBeforeButtonClick:Tr,onInitializationStateChange:rr,allowAutomaticRetry:tr===0,session:L,telemetry:o,telemetryContext:m,onInstrument:ut,debug:Ce},`${Le}:paypal-init-${tr}`)})]})}),xn]}):pn==="confirm"?on(kr,{children:[de(cr.Provider,{value:cn,children:de(Qa,{flopay:Ne,paypalFlopay:T,options:gr??{billingApiUrl:V},onInstrument:ut,children:on("div",{className:yt,children:[fn&&de("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:fn}),ze?ze({onConfirm:ln,isProcessing:sn}):de("button",{type:"button",onClick:ln,disabled:sn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:sn?"not-allowed":"pointer",opacity:sn?.6:1},children:On?"Processing...":Se??"Confirm Purchase"})]})},Le)}),xn]}):(!Ne||!gr)&&!(Sn&&pn==="full")?de(kr,{children:xn}):on(kr,{children:[de(cr.Provider,{value:cn,children:on(Qa,{flopay:Ne,paypalFlopay:T,options:gr??{billingApiUrl:V},onInstrument:ut,children:[kn===1&&de("button",{type:"button",onClick:Ar,children:"Retry payment methods"}),le?on(kr,{children:[fn&&de("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:fn}),de(vp,{sessionId:X,nonce:L?.clientSecret||void 0,billingApiUrl:V,session:L,submitLabel:Ke,walletPresentation:h,children:le})]}):de(Is,{sessionId:X,nonce:L?.clientSecret||void 0,telemetry:o,email:L?.customer?.email||Yt?.account?.email,userId:L?.customer?.id||Yt?.account?.userId,firstName:L?.customer?.firstName||Yt?.account?.firstName,lastName:L?.customer?.lastName||Yt?.account?.lastName,totalAmount:L?Math.round(sp(L).total*100):0,currency:L?.currency?.toLowerCase()??"usd",onComplete:u,onError:S,onDecline:W,error:fn,onErrorChange:Mt,showPayPal:q,showStripe:K,walletPresentation:h,enabledPaymentMethods:kn?[]:C??Be?.data.stripe?.enabledPaymentMethods??L?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Be?.data.stripe?.enabledPaymentMethodCountries,showApplePay:se,showGooglePay:z,layout:J,theme:ke,buttonsTheme:je,buttonsStyles:_e,appearance:qe,cardButtonContent:it,cardBackButtonContent:zt,cardTitleContent:ye,onButtonClick:Pt,onBeforeButtonClick:Te,onBuyerIdentityReady:Cn,enableAVS:Ve,...Re?{cardFieldOrder:Re}:{},...ne?{cardPreFormSlot:ne}:{},avsLayout:$e,country:L?.customer?.country,city:L?.customer?.city,state:L?.customer?.state,onCountryChange:$,onZipChange:k,avsCheck:!!Ve,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:As(le,J),className:yt,submitLabel:Ke,directPaypal:bn,isSubscription:L?.mode==="subscription",session:L,dataAttachmentPending:en,dataAttachmentRequiresIdentity:Dt,debug:Ce})]},Le)}),xn]})}function vp({sessionId:e,nonce:t,billingApiUrl:n,session:r,submitLabel:o,walletPresentation:i,children:s}){return de(kr,{children:ks.Children.map(s,l=>{if(!ks.isValidElement(l))return l;let f=l.props,u={};return f.sessionId||(u.sessionId=e),!f.nonce&&t&&(u.nonce=t),f.billingApiUrl||(u.billingApiUrl=n),f.submitLabel===void 0&&o!==void 0&&(u.submitLabel=o),f.walletPresentation===void 0&&(u.walletPresentation=i),r?.customer&&(f.email||(u.email=r.customer.email),f.userId||(u.userId=r.customer.id),f.firstName||(u.firstName=r.customer.firstName),f.lastName||(u.lastName=r.customer.lastName)),Object.keys(u).length===0?l:ks.cloneElement(l,u)})})}function Cp({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:r,showGooglePay:o,theme:i,buttonsTheme:s,buttonsStyles:l,cardButtonContent:f,cardBackButtonContent:u,cardTitleContent:S}){let[v,W]=Ht(!1),$=Zn(()=>zc(i),[i]),k=Zn(()=>{let C=$?.buttonsLayout??dp(s);return l?{...C,...l,cardButton:{...C.cardButton,...l.cardButton},cardFormContainer:{...C.cardFormContainer,...l.cardFormContainer},backButton:{...C.backButton,...l.backButton},backButtonIcon:{...C.backButtonIcon,...l.backButtonIcon},submitButton:{...C.submitButton,...l.submitButton},title:{...C.title,...l.title}}:C},[$,s,l]),q=$?.buttonsLayout?.cardButton?.borderRadius??$?.appearance.variables?.borderRadius??8,K=C=>de("div",{style:{height:C,borderRadius:q,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),h=f===void 0?{boxSizing:"border-box",height:Lo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(v){let C=k.cardInputBorder??"#e5e7eb",se=k.cardInputBackground??"white",z=vo(u),Ce=vo(S);return on("div",{style:{backgroundColor:k.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...k.cardFormContainer},children:[on("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[on("button",{type:"button",onClick:()=>W(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:z?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...k.backButton},children:[de("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...k.backButtonIcon},children:de("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:de("path",{d:"M15 18l-6-6 6-6"})})}),de(bo,{content:u})]}),Ce?de("div",{style:{flex:1}}):de("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...k.title},children:de(ia,{content:S})})]}),de("div",{style:{backgroundColor:se,border:`1px solid ${C}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:de("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),on("div",{style:{display:"flex"},children:[de("div",{style:{flex:1,backgroundColor:se,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomLeftRadius:8,padding:12,height:45},children:de("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),de("div",{style:{flex:1,backgroundColor:se,borderTop:"none",borderRight:`1px solid ${C}`,borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomRightRadius:8,padding:12,height:45},children:de("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),de("div",{style:{backgroundColor:se,border:`1px solid ${C}`,borderRadius:8,marginTop:8,padding:12,height:45},children:de("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),de("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...k.submitButton,opacity:.5}}),de("style",{children:`
|
|
12
|
+
`}),Zo&&Qr&&Qe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:m?-2:0},children:[Qe("button",{type:"button",onClick:oe,style:{display:"inline-flex",alignItems:"center",gap:xi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:P.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...P.backButton},"aria-label":"Back to payment methods",children:[y("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...P.backButtonIcon},children:y("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:y("path",{d:"M15 18l-6-6 6-6"})})}),y(wo,{content:Ee})]}),ml?y("div",{style:{flex:1}}):y("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:P.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...P.title},children:y(la,{content:He})})]}),!Zo&&!ml&&y("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:Bi,order:m?-3:0,...P.title},children:y(la,{content:He})}),m&&ge&&y("div",{style:{order:-2,width:"100%"},children:ge}),m&&Lr&&Qe("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[y("div",{style:{backgroundColor:Po,border:`1px solid ${Jn(Da)}`,borderRadius:Zt,padding:"10px"},children:y("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:a=>{xt("email"),on.current=a.target.value,er(a.target.value)},onPointerDown:()=>xt("email"),onKeyDown:()=>xt("email"),onBlur:()=>{wn("email")&&gr(!0),uo||Si()},disabled:z,required:!0,"aria-invalid":Da||void 0,"aria-describedby":Da?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...Fi}})}),Da&&y("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:ea,children:Pi.empty?"Email address is required":"Enter a valid email address"})]}),W&&y("div",{style:{order:m?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let a=$t,v=(q=!1)=>({backgroundColor:Po,border:`1px solid ${Jn(q)}`,borderRadius:Zt,marginTop:"0.5rem",padding:"10px"}),O=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...Fi}),Pe=ku(a);return Qe(Lo,{children:[ot(W.address_line_1,a)&&Qe(Lo,{children:[y("div",{style:v(Vt("line1")),children:y("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:Mt,onChange:q=>{xt("line1"),Nt.current.addressLine1=!0,rn.current=q.target.value,Ge(q.target.value)},onPointerDown:()=>xt("line1"),onKeyDown:()=>xt("line1"),onBlur:()=>Yn("line1"),disabled:z,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:O()})}),Vt("line1")&&y("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:ea,children:"Street address is required"})]}),ot(W.address_line_2,a)&&y("div",{style:v(),children:y("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Oe,onChange:q=>{Nt.current.addressLine2=!0,Dt.current=q.target.value,En(q.target.value)},disabled:z,"data-testid":"flopay-address-line2",style:O()})}),(ot(W.city,a)||ot(W.state,a))&&Qe("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[ot(W.city,a)&&y("div",{style:{flex:1,backgroundColor:Po,borderTop:`1px solid ${Jn(Vt("city"))}`,borderRight:`1px solid ${Jn(Vt("city"))}`,borderBottom:`1px solid ${Jn(Vt("city"))}`,borderLeft:`1px solid ${Jn(Vt("city"))}`,padding:"10px",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,...ot(W.state,a)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:Zt}},children:y("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:wt,onChange:q=>{xt("city"),Nt.current.city=!0,sn.current=q.target.value,zn(q.target.value)},onPointerDown:()=>xt("city"),onKeyDown:()=>xt("city"),onBlur:()=>Yn("city"),disabled:z,required:!0,"aria-invalid":Vt("city")||void 0,"aria-describedby":Vt("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:O()})}),ot(W.state,a)&&y("div",{style:{flex:1,backgroundColor:Po,borderTop:`1px solid ${Jn(Vt("state"))}`,borderRight:`1px solid ${Jn(Vt("state"))}`,borderBottom:`1px solid ${Jn(Vt("state"))}`,borderLeft:`1px solid ${Jn(Vt("state"))}`,padding:"10px",borderTopRightRadius:Zt,borderBottomRightRadius:Zt,...ot(W.city,a)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${Jn(Vt("state")||Vt("city"))}`}:{borderRadius:Zt}},children:Pe?Qe("select",{id:"flopay-billing-state",name:"billing-state",value:yn,onChange:q=>{xt("state"),Nt.current.state=!0,Ot.current=q.target.value,Kt(q.target.value)},onPointerDown:()=>xt("state"),onKeyDown:()=>xt("state"),onBlur:()=>Yn("state"),disabled:z,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:{...O(),cursor:"pointer"},children:[y("option",{value:"",children:ds(a)}),Pe.map(q=>y("option",{value:q.code,children:q.name},q.code))]}):y("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:ds(a),autoComplete:"billing address-level1",value:yn,onChange:q=>{xt("state"),Nt.current.state=!0,Ot.current=q.target.value,Kt(q.target.value)},onPointerDown:()=>xt("state"),onKeyDown:()=>xt("state"),onBlur:()=>Yn("state"),disabled:z,required:!0,"aria-invalid":Vt("state")||void 0,"aria-describedby":Vt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:O()})})]}),Vt("city")&&y("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:ea,children:"City is required"}),Vt("state")&&Qe("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:ea,children:[ds(a)," is required"]}),(ot(W.country,a)||ot(W.postal_code,a))&&Qe("div",{style:{display:"flex",flexDirection:ce==="column"?"column":"row",gap:ce==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[ot(W.country,a)&&y("div",{style:{flex:ce==="row"?1:void 0,backgroundColor:Po,borderTop:`1px solid ${Qo}`,borderRight:`1px solid ${Qo}`,borderBottom:`1px solid ${Qo}`,borderLeft:`1px solid ${Qo}`,padding:"10px",...ce==="row"&&ot(W.postal_code,a)?{borderRadius:"0",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,borderRight:"none"}:{borderRadius:Zt}},children:Qe("select",{id:"flopay-billing-country",name:"billing-country",value:$t,onChange:q=>{Nt.current.country=!0,tn.current=q.target.value,Ln(q.target.value),ze?.(q.target.value),Ot.current="",Kt("")},disabled:z,autoComplete:"billing country","data-testid":"flopay-country",style:{...O(),cursor:"pointer"},children:[$t===""?y("option",{value:"",children:"Select country"}):null,Cu.map(q=>Qe("option",{value:q.code,children:[q.flag," ",q.name]},q.code))]})}),ot(W.postal_code,a)&&y("div",{style:{flex:ce==="row"?1:void 0,backgroundColor:Po,border:`1px solid ${id}`,padding:"10px",...ce==="row"&&ot(W.country,a)?{borderRadius:"0",borderTopRightRadius:Zt,borderBottomRightRadius:Zt}:{borderRadius:Zt}},children:y("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:gs($t),autoComplete:"billing postal-code",value:Un,onChange:q=>{xt("zip"),Nt.current.zip=!0,It.current=q.target.value,hn(q.target.value),Te?.(q.target.value)},onPointerDown:()=>xt("zip"),onKeyDown:()=>xt("zip"),onBlur:()=>{wn("zip")&&Tr(!0)},disabled:z,required:Mn.required,"aria-invalid":Na||void 0,"aria-describedby":Na?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:O()})})]}),Na&&y("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:ea,children:Mn.empty?`${gs(a)} is required`:lp(a)})]})})()}),m&&ud,G&&y(Ao,{margin:"0.75rem 0",styleOverride:P.errorBanner,children:G})]}),Oa={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"},Pl=a=>F?!C||!Cr?y("pre",{"data-testid":a,style:Oa,children:"FloPay/DirectPayPal-debug - not enabled"}):y("pre",{"data-testid":a,style:Oa,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${C}`,` directPaypalConfigured=${Cr}`,` inAppBrowserDetected=${String(xa)}`,` shouldRenderDirectPayPal=${Ho}`,` shouldRenderStripePayPal=${Yo}`,` hasPaypalStripeInstance=${!!Us}`].join(`
|
|
13
|
+
`)}):null,vl=a=>F?!le||!$n?y("pre",{"data-testid":a,style:Oa,children:"FloPay/Stripe-debug - not enabled"}):y("pre",{"data-testid":a,style:Oa,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${le}`,` currency=${vt}`,` amountInCents=${Ko}`,` enabledPaymentMethods: ${JSON.stringify(ve??[])}`,` enabledPaymentMethodsProvided=${Vo}`,` hasEnabledMethods=${Ea}`,` expressMethods: ${JSON.stringify(Aa)}`,` walletExpressMethods: ${JSON.stringify(go)}`,` paymentElementMethods: ${JSON.stringify(Wo)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Ma)}`,` hasStripeInstance=${!!$n}`,` shouldRenderWallets=${ho}`,` shouldRenderPaymentElement=${Jo}`].join(`
|
|
14
|
+
`)}):null,bl=Ve==="apm-expanding"||Ve==="apm-form"||Ve==="apm-collapsing",bo;Ve==="apm-expanding"?bo=bc:Ve==="apm-collapsing"&&(bo=Cc);let La=cn?Nc(ki,cn,he):null;if(Re==="buttons"){let a=Ve==="buttons"||Ve==="expanding"||Ve==="apm-expanding",v=Ve==="expanding"||Ve==="card"||Ve==="collapsing",O=ht===void 0?{boxSizing:"border-box",height:sa,padding:"0 1rem"}:{padding:"0.9rem 1rem"},Pe;Ve==="expanding"||Ve==="apm-expanding"?Pe=rp:(Ve==="collapsing"||Ve==="apm-collapsing")&&(Pe=np);let q;return Ve==="expanding"?q=bc:Ve==="collapsing"&&(q=Cc),Qe("form",{onSubmit:Ti,className:L,noValidate:!0,style:{position:"relative"},children:[y(ja,{}),ee&&y(Ir,{status:ee,errorMessage:G,authorized:nr}),Qe("div",{style:{display:"grid"},children:[Qe("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!a&&!Pe?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!a&&!Pe?ap:{},...Pe?{animation:Pe,pointerEvents:"none"}:{}},children:[Pl("flopay-direct-paypal-gate-debug"),vl("flopay-stripe-gate-debug"),Ho&&mt&&Qe(Lo,{children:[Z&&y("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."}),y(pa.Provider,{value:p,children:y(Ja,{sessionId:e,nonce:t,billingApiUrl:at,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,clientId:mt.clientId,environment:mt.environment,currency:vt.toUpperCase(),isSubscription:Tt,providerObjectType:Ke,approvalPresentation:Ba==="popup"?void 0:Ba,onTokenizedBody:Fn,onComplete:s,onErrorChange:ye,onDecline:f,onTechnicalFailure:yo,onButtonClick:ie,runBeforeButtonClick:cr,isProcessing:z,onLoadStateChange:Ri,onInitializationStateChange:_i,session:ct,existingOrderId:Z?.orderId,debug:F},Z?.orderId??"fresh")})]}),Yo&&y(so,{stripe:Go,options:js,children:y(Ic,{sessionId:e,nonce:t,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,billingApiUrl:at,onTokenizedBody:Fn,onErrorChange:ye,isProcessing:z,onButtonClick:ie,onDecline:f,onTechnicalFailure:yo,runBeforeButtonClick:cr,onLoadStateChange:Js,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:al,presentationMode:fo})}),ho?y(so,{stripe:$n,options:qs,children:y(Rc,{sessionId:e,nonce:t,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,billingApiUrl:at,intentKind:Fe>0?"payment":"setup",expressMethods:go,onTokenizedBody:Fn,onErrorChange:ye,onButtonClick:ie,onDecline:f,onTechnicalFailure:yo,runBeforeButtonClick:cr,onLoadStateChange:Zs,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:re})}):null,!ho&&rl?y("div",{style:{height:sa,borderRadius:eo,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,Jo&&y(_c,{sessionId:e,nonce:t,email:Le.email,billingName:[Le.firstName,Le.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:We,billingApiUrl:at,paymentElementMethods:Ma,stripeInstance:$n,paymentElementBaseOptions:ki,futureUseSession:he,onTokenizedBody:Fn,onErrorChange:ye,onButtonClick:ie,onDecline:f,runBeforeButtonClick:cr,onLoadStateChange:el,isProcessing:z,submitButtonColor:to,submitButtonBorderRadius:Zt,submitButtonStyle:P.submitButton,onExpandApm:it,expandedApmMethod:cn,themeId:st,buttonAppearance:{backgroundColor:P.cardButton?.backgroundColor,borderColor:P.cardInputBorder,textColor:P.cardButton?.color,borderRadius:eo}}),m&&y("button",{type:"button",onClick:async()=>{z||!(await cr("card")).proceed||(ie?.("card"),K())},disabled:z,style:{width:"100%",...O,...P.cardButton,...Rs({themeBundle:Q,resolvedPrimaryColor:to,resolvedBorderRadius:Zt,submitButtonStyle:P.submitButton,explicitPrimaryColor:Dn?.colorPrimary}),fontSize:P.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:z?"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:z?.6:1},onMouseEnter:ae=>{!z&&(Q||Dn?.colorPrimary)&&(ae.currentTarget.style.backgroundColor=cd)},onMouseLeave:ae=>{(Q||Dn?.colorPrimary)&&(ae.currentTarget.style.backgroundColor=to)},onMouseDown:ae=>{ae.currentTarget.style.transform="scale(0.985)"},onMouseUp:ae=>{ae.currentTarget.style.transform="scale(1)"},children:y(So,{content:ht})}),G&&Ve==="buttons"&&y(Ao,{margin:"0.25rem 0",styleOverride:P.errorBanner,children:G})]}),m&&v&&y("div",{style:{gridArea:"1 / 1",...q?{animation:q}:{},...Ve==="collapsing"?{pointerEvents:"none"}:{}},children:hl}),le&&bl&&cn&&La&&$n&&y("div",{style:{gridArea:"1 / 1",...bo?{animation:bo}:{},...Ve==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Qe("div",{style:{backgroundColor:Mi,borderRadius:Ni,...ta,padding:Di},children:[Qe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Qe("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Xt,style:{display:"inline-flex",alignItems:"center",gap:xi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:P.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...P.backButton},"aria-label":"Back to payment methods",children:[y("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...P.backButtonIcon},children:y("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:y("path",{d:"M15 18l-6-6 6-6"})})}),y(wo,{content:Ee})]}),y("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:P.titleFontSize??"1.05rem",color:Bi,paddingRight:80,...P.title},children:`Pay with ${Sa(cn)}`})]}),y(so,{stripe:$n,options:La,children:y(vs,{method:cn,sessionId:e,nonce:t,email:Le.email,billingName:[Le.firstName,Le.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:We,billingApiUrl:at,onTokenizedBody:Fn,onErrorChange:ye,onDecline:f,onCancel:Xt,runBeforeButtonClick:cr,onButtonClick:ie,isProcessing:z,submitButtonColor:to,submitButtonBorderRadius:Zt,submitButtonStyle:P.submitButton,errorText:G})},cn)]})})]})]})}return bl&&cn&&La&&$n&&le?Qe("form",{onSubmit:Ti,className:L,noValidate:!0,style:{position:"relative"},children:[y(ja,{}),ee&&y(Ir,{status:ee,errorMessage:G,authorized:nr}),y("div",{style:{...bo?{animation:bo}:{},...Ve==="apm-collapsing"?{pointerEvents:"none"}:{}},children:Qe("div",{style:{backgroundColor:Mi,borderRadius:Ni,...ta,padding:Di},children:[Qe("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[Qe("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Xt,style:{display:"inline-flex",alignItems:"center",gap:xi?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:P.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...P.backButton},"aria-label":"Back to payment methods",children:[y("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...P.backButtonIcon},children:y("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:y("path",{d:"M15 18l-6-6 6-6"})})}),y(wo,{content:Ee})]}),y("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:P.titleFontSize??"1.05rem",color:Bi,paddingRight:80,...P.title},children:`Pay with ${Sa(cn)}`})]}),y(so,{stripe:$n,options:La,children:y(vs,{method:cn,sessionId:e,nonce:t,email:Le.email,billingName:[Le.firstName,Le.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:We,billingApiUrl:at,onTokenizedBody:Fn,onErrorChange:ye,onDecline:f,onCancel:Xt,runBeforeButtonClick:cr,onButtonClick:ie,isProcessing:z,submitButtonColor:to,submitButtonBorderRadius:Zt,submitButtonStyle:P.submitButton,errorText:G})},cn)]})})]}):Qe("form",{onSubmit:Ti,className:L,noValidate:!0,style:{position:"relative"},children:[y(ja,{}),ee&&y(Ir,{status:ee,errorMessage:G,authorized:nr}),Qe("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Pl("flopay-direct-paypal-gate-debug-default"),vl("flopay-stripe-gate-debug-default"),Ho&&mt&&Qe(Lo,{children:[Z&&y("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."}),y(pa.Provider,{value:p,children:y(Ja,{sessionId:e,nonce:t,billingApiUrl:at,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,clientId:mt.clientId,environment:mt.environment,currency:vt.toUpperCase(),isSubscription:Tt,providerObjectType:Ke,approvalPresentation:Ba==="popup"?void 0:Ba,onTokenizedBody:Fn,onComplete:s,onErrorChange:ye,onDecline:f,onTechnicalFailure:yo,onButtonClick:ie,runBeforeButtonClick:cr,isProcessing:z,onLoadStateChange:Ri,onInitializationStateChange:_i,session:ct,existingOrderId:Z?.orderId,debug:F},Z?.orderId??"fresh")})]}),Yo&&y(so,{stripe:Go,options:js,children:y(Ic,{sessionId:e,nonce:t,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,billingApiUrl:at,onTokenizedBody:Fn,onErrorChange:ye,isProcessing:z,onButtonClick:ie,onDecline:f,onTechnicalFailure:yo,runBeforeButtonClick:cr,onLoadStateChange:Js,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:al,presentationMode:fo})}),ho&&y(so,{stripe:$n,options:qs,children:y(Rc,{sessionId:e,nonce:t,email:Le.email,billingName:co||void 0,onBuyerIdentityReady:We,billingApiUrl:at,intentKind:Fe>0?"payment":"setup",expressMethods:go,onTokenizedBody:Fn,onErrorChange:ye,onButtonClick:ie,onDecline:f,onTechnicalFailure:yo,runBeforeButtonClick:cr,onLoadStateChange:Zs,placeholderBorderRadius:eo,popupCapabilityOwner:p,externalTelemetryContext:re})}),Jo&&y(_c,{sessionId:e,nonce:t,email:Le.email,billingName:[Le.firstName,Le.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:at,paymentElementMethods:Ma,stripeInstance:$n,paymentElementBaseOptions:ki,futureUseSession:he,onTokenizedBody:Fn,onErrorChange:ye,onButtonClick:ie,onDecline:f,runBeforeButtonClick:cr,onLoadStateChange:el,isProcessing:z,submitButtonColor:to,submitButtonBorderRadius:Zt,submitButtonStyle:P.submitButton,themeId:st,onExpandApm:it,expandedApmMethod:cn,buttonAppearance:{backgroundColor:P.cardButton?.backgroundColor,borderColor:P.cardInputBorder,textColor:P.cardButton?.color,borderRadius:eo}})]}),m&&(nd||td||rd)&&y(Sl,{label:"or pay with card"}),m&&hl]})}import{Fragment as Er,jsx as pe,jsxs as an}from"react/jsx-runtime";var zo=44,Fs="flopay_checkout_saved_payment_resume",gi=new Map,yi=new Map;function Lc(e,t){t.settled&&t.consumers===0&&gi.get(e)===t&&gi.delete(e)}function Cp(e,t,n){let r=yi.get(e);if(r&&(!r.sdkGeneratedIdempotencyKey||!t||r.sdkGeneratedIdempotencyKey===t))return r.attempt;let o=n(),i={attempt:o,sdkGeneratedIdempotencyKey:t};yi.set(e,i);let s=()=>{yi.get(e)===i&&yi.delete(e)};return o.then(s,s),o}function Ia(e){return new Promise(t=>setTimeout(t,e))}function fi(e,t,n){let r=Ga({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:Wc,enabled:t!==!1});return r.beginCheckout(n),r}function ka(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function Ts(e,t,n,r,o,i){let s=fi(e,t,n);s.error({errorCode:r,stage:o,paymentMethodCategory:"unknown",...i,...o==="session_read"?{requestCategory:"session_read"}:{}}),ka(s)}function Uc(e,t,n,r){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,...r===void 0?{}:{attempt:r},statusClass:"2xx"})}function zc(e,t,n,r,o){let i=Kc(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:n,durationMs:Math.max(0,e.now()-r),durationMode:"machine",requestCategory:n,attempt:o,statusClass:i.statusClass}),t instanceof Cn&&t.code==="session_auto_completed"?!1:t instanceof Cn&&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 Hc(e,t){let n=e?.data.paypal?.publishableKey;if(n)return{clientId:n,environment:e?.data.paypal?.environment,providerObjectType:e?.data.paypal?.providerObjectType,approvalPresentation:e?.data.paypal?.approvalPresentation,...t?{existingOrderId:t}:{}}}function As(e){return!e||e.data.stripe?.publishableKey?!1:!!Hc(e)?.clientId}var Sp={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function wp(e){return new mp(Sp,{publishableKey:"provider_unavailable",...e})}async function Ms(e,t){let{publishableKey:n,paypalPublishableKey:r}=ls(e);return{...await cs({publishableKey:n,paypalPublishableKey:r,...t}),publishableKey:n,paypalPublishableKey:r}}function Ds(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Ip(){if(!Ds())return null;try{let e=window.sessionStorage.getItem(Fs);return e?JSON.parse(e):null}catch{return null}}function qc(e){if(Ds())try{window.sessionStorage.setItem(Fs,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function xs(){if(Ds())try{window.sessionStorage.removeItem(Fs)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function kp(){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 r of t)e.searchParams.has(r)&&(e.searchParams.delete(r),n=!0);n&&window.history.replaceState(window.history.state,"",e.toString())}function jc(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 Bs(e,t){return e?"custom_layout":t==="buttons"?"buttons_layout":"default_layout"}function Rp(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function $c(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function _p(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 Ns({sessionId:e,nonce:t,createSession:n,billingApiUrl:r,telemetry:o,appearance:i,locale:s,loading:d,error:f,onComplete:u,onError:w,onInstrument:b,onDecline:j,onCountryChange:L,onZipChange:I,showPayPal:N=!0,showStripe:U=!0,walletPresentation:h="auto",enabledPaymentMethods:C,showApplePay:le=!0,showGooglePay:D=!0,debug:ve=!1,layout:J,theme:ke,buttonsTheme:qe,buttonsStyles:Re,cardButtonContent:st,cardBackButtonContent:qt,cardTitleContent:fe,showSecurityFooter:Ae,onButtonClick:ht,onBeforeButtonClick:Ee,enableAVS:He,cardFieldOrder:_e,cardPreFormSlot:ie,avsLayout:je,submitLabel:$e,className:pt,initialErrorMessage:Ce=null,initialPayPalOrderId:ge,children:ce,checkoutMode:M,confirmLabel:Se,renderConfirmButton:Ue,onSessionCompleted:Me}){let V=Pp(r),Pt=Qn(()=>Vc(ke),[ke]),ze=i??Pt?.appearance,Te=n?"embedded_checkout":"standard_checkout",Ze=Bs(ce,J),[xe,et]=Ht(null),[Fe,vt]=Ht(null),Gt=Ft(null),mt=Ft(null),Tt=Ft(0),[E,se]=Ht(null),De=Ft(null),[F,we]=Ht(null),yt=Qn(()=>n?xo(n):"",[n]),Ne=n?`create:${yt}`:`session:${e??""}`,St=$c(F),T=Ft(new Set),p=Ft(Ne),g=Ft(Ne);ra(()=>{g.current=Ne,p.current!==Ne&&(p.current=Ne,T.current.clear())},[Ne]);let x=bn(k=>{if(g.current===Ne){if(Gi.has(k.name)){if(T.current.has(k.name))return;T.current.add(k.name)}Bt(()=>b?.(k))}},[Ne,b]),A=To(x,Ne),re=Ft(!1),ct=bn(k=>{if(re.current)return;let _=k.gateway||!St?k:{...k,gateway:St};x(_)},[x,St]);yr(()=>{A({class:"lifecycle",name:"checkout.mount"})},[A]);let[he,Ke]=Ht(e??""),X=e??he,jt=n?"":X,[bt,At]=Ht(!0),[at,de]=Ht(null),[_n,On]=Ht(0),[mn,$t]=Ht("full"),[Ln,Un]=Ht(!1),[hn,Mt]=Ht(Ce),[Ge,Oe]=Ht(null),[En,wt]=Ht(null),[zn,yn]=Ht(!1),[Kt,Qt]=Ht(void 0),[er,Wn]=Ht(""),[en,It]=Ht(!1),[tn,rn]=Ht(!1),[Dt,sn]=Ht(!1),Ot=Ft(null),on=Ft(0),Nt=Ft(void 0),[W,tr]=Ht("loading"),[nr,rr]=Ht(0),nn=Ft(!1),Tn=Ft(!1),Sn=Ft(!1),me=Ft(null),tt=Ft(null),m=Qn(()=>({checkoutMode:M??mn,layout:Rp(ce,J)}),[M,ce,mn,J]),Be=Ft(u);Be.current=u;let $=Ft(w);$.current=w;let Pn=Ft(j);Pn.current=j;let qn=bn(k=>ri(me,async _=>{try{return await k(_)}catch(K){throw _.aborted?Yr(K):K}}),[]);yr(()=>()=>{me.current?.abort(),me.current=null},[]);let Yt=bn((k,_)=>{Gt.current=k,vt(k),De.current=_,se(_)},[]),An=bn(()=>{let k=mt.current;k&&(mt.current=null,k.destroy())},[]);yr(()=>{pn(Fe)?.setCheckoutContext(m),E&&E!==Fe&&pn(E)?.setCheckoutContext(m)},[Fe,E,m]);let nt=Ft(Me);nt.current=Me;let or=bn(k=>{tr(k),!(k!=="exhausted"||Sn.current)&&(Sn.current=!0,$.current?.(new Cn("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Zr=bn(()=>{tr("retrying"),rr(k=>k+1)},[]);yr(()=>{tr("loading"),rr(0),Sn.current=!1},[X]),yr(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:Wc,checkout_type:Te,checkout_layout:Ze,billing_api_url:V})},[Ze,Te,V]);let kt=Qn(()=>n?xo(n,!0):"",[n]),Mn=Qn(()=>er===kt?Kt:void 0,[Kt,er,kt]),fr=Qn(()=>n?Ki(n,Mn):void 0,[n,Mn]),Hn=M??fr?.checkoutMode??"full",Jt=Qn(()=>fr?{...fr,checkoutMode:Hn}:void 0,[fr,Hn]);yr(()=>{Qt(void 0),Wn(kt),Nt.current=void 0,Ot.current=null,sn(!1)},[kt]),yr(()=>{Mt(Ce)},[Ce]);let ar=bn((k,_,K)=>{Bt(()=>{Pn.current?.(un(k,_,K))})},[]),xn=bn(async(k,_)=>{Mt(null),wt(null),yn(!1),Oe("processing");let K=_?.sessionId??k.id,oe=k.clientSecret||t,it=$c(k),Xt=Gt.current??De.current,ee=pn(Xt),H=Xt?null:fi(V,o,m),B={log:be=>{ee?ee.log(be):H?.log(be)},error:be=>{ee?ee.error(be):H?.error(be)},terminal:be=>{ee?ee.terminal(be):H?.terminal(be)},performance:be=>{ee?ee.performance(be):H?.performance(be)},now:()=>ee?.now()??H?.now()??0,elapsed:be=>ee?.elapsed(be)??Math.max(0,(H?.now()??be)-be)},l=B.now(),c=!!(_?.initialAutoProcessingError||_?.initialAutoProcessingPending),S=!1,R,te=()=>{S||(S=!0,c=!0,R=B.now(),B.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},Z=!1,dt=()=>{Z||(Z=!0,B.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),B.performance({stage:"processing",durationMs:B.elapsed(l),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),R!==void 0&&B.performance({stage:"recovery",durationMs:B.elapsed(R),durationMode:"machine",paymentMethodCategory:"saved"}))};B.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),re.current=!0;try{B.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{re.current=!1}A({class:"lifecycle",name:"payment.processing.started",provider:it}),c&&te();let Lt;try{let be=pc(_?.initialAutoProcessingError),Ie=_?.initialAutoProcessingError?.type==="3ds_required"&&!_.initialAutoProcessingError.threeDSecureToken&&_.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:_.initialAutoProcessingError.nextActionRedirectUrl}:null,We,G=Q=>(te(),qn(P=>Fo(Q,{billingApiUrl:V,sessionId:K,nonce:oe,session:k,signal:P})));if(Ie)We=await G(Ie);else if(be)te(),be.type==="paypal_redirect_required"&&tt.current?.publishableKey&&qc({sessionId:K,publishableKey:tt.current.publishableKey,paypalPublishableKey:tt.current.paypalPublishableKey}),We=await qn(Q=>ii(be,{flopay:Gt.current,paypalFlopay:De.current,attempt3DS:_?.attempt3DS,billingApiUrl:V,sessionId:K,session:k,telemetry:!1,signal:Q})),be.type==="paypal_redirect_required"&&xs();else if(_?.initialAutoProcessingPending){let Q=_.initialAutoProcessingPending,P=new mi(V,{telemetry:!1}),Y=await qn(z=>P.waitForCheckoutSessionCompletion(Q.sessionId,{initialDelayMs:Q.retryAfterMs,nonce:oe,statusUrl:Q.statusUrl,signal:z})),Ye=Kr(Y,k),Rt=Y.autoProcessingError?.type==="3ds_required"&&Y.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:Y.autoProcessingError.nextActionRedirectUrl}:null;if(Rt)We=await G(Rt);else{if(!Fr(Ye))throw Ro(Ye);We=Br(Ye,K)}}else{if(_?.initialAutoProcessingError)throw Rr(_.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:_.initialAutoProcessingError.checkoutMethod});if(_?.fromCreateSession)return _?.fallbackToFull&&($t("full"),jc("full")),!1;{let Q=await Do({billingApiUrl:V,sessionId:K,session:k,nonce:oe,telemetry:!1});Q.type==="success"?We=Q.result:Q.type==="next_action_required"?We=await G(Q):(te(),Q.type==="paypal_redirect_required"&&tt.current?.publishableKey&&qc({sessionId:K,publishableKey:tt.current.publishableKey,paypalPublishableKey:tt.current.paypalPublishableKey}),We=await qn(P=>ii(Q,{flopay:Gt.current,paypalFlopay:De.current,attempt3DS:_?.attempt3DS,billingApiUrl:V,sessionId:K,session:k,telemetry:!1,signal:P})),Q.type==="paypal_redirect_required"&&xs())}}K&&Bo(K),dt(),c&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),B.terminal({outcome:We.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),yn(We.status==="authorized"),Oe("success"),await Ia(600),Lt=()=>Be.current?.(We)}catch(be){let Ie=jr(Pa(be),K);if(Ie.code==="three_ds_aborted")return!1;let We=Ie.checkoutMethod??ha;Mt(Ie.message),wt(Ie.message),yn(!1),_?.fallbackToFull&&(B.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),$t("full"),jc("full")),dt();let G=Ie.statusCode===void 0?void 0:bp(Ie.statusCode,"unknown"),Q=G==="4xx"?{requestCategory:"process_payment",statusClass:G}:{},P=G===void 0||G==="4xx";if(P&&(Ie.telemetryOutcome==="payment_declined"||!!(Ie.declineCode||Ie.code?.toLowerCase().includes("declin"))))B.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Q});else if(P&&(Ie.telemetryOutcome==="validation_rejected"||Ie.type==="validation_error"))B.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Q});else{let Rt=Kc(be,c?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),z=Ie.telemetryRequestCategory??"process_payment";re.current=!0;try{B.error({...Rt,...Ie.telemetryFailureCategory?{failureCategory:Ie.telemetryFailureCategory}:{},stage:c?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:z})}finally{re.current=!1}A({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:z,provider:it})}return Bt(()=>$.current?.(Ie)),ar(We,Ie,{code:Ie.code,declineCode:Ie.declineCode}),Oe("error"),await Promise.allSettled([Ia(400),_?.ensureProvidersReady?_.ensureProvidersReady():Promise.resolve()]),c&&(B.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),B.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{dt(),H&&ka(H),Oe(null),wt(null)}return Bt(Lt),!0},[ar,A,t,V,qn,o,m]);yr(()=>{if(typeof window>"u"||Tn.current)return;let k=new URLSearchParams(window.location.search),_=k.get("payment_intent_client_secret");if(!_)return;let K=Ip();K&&(Tn.current=!0,(async()=>{let oe,it=0;Mt(null),wt(null),Oe("processing"),Un(!0);try{if(k.get("redirect_status")==="failed")throw Object.assign(new Cn("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Xt,paypalFlopay:ee}=await cs({publishableKey:K.publishableKey,paypalPublishableKey:K.paypalPublishableKey,billingApiUrl:V,locale:s,telemetry:o});oe=pn(ee??Xt),oe?.setCheckoutContext(m),it=oe?.now()??0,oe?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),oe?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let H=(ee??Xt)?.getRawProvider();if(!H)throw Object.assign(new Cn("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:B,error:l}=await H.retrievePaymentIntent(_);if(l)throw Object.assign(new Cn(l.message??"Failed to retrieve PayPal payment status.","api_error",{code:l.code}),{checkoutMethod:"paypal"});let c=Kl(B?.status);if(!B||c==="failed")throw Object.assign(new Cn("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let S=typeof B.payment_method=="string"?B.payment_method:B.payment_method?.id,R=c;if(K.sessionId){let dt=(await new mi(V,{telemetry:!1}).getUnifiedCheckoutSession(K.sessionId)).data.session;if(dt&&dt.status!=="complete"){let Lt=await Do({billingApiUrl:V,sessionId:K.sessionId,session:dt,telemetry:!1,tokenizedData:{id:S??B.id,type:"card",threeDSecureActionResultTokenId:B.id,isPaypal:!0}});if(Lt.type!=="success")throw Object.assign(new Cn("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});R=Lt.result.status}}K.sessionId&&Bo(K.sessionId),oe?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),oe?.performance({stage:"redirect_resume",durationMs:oe.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),oe?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),Oe("success"),await Ia(600),Bt(()=>Be.current?.({status:R,paymentIntentId:B.id,paymentMethodId:S,checkoutMethod:"paypal"}))}catch(Xt){let ee=jr(Pa(Xt),K.sessionId),H=ee.checkoutMethod??"paypal",B=!!(ee.declineCode||ee.code?.toLowerCase().includes("declin"));if(oe)oe.performance({stage:"redirect_resume",durationMs:oe.elapsed(it),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),B?oe.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):oe.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(B){let l=fi(V,o,m);l.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),ka(l)}else Ts(V,o,m,"REDIRECT_RESUME_FAILED","redirect_resume");Mt(ee.message),wt(ee.message),Bt(()=>$.current?.(ee)),ar(H,ee,{code:ee.code,declineCode:ee.declineCode}),Oe("error"),await Ia(400)}finally{xs(),kp(),Oe(null),wt(null),Un(!1)}})())},[ar,s,V,o,m]);let Tr=Ft(null),Bn=Qn(()=>Jt?xo(Jt):"",[Jt]),gr=Ft(Jt);gr.current=Jt,yr(()=>{Ke(e??"")},[e]),yr(()=>{nn.current=!1,Mt(Ce),wt(null),yn(!1),Oe(null)},[Bn,Ce,e]);async function hr(k,_,K){let oe=fi(V,o,m),it=new mi(V,{telemetry:!1}),Xt=!1;try{let ee=k.idempotencyKey===void 0?void 0:Oc(k.idempotencyKey),H=ts(_,K),B=ns(_,K);H?.canonicalIdentity===K&&B&&B.canonicalIdentity===void 0&&(ei(_,K,B.idempotencyKey),B={...B,canonicalIdentity:K});let l=ee??(B?.canonicalIdentity===K?B.idempotencyKey:void 0),c,S=!1;oe.log({name:H?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let R=H?.sid??null,te=null,Z,dt,Lt=!1;if(R)try{te=await it.getUnifiedCheckoutSession(R,H?.nonce),H&&H.canonicalIdentity===void 0&&(ac(te.data.session,k)?(Qa(_,K,R,H.nonce??te.data.session?.clientSecret),B&&B.canonicalIdentity===void 0&&(ei(_,K,B.idempotencyKey),l??(l=B.idempotencyKey))):(Za(_,K),B=null,l=ee,R=null,te=null));let Ie=te?.data.session?.status,We=te?.data.session,G=We?.clientSecret||H?.nonce;if(R&&We?.buyerIdentified===!1&&G&&(dt=ko(it,R,G,k.account)),R&&te&&Ie==="complete"){if(rs(R))return{sid:R,result:te};Za(_,K),R=null,te=null,S=!0}}catch{oe.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),H?.canonicalIdentity===void 0?(Za(_,K),l=ee):Xa(_,K),R=null}if(!R){!ee&&(S||!l)&&(l=Oc(),c=l),l&&ei(_,K,l);let Ie=oe.now(),We=0;oe.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let G={...k,idempotencyKey:l,avsCheck:!!He,avsConfig:typeof He=="object"?He:void 0,checkoutType:"embedded_checkout",checkoutLayout:Bs(ce,J)};Object.defineProperty(G,yp,{configurable:!1,enumerable:!1,value:{onAttempt:Y=>{We=Math.max(We,Y)}}});let Q=()=>{Uc(oe,"session_create",Ie,We)},P=Y=>{zc(oe,Y,"session_create",Ie,We)&&A({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if(gp(G)){let Y=await it.createDetachedSession(G);Y.claimed.catch(()=>{}),te=Y.shell,R=Y.sessionId,dt=Y.claim;let Ye=oe.now();oe.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),Z=Y.claimed.then(Rt=>{let z=Rt.data.session?.id??Y.sessionId;return z&&Qa(_,K,z,Rt.data.session?.clientSecret??Y.nonce),Uc(oe,"session_claim",Ye),Q(),Rt},Rt=>{throw Xa(_,K),zc(oe,Rt,"session_claim",Ye,0)&&A({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),Rt}).finally(()=>ka(oe)),Z.catch(()=>{}),Xt=!0,oe.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),oe.performance({stage:"session_shell",durationMs:oe.now()-Ie,durationMode:"machine",requestCategory:"session_create",attempt:We,statusClass:"2xx",paymentMethodCategory:"card"})}else te=await it.createAndFetchSession(G),Q()}catch(Y){throw P(Y),Y}R=te.data.session?.id??R??"",R&&!Z&&Qa(_,K,R,te.data.session?.clientSecret)}let be=te?.data.session;return!dt&&R&&be?.buyerIdentified===!1&&be.clientSecret&&(dt=ko(it,R,be.clientSecret,k.account)),{sid:R??"",result:te,sdkGeneratedIdempotencyKey:c,...Z?{claimed:Z}:{},...dt?{claim:dt}:{},...Lt?{claimRequiresIdentity:!0}:{}}}finally{Xt||ka(oe)}}let Ar=Ft(hr);ra(()=>{Ar.current=hr},[hr]);let jn=bn(async(k,_)=>{let K=gr.current;if(!K)throw new Cn("createSession is required to bootstrap checkout.","validation_error");let oe=Ki(K,k),it=xo(oe),Xt=oc(oe),ee=gi.get(it);if(!ee){let l={canonicalIdentity:it,promise:Ar.current(oe,Xt,it),consumers:0,settled:!1};ee=l,gi.set(it,l);let c=()=>{l.settled=!0,Lc(it,l)};l.promise.then(c,c)}ee.consumers+=1;let H=!1,B=()=>{H||(H=!0,ee.consumers-=1,Lc(it,ee))};_?.(B);try{let l=await ee.promise;Tr.current=it,k&&(Wn(kt),Qt(be=>ql(be,k)));let{sid:c,result:S,claimed:R,claim:te,claimRequiresIdentity:Z}=l;if(Nt.current=te,sn(Z===!0),et(S),S.data.session&&we(S.data.session),c&&Ke(c),R){on.current+=1;let be=on.current;Ot.current=R,rn(!0),R.then(Ie=>{on.current===be&&(Ot.current===R&&(Ot.current=null),et(Ie),Ie.data.session&&we(Ie.data.session),rn(!1),sn(!1))},Ie=>{on.current===be&&(Ot.current===R&&(Ot.current=null),rn(!1),sn(!1),de(Ie instanceof Cn?Ie:new Cn(Ie instanceof Error?Ie.message:"Failed to create session","api_error")))})}else on.current+=1,Ot.current=null,rn(!1),sn(!1);let{flopay:dt,paypalFlopay:Lt}=await Ms(S,{billingApiUrl:V,locale:s,telemetry:o});return Yt(dt,Lt),At(!1),l}catch(l){throw Tr.current===it&&(Tr.current=null),l}finally{_||B()}},[kt,Yt,s,V,o]),Gn=Ft(xn);Gn.current=xn;let Mr=Ft(jn);Mr.current=jn;let xt=bn(async k=>{if(!_p(k)||en)return{sessionId:he,session:F};It(!0);try{let _=await jn(k);return{sessionId:_.sid,session:_.result.data.session??null}}finally{It(!1)}},[jn,en,he,F]),wn=bn(async k=>{let _=Nt.current;if(!_)return;let K=on.current,oe=await _(k);on.current===K&&(et(oe),oe.data.session&&we(oe.data.session))},[]),Yn=bn(async()=>{await Ot.current},[]),ir=bn(async()=>(await Yn(),{proceed:!0}),[Yn]);yr(()=>{let k=!1,_,K=++Tt.current;An(),de(null),On(0);let oe=()=>{k=!0,Tt.current===K&&(Tt.current+=1,An())},it=gr.current;if(Bn&&it)return $t(Hn),At(!1),Tr.current===Bn?oe:(we(jl(it,M)),(async()=>{let H=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),B=Hn==="auto"&&!nn.current&&!H;B&&(Mt(null),wt(null),Oe("processing"));try{let l=await Mr.current(void 0,te=>{_=te}),c=l.result.data.session??null;tt.current=ls(l.result);let S=As(l.result),R=rs(l.sid||c?.id);if(!k&&B&&c&&!S&&!R){nn.current=!0,await Cp(Bn,l.sdkGeneratedIdempotencyKey,()=>Gn.current(c,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:l.result.autoProcessingError,initialAutoProcessingPending:l.result.autoProcessingPending,autoProcessingAttempted:l.result.autoProcessingAttempted,sessionId:l.sid||c.id}));return}!k&&B&&((S||R)&&(nn.current=!0),Oe(null),wt(null))}catch(l){if(k)return;let c=Ka(l);if(B&&c==="session_auto_completed"){nn.current=!0,Oe("success"),await Ia(600),k||(Bt(()=>{Be.current?.({status:"succeeded"})}),Oe(null),wt(null));return}B&&(Oe(null),wt(null));let S=l instanceof Cn?l:new Cn(l instanceof Error?l.message:"Failed to create session","api_error");de(S)}finally{_?.(),_=void 0}})(),()=>{oe(),_?.()});At(!0);async function Xt(){let H=!1,B=null;try{let l=new mi(V,{telemetry:!1}),c=await l.getUnifiedCheckoutSession(X,t);if(B=c,k)return;et(c);let S=c.data.session??null;if(we(S),!S)throw new Cn("No session data returned","api_error");let R=S.checkoutMode;if(R==="setup")throw new Cn("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(S.status==="authorized"){At(!1),Bt(()=>{Be.current?.(Br(S,X)),nt.current?.(S.successUrl??"")});return}if(S.status==="complete"){At(!1),Bt(()=>{nt.current?.(S.successUrl??"")});return}if(S.status==="expired")throw $a(S);H=!0;let te=M??R??"full";$t(te),on.current+=1;let Z=S.clientSecret||t;Nt.current=S.buyerIdentified===!1&&Z?ko(l,X,Z,{...S.customer?.id?{userId:S.customer.id}:{}}):void 0,rn(!1),sn(!1);let dt=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),Lt=As(c);if(te==="auto"&&!nn.current&&!dt&&!Lt){nn.current=!0;let be=ee(c);try{if(await Gn.current(S,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>be,sessionId:X||S.id}),k)return;await be,k||At(!1);return}catch{if(k)return;await be,k||At(!1);return}}await ee(c),k||At(!1)}catch(l){if(k)return;let c=zl(l,H);if(H&&A({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),c){let{errorCode:R,stage:te,...Z}=c;Ts(V,o,m,R,te,Z)}if(c?.stage==="provider_load"&&(M??B?.data.session?.checkoutMode??"full")==="full"&&Ul(B,N,U)){let R=wp({billingApiUrl:V,locale:s,telemetry:o});mt.current=R,Yt(R,null),On(1),At(!1);return}let S=l instanceof Cn&&c?.stage!=="provider_load"?l:Ll();S!==l&&Bt(()=>$.current?.(S)),de(S),At(!1)}}async function ee(H){let{flopay:B,paypalFlopay:l,...c}=await Ms(H,{billingApiUrl:V,locale:s,telemetry:o});tt.current={publishableKey:c.publishableKey,paypalPublishableKey:c.paypalPublishableKey},Yt(B,l),On(0)}return Xt(),oe},[M,Bn,Hn,jt,t,N,U]);let Pr=bn(async()=>{if(!xe||_n!==1)return;let k=Tt.current;On(2);try{let{flopay:_,paypalFlopay:K}=await Ms(xe,{billingApiUrl:V,locale:s,telemetry:o});if(Tt.current!==k)return;An(),Yt(_,K),On(0)}catch(_){if(Tt.current!==k)return;let{errorCode:K,stage:oe,...it}=ji(_);Ts(V,o,m,K,oe,it)}},[An,Yt,s,_n,V,o,m,xe]),Ve=!!(X&&(F?.clientSecret||t)),ln=Ln||!Ve,cn=bn(async()=>{if(!(Ln||!Ve||!F)){Un(!0),Mt(null);try{await xn(F,{attempt3DS:!0,fallbackToFull:!0,sessionId:X||F.id})}finally{Un(!1)}}},[X,Ln,Ve,xn,F]),In=Hc(xe,ge),Qr=As(xe),vr=Qn(()=>{if(!(!xe||!F||!xe.data.stripe?.publishableKey))return{billingApiUrl:V}},[xe,F,V]),Or=!!(n&&!ce&&J==="buttons"&&Ee&&Hn==="full"),kn=!!(X&&(hp(F?.vault)||qr(F))),dn=Qn(()=>({session:F,loading:bt,error:at,checkoutMode:mn,inlineSessionDraft:Jt,applyInlineSessionPatch:Or?xt:void 0,inlineSessionPatchProcessing:en,claimPending:tn,claimRequiresIdentity:Dt,claimBuyerIdentity:wn,waitForDataAttachment:Yn}),[F,bt,at,mn,Jt,Or,xt,en,tn,Dt,wn,Yn]),sr=!!n&&J==="buttons"&&!Qr&&!kn&&(!Fe||!vr),fn=Ge?pe(Ir,{status:Ge,errorMessage:En,authorized:zn}):null;if(bt&&!kn){if(d)return an(Er,{children:[d,fn]});if(J==="buttons"){let k=Pt?.buttonsLayout?.cardButton?.borderRadius??Pt?.appearance.variables?.borderRadius??8,_=K=>pe("div",{style:{height:K,borderRadius:k,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return an(Er,{children:[an("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[N&&_(zo),U&&(le||D)&&_(zo),U&&_(zo),pe("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),fn]})}return an(Er,{children:[an("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[pe("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),pe("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),fn]})}return at?f?pe(ur.Provider,{value:dn,children:f(at)}):pe(ur.Provider,{value:dn,children:pe("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:at.message})}):sr?an(Er,{children:[pe(ur.Provider,{value:dn,children:pe(Tp,{onButtonClick:ht,showPayPal:N,showStripe:U,showApplePay:le,showGooglePay:D,theme:ke,buttonsTheme:qe,buttonsStyles:Re,cardButtonContent:st,cardBackButtonContent:qt,cardTitleContent:fe})}),fn]}):Qr&&F&&In?an(Er,{children:[pe(ur.Provider,{value:dn,children:an("div",{className:pt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[hn&&pe(Ao,{icon:!1,children:hn}),W==="retrying"&&pe("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),W==="exhausted"&&an("div",{role:"alert",children:[pe("div",{children:"PayPal is temporarily unavailable. Please try again."}),pe("button",{type:"button",onClick:Zr,children:"Retry PayPal"})]}),W!=="exhausted"&&pe("div",{"aria-hidden":W==="retrying"?!0:void 0,style:W==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:pe(nc,{sessionId:X,nonce:F.clientSecret||void 0,billingApiUrl:V,email:F.customer?.email||Jt?.account?.email,billingName:[F.customer?.firstName,F.customer?.lastName].filter(Boolean).join(" ")||[Jt?.account?.firstName,Jt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:wn,clientId:In.clientId,environment:In.environment,currency:(F.currency??"usd").toUpperCase(),isSubscription:F.mode==="subscription",providerObjectType:In.providerObjectType,approvalPresentation:In.approvalPresentation,existingOrderId:In.existingOrderId,onComplete:u,onErrorChange:Mt,onDecline:j,onButtonClick:ht,runBeforeButtonClick:ir,onInitializationStateChange:or,allowAutomaticRetry:nr===0,session:F,telemetry:o,telemetryContext:m,onInstrument:ct,debug:ve},`${Ne}:paypal-init-${nr}`)})]})}),fn]}):mn==="confirm"?an(Er,{children:[pe(ur.Provider,{value:dn,children:pe(ti,{flopay:Fe,paypalFlopay:E,options:vr??{billingApiUrl:V},onInstrument:ct,children:an("div",{className:pt,children:[hn&&pe("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:hn}),Ue?Ue({onConfirm:cn,isProcessing:ln}):pe("button",{type:"button",onClick:cn,disabled:ln,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:ln?"not-allowed":"pointer",opacity:ln?.6:1},children:Ln?"Processing...":Se??"Confirm Purchase"})]})},Ne)}),fn]}):(!Fe||!vr)&&!(kn&&mn==="full")?pe(Er,{children:fn}):an(Er,{children:[pe(ur.Provider,{value:dn,children:an(ti,{flopay:Fe,paypalFlopay:E,options:vr??{billingApiUrl:V},onInstrument:ct,children:[_n===1&&pe("button",{type:"button",onClick:Pr,children:"Retry payment methods"}),ce?an(Er,{children:[hn&&pe("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:hn}),pe(Ep,{sessionId:X,nonce:F?.clientSecret||void 0,billingApiUrl:V,session:F,submitLabel:$e,walletPresentation:h,children:ce})]}):pe(_s,{sessionId:X,nonce:F?.clientSecret||void 0,telemetry:o,email:F?.customer?.email||Jt?.account?.email,userId:F?.customer?.id||Jt?.account?.userId,firstName:F?.customer?.firstName||Jt?.account?.firstName,lastName:F?.customer?.lastName||Jt?.account?.lastName,totalAmount:F?Math.round(fp(F).total*100):0,currency:F?.currency?.toLowerCase()??"usd",onComplete:u,onError:w,onDecline:j,error:hn,onErrorChange:Mt,showPayPal:N,showStripe:U,walletPresentation:h,enabledPaymentMethods:_n?[]:C??xe?.data.stripe?.enabledPaymentMethods??F?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:xe?.data.stripe?.enabledPaymentMethodCountries,showApplePay:le,showGooglePay:D,layout:J,theme:ke,buttonsTheme:qe,buttonsStyles:Re,appearance:ze,cardButtonContent:st,cardBackButtonContent:qt,cardTitleContent:fe,onButtonClick:ht,onBeforeButtonClick:Ee,onBuyerIdentityReady:wn,enableAVS:He,..._e?{cardFieldOrder:_e}:{},...ie?{cardPreFormSlot:ie}:{},avsLayout:je,country:F?.customer?.country,city:F?.customer?.city,state:F?.customer?.state,onCountryChange:L,onZipChange:I,avsCheck:!!He,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:Bs(ce,J),className:pt,submitLabel:$e,directPaypal:In,isSubscription:F?.mode==="subscription",session:F,dataAttachmentPending:tn,dataAttachmentRequiresIdentity:Dt,debug:ve})]},Ne)}),fn]})}function Ep({sessionId:e,nonce:t,billingApiUrl:n,session:r,submitLabel:o,walletPresentation:i,children:s}){return pe(Er,{children:Es.Children.map(s,d=>{if(!Es.isValidElement(d))return d;let f=d.props,u={};return f.sessionId||(u.sessionId=e),!f.nonce&&t&&(u.nonce=t),f.billingApiUrl||(u.billingApiUrl=n),f.submitLabel===void 0&&o!==void 0&&(u.submitLabel=o),f.walletPresentation===void 0&&(u.walletPresentation=i),r?.customer&&(f.email||(u.email=r.customer.email),f.userId||(u.userId=r.customer.id),f.firstName||(u.firstName=r.customer.firstName),f.lastName||(u.lastName=r.customer.lastName)),Object.keys(u).length===0?d:Es.cloneElement(d,u)})})}function Tp({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:r,showGooglePay:o,theme:i,buttonsTheme:s,buttonsStyles:d,cardButtonContent:f,cardBackButtonContent:u,cardTitleContent:w}){let[b,j]=Ht(!1),L=Qn(()=>Vc(i),[i]),I=Qn(()=>{let C=L?.buttonsLayout??vp(s);return d?{...C,...d,cardButton:{...C.cardButton,...d.cardButton},cardFormContainer:{...C.cardFormContainer,...d.cardFormContainer},backButton:{...C.backButton,...d.backButton},backButtonIcon:{...C.backButtonIcon,...d.backButtonIcon},submitButton:{...C.submitButton,...d.submitButton},title:{...C.title,...d.title}}:C},[L,s,d]),N=L?.buttonsLayout?.cardButton?.borderRadius??L?.appearance.variables?.borderRadius??8,U=C=>pe("div",{style:{height:C,borderRadius:N,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),h=f===void 0?{boxSizing:"border-box",height:zo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(b){let C=I.cardInputBorder??"#e5e7eb",le=I.cardInputBackground??"white",D=Co(u),ve=Co(w);return an("div",{style:{backgroundColor:I.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...I.cardFormContainer},children:[an("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[an("button",{type:"button",onClick:()=>j(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:D?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...I.backButton},children:[pe("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...I.backButtonIcon},children:pe("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:pe("path",{d:"M15 18l-6-6 6-6"})})}),pe(wo,{content:u})]}),ve?pe("div",{style:{flex:1}}):pe("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...I.title},children:pe(la,{content:w})})]}),pe("div",{style:{backgroundColor:le,border:`1px solid ${C}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:pe("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),an("div",{style:{display:"flex"},children:[pe("div",{style:{flex:1,backgroundColor:le,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomLeftRadius:8,padding:12,height:45},children:pe("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),pe("div",{style:{flex:1,backgroundColor:le,borderTop:"none",borderRight:`1px solid ${C}`,borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomRightRadius:8,padding:12,height:45},children:pe("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),pe("div",{style:{backgroundColor:le,border:`1px solid ${C}`,borderRadius:8,marginTop:8,padding:12,height:45},children:pe("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),pe("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...I.submitButton,opacity:.5}}),pe("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 on("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&K(Lo),n&&(r||o)&&K(Lo),n&&de("button",{type:"button",onClick:()=>{e?.("card"),W(!0)},style:{width:"100%",...h,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:k.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,...k.cardButton},onMouseDown:C=>{C.currentTarget.style.transform="scale(0.985)"},onMouseUp:C=>{C.currentTarget.style.transform="scale(1)"},children:de(Co,{content:f})}),de("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}import{Fragment as Tp,jsx as so,jsxs as Ap}from"react/jsx-runtime";var Ip=44;function $c(e){return new Promise(t=>setTimeout(t,e))}function kp(e,t){return e instanceof ka?e:new ka(e instanceof Error?e.message:t,"api_error")}function _p(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function Rp(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 Ep({sessionId:e,nonce:t,createSession:n,paymentMethodId:r,checkoutMethod:o,clientId:i,products:s,items:l,subscriptions:f,account:u,successUrl:S,cancelUrl:v,couponCodes:W,tagsData:$,utmMetadata:k,billingApiUrl:q,locale:K,theme:h,appearance:C,buttonsTheme:se,buttonsStyles:z,onSuccess:Ce,onError:J,onDecline:ke,children:je,disabled:_e=!1,type:it="button",style:zt,...ye}){let Me=Ia(()=>bp(q),[q]),Pt=Ia(()=>Rp({createSession:n,clientId:i,products:s,items:l,subscriptions:f,account:u,successUrl:S,cancelUrl:v,couponCodes:W,tagsData:$,utmMetadata:k}),[u,v,i,W,n,s,l,f,S,$,k]),[Te,Ve]=qo(!1),[Re,ne]=qo(null),[$e,Ke]=qo(null),[yt,be]=qo(!1),[fe,le]=qo(null),[F,Se]=qo(null),ze=zo(!0),xe=zo(null),V=zo(F),vt=zo(Ce),qe=zo(J),Ae=zo(ke),Xe=Or(p=>ti(xe,async g=>{try{return await p(g)}catch(D){throw g.aborted?Yr(D):D}}),[]);Uo(()=>{V.current=F},[F]),Uo(()=>{vt.current=Ce},[Ce]),Uo(()=>{qe.current=J},[J]),Uo(()=>{Ae.current=ke},[ke]),Uo(()=>(ze.current=!0,()=>{ze.current=!1,xe.current?.abort()}),[]),Uo(()=>{if(typeof window>"u")return;let p=g=>{g.key==="Escape"&&Se(null)};return window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}},[]);let Be=Or((p,g=fa)=>{Ae.current?.(dn(g,p,{code:p.code,declineCode:p.declineCode}))},[]),Qe=Or(async p=>{ze.current&&(Ke(null),be(p.result.status==="authorized"),ne("success"),await $c(600),ze.current&&Bt(()=>vt.current?.(p)))},[]),Ne=Or(async(p,g)=>{ze.current&&(qe.current?.(p),g?.emitDecline&&Be(p,g.method),Ke(p.message),be(!1),ne("error"),await $c(400))},[Be]),Ct=Or(async(p,g,D)=>{let x=p.data.session??null;if(!x)throw jr(new ka("No session data returned","api_error"),g);let ee=x.clientSecret||t;if(Dr(x)){await Qe({result:Fr(x,g),session:x,sessionId:x.id||g,autoCompleted:!1});return}if(x.status==="expired")throw jr(qa(x),x.id||g);try{if(p.autoProcessingPending){let ge=p.autoProcessingPending,We=new Fs(Me),X=await Xe(At=>We.waitForCheckoutSessionCompletion(ge.sessionId,{initialDelayMs:ge.retryAfterMs,nonce:ee,statusUrl:ge.statusUrl,signal:At})),qt=Kr(X,x),bt=X.autoProcessingError?.type==="3ds_required"&&X.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:X.autoProcessingError.nextActionRedirectUrl}:null;if(bt&&g&&ee){let At=await Xe(st=>xo(bt,{billingApiUrl:Me,sessionId:g,nonce:ee,session:x,signal:st,telemetry:!0}));await Qe({result:At,session:x,sessionId:x.id||g,autoCompleted:!1});return}if(X.autoProcessingError)throw wr(X.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:X.autoProcessingError.checkoutMethod});if(!Dr(qt))throw Io(qt);await Qe({result:Fr(qt,g),session:qt,sessionId:qt.id||g,autoCompleted:!1});return}if(p.autoProcessingError){let ge=p.autoProcessingError.nextActionRedirectUrl;if(p.autoProcessingError.type==="3ds_required"&&ge&&g&&ee){let We=await Xe(At=>os({billingApiUrl:Me,sessionId:g,nonce:ee,nextActionRedirectUrl:ge,signal:At}));if(We.status==="declined")throw wr({type:We.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:We.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:p.autoProcessingError.checkoutMethod});let qt=await new Fs(Me).waitForCheckoutSessionCompletion(g,{initialDelayMs:0,nonce:ee}),bt=Kr(qt,x);if(!Dr(bt))throw wr({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:p.autoProcessingError.checkoutMethod});await Qe({result:Fr(bt,g),session:bt,sessionId:bt.id||g,autoCompleted:!1});return}throw wr(p.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:p.autoProcessingError.checkoutMethod})}if(D?.fromCreateSession&&p.autoProcessingAttempted===!0)throw wr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ut=await Bo({billingApiUrl:Me,sessionId:g??x.id,session:x,nonce:ee});if(ut.type==="next_action_required"&&ee){let ge=g??x.id,We=await Xe(X=>xo(ut,{billingApiUrl:Me,sessionId:ge,nonce:ee,session:x,signal:X,telemetry:!0}));await Qe({result:We,session:x,sessionId:x.id||ge,autoCompleted:!1});return}if(ut.type!=="success")throw wr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await Qe({result:ut.result,session:x,sessionId:x.id||g,autoCompleted:!1})}catch(ut){let ge=x.id||g,We=jr(ga(ut),ge);if(We.code==="three_ds_aborted")return;if(We.code==="checkout_processing_timeout"){if(!ze.current)return;le(We.message),Bt(()=>qe.current?.(We));return}await Ne(We,{emitDecline:!0,method:We.checkoutMethod??fa}),_p(We,ge)&&ge&&ze.current&&Se({sessionId:ge,errorMessage:We.message,nonce:ee||void 0,payPalOrderId:We.orderId})}},[t,Me,Xe,Ne,Qe]),Vt=Or(async p=>{if(ye.onClick?.(p),!(p.defaultPrevented||_e||Te)){if(Se(null),le(null),e&&Pt){let g=new ka("Provide either sessionId or create-session props, not both.","validation_error");await Ne(g),ze.current&&(ne(null),Ke(null));return}if(!e&&!Pt){let g=new ka("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await Ne(g),ze.current&&(ne(null),Ke(null));return}Ve(!0),Ke(null),be(!1),ne("processing");try{let g=new Fs(Me);if(e){let D=await g.getUnifiedCheckoutSession(e,t);await Ct(D,e);return}try{let D=await g.createAndFetchSession({...Pt});await Ct(D,D.data.session?.id??null,{fromCreateSession:!0})}catch(D){if(ja(D)==="session_auto_completed"){await Qe({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw D}}catch(g){await Ne(jr(kp(g,"Automatic payment failed. Please try again."),e))}finally{ze.current&&(ne(null),Ke(null),Ve(!1))}}},[ye.onClick,Pt,_e,Te,t,Ct,Me,e,Ne,Qe]),ft=Or(p=>{let g=V.current;Se(null),vt.current?.({result:p,session:null,sessionId:g?.sessionId??null,autoCompleted:!1})},[]),Tt=Or(p=>{qe.current?.(p)},[]),T=Or(p=>{Ae.current?.(p)},[]),re=Ia(()=>wp(h),[h]),Oe=Ia(()=>{let p=re?.buttonsLayout??Sp(se);return z?{...p,...z,cardButton:{...p.cardButton,...z.cardButton}}:p},[re,se,z]),L=Ia(()=>{let p=re?.appearance;return C?p?{...p,...C,variables:{...p.variables,...C.variables}}:C:p},[C,re]),we=L?.variables,gt=we?.colorPrimary??"#4A49FF",Le=we?.colorPrimaryHover??na(gt,.12),It=we?.borderRadius??"8px";return Ap(Tp,{children:[so("button",{...ye,type:it,onClick:Vt,disabled:_e||Te,"aria-busy":Te,style:{width:"100%",...je===void 0?{boxSizing:"border-box",height:Ip,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Oe.cardButton,...ws({themeBundle:re,resolvedPrimaryColor:gt,resolvedBorderRadius:It,submitButtonStyle:Oe.submitButton,explicitPrimaryColor:we?.colorPrimary}),fontSize:Oe.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:_e||Te?"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||Te?.6:1,...zt},onMouseEnter:p=>{ye.onMouseEnter?.(p),!p.defaultPrevented&&!_e&&!Te&&(re||we?.colorPrimary)&&(p.currentTarget.style.backgroundColor=Le)},onMouseLeave:p=>{ye.onMouseLeave?.(p),!p.defaultPrevented&&(re||we?.colorPrimary)&&(p.currentTarget.style.backgroundColor=gt)},onMouseDown:p=>{ye.onMouseDown?.(p),p.defaultPrevented||(p.currentTarget.style.transform="scale(0.985)")},onMouseUp:p=>{ye.onMouseUp?.(p),p.defaultPrevented||(p.currentTarget.style.transform="scale(1)")},children:so(Co,{content:je})}),fe&&so("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:fe}),Re&&so(br,{status:Re,errorMessage:$e,authorized:yt}),F&&so("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:p=>{p.target===p.currentTarget&&Se(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:so("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:so(Bs,{sessionId:F.sessionId,nonce:F.nonce,checkoutMode:"full",billingApiUrl:Me,locale:K,theme:h,...L?{appearance:L}:{},buttonsTheme:se,buttonsStyles:z,initialErrorMessage:F.errorMessage,initialPayPalOrderId:F.payPalOrderId,cardTitleContent:null,onComplete:ft,onError:Tt,onDecline:T})})})]})}import{jsx as Bp}from"react/jsx-runtime";var Mp={StripeSetupMethod:Tl,PayPalSetupMethod:El};function xp(e){return Bp(Al,{...e,branches:Mp})}export{Ga as DirectPayPalButton,Ep as FloPayAutomaticPaymentButton,ld as FloPayCardSetup,sd as FloPayCardSetupError,Bs as FloPayCheckout,xp as FloPayPaymentMethodSetup,Qa as FloPayProvider,Is as SplitCardForm,Fi as VaultCardFields,ef as dropThirdPartyOnlyError,_d as useCheckout,Wr as useFloPay,Ki as usePayPalFloPay};
|
|
21
|
+
`})]})}return an("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&U(zo),n&&(r||o)&&U(zo),n&&pe("button",{type:"button",onClick:()=>{e?.("card"),j(!0)},style:{width:"100%",...h,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:I.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,...I.cardButton},onMouseDown:C=>{C.currentTarget.style.transform="scale(0.985)"},onMouseUp:C=>{C.currentTarget.style.transform="scale(1)"},children:pe(So,{content:f})}),pe("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}import{Fragment as Lp,jsx as lo,jsxs as Up}from"react/jsx-runtime";var Bp=44;function Gc(e){return new Promise(t=>setTimeout(t,e))}function Fp(e,t){return e instanceof _a?e:new _a(e instanceof Error?e.message:t,"api_error")}function Dp(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function Np(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 Op({sessionId:e,nonce:t,createSession:n,paymentMethodId:r,checkoutMethod:o,clientId:i,products:s,items:d,subscriptions:f,account:u,successUrl:w,cancelUrl:b,couponCodes:j,tagsData:L,utmMetadata:I,billingApiUrl:N,locale:U,theme:h,appearance:C,buttonsTheme:le,buttonsStyles:D,onSuccess:ve,onError:J,onDecline:ke,children:qe,disabled:Re=!1,type:st="button",style:qt,...fe}){let Ae=Ra(()=>Ap(N),[N]),ht=Ra(()=>Np({createSession:n,clientId:i,products:s,items:d,subscriptions:f,account:u,successUrl:w,cancelUrl:b,couponCodes:j,tagsData:L,utmMetadata:I}),[u,b,i,j,n,s,d,f,w,L,I]),[Ee,He]=$o(!1),[_e,ie]=$o(null),[je,$e]=$o(null),[pt,Ce]=$o(!1),[ge,ce]=$o(null),[M,Se]=$o(null),Ue=jo(!0),Me=jo(null),V=jo(M),Pt=jo(ve),ze=jo(J),Te=jo(ke),Ze=Nr(p=>ri(Me,async g=>{try{return await p(g)}catch(x){throw g.aborted?Yr(x):x}}),[]);qo(()=>{V.current=M},[M]),qo(()=>{Pt.current=ve},[ve]),qo(()=>{ze.current=J},[J]),qo(()=>{Te.current=ke},[ke]),qo(()=>(Ue.current=!0,()=>{Ue.current=!1,Me.current?.abort()}),[]),qo(()=>{if(typeof window>"u")return;let p=g=>{g.key==="Escape"&&Se(null)};return window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}},[]);let xe=Nr((p,g=ha)=>{Te.current?.(un(g,p,{code:p.code,declineCode:p.declineCode}))},[]),et=Nr(async p=>{Ue.current&&($e(null),Ce(p.result.status==="authorized"),ie("success"),await Gc(600),Ue.current&&Bt(()=>Pt.current?.(p)))},[]),Fe=Nr(async(p,g)=>{Ue.current&&(ze.current?.(p),g?.emitDecline&&xe(p,g.method),$e(p.message),Ce(!1),ie("error"),await Gc(400))},[xe]),vt=Nr(async(p,g,x)=>{let A=p.data.session??null;if(!A)throw jr(new _a("No session data returned","api_error"),g);let re=A.clientSecret||t;if(Fr(A)){await et({result:Br(A,g),session:A,sessionId:A.id||g,autoCompleted:!1});return}if(A.status==="expired")throw jr($a(A),A.id||g);try{if(p.autoProcessingPending){let he=p.autoProcessingPending,Ke=new Os(Ae),X=await Ze(At=>Ke.waitForCheckoutSessionCompletion(he.sessionId,{initialDelayMs:he.retryAfterMs,nonce:re,statusUrl:he.statusUrl,signal:At})),jt=Kr(X,A),bt=X.autoProcessingError?.type==="3ds_required"&&X.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:X.autoProcessingError.nextActionRedirectUrl}:null;if(bt&&g&&re){let At=await Ze(at=>Fo(bt,{billingApiUrl:Ae,sessionId:g,nonce:re,session:A,signal:at,telemetry:!0}));await et({result:At,session:A,sessionId:A.id||g,autoCompleted:!1});return}if(X.autoProcessingError)throw Rr(X.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:X.autoProcessingError.checkoutMethod});if(!Fr(jt))throw Ro(jt);await et({result:Br(jt,g),session:jt,sessionId:jt.id||g,autoCompleted:!1});return}if(p.autoProcessingError){let he=p.autoProcessingError.nextActionRedirectUrl;if(p.autoProcessingError.type==="3ds_required"&&he&&g&&re){let Ke=await Ze(At=>ss({billingApiUrl:Ae,sessionId:g,nonce:re,nextActionRedirectUrl:he,signal:At}));if(Ke.status==="declined")throw Rr({type:Ke.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:Ke.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:p.autoProcessingError.checkoutMethod});let jt=await new Os(Ae).waitForCheckoutSessionCompletion(g,{initialDelayMs:0,nonce:re}),bt=Kr(jt,A);if(!Fr(bt))throw Rr({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:p.autoProcessingError.checkoutMethod});await et({result:Br(bt,g),session:bt,sessionId:bt.id||g,autoCompleted:!1});return}throw Rr(p.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:p.autoProcessingError.checkoutMethod})}if(x?.fromCreateSession&&p.autoProcessingAttempted===!0)throw Rr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let ct=await Do({billingApiUrl:Ae,sessionId:g??A.id,session:A,nonce:re});if(ct.type==="next_action_required"&&re){let he=g??A.id,Ke=await Ze(X=>Fo(ct,{billingApiUrl:Ae,sessionId:he,nonce:re,session:A,signal:X,telemetry:!0}));await et({result:Ke,session:A,sessionId:A.id||he,autoCompleted:!1});return}if(ct.type!=="success")throw Rr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await et({result:ct.result,session:A,sessionId:A.id||g,autoCompleted:!1})}catch(ct){let he=A.id||g,Ke=jr(Pa(ct),he);if(Ke.code==="three_ds_aborted")return;if(Ke.code==="checkout_processing_timeout"){if(!Ue.current)return;ce(Ke.message),Bt(()=>ze.current?.(Ke));return}await Fe(Ke,{emitDecline:!0,method:Ke.checkoutMethod??ha}),Dp(Ke,he)&&he&&Ue.current&&Se({sessionId:he,errorMessage:Ke.message,nonce:re||void 0,payPalOrderId:Ke.orderId})}},[t,Ae,Ze,Fe,et]),Gt=Nr(async p=>{if(fe.onClick?.(p),!(p.defaultPrevented||Re||Ee)){if(Se(null),ce(null),e&&ht){let g=new _a("Provide either sessionId or create-session props, not both.","validation_error");await Fe(g),Ue.current&&(ie(null),$e(null));return}if(!e&&!ht){let g=new _a("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await Fe(g),Ue.current&&(ie(null),$e(null));return}He(!0),$e(null),Ce(!1),ie("processing");try{let g=new Os(Ae);if(e){let x=await g.getUnifiedCheckoutSession(e,t);await vt(x,e);return}try{let x=await g.createAndFetchSession({...ht});await vt(x,x.data.session?.id??null,{fromCreateSession:!0})}catch(x){if(Ka(x)==="session_auto_completed"){await et({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw x}}catch(g){await Fe(jr(Fp(g,"Automatic payment failed. Please try again."),e))}finally{Ue.current&&(ie(null),$e(null),He(!1))}}},[fe.onClick,ht,Re,Ee,t,vt,Ae,e,Fe,et]),mt=Nr(p=>{let g=V.current;Se(null),Pt.current?.({result:p,session:null,sessionId:g?.sessionId??null,autoCompleted:!1})},[]),Tt=Nr(p=>{ze.current?.(p)},[]),E=Nr(p=>{Te.current?.(p)},[]),se=Ra(()=>xp(h),[h]),De=Ra(()=>{let p=se?.buttonsLayout??Mp(le);return D?{...p,...D,cardButton:{...p.cardButton,...D.cardButton}}:p},[se,le,D]),F=Ra(()=>{let p=se?.appearance;return C?p?{...p,...C,variables:{...p.variables,...C.variables}}:C:p},[C,se]),we=F?.variables,yt=we?.colorPrimary??"#4A49FF",Ne=we?.colorPrimaryHover??oa(yt,.12),St=we?.borderRadius??"8px";return Up(Lp,{children:[lo("button",{...fe,type:st,onClick:Gt,disabled:Re||Ee,"aria-busy":Ee,style:{width:"100%",...qe===void 0?{boxSizing:"border-box",height:Bp,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...De.cardButton,...Rs({themeBundle:se,resolvedPrimaryColor:yt,resolvedBorderRadius:St,submitButtonStyle:De.submitButton,explicitPrimaryColor:we?.colorPrimary}),fontSize:De.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:Re||Ee?"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:Re||Ee?.6:1,...qt},onMouseEnter:p=>{fe.onMouseEnter?.(p),!p.defaultPrevented&&!Re&&!Ee&&(se||we?.colorPrimary)&&(p.currentTarget.style.backgroundColor=Ne)},onMouseLeave:p=>{fe.onMouseLeave?.(p),!p.defaultPrevented&&(se||we?.colorPrimary)&&(p.currentTarget.style.backgroundColor=yt)},onMouseDown:p=>{fe.onMouseDown?.(p),p.defaultPrevented||(p.currentTarget.style.transform="scale(0.985)")},onMouseUp:p=>{fe.onMouseUp?.(p),p.defaultPrevented||(p.currentTarget.style.transform="scale(1)")},children:lo(So,{content:qe})}),ge&&lo("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:ge}),_e&&lo(Ir,{status:_e,errorMessage:je,authorized:pt}),M&&lo("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:p=>{p.target===p.currentTarget&&Se(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:lo("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:lo(Ns,{sessionId:M.sessionId,nonce:M.nonce,checkoutMode:"full",billingApiUrl:Ae,locale:U,theme:h,...F?{appearance:F}:{},buttonsTheme:le,buttonsStyles:D,initialErrorMessage:M.errorMessage,initialPayPalOrderId:M.payPalOrderId,cardTitleContent:null,onComplete:mt,onError:Tt,onDecline:E})})})]})}import{jsx as jp}from"react/jsx-runtime";var zp={StripeSetupMethod:Fl,PayPalSetupMethod:Bl};function qp(e){return jp(Dl,{...e,branches:zp})}export{Ja as DirectPayPalButton,Op as FloPayAutomaticPaymentButton,md as FloPayCardSetup,pd as FloPayCardSetupError,Ns as FloPayCheckout,qp as FloPayPaymentMethodSetup,ti as FloPayProvider,_s as SplitCardForm,Oi as VaultCardFields,df as dropThirdPartyOnlyError,xd as useCheckout,Vr as useFloPay,Hi as usePayPalFloPay};
|